[机器学习-数学] 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式
一, 矩阵求导
1,矩阵求导的本质
矩阵A对矩阵B求导: 矩阵A中的每一个元素分别对矩阵B中的每个元素进行求导。
A1×1A_{1\times1}A1×1, B1×1B_{1\times1}B1×1 : dAdB\frac{dA}{dB}dBdA 一个导数
Am×1A_{m\times1}Am×1, B1×1B_{1\times1}B1×1 : dAdB\frac{dA}{dB}dBdA m个导数
Am×1A_{m\times1}Am×1, Bp×1B_{p\times1}Bp×1 : dAdB\frac{dA}{dB}dBdA m×pm \times pm×p个导数
Am×nA_{m\times n}Am×n, Bp×qB_{p\times q}Bp×q : dAdB\frac{dA}{dB}dBdA m×n×p×qm\times n \times p \times qm×n×p×q个导数
我们求导的本质只是把标量求导的结果排列起来,至于是按行排列还是按列排列都是可以的。但是这样也有问题,在我们机器学习算法法优化过程中,如果行向量或者列向量随便写,那么结果就不唯一,乱套了。
为了解决矩阵向量求导的结果不唯一,我们引入求导布局。
最基本的求导布局有两个:分子布局(numerator layout)和分母布局(denominator layout )。
2,以分母布局为例的矩阵求导的基本原则
对于分母布局来说,我们求导结果的维度以分母为主
∂f∂x<==分子<==分母\frac{\partial f}{\partial x} \frac{<==分子}{ <==分母} ∂x∂f<==分母<==分子
原则一
f为标量函数: f(x1,x2....xp)f(x_1, x_2.... x_p)f(x1,x2....xp)
如果x为列向量: x=[x1x2⋮xp]p×1x =\begin{bmatrix} x_1 \\ x_2\\ \vdots \\x_p \end{bmatrix}_{p\times1} x=⎣⎢⎢⎢⎡x1x2⋮xp⎦⎥⎥⎥⎤p×1
那么定义: ∂f∂x=[∂f∂x1∂f∂x2⋮∂f∂xp]p×1\frac{\partial f}{\partial x} =\begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\\vdots\\ \frac{\partial f}{\partial x_p} \end{bmatrix}_{p\times1} ∂x∂f=⎣⎢⎢⎢⎢⎡∂x1∂f∂x2∂f⋮∂xp∂f⎦⎥⎥⎥⎥⎤p×1
如果x为行向量 x=[x1,x2...xp]x = [x_1, x_2 ... x_p]x=[x1,x2...xp]
那么 ∂f∂x=[∂f∂x1,∂f∂x2...∂f∂xp]1×p\frac{\partial f}{\partial x} =[\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2} ...\frac{\partial f}{\partial x_p}]_{1 \times p}∂x∂f=[∂x1∂f,∂x2∂f...∂xp∂f]1×p
原则二
F为列向量
f=[f1(x)f2(x)⋮fm(x)]m×1f =\begin{bmatrix} f_1(x) \\ f_2(x)\\ \vdots \\f_m(x)\end{bmatrix}_{m\times1} f=⎣⎢⎢⎢⎡f1(x)f2(x)⋮fm(x)⎦⎥⎥⎥⎤m×1
分母x为标量
定义:
∂fm×1∂x=[∂f1∂x,∂f2∂x...∂fm∂x]1×m=∂fT∂x\frac{\partial f_{m \times 1}}{\partial x} =[\frac{\partial f_1}{\partial x}, \frac{\partial f_2}{\partial x} ...\frac{\partial f_m} {\partial x}]_{1 \times m} = \frac{\partial f^T}{\partial x}∂x∂fm×1=[∂x∂f1,∂x∂f2...∂x∂fm]1×m=∂x∂fT
扩展:
分子为f的列向量
f=[f1(x)f2(x)⋮fm(x)]m×1f =\begin{bmatrix} f_1(x) \\ f_2(x)\\ \vdots \\f_m(x)\end{bmatrix}_{m\times1} f=⎣⎢⎢⎢⎡f1(x)f2(x)⋮fm(x)⎦⎥⎥⎥⎤m×1
分母为X的列向量
x=[x1x2⋮xp]p×1x =\begin{bmatrix} x_1 \\ x_2\\ \vdots \\x_p \end{bmatrix}_{p\times1} x=⎣⎢⎢⎢⎡x1x2⋮xp⎦⎥⎥⎥⎤p×1
由原则一推出
∂f∂x=[∂f∂x1∂f∂x2⋮∂f∂xp]p×1\frac{\partial f}{\partial x} =\begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2}\\ \vdots \\\frac{\partial f}{\partial x_p}\end{bmatrix}_{p\times1}∂x∂f=⎣⎢⎢⎢⎢⎡∂x1∂f∂x2∂f⋮∂xp∂f⎦⎥⎥⎥⎥⎤p×1
再由原则二推出
=(∂f1∂x1∂f2∂x1⋯∂fm∂x1∂f1∂x2∂f2∂x2⋯∂fm∂x2⋮⋮⋱⋮∂f1∂xp∂f2∂xp⋯∂fm∂xp)p×m= \begin{pmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_2}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_1} \\ \frac{\partial f_1}{\partial x_2} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_2} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_1}{\partial x_p} & \frac{\partial f_2}{\partial x_p} & \cdots & \frac{\partial f_m}{\partial x_p} \\ \end{pmatrix}_{p \times m} =⎝⎜⎜⎜⎜⎛∂x1∂f1∂x2∂f1⋮∂xp∂f1∂x1∂f2∂x2∂f2⋮∂xp∂f2⋯⋯⋱⋯∂x1∂fm∂x2∂fm⋮∂xp∂fm⎠⎟⎟⎟⎟⎞p×m
3,以分子布局为例的矩阵求导
对于分子布局来说,我们求导结果的维度以分子为主,比如对于我们上面对标量求导的例子,结果的维度和分子的维度是一致的。也就是说,如果向量fff是一个m维的列向量,那么求导结果∂f∂x\frac{∂f}{∂x}∂x∂f也是一个m维列向量。如果如果向量fff是一个m维的行向量,那么求导结果∂f∂x\frac{∂f}{∂x}∂x∂f也是一个m维行向量
4, 总结
可见,对于分子布局和分母布局的结果来说,两者相差一个转置。
再举一个例子,标量fff对矩阵X求导,那么如果按分母布局,则求导结果的维度和矩阵X的维度m×n是一致的。如果是分子布局,则求导结果的维度为n×m。
但是在机器学习算法原理的资料推导里,我们并没有看到说正在使用什么布局,也就是说布局被隐含了,这就需要自己去推演,比较麻烦。但是一般来说我们会使用一种叫混合布局的思路,即如果是向量或者矩阵对标量求导,则使用分子布局为准,如果是标量对向量或者矩阵求导,则以分母布局为准。对于向量对对向量求导,有些分歧,我的所有文章中会以分子布局的雅克比矩阵为主。
二,矩阵向量求导之定义法
1. 用定义法求解标量对向量求导
标量对向量求导,严格来说是实值函数对向量的求导。即定义实值函数f:Rn→Rf:R^n→Rf:Rn→R,自变量x是n维向量,而输出y是标量。对于一个给定的实值函数,如何求解∂y∂x\frac{∂y}{∂x}∂x∂y呢?
首先我们想到的是基于矩阵求导的定义来做,由于所谓标量对向量的求导,其实就是标量对向量里的每个分量分别求导,最后把求导的结果排列在一起,按一个向量表示而已。那么我们可以将实值函数对向量的每一个分量来求导,最后找到规律,得到求导的结果向量。
首先我们来看一个简单的例子:y=aTxy=a^Txy=aTx,求解∂aTx∂x\frac{∂a^Tx}{∂x}∂x∂aTx
根据定义,我们先对x的第i个分量进行求导,这是一个标量对标量的求导,如下:
∂aTx∂xi=∂∑j=1najxj∂xi=∂aixi∂xi=ai\frac{∂a^Tx}{∂x_i}=\frac{∂∑_{j=1}^na_jx_j}{∂x_i}=\frac{∂a_ix_i}{∂x_i}=a_i∂xi∂aTx=∂xi∂∑j=1najxj=∂xi∂aixi=ai
可见,对向量的第i个分量的求导结果就等于向量a的第i个分量。由于我们是分母布局,最后所有求导结果的分量组成的是一个n维向量。那么其实就是向量a。也就是说:
∂aTx∂x=a\frac{∂a^Tx}{∂x}=a∂x∂aTx=a
同样的思路,我们也可以直接得到:
∂xTa∂x=a\frac{∂x^Ta}{∂x}=a∂x∂xTa=a
给一个简单的测试,大家看看自己能不能按定义法推导出:
∂xTx∂x=2x\frac{∂x^Tx}{∂x}=2x∂x∂xTx=2x
再来看一个复杂一点点的例子:y=xTAxy=x^TAxy=xTAx,求解∂xTAx∂x\frac{∂x^TAx}{∂x}∂x∂xTAx
我们对x的第k个分量进行求导如下:
∂xTAx∂x=∂∑i=1n∑j=1nxiAijxj∂xk=∑i=1nAikxi+∑j=1nAkjx\frac{∂x^TAx}{∂x}=\frac{∂∑_{i=1}^n∑_{j=1}^nx_iA_{ij}x_j}{∂x_k}=∑_{i=1}^nA_{ik}x_i+∑_{j=1}^nA_{kj}x∂x∂xTAx=∂xk∂∑i=1n∑j=1nxiAijxj=i=1∑nAikxi+j=1∑nAkjx
这个第k个分量的求导结果稍微复杂些了,仔细观察一下,第一部分是矩阵A的第k列转置后和x相乘得到,第二部分是矩阵A的第k行和x相乘得到,排列好就是:
∂xTAx∂x=ATx+Ax\frac{∂x^TAx}{∂x}=A^Tx+Ax∂x∂xTAx=ATx+Ax
2. 标量对向量求导的一些基本法则
在我们寻找一些简单的方法前,我们简单看下标量对向量求导的一些基本法则,这些法则和标量对标量求导的过程类似。
- 常量对向量的求导结果为0。
- 线性法则:如果f,g都是实值函数,c1,c2c_1,c_2c1,c2为常数,则:
∂(c1f(x)+c2g(x))∂x=c1∂f(x)∂x+c2∂g(x)∂x\frac{∂(c_1f(x)+c_2g(x))}{∂x}=c_1\frac{∂f(x)}{∂x}+c_2\frac{∂g(x)}{∂x}∂x∂(c1f(x)+c2g(x))=c1∂x∂f(x)+c2∂x∂g(x)
- 乘法法则:如果f,g都是实值函数,则:
∂f(x)g(x)∂x=f(x)∂g(x)∂x+∂f(x)∂xg(x)\frac{∂f(x)g(x)}{∂x}=f(x)\frac{∂g(x)}{∂x}+\frac{∂f(x)}{∂x}g(x)∂x∂f(x)g(x)=f(x)∂x∂g(x)+∂x∂f(x)g(x)
要注意的是如果不是实值函数,则不能这么使用乘法法则。
- 除法法则:如果f,g都是实值函数,且g(x)≠0,则:
∂f(x)/g(x)∂x=1g2(x)(g(x)∂f(x)∂x−f(x)∂g(x)∂x)\frac{∂f(x)/g(x)}{∂x}=\frac{1}{g^2(x)}(g(x) \frac{∂f(x)}{∂x}−f(x) \frac{∂g(x)}{∂x})∂x∂f(x)/g(x)=g2(x)1(g(x)∂x∂f(x)−f(x)∂x∂g(x))
3. 用定义法求解标量对矩阵求导
现在我们来看看定义法如何解决标量对矩阵的求导问题。其实思路和第一节的标量对向量的求导是类似的,只是最后的结果是一个和自变量同型的矩阵。
我们还是以一个例子来说明。y=aTXby=a^TXby=aTXb,求解∂aTXb∂X\frac{∂a^TXb}{∂X}∂X∂aTXb
其中, a是m维向量,b是n维向量, X是m×n的矩阵。
我们对矩阵X的任意一个位置的XijX_{ij}Xij求导,如下:
∂aTXb∂Xij=∂∑p=1m∑q=1napApqbq∂Xij=∂aiAijbj∂Xij=aibj\frac{∂a^TXb}{∂X_{ij}}=\frac{∂∑_{p=1}^m∑_{q=1}^na_pA_{pq}b_q}{∂X_{ij}}=\frac{∂a_iA_{ij}b_j}{∂X_{ij}}=a_ib_j∂Xij∂aTXb=∂Xij∂∑p=1m∑q=1napApqbq=∂Xij∂aiAijbj=aibj
即求导结果在(i.j)位置的求导结果是a向量第i个分量和b第j个分量的乘积,将所有的位置的求导结果排列成一个m×n的矩阵,即为abTab^TabT,这样最后的求导结果为:
∂aTXb∂X=abT\frac{∂a^TXb}{∂X}=ab^T∂X∂aTXb=abT
4.用定义法求解向量对向量求导
这里我们也同样给出向量对向量求导的定义法的具体例子。
先来一个简单的例子: y=Axy=Axy=Ax,其中AAA为n×m的矩阵。x,yx,yx,y分别为m,n维向量。需要求导∂Ax∂x\frac{∂Ax}{∂x}∂x∂Ax,根据定义,结果应该是一个n×m的矩阵
先求矩阵的第i行和向量的内积对向量的第j分量求导,用定义法求解过程如下:
∂Aix∂xj=∂Aijxj∂xj=Aij\frac{∂A_ix}{∂x_j}=\frac{∂A_{ij}x_j}{∂x_j}=A_{ij}∂xj∂Aix=∂xj∂Aijxj=Aij
可见矩阵 A的第i行和向量的内积对向量的第j分量求导的结果就是矩阵 A的(i,j)位置的值。排列起来就是一个矩阵了,由于我们分子布局,所以排列出的结果是A,而不是 ATA^TAT
三、常用的矩阵求导公式
常见的矩阵求导方式有:向量对向量求导,标量对向量求导,向量对标量求导。
1、向量对向量求导
2、标量对向量求导
3、向量对标量求导
四、几种重要的矩阵
1、梯度(Gradient)
2、雅克比矩阵(Jacobian matrix)
下边这个按分子布局的向量对向量求导的结果矩阵,我们一般叫做雅克比 (Jacobian)矩阵。有的资料上会使用∂f(x)∂xT\frac{∂f(x)}{∂x^T}∂xT∂f(x)来定义雅克比矩阵,意义是一样
3、海森矩阵(Hessian matrix)
混合布局
向量关于标量的导数
设向量y=[y1y2...yn]y=\begin{bmatrix} y_{1}\\ y_{2}\\ ...\\ y_{n} \end{bmatrix}y=⎣⎢⎢⎡y1y2...yn⎦⎥⎥⎤和标量x, 则dydx=[dy1dxdy2dx...dyndx]\frac{dy}{dx}=\begin{bmatrix} \frac{dy_{1}}{dx}\\ \frac{dy_{2}}{dx}\\ ...\\ \frac{dy_{n}}{dx} \end{bmatrix}dxdy=⎣⎢⎢⎡dxdy1dxdy2...dxdyn⎦⎥⎥⎤
矩阵关于标量的导数
设M×N矩阵Y=[y11y12...y1ny21y22...y2n............ym1ym2...ymn]Y=\begin{bmatrix} y_{11} &y_{12} &... &y_{1n} \\ y_{21} &y_{22} &... &y_{2n} \\ ... &... &... &... \\ y_{m1} &y_{m2} &... &y_{mn} \end{bmatrix}Y=⎣⎢⎢⎡y11y21...ym1y12y22...ym2............y1ny2n...ymn⎦⎥⎥⎤和标量x,则dYdx=[dy11dxdy12dx...dy1ndxdy21dxdy22dx...dy2ndx............dym1dxdym2dx...dymndx]\frac{dY}{dx}=\begin{bmatrix} \frac{dy_{11}}{dx} &\frac{dy_{12}}{dx} &... &\frac{dy_{1n}}{dx} \\ \frac{dy_{21}}{dx} &\frac{dy_{22}}{dx} &... &\frac{dy_{2n}}{dx} \\ ... &... &... &... \\ \frac{dy_{m1}}{dx} &\frac{dy_{m2}}{dx} &... &\frac{dy_{mn}}{dx} \end{bmatrix}dxdY=⎣⎢⎢⎡dxdy11dxdy21...dxdym1dxdy12dxdy22...dxdym2............dxdy1ndxdy2n...dxdymn⎦⎥⎥⎤
标量关于向量的导数
设标量y和向量x=[x1x2...xn],x=\begin{bmatrix} x_{1}\\ x_{2}\\ ...\\ x_{n} \end{bmatrix},x=⎣⎢⎢⎡x1x2...xn⎦⎥⎥⎤,则dydx=[∂y∂x1∂y∂x2...∂y∂xn]\frac{dy}{dx}=\begin{bmatrix} \frac{\partial y}{\partial x_{1}}\\ \frac{\partial y}{\partial x_{2}}\\ ...\\ \frac{\partial y}{\partial x_{n}} \end{bmatrix}dxdy=⎣⎢⎢⎢⎡∂x1∂y∂x2∂y...∂xn∂y⎦⎥⎥⎥⎤
向量关于向量的导数
设向量y=[y1y2...ym]和向量x=[x1x2...xn]y=\begin{bmatrix} y_{1}\\ y_{2}\\ ...\\ y_{m} \end{bmatrix}和向量x=\begin{bmatrix} x_{1}& x_{2}& ...& x_{n} \end{bmatrix}y=⎣⎢⎢⎡y1y2...ym⎦⎥⎥⎤和向量x=[x1x2...xn],则dydx=[∂y1∂x1∂y1∂x2...∂y1∂xn∂y2∂x1∂y2∂x2...∂y2∂xn............∂ym∂x1∂ym∂x2...∂ym∂xn]\frac{dy}{dx}=\begin{bmatrix} \frac{\partial y_{1}}{\partial x_{1}} &\frac{\partial y_{1}}{\partial x_{2}} &... &\frac{\partial y_{1}}{\partial x_{n}} \\ \frac{\partial y_{2}}{\partial x_{1}} &\frac{\partial y_{2}}{\partial x_{2}} &... &\frac{\partial y_{2}}{\partial x_{n}} \\ ... &... &... &... \\ \frac{\partial y_{m}}{\partial x_{1}} &\frac{\partial y_{m}}{\partial x_{2}} &... &\frac{\partial y_{m}}{\partial x_{n}} \end{bmatrix}dxdy=⎣⎢⎢⎢⎡∂x1∂y1∂x1∂y2...∂x1∂ym∂x2∂y1∂x2∂y2...∂x2∂ym............∂xn∂y1∂xn∂y2...∂xn∂ym⎦⎥⎥⎥⎤,即Jacobian矩阵
矩阵关于向量的导数
设M×N矩阵Y=[y11y12...y1ny21y22...y2n............ym1ym2...ymn]Y=\begin{bmatrix} y_{11} &y_{12} &... &y_{1n} \\ y_{21} &y_{22} &... &y_{2n} \\ ... &... &... &... \\ y_{m1} &y_{m2} &... &y_{mn} \end{bmatrix}Y=⎣⎢⎢⎡y11y21...ym1y12y22...ym2............y1ny2n...ymn⎦⎥⎥⎤和p维向量x=[x1x2...xp]x=\begin{bmatrix} x_{1}\\ x_{2}\\ ...\\ x_{p} \end{bmatrix}x=⎣⎢⎢⎡x1x2...xp⎦⎥⎥⎤,则dYdx=[∂Y∂x1∂Y∂x2...∂Y∂xp]\frac{dY}{dx}=\begin{bmatrix} \frac{\partial Y}{\partial x_{1}} \\ \frac{\partial Y}{\partial x_{2}} \\... \\ \frac{\partial Y}{\partial x_{p}} \end{bmatrix}dxdY=⎣⎢⎢⎡∂x1∂Y∂x2∂Y...∂xp∂Y⎦⎥⎥⎤,
其中∂Y∂xi=[∂y11∂xi∂y12∂xi...∂y1n∂xi∂y21∂xi∂y22∂xi...∂y2n∂xi............∂ym1∂xi∂ym2∂xi...∂ymn∂xi]\frac{\partial Y}{\partial x_{i}}=\begin{bmatrix} \frac{\partial y_{11}}{\partial x_{i}} &\frac{\partial y_{12}}{\partial x_{i}} &... &\frac{\partial y_{1n}}{\partial x_{i}} \\ \frac{\partial y_{21}}{\partial x_{i}} &\frac{\partial y_{22}}{\partial x_{i}} &... &\frac{\partial y_{2n}}{\partial x_{i}} \\ ... &... &... &... \\ \frac{\partial y_{m1}}{\partial x_{i}} &\frac{\partial y_{m2}}{\partial x_{i}} &... &\frac{\partial y_{mn}}{\partial x_{i}} \end{bmatrix}∂xi∂Y=⎣⎢⎢⎢⎡∂xi∂y11∂xi∂y21...∂xi∂ym1∂xi∂y12∂xi∂y22...∂xi∂ym2............∂xi∂y1n∂xi∂y2n...∂xi∂ymn⎦⎥⎥⎥⎤
标量关于矩阵的导数
设标量y和M×N矩阵X=[x11x12...x1nx21x22...x2n............xm1xm2...xmn]X=\begin{bmatrix} x_{11} &x_{12} &... &x_{1n} \\ x_{21} &x_{22} &... &x_{2n} \\ ... &... &... &... \\ x_{m1} &x_{m2} &... &x_{mn} \end{bmatrix}X=⎣⎢⎢⎡x11x21...xm1x12x22...xm2............x1nx2n...xmn⎦⎥⎥⎤,则dydX=[∂y∂x11∂y∂x12...∂y∂x1n∂y∂x21∂y∂x22...∂y∂x2n............∂y∂xm1∂y∂xm2...∂y∂xmn]\frac{dy}{dX}=\begin{bmatrix} \frac{\partial y}{\partial x_{11}} &\frac{\partial y}{\partial x_{12}} &... &\frac{\partial y}{\partial x_{1n}} \\ \frac{\partial y}{\partial x_{21}} &\frac{\partial y}{\partial x_{22}} &... &\frac{\partial y}{\partial x_{2n}} \\ ... &... &... &... \\ \frac{\partial y}{\partial x_{m1}} &\frac{\partial y}{\partial x_{m2}} &... &\frac{\partial y}{\partial x_{mn}} \end{bmatrix}dXdy=⎣⎢⎢⎢⎡∂x11∂y∂x21∂y...∂xm1∂y∂x12∂y∂x22∂y...∂xm2∂y............∂x1n∂y∂x2n∂y...∂xmn∂y⎦⎥⎥⎥⎤
向量关于矩阵的导数
设p维向量y=[y1y2...yp]y=\begin{bmatrix} y_{1}\\ y_{2}\\ ...\\ y_{p} \end{bmatrix}y=⎣⎢⎢⎡y1y2...yp⎦⎥⎥⎤和M×N矩阵X=[x11x12...x1nx21x22...x2n............xm1xm2...xmn]X=\begin{bmatrix} x_{11} &x_{12} &... &x_{1n} \\ x_{21} &x_{22} &... &x_{2n} \\ ... &... &... &... \\ x_{m1} &x_{m2} &... &x_{mn} \end{bmatrix}X=⎣⎢⎢⎡x11x21...xm1x12x22...xm2............x1nx2n...xmn⎦⎥⎥⎤,则dydX=[∂y∂x11∂y∂x12...∂y∂x1n∂y∂x21∂y∂x22...∂y∂x2n............∂y∂xm1∂y∂xm2...∂y∂xmn]\frac{dy}{dX}=\begin{bmatrix} \frac{\partial y}{\partial x_{11}} &\frac{\partial y}{\partial x_{12}} &... &\frac{\partial y}{\partial x_{1n}} \\ \frac{\partial y}{\partial x_{21}} &\frac{\partial y}{\partial x_{22}} &... &\frac{\partial y}{\partial x_{2n}} \\ ... &... &... &... \\ \frac{\partial y}{\partial x_{m1}} &\frac{\partial y}{\partial x_{m2}} &... &\frac{\partial y}{\partial x_{mn}} \end{bmatrix}dXdy=⎣⎢⎢⎢⎡∂x11∂y∂x21∂y...∂xm1∂y∂x12∂y∂x22∂y...∂xm2∂y............∂x1n∂y∂x2n∂y...∂xmn∂y⎦⎥⎥⎥⎤,
其中∂y∂xij=[∂y1∂xij∂y2∂xij...∂yp∂xij]\frac{\partial y}{\partial x_{ij}}=\begin{bmatrix} \frac{\partial y_{1}}{\partial x_{ij}}\\ \frac{\partial y_{2}}{\partial x_{ij}}\\ ...\\ \frac{\partial y_{p}}{\partial x_{ij}} \end{bmatrix}∂xij∂y=⎣⎢⎢⎢⎡∂xij∂y1∂xij∂y2...∂xij∂yp⎦⎥⎥⎥⎤
矩阵关于矩阵的导数
设P×Q矩阵Y=[y11y12...y1qy21y22...y2q............yp1yp2...ypq]Y=\begin{bmatrix} y_{11} &y_{12} &... &y_{1q} \\ y_{21} &y_{22} &... &y_{2q} \\ ... &... &... &... \\ y_{p1} &y_{p2} &... &y_{pq} \end{bmatrix}Y=⎣⎢⎢⎡y11y21...yp1y12y22...yp2............y1qy2q...ypq⎦⎥⎥⎤和M×N矩阵X=[x11x12...x1nx21x22...x2n............xm1xm2...xmn]X=\begin{bmatrix} x_{11} &x_{12} &... &x_{1n} \\ x_{21} &x_{22} &... &x_{2n} \\ ... &... &... &... \\ x_{m1} &x_{m2} &... &x_{mn} \end{bmatrix}X=⎣⎢⎢⎡x11x21...xm1x12x22...xm2............x1nx2n...xmn⎦⎥⎥⎤,
则dYdX=(∂Y∂xij)pm×qn=[∂Y∂x11∂Y∂x12...∂Y∂x1n∂Y∂x21∂Y∂x22...∂Y∂x2n............∂Y∂xm1∂Y∂xm2...∂Y∂xmn]\frac{dY}{dX}=(\frac{\partial Y}{\partial x_{ij}})_{pm\times qn}=\begin{bmatrix} \frac{\partial Y}{\partial x_{11}} &\frac{\partial Y}{\partial x_{12}} &... &\frac{\partial Y}{\partial x_{1n}} \\ \frac{\partial Y}{\partial x_{21}} &\frac{\partial Y}{\partial x_{22}} &... &\frac{\partial Y}{\partial x_{2n}} \\ ... &... &... &... \\ \frac{\partial Y}{\partial x_{m1}} &\frac{\partial Y}{\partial x_{m2}} &... &\frac{\partial Y}{\partial x_{mn}} \end{bmatrix}dXdY=(∂xij∂Y)pm×qn=⎣⎢⎢⎡∂x11∂Y∂x21∂Y...∂xm1∂Y∂x12∂Y∂x22∂Y...∂xm2∂Y............∂x1n∂Y∂x2n∂Y...∂xmn∂Y⎦⎥⎥⎤,
其中∂Y∂xij=[∂y11∂xij∂y12∂xij...∂y1q∂xij∂y21∂xij∂y22∂xij...∂y2q∂xij............∂yp1∂xij∂yp2∂xij...∂ypq∂xij]\frac{\partial Y}{\partial x_{ij}}=\begin{bmatrix} \frac{\partial y_{11}}{\partial x_{ij}} &\frac{\partial y_{12}}{\partial x_{ij}} &... &\frac{\partial y_{1q}}{\partial x_{ij}} \\ \frac{\partial y_{21}}{\partial x_{ij}} &\frac{\partial y_{22}}{\partial x_{ij}} &... &\frac{\partial y_{2q}}{\partial x_{ij}} \\ ... &... &... &... \\ \frac{\partial y_{p1}}{\partial x_{ij}} &\frac{\partial y_{p2}}{\partial x_{ij}} &... &\frac{\partial y_{pq}}{\partial x_{ij}} \end{bmatrix}∂xij∂Y=⎣⎢⎢⎢⎡∂xij∂y11∂xij∂y21...∂xij∂yp1∂xij∂y12∂xij∂y22...∂xij∂yp2............∂xij∂y1q∂xij∂y2q...∂xij∂ypq⎦⎥⎥⎥⎤
参考资料
http://blog.sina.com.cn/s/blog_8eac0b290101fsqb.html
https://www.cnblogs.com/pinard/p/10791506.html
[机器学习-数学] 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式相关推荐
- java二维矩阵怎么进行转置_矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)...
〇. 前言 在一个多月前,针对有同学关于矩阵求导中分子布局.分母布局两者的区别的疑问,我写了如下的这篇答案. 矩阵求导中布局约定,两者布局的意义是什么?www.zhihu.com 虽然这篇答案给出了 ...
- 矩阵求导的本质与分子布局、分母布局的本质(一)
这篇文章,通过查阅大量资料,总结出矩阵求导的本质与分子布局.分母布局,希望对初学的同学.想理解本质的同学提供一些帮助. 在开始学习之前,我们引入<动手学深度学习>里面的一个实例: 对于前两 ...
- 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式
神经网络反向传播时的梯度到底怎么求, 注意与下图矩阵求导的本质的区分:神经网络的在反向传播过程中,矩阵(m×n)对矩阵(p×q)求导的结果是只列出对相关元素求偏导的结果,其他不相关的元素根本就没有对应 ...
- 矩阵求导-2——分子布局与分母布局
主要参考文章 分子布局:分子为列向量,分母为行向量 分母布局:分母为列向量,分子为行向量 向量 对 向量 求导 标量 对 向量 求导 向量 对 标量求导
- 机器学习中最常用的矩阵/向量求导公式
文章目录 1 矩阵的迹 2 行列式的性质 3 向量相对于标量的导数与标量相对于向量的导数 4 矩阵相对于标量的导数与标量相对于矩阵的导数 5 函数f(x)对向量x的导数 6 向量和矩阵的导数满足乘法法 ...
- 【转载】矩阵求导、几种重要的矩阵及常用的矩阵求导公式
一.矩阵求导 一般来讲,我们约定x=(x1,x2,-xN)Tx=(x1,x2,-xN)T,这是分母布局.常见的矩阵求导方式有:向量对向量求导,标量对向量求导,向量对标量求导. 1.向量对向量求导 Nu ...
- 矩阵的 Frobenius 范数与 trace (迹)的关系及其求偏导法则
目录 1. 矩阵的迹求导法则 2. x is a column vector, A is a matrix 3. Practice: 4. 矩阵求导计算法则 一些结论: 1. 矩阵的迹求导法则 2. ...
- python求偏度系数_机器学习数学|偏度与峰度及其python实现
机器学习中的数学 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原创文章,如需转载请保留出处 本博客为七月在线邹博老师机器学习数学课程学习笔记 矩 对于随机变量X,X的K阶原点矩为 \[E( ...
- 《机器学习——数学公式推导合集》1. 线性模型之最小二乘法(least square method)求解线性模型
1.1 什么是最小二乘法(least square method) 最小二乘法: 基于均方误差最小化来进行模型求解的方法称为 "最小二乘法(least square method)" ...
最新文章
- github 项目绑定自己的域名
- 微服务小范围发布影响小
- cayley 图数据库
- 全球及中国医用敷料市场销售前景与竞争格局研究报告2022版
- CTF Geek Challenge——第十一届极客大挑战Crypto Write Up
- OpenCV场景文本识别的实例(附完整代码)
- c++多个对象构造和析构
- 一颗ARM架构芯片的软硬件构成
- smarty手册阅读笔记——变量调节器
- ectouch微信支付,带微信H5支付
- 1.分布式服务架构:原理、设计与实战 --- 分布式微服务架构设计原理
- 北航计算机学院考研英语一还是二,2018北京航空航天大学计算机考研经验分享...
- 微信小程序tabBar配置中的坑中坑
- DNS NoteBook
- 【笔记总结】高中英语——其二:名词性从句
- Unity实战之类爬塔功能
- html 截取指定字符串长度,前端js截取指定长度个数字符 v2.0.0
- 有个大神级女朋友是什么体验
- MSI驱动指南HOWTO
- 《罗密欧与朱丽叶》--[英]莎士比亚
热门文章
- 移动混合应用HTML5数据查询优化
- 安装node.js,CoffeeScript,Express.js,mysql,jade
- 活动事务日志以及事务的类型
- android 权重的使用
- 换了一个皮肤,心情也好多了
- 在Jetty服务器上安装SSL证书
- Tomcat BIO . NIO . ARP 配置
- BPDU内容、BPDU中flag位详解、RSTP协议BPDU中的flag位和STP中的BPDU flag位的区别(附图,建议PC观看)
- Python第七章-面向对象高级
- 并行计算教程简介 Introduction to Parallel Computing Tutorial