首页 > 其他分享 >矩阵求导术(上)

矩阵求导术(上)

时间:2022-10-04 14:00:25浏览次数:45  
标签:导数 元素 矩阵 微分 标量 求导


矩阵求导的技术,在统计学、控制论、机器学习等领域有广泛的应用。鉴于我看过的一些资料或言之不详、或繁乱无绪,本文来做个科普,分作两篇,上篇讲标量对矩阵的求导术,下篇讲矩阵对矩阵的求导术。本文使用小写字母x表示标量,粗体小写字母 表示向量,大写字母X表示矩阵。

首先来琢磨一下定义,标量f对矩阵X的导数,定义为,即f对X逐元素求导排成与X尺寸相同的矩阵。然而,这个定义在计算中并不好用,实用上的原因是在对较复杂的函数难以逐元素求导;哲理上的原因是逐元素求导破坏了整体性。试想,为何要将f看做矩阵X而不是各元素的函数呢?答案是用矩阵运算更整洁。所以在求导时不宜拆开矩阵,而是要找一个从整体出发的算法。

为此,我们来回顾,一元微积分中的导数(标量对标量的导数)与微分有联系:;多元微积分中的梯度(标量对向量的导数)也与微分有联系: ,这里第一个等号是全微分公式,第二个等号表达了梯度与微分的联系;受此启发,我们将矩阵导数与微分建立联系: ,这里tr代表迹(trace)是方阵对角线元素之和,满足性质:对尺寸相同的矩阵A,B,,即是矩阵A,B的内积,因此上式与原定义相容。

然后来建立运算法则。回想遇到较复杂的一元函数如,我们是如何求导的呢?通常不是从定义开始求极限,而是先建立了初等函数求导和四则运算、复合等法则,再来运用这些法则。故而,我们来创立常用的矩阵微分的运算法则:

  1. 加减法:;矩阵乘法: ;转置:;迹:。
  2. 逆:。此式可在两侧求微分来证明。
  3. 行列式: ,其中表示X的伴随矩阵,在X可逆时又可以写作。此式可用Laplace展开来证明,详见张贤达《矩阵分析与应用》第279页。
  4. 逐元素乘法:,表示尺寸相同的矩阵X,Y逐元素相乘。
  5. 逐元素函数: ,是逐元素运算的标量函数。

我们试图利用矩阵导数与微分的联系

  1. 标量套上迹:
  2. 转置:。
  3. 线性:。
  4. 矩阵乘法交换:。两侧都等于。
  5. 矩阵乘法/逐元素乘法交换:。两侧都等于。

观察一下可以断言,若标量函数f是矩阵X经加减乘法、行列式、逆、逐元素函数等运算构成,则使用相应的运算法则对f求微分,再使用迹技巧给df套上迹并将其它项交换至dX左侧,即能得到导数。

在建立法则的最后,来谈一谈复合:假设已求得,而Y是X的函数,如何求呢?在微积分中有标量求导的链式法则,但这里我们不能随意沿用标量的链式法则,因为矩阵对矩阵的导数截至目前仍是未定义的。于是我们继续追本溯源,链式法则是从何而来?源头仍然是微分。我们直接从微分入手建立复合法则:先写出,再将dY用dX表示出来代入,并使用迹技巧将其他项交换至dX左侧,即可得到。

接下来演示一些算例。特别提醒要依据已经建立的运算法则来计算,不能随意套用微积分中标量导数的结论,比如认为AX对X的导数为A,这是没有根据、意义不明的。

例1:,求。

:先使用矩阵乘法法则求微分: ,再套上迹并做交换:,对照导数与微分的联系,得到。

注意:这里不能用,导数与乘常数矩阵的交换是不合法则的运算(而微分是合法的)。有些资料在计算矩阵导数时,会略过求微分这一步,这是逻辑上解释不通的。

例2【线性回归】:,求。

:严格来说这是标量对向量的导数,不过可以把向量看做矩阵的特例。将向量范数写成,求微分,使用矩阵乘法、转置等法则:。对照导数与微分的联系,得到。

例3【多元logistic回归】:,求。其中是除一个元素为1外其它元素为0的向量;,其中表示逐元素求指数,代表全1向量。

解1:首先将softmax函数代入并写成,这里要注意逐元素log满足等式,以及满足。求微分,使用矩阵乘法、逐元素函数等法则:。再套上迹并做交换,注意可化简,这是根据等式,故。对照导数与微分的联系,得到。

解2:定义,则 ,先如上求出 ,再利用复合法则:,得到。

例4【方差的最大似然估计】:样本,其中是对称正定矩阵,求方差的最大似然估计。写成数学式是:,求的零点。

:首先求微分,使用矩阵乘法、行列式、逆等运算法则,第一项是,第二项是。再给第二项套上迹做交换:,其中定义为样本方差。对照导数与微分的联系,有,其零点即的最大似然估计为。

最后一例留给经典的神经网络。神经网络的求导术是学术史上的重要成果,还有个专门的名字叫做BP算法,我相信如今很多人在初次推导BP算法时也会颇费一番脑筋,事实上使用矩阵求导术来推导并不复杂。为简化起见,我们推导二层神经网络的BP算法。

例5【二层神经网络】:,求和。其中是除一个元素为1外其它元素为0的向量,同例3,是逐元素sigmoid函数。

:定义,,,则。在例3中已求出 。使用复合法则,注意此处, 都是变量:,使用矩阵乘法交换的迹技巧从第一项得到,从第二项得到。接下来求,继续使用复合法则,并利用矩阵乘法和逐元素乘法交换的迹技巧:,得到。为求,再用一次复合法则:,得到。

矩阵求导术(上)_标量

标签:导数,元素,矩阵,微分,标量,求导
From: https://blog.51cto.com/u_15699042/5731256

相关文章

  • 矩阵求导术(下)
    本文承接上篇https://zhuanlan.zhihu.com/p/24709748,来讲矩阵对矩阵的求导术。使用小写字母x表示标量,粗体小写字母 表示列向量,大写字母X表示矩阵。矩阵对矩阵的求导采用了......
  • AcWing 算法提高课 矩阵乘法
    可以用快速幂的形式求大量的相同矩阵乘法。1、快速幂求斐波那契数列的第n项(n很大)先将斐波那契数列的递推转化成矩阵形式 然后用快速幂求解A^n 例题:求斐波那契数列......
  • 311. Sparse Matrix Multiplication 稀疏矩阵的乘法
    Giventwo sparsematrices mat1 ofsize mxk and mat2 ofsize kxn,returntheresultof mat1xmat2.Youmayassumethatmultiplicationisalwayspo......
  • 4*7矩阵转成3*10矩阵
    问题:4*7矩阵转成3*10矩阵函数解决:{=INDEX(T(OFFSET($A$1,(ROW($1:$30)-1)/7,MOD(ROW($7:$36),7))),ROW(A1)*3+COLUMN(A1)-3)} 思路:先将4*7矩阵转换成1*30矩阵的内......
  • 稀疏矩阵转置
    稀疏矩阵转置前置知识:稀疏矩阵用三元组的保存一般来说,对于系数矩阵,我们使用三元组来存储。即就是将矩阵的所有非零元素的三元组存放在一个顺序表中,如图所示:注意一个转......
  • 矩阵变量
    矩阵变量的语法:映射+路径+矩阵变量,多个变量用分号隔开开启矩阵变量方式1@Configuration(proxyBeanMethods=false)publicclassWebConfigimplementsWebMvcConfigurer{......
  • AM5728 Opencl 案例汇总:实现sobel算法,计算向量和,矩阵转置
    案例一:实现sobel算法OpenCV(Open Source Computer Vision Library)是一个基于BSD许可开源发行的跨平台计算机视觉库。实现图像处理和计算机视觉方面的很多通用计算。......
  • 【luogu CF618G】Combining Slimes(矩阵乘法)(DP)
    CombiningSlimes题目链接:luoguCF618G题目大意有一个长度为n的栈,如果栈顶两个值都是x就会合并成x+1,一开始没有东西。你有p的概率放进去一个1,1-p的概率放入2......
  • #yyds干货盘点# 面试必刷TOP101:矩阵的最小路径和
    1.简述:描述给定一个 n*m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。数据范......
  • 24. NumPy矩阵乘法
    1.前言矩阵乘法是将两个矩阵作为输入值,并将A矩阵的行与B矩阵的列对应位置相乘再相加,从而生成一个新矩阵,如下图所示:注意:必须确保第一个矩阵中的行数等于第二个矩阵中......