一, 矩阵求导

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=⎣⎢⎢⎢⎡​x1​x2​⋮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=⎣⎢⎢⎢⎡​x1​x2​⋮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=1n​aj​xj​​=∂xi​∂ai​xi​​=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=1n​xi​Aij​xj​​=i=1∑n​Aik​xi​+j=1∑n​Akj​x

这个第k个分量的求导结果稍微复杂些了,仔细观察一下,第一部分是矩阵A的第k列转置后和x相乘得到,第二部分是矩阵A的第k行和x相乘得到,排列好就是:

∂xTAx∂x=ATx+Ax\frac{∂x^TAx}{∂x}=A^Tx+Ax∂x∂xTAx​=ATx+Ax

2. 标量对向量求导的一些基本法则

在我们寻找一些简单的方法前,我们简单看下标量对向量求导的一些基本法则,这些法则和标量对标量求导的过程类似。

  1. 常量对向量的求导结果为0。
  2. 线性法则:如果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∂(c1​f(x)+c2​g(x))​=c1​∂x∂f(x)​+c2​∂x∂g(x)​

  1. 乘法法则:如果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)

要注意的是如果不是实值函数,则不能这么使用乘法法则。

  1. 除法法则:如果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=1n​ap​Apq​bq​​=∂Xij​∂ai​Aij​bj​​=ai​bj​
即求导结果在(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​∂Ai​x​=∂xj​∂Aij​xj​​=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=⎣⎢⎢⎡​y1​y2​...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​=⎣⎢⎢⎡​dxdy1​​dxdy2​​...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=⎣⎢⎢⎡​y11​y21​...ym1​​y12​y22​...ym2​​............​y1n​y2n​...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​=⎣⎢⎢⎡​dxdy11​​dxdy21​​...dxdym1​​​dxdy12​​dxdy22​​...dxdym2​​​............​dxdy1n​​dxdy2n​​...dxdymn​​​⎦⎥⎥⎤​

标量关于向量的导数

设标量y和向量x=[x1x2...xn],x=\begin{bmatrix} x_{1}\\ x_{2}\\ ...\\ x_{n} \end{bmatrix},x=⎣⎢⎢⎡​x1​x2​...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=⎣⎢⎢⎡​y1​y2​...ym​​⎦⎥⎥⎤​和向量x=[x1​​x2​​...​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=⎣⎢⎢⎡​y11​y21​...ym1​​y12​y22​...ym2​​............​y1n​y2n​...ymn​​⎦⎥⎥⎤​和p维向量x=[x1x2...xp]x=\begin{bmatrix} x_{1}\\ x_{2}\\ ...\\ x_{p} \end{bmatrix}x=⎣⎢⎢⎡​x1​x2​...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=⎣⎢⎢⎡​x11​x21​...xm1​​x12​x22​...xm2​​............​x1n​x2n​...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=⎣⎢⎢⎡​y1​y2​...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=⎣⎢⎢⎡​x11​x21​...xm1​​x12​x22​...xm2​​............​x1n​x2n​...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=⎣⎢⎢⎡​y11​y21​...yp1​​y12​y22​...yp2​​............​y1q​y2q​...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=⎣⎢⎢⎡​x11​x21​...xm1​​x12​x22​...xm2​​............​x1n​x2n​...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

[机器学习-数学] 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式相关推荐

  1. java二维矩阵怎么进行转置_矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)...

    〇. 前言 在一个多月前,针对有同学关于矩阵求导中分子布局.分母布局两者的区别的疑问,我写了如下的这篇答案. 矩阵求导中布局约定,两者布局的意义是什么?​www.zhihu.com 虽然这篇答案给出了 ...

  2. 矩阵求导的本质与分子布局、分母布局的本质(一)

    这篇文章,通过查阅大量资料,总结出矩阵求导的本质与分子布局.分母布局,希望对初学的同学.想理解本质的同学提供一些帮助. 在开始学习之前,我们引入<动手学深度学习>里面的一个实例: 对于前两 ...

  3. 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式

    神经网络反向传播时的梯度到底怎么求, 注意与下图矩阵求导的本质的区分:神经网络的在反向传播过程中,矩阵(m×n)对矩阵(p×q)求导的结果是只列出对相关元素求偏导的结果,其他不相关的元素根本就没有对应 ...

  4. 矩阵求导-2——分子布局与分母布局

    主要参考文章 分子布局:分子为列向量,分母为行向量 分母布局:分母为列向量,分子为行向量 向量 对 向量 求导 标量 对 向量 求导 向量 对 标量求导

  5. 机器学习中最常用的矩阵/向量求导公式

    文章目录 1 矩阵的迹 2 行列式的性质 3 向量相对于标量的导数与标量相对于向量的导数 4 矩阵相对于标量的导数与标量相对于矩阵的导数 5 函数f(x)对向量x的导数 6 向量和矩阵的导数满足乘法法 ...

  6. 【转载】矩阵求导、几种重要的矩阵及常用的矩阵求导公式

    一.矩阵求导 一般来讲,我们约定x=(x1,x2,-xN)Tx=(x1,x2,-xN)T,这是分母布局.常见的矩阵求导方式有:向量对向量求导,标量对向量求导,向量对标量求导. 1.向量对向量求导 Nu ...

  7. 矩阵的 Frobenius 范数与 trace (迹)的关系及其求偏导法则

    目录 1. 矩阵的迹求导法则 2. x is a column vector, A is a matrix 3. Practice: 4. 矩阵求导计算法则 一些结论: 1. 矩阵的迹求导法则 2. ...

  8. python求偏度系数_机器学习数学|偏度与峰度及其python实现

    机器学习中的数学 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原创文章,如需转载请保留出处 本博客为七月在线邹博老师机器学习数学课程学习笔记 矩 对于随机变量X,X的K阶原点矩为 \[E( ...

  9. 《机器学习——数学公式推导合集》1. 线性模型之最小二乘法(least square method)求解线性模型

    1.1 什么是最小二乘法(least square method) 最小二乘法: 基于均方误差最小化来进行模型求解的方法称为 "最小二乘法(least square method)" ...

最新文章

  1. github 项目绑定自己的域名
  2. 微服务小范围发布影响小
  3. cayley 图数据库
  4. 全球及中国医用敷料市场销售前景与竞争格局研究报告2022版
  5. CTF Geek Challenge——第十一届极客大挑战Crypto Write Up
  6. OpenCV场景文本识别的实例(附完整代码)
  7. c++多个对象构造和析构
  8. 一颗ARM架构芯片的软硬件构成
  9. smarty手册阅读笔记——变量调节器
  10. ectouch微信支付,带微信H5支付
  11. 1.分布式服务架构:原理、设计与实战 --- 分布式微服务架构设计原理
  12. 北航计算机学院考研英语一还是二,2018北京航空航天大学计算机考研经验分享...
  13. 微信小程序tabBar配置中的坑中坑
  14. DNS NoteBook
  15. 【笔记总结】高中英语——其二:名词性从句
  16. Unity实战之类爬塔功能
  17. html 截取指定字符串长度,前端js截取指定长度个数字符 v2.0.0
  18. 有个大神级女朋友是什么体验
  19. MSI驱动指南HOWTO
  20. 《罗密欧与朱丽叶》--[英]莎士比亚

热门文章

  1. 移动混合应用HTML5数据查询优化
  2. 安装node.js,CoffeeScript,Express.js,mysql,jade
  3. 活动事务日志以及事务的类型
  4. android 权重的使用
  5. 换了一个皮肤,心情也好多了
  6. 在Jetty服务器上安装SSL证书
  7. Tomcat BIO . NIO . ARP 配置
  8. BPDU内容、BPDU中flag位详解、RSTP协议BPDU中的flag位和STP中的BPDU flag位的区别(附图,建议PC观看)
  9. Python第七章-面向对象高级
  10. 并行计算教程简介 Introduction to Parallel Computing Tutorial