文章目录
矩阵向量求导
摘自:https://www.cnblogs.com/pinard/p/10825264.html,并加入了自己的一丢丢想法。
说明1
- 在矩阵向量求导中,可以采用定义法,微分法和链式求导法。
- 选择:优先选择链式求导法,其次选择微分法,最后使用定义法。
- 无论采用哪种方法都涉及到求导布局的问题,应首先掌握求导布局。
说明2
- 符号约定:
- x x x小写字母表示标量。
- x \mathbf{x} x小写黑体字母表示向量(默认是列向量)。
- X X X大写字母表示矩阵。
- 求导布局约定:
- 标量对向量求导和标量对矩阵求导均采用分母布局,保证求导的结果使得和向量或矩阵同型。
- 向量对标量求导和矩阵对标量求导均采用分子布局,保证求导的结果使得和向量或矩阵同型。
- 向量对向量求导采用分子布局,即雅克比式
- 其他约定:
- 不涉及以下求导
- 标量对标量求导【因为这个相比较其他的求导方式来说,简单了】
- 向量对矩阵的求导【遇到的不多】
- 矩阵对矩阵的求导【遇到的不多】
- 矩阵对矩阵的求导【遇到的不多】
- 想深入了解,请参见:https://www.cnblogs.com/pinard/p/10930902.html
- 不涉及以下求导
1.定义法
- 标量对向量或对矩阵求导,采用分母布局;向量对向量求导采用分子布局。
1. 用定义法求解标量对向量求导
-
解决 标 量 向 量 \frac{标量}{向量} 向量标量。
-
标量对向量的求导,其实就是标量对向量里的每个分量分别求导,最后把求导的结果排列在一起,按一个向量表示而已。那么我们可以将实值函数对向量的每一个分量来求导,最后找到规律,得到求导的结果向量
- 操作步骤:
- 各个元素展开,并表示。【简单的元素好表示,复杂的就不怎么好表示了;这就是局限该方法的局限性】
- 每个元素均进行求导操作。
- 选定一种求导布局,排列好求导完各个元素的顺序。
- 操作步骤:
举个例子
y = a T x \mathbf{y}=\mathbf{a}^T\mathbf{x} y=aTx,求解 ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial \mathbf{x}} ∂x∂y。
- 将标量(分子)完全展开
∂ y ∂ x i = ∂ a T x x i = ∂ ∑ j = 1 n a j x j ∂ x i = a i \frac{\partial \mathbf{y}}{\partial x_i} =\frac{\partial \mathbf{a}^T\mathbf{x}}{x_i} =\frac{\partial \sum_{j=1}^{n} a_j x_j}{\partial x_i} =a_i ∂xi∂y=xi∂aTx=∂xi∂∑j=1najxj=ai
-
因为采用分母布局,结果应该和分母(列向量)同型,所以
∂ a T x ∂ x = a \frac{\partial \mathbf{a}^T\mathbf{x}}{\partial \mathbf{x}}=\mathbf{a} ∂x∂aTx=a -
同理,采用分母布局计算 ∂ x T a ∂ x \frac{\partial \mathbf{x}^T\mathbf{a}}{\partial \mathbf{x}} ∂x∂xTa:
∂ x T a ∂ x = a \frac{\partial \mathbf{x}^T\mathbf{a}}{\partial \mathbf{x}}=\mathbf{a} ∂x∂xTa=a
y = x T x \mathbf{y}=\mathbf{x}^T\mathbf{x} y=xTx,求解 ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial \mathbf{x}} ∂x∂y。
-
将标量(分子)完全展开
∂ y ∂ x i = ∂ x T x x i = ∂ ∑ j = 1 n x j x j ∂ x i = 2 x j \frac{\partial \mathbf{y}}{\partial x_i} =\frac{\partial \mathbf{x}^T\mathbf{x}}{x_i} =\frac{\partial \displaystyle\sum_{j=1}^{n} x_j x_j}{\partial x_i} =2x_j ∂xi∂y=xi∂xTx=∂xi∂j=1∑nxjxj=2xj -
因为采用分母布局,结果应该和分母(列向量)同型,所以
-
∂ a T x ∂ x = 2 x \frac{\partial \mathbf{a}^T\mathbf{x}}{\partial \mathbf{x}}=2\mathbf{x} ∂x∂aTx=2x
y = x T A x \mathbf{y}=\mathbf{x}^T A\mathbf{x} y=xTAx,求解 ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial \mathbf{x}} ∂x∂y。
-
将标量(分子)完全展开
∂ x T A x ∂ x k = ∂ ∑ i = 1 n ∑ j = 1 n x i A i j x j ∂ x k = ∑ i = 1 n A i k x k + ∑ i = j n A j k x k = A T x + A x \frac{\partial \mathbf{x}^T A\mathbf{x}}{\partial x_k} =\frac{\partial \displaystyle \sum_{i=1}^{n}\sum_{j=1}^{n} {x_i A_{ij} x_j}}{\partial x_k} =\sum_{i=1}^{n}A_{ik}x_k+\sum_{i=j}^{n}A_{jk}x_k =A^T\mathbf{x}+A\mathbf{x} ∂xk∂xTAx=∂xk∂i=1∑nj=1∑nxiAijxj=i=1∑nAikxk+i=j∑nAjkxk=ATx+Ax -
可以发现,这个最后写成矩阵表达形式不像上面那么简单。
- 具体操作,相乘的地方用"十"字表示。
定义法求导对于简单的实值函数是很容易的,但是复杂的实值函数就算求出了任意一个分量的导数,要排列出最终的求导结果还挺麻烦的,因此我们需要找到其他的简便一些的方法来整体求导,而不是每次都先去针对任意一个分量,再进行排列。
2.用定义法求解标量对矩阵求导
- 解决 标 量 矩 阵 \frac{标量}{矩阵} 矩阵标量。
举个例子
y = a T X b \mathbf{y}=\mathbf{a}^TX\mathbf{b} y=aTXb,求解 ∂ a T X b ∂ X \frac{\partial \mathbf{a}^TX\mathbf{b}}{\partial X} ∂X∂aTXb。 X m ∗ n , a m ∗ 1 , b n ∗ 1 X_{m*n},\mathbf{a}_{m*1},\mathbf{b}_{n*1} Xm∗n,am∗1,bn∗1
-
将标量(分子)完全展开
∂ a T X b ∂ X = ∂ ∑ p = 1 m ∑ q = 1 n a p X p a b q ∂ X i j = ∂ a i X i j b j ∂ X i j = a i b j \frac{\partial \mathbf{a}^TX\mathbf{b}}{\partial X} =\frac{\partial \displaystyle \sum_{p=1}^{m}\sum_{q=1}^{n} a_p X_{pa} b_q}{\partial X_{ij}} =\frac{\partial a_i X_{ij} b_j}{\partial X_{ij}} =a_ib_j ∂X∂aTXb=∂Xij∂p=1∑mq=1∑napXpabq=∂Xij∂aiXijbj=aibj -
采用分母布局,最终结果为 m ∗ n m*n m∗n的矩阵。所以有
∂ a T X b ∂ X = a b T \frac{\partial \mathbf{a}^TX\mathbf{b}}{\partial X} =\mathbf{a}\mathbf{b}^T ∂X∂aTXb=abT
3.用定义法求解向量对向量的求导
- 解决 向 量 向 量 \frac{向量}{向量} 向量向量。
举个例子
y = A x \mathbf{y}=A\mathbf{x} y=Ax,求解 ∂ A x ∂ x \frac{\partial A\mathbf{x}}{\partial\mathbf{x}} ∂x∂Ax。 A m ∗ n , x n ∗ 1 , y m ∗ 1 A_{m*n},\mathbf{x}_{n*1},\mathbf{y}_{m*1} Am∗n,xn∗1,ym∗1。
-
根据向量对向量的求导的结果应该为 m ∗ n m*n m∗n维的矩阵。
-
先求矩阵的第 i i i行和向量的内积对向量的第 j j j分量求导,用定义法求解过程如下:
∂ A i x ∂ x j = ∂ ∑ k = 1 n A i k x k ∂ x j = A i j \frac{\partial A_i \mathbf{x}}{\partial x_{j}} =\frac{\partial \displaystyle \sum_{k=1}^{n}A_{ik}x_k}{\partial x_j} =A_{ij} ∂xj∂Aix=∂xj∂k=1∑nAikxk=Aij -
矩阵 A A A的第 i i i行和向量的内积对向量的第 j j j分量求导的结果就是矩阵 A A A的 ( i , j ) (i,j) (i,j)位置的值。
-
因为采用了分子布局,所以求导结果为 A A A;而不是采用分母布局后的 A T A^T AT。
- 可见求导布局对于最后结果的输出的影响是很大的。结果上差一个转置。
小结
==使用定义法虽然已经求出一些简单的向量矩阵求导的结果,但是对于复杂的求导式子,则中间运算会很复杂,=同时求导出的结果排列也是很麻烦。==所以需要引入微分法。
2. 微分法
- 使用微分法来求解标量对向量的求导,以及标量对矩阵的求导。
- 标量对向量的求导,以及标量对矩阵的求导使用分母布局。
1.矩阵微分
- 解决( 标 量 向 量 , 标 量 矩 阵 \frac{标量}{向量},\frac{标量}{矩阵} 向量标量,矩阵标量)。
1.单变量
-
解决 标 量 标 量 \frac{标量}{标量} 标量标量,这里不做探讨。
-
单变量的微分和导入关系如下:
d f = f ′ ( x ) d x df=f'(x)dx df=f′(x)dx
2.多变量
-
解决 标 量 向 量 \frac{标量}{向量} 向量标量
-
多元变量下的微分和导数的关系如下:
d f = ∑ i = 1 n ∂ f ∂ x i d x i = ( ∂ f ∂ x ) T d x df=\sum_{i=1}^{n}\frac{\partial f}{\partial x_i} dx_i=(\frac{\partial f}{\partial \mathbf{x}})^T d \mathbf{x} df=i=1∑n∂xi∂fdxi=(∂x∂f)Tdx
3.矩阵微分
-
解决 标 量 矩 阵 \frac{标量}{矩阵} 矩阵标量
-
矩阵下的微分和导数的关系如下:
d f = ∑ i = 1 m ∑ j = 1 n ∂ f ∂ X i j d X i j = t r ( ( ∂ f X ) T d X ) df=\displaystyle \sum_{i=1}^{m}\sum_{j=1}^{n}\frac{\partial f}{\partial X_{ij}}dX_{ij}=tr((\frac{\partial f}{X})^TdX) df=i=1∑mj=1∑n∂Xij∂fdXij=tr((X∂f)TdX)
迹函数
∑ i = 1 m ∑ j = 1 n A i j B j i = t r ( A T B ) \displaystyle \sum_{i=1}^{m} \sum_{j=1}^{n}A_{ij}B_{ji}=tr(A^TB) i=1∑mj=1∑nAijBji=tr(ATB)
-
其中 A , B A,B A,B同型。
-
举个例子:
X = ( x 11 x 12 x 21 x 22 x 31 x 31 ) d X = ( d x 11 d x 12 d x 21 d x 22 d x 31 d x 31 ) ∴ d f = ∂ f ∂ x 11 d x 11 + ∂ f ∂ x 21 d x 21 + ∂ f ∂ x 31 d x 31 + ∂ f ∂ x 12 d x 12 + ∂ f ∂ x 22 d x 22 + ∂ f ∂ x 32 d x 32 X= \begin{pmatrix} x_{11}& x_{12}\\ x_{21}& x_{22}\\ x_{31}& x_{31} \end{pmatrix}\\ dX= \begin{pmatrix} dx_{11}& dx_{12}\\ dx_{21}& dx_{22}\\ dx_{31}& dx_{31} \end{pmatrix}\\ \therefore df = \frac{\partial f}{\partial x_{11}}dx_{11}+\frac{\partial f}{\partial x_{21}}dx_{21}+\frac{\partial f}{\partial x_{31}}dx_{31} +\frac{\partial f}{\partial x_{12}}dx_{12}+\frac{\partial f}{\partial x_{22}}dx_{22}+\frac{\partial f}{\partial x_{32}}dx_{32} X=⎝⎛x11x21x31x12x22x31⎠⎞dX=⎝⎛dx11dx21dx31dx12dx22dx31⎠⎞∴df=∂x11∂fdx11+∂x21∂fdx21+∂x31∂fdx31+∂x12∂fdx12+∂x22∂fdx22+∂x32∂fdx32∴ d f = t r ( ( ∂ f ∂ x 11 ∂ f ∂ x 12 ∂ f ∂ x 21 ∂ f ∂ x 22 ∂ f ∂ x 31 ∂ f ∂ x 23 ) T ( d x 11 d x 12 d x 21 d x 22 d x 31 d x 31 ) ) \therefore df= tr( \begin{pmatrix} \frac{\partial f}{\partial x_{11}}& \frac{\partial f}{\partial x_{12}}\\ \frac{\partial f}{\partial x_{21}}& \frac{\partial f}{\partial x_{22}}\\ \frac{\partial f}{\partial x_{31}}& \frac{\partial f}{\partial x_{23}} \end{pmatrix}^T \begin{pmatrix} dx_{11}& dx_{12}\\ dx_{21}& dx_{22}\\ dx_{31}& dx_{31} \end{pmatrix}) ∴df=tr(⎝⎜⎛∂x11∂f∂x21∂f∂x31∂f∂x12∂f∂x22∂f∂x23∂f⎠⎟⎞T⎝⎛dx11dx21dx31dx12dx22dx31⎠⎞)
其中:
( ∂ f ∂ x 11 ∂ f ∂ x 12 ∂ f ∂ x 21 ∂ f ∂ x 22 ∂ f ∂ x 31 ∂ f ∂ x 23 ) T ( d x 11 d x 12 d x 21 d x 22 d x 31 d x 31 ) = ( ∂ f ∂ x 11 d x 11 + ∂ f ∂ x 21 d x 21 + ∂ f ∂ x 31 d x 31 ∗ ∗ ∂ f ∂ x 12 d x 12 + ∂ f ∂ 22 d x 22 + ∂ f ∂ x 32 d x 32 ) \begin{pmatrix} \frac{\partial f}{\partial x_{11}}& \frac{\partial f}{\partial x_{12}}\\ \frac{\partial f}{\partial x_{21}}& \frac{\partial f}{\partial x_{22}}\\ \frac{\partial f}{\partial x_{31}}& \frac{\partial f}{\partial x_{23}}\end{pmatrix}^T\begin{pmatrix} dx_{11}& dx_{12}\\ dx_{21}& dx_{22}\\ dx_{31}& dx_{31}\end{pmatrix}=\begin{pmatrix} \frac{\partial f}{\partial x_{11}}dx_{11}+\frac{\partial f}{\partial x_{21}}dx_{21}+\frac{\partial f}{\partial x_{31}}dx_{31}& *\\ *& \frac{\partial f}{\partial x_{12}}dx_{12}+\frac{\partial f}{\partial 22}dx_{22}+\frac{\partial f}{\partial x_{32}}dx_{32}\\ \end{pmatrix} ⎝⎜⎛∂x11∂f∂x21∂f∂x31∂f∂x12∂f∂x22∂f∂x23∂f⎠⎟⎞T⎝⎛dx11dx21dx31dx12dx22dx31⎠⎞=(∂x11∂fdx11+∂x21∂fdx21+∂x31∂fdx31∗∗∂x12∂fdx12+∂22∂fdx22+∂x32∂fdx32)
所以:
d f = t r ( ( ∂ f X ) T d X ) df=tr((\frac{\partial f}{X})^TdX) df=tr((X∂f)TdX)
统一表示
- 上面矩阵微分的式子,可以看到矩阵微分和它的导数也有一个转置的关系,不过在外面套了一个迹函数而已。由于标量的迹函数就是它本身,那么矩阵微分和向量微分可以统一表示。即:
向 量 微 分 : d f = t r ( ( ∂ f ∂ x ) T d x ) 矩 阵 微 分 : d f = = t r ( ( ∂ f X ) T d X ) 向量微分:df=tr((\frac{\partial f}{\partial \mathbf{x}})^T d \mathbf{x})\\ 矩阵微分:df==tr((\frac{\partial f}{X})^TdX) 向量微分:df=tr((∂x∂f)Tdx)矩阵微分:df==tr((X∂f)TdX)
2.矩阵微分性质和迹函数的性质
矩阵微分的性质
- 在后面的求导中有运用。
- 微分加减法: d ( X + Y ) = d X + d Y d(X+Y)=dX+dY d(X+Y)=dX+dY。
- 微分乘法: d ( X Y ) = ( d X ) Y + X ( d Y ) d(XY)=(dX)Y+X(dY) d(XY)=(dX)Y+X(dY)。
- 微分转置: d ( x T ) = ( d X ) T d(x^T)=(dX)^T d(xT)=(dX)T。
- 微分的迹: t r ( d X ) = d ( t r ( X ) ) tr(dX)=d(tr(X)) tr(dX)=d(tr(X))。
- 微分的哈达玛积: d ( X ⊙ Y ) = d ( X ) ⊙ d ( Y ) d(X\odot Y)=d(X)\odot d(Y) d(X⊙Y)=d(X)⊙d(Y)。
- 逐个元素求导: d ( σ ′ ( X ) ) = σ ′ ( X ) ⊙ d ( X ) d(\sigma'(X))=\sigma'(X)\odot d(X) d(σ′(X))=σ′(X)⊙d(X)。
- 逆矩阵微分: d ( X − 1 ) = − X − 1 d ( X ) X − 1 d(X^{-1})=-X^{-1}d(X)X^{-1} d(X−1)=−X−1d(X)X−1。
- 行列式微分: d ( ∣ X ∣ ) = ∣ X ∣ t r ( X − 1 d X ) d(|X|)=|X|tr(X^{-1}dX) d(∣X∣)=∣X∣tr(X−1dX)。
说明:
- 其中的哈达玛积的计算,一般表示为 A ⊙ B A\odot B A⊙B或 A ∘ B A \circ B A∘B,参考百度即可:哈达玛积
- 上述的逆矩阵的微分和行列式的微分,个人并没有推导。
迹函数的性质
- 在后面的求导中有运用。
- 标量的迹等于它本身: t r ( y ) = y tr(y)=y tr(y)=y。
- 矩阵转置不改变迹的值: t r ( A T ) = t r ( A ) tr(A^T)=tr(A) tr(AT)=tr(A)。
- 迹满足交换律: t r ( A B ) = t r ( B A ) tr(AB)=tr(BA) tr(AB)=tr(BA),其中 A , B T A,B^T A,BT同型。
- 迹的加减法: t r ( X + Y ) = t r ( X ) + t r ( Y ) ; t r ( X − Y ) = t r ( X ) − t r ( Y ) tr(X+Y)=tr(X)+tr(Y);tr(X-Y)=tr(X)-tr(Y) tr(X+Y)=tr(X)+tr(Y);tr(X−Y)=tr(X)−tr(Y)。
- 矩阵乘法和迹交换: t r ( ( A ⊙ B ) T ⊙ C ) = t r ( A T ( B ⊙ C ) ) tr((A\odot B)^T\odot C)=tr(A^T(B \odot C)) tr((A⊙B)T⊙C)=tr(AT(B⊙C))。其中 A , B , C A,B,C A,B,C同型。
3.使用微分法对矩阵向量求导
1.法则
若标量函数 f f f是矩阵 X X X经加减乘法、逆、行列式、逐元素函数等运算构成。
- 则使用相应的运算法则对 f f f求微分。
- 再使用迹函数技巧给 d f df df套上迹。
- 并将其它项交换至 d X dX dX左侧。
- 那么对于迹函数里面在 d X dX dX左边的部分,我们只需要加一个转置就可以得到导数了。
2.例子
例1
y = a T X b y=a^TXb y=aTXb,求 ∂ y ∂ X \frac{\partial y}{\partial X} ∂X∂y。 a m ∗ 1 , X m ∗ n , b n ∗ 1 , y 1 ∗ 1 a_{m*1},X_{m*n},b_{n*1},y_{1*1} am∗1,Xm∗n,bn∗1,y1∗1。类型 标 量 矩 阵 \frac{标量}{矩阵} 矩阵标量, y y y是一个标量, d y dy dy也是一个标量。
求解步骤:
-
使用微分法的乘法对 f f f求微分。
d y = d ( a T ) X b + a T d ( X ) b + a T X d ( b ) = a T d ( X ) b dy=d(a^T)Xb+a^Td(X)b+a^TXd(b)=a^Td(X)b dy=d(aT)Xb+aTd(X)b+aTXd(b)=aTd(X)b- 因为最终是对 X X X求导( d X dX dX),那么微分中不含 d X dX dX的最终结果都为 0 0 0。
-
等式两边进行取迹( t r tr tr)操作。
d y = t r ( d y ) = t r ( a T d ( X ) b ) = t r ( b a T d ( X ) ) dy=tr(dy)=tr(a^Td(X)b)=tr(ba^Td(X)) dy=tr(dy)=tr(aTd(X)b)=tr(baTd(X))- 第一个等式成立是因为,标量的迹等于它本身,
- 第二等式成立是因为,那本身等式的两边取迹。
- 第三个等式成立是为,迹函数的性质三。
-
已经将 d X dX dX放在迹内的最右侧了,那么其前面的部分加上转置就是求导后的结果。
∂ f ∂ X = ( b a T ) T = a b T \frac{\partial f}{\partial X}=(ba^T)^T=ab^T ∂X∂f=(baT)T=abT
查表Scalar-by-matrix identities的第8行,结果一致。采用分母布局。
例2
y = a T e x p ( X b ) y=a^Texp(Xb) y=aTexp(Xb),求 ∂ y ∂ X \frac{\partial y}{\partial X} ∂X∂y。 a m ∗ 1 , X m ∗ n , b n ∗ 1 , y 1 ∗ 1 a_{m*1},X_{m*n},b_{n*1},y_{1*1} am∗1,Xm∗n,bn∗1,y1∗1。类型 标 量 矩 阵 \frac{标量}{矩阵} 矩阵标量, y y y是一个标量, d y dy dy也是一个标量。
-
d y = d ( a ) e x p ( X b ) + a T d ( e x p ( X b ) ) = a T d ( e x p ( X b ) ) = a T e x p ( X b ) ⊙ d ( X b ) = a T e x p ( X b ) ⊙ ( d ( X ) b ) dy=d(a)exp(Xb)+a^Td(exp(Xb))\\ =a^Td(exp(Xb))\\ =a^Texp(Xb)\odot d(Xb)\\ =a^Texp(Xb)\odot (d(X)b)\\ dy=d(a)exp(Xb)+aTd(exp(Xb))=aTd(exp(Xb))=aTexp(Xb)⊙d(Xb)=aTexp(Xb)⊙(d(X)b)
- 第三个等式成立,是很显然的,用到哈达玛积。
- 第四个等式成立,目标是要剥离出 d X dX dX,同时这样的写法是没用问题的。 b b b对于 X X X来说是常数。可以展开来详细看看。
-
d y = t r ( d y ) = t r ( a T e x p ( X b ) ⊙ ( d ( X ) b ) ) = t r ( ( a ⊙ e x p ( X b ) ) T ( d ( X ) b ) ) = t r ( ( a ⊙ e x p ( X b ) ) T d X b ) = t r ( b ( a ⊙ e x p ( X b ) ) T d X ) dy=tr(dy)=tr(a^Texp(Xb)\odot (d(X)b))\\ =tr((a \odot exp(Xb))^T(d(X)b))\\ =tr((a \odot exp(Xb))^TdXb)\\ =tr(b(a \odot exp(Xb))^TdX) dy=tr(dy)=tr(aTexp(Xb)⊙(d(X)b))=tr((a⊙exp(Xb))T(d(X)b))=tr((a⊙exp(Xb))TdXb)=tr(b(a⊙exp(Xb))TdX)
- 第一个等号是因为,标量的迹等于它本身。
- 第三个等号成立是因为,迹函数的技巧5,矩阵乘法和迹交换.
- 第六个等号成立是因为,去掉 d X dX dX的符号和原来一样,目标也是要把 d X dX dX给剥离出来。
- 最后一个等号成立是因为,迹的交换律。
-
所以最终结论为:
∂ y ∂ X = ( b ( a ⊙ e x p ( X b ) ) T ) T = ( a ⊙ e x p ( X b ) ) b T \frac{\partial y}{\partial X}=(b(a \odot exp(Xb))^T)^T=(a\odot exp(Xb))b^T ∂X∂y=(b(a⊙exp(Xb))T)T=(a⊙exp(Xb))bT
4.使用迹函数对矩阵向量求导
1.基本形式
∂ t r ( A B ) ∂ A \frac{\partial tr(AB)}{\partial A} ∂A∂tr(AB),其中 A m ∗ n , B n ∗ m A_{m*n},B_{n*m} Am∗n,Bn∗m。 t r ( A B ) ( 1 ∗ 1 ) tr(AB)_{(1*1)} tr(AB)(1∗1)是个标量。类型 标 量 矩 阵 \frac{标量}{矩阵} 矩阵标量。
-
展开
d ( t r ( A B ) ) = t r ( d ( A B ) ) = t r ( d ( A ) B + A d B ) = t r ( d ( A ) B ) = t r ( B d A ) d(tr(AB))=tr(d(AB))=tr(d(A)B+AdB)=tr(d(A)B)=tr(BdA) d(tr(AB))=tr(d(AB))=tr(d(A)B+AdB)=tr(d(A)B)=tr(BdA)- 第一个等式成立是以为, d d d操作和 t r tr tr操作可以互换。矩阵微分性质4,微分的迹。
- 第二个等式成立是因为,矩阵微分2,微分乘法。
- 第三个等式成立是因为,做种求的是关于 d A dA dA,所以不含 d ( A ) d(A) d(A)的项最终值均为 0 0 0,故舍去。
- 第四个等式成立是因为,迹函数技巧3,迹的交换律。
-
结果,加个转置
∂ t r ( A B ) ∂ A = B T \frac{\partial tr(AB)}{\partial A}=B^T ∂A∂tr(AB)=BT
∂ t r ( A B ) ∂ B \frac{\partial tr(AB)}{\partial B} ∂B∂tr(AB),其中 A m ∗ n , B n ∗ m A_{m*n},B_{n*m} Am∗n,Bn∗m。 t r ( A B ) ( 1 ∗ 1 ) tr(AB)_{(1*1)} tr(AB)(1∗1)是个标量。
- ∂ t r ( A B ) ∂ B = A T \frac{\partial tr(AB)}{\partial B}=A^T ∂B∂tr(AB)=AT
2.例子
∂ t r ( W T A W ) ∂ W = ∂ ( W T A W ) ∂ W \frac{\partial tr(W^TAW)}{\partial W}=\frac{\partial (W^TAW)}{\partial W} ∂W∂tr(WTAW)=∂W∂(WTAW)。 W n ∗ 1 , A n ∗ n W_{n*1},A_{n*n} Wn∗1,An∗n, W T A W ( 1 ∗ 1 ) W^TAW_{(1*1)} WTAW(1∗1)是一个标量。类型 标 量 向 量 \frac{标量}{向量} 向量标量
-
d ( t r ( W T A W ) ) = t r ( d ( W T A W ) ) = t r ( d ( W T ) A W + W T A d ( W ) ) = t r ( ( d ( W ) T A W + W T A d ( W ) ) = t r ( ( d ( W ) ) T A W ) + t r ( W T A d ( W ) ) = t r ( ( A W ) T d ( W ) ) + t r ( W T A d ( W ) ) d(tr(W^TAW))=tr(d(W^TAW))\\ =tr(d(W^T)AW+W^TAd(W))\\ =tr((d(W)^TAW+W^TAd(W))\\ =tr((d(W))^TAW)+tr(W^TAd(W))\\ =tr((AW)^Td(W))+tr(W^TAd(W)) d(tr(WTAW))=tr(d(WTAW))=tr(d(WT)AW+WTAd(W))=tr((d(W)TAW+WTAd(W))=tr((d(W))TAW)+tr(WTAd(W))=tr((AW)Td(W))+tr(WTAd(W))
-
所以,
∂ t r ( W T A W ) ∂ W = ( ( A W ) T ) T + ( W T A ) T = A W + A T W = ( A + A T ) W \frac{\partial tr(W^TAW)}{\partial W}=((AW)^T)^T+(W^TA)^T=AW+A^TW=(A+A^T)W ∂W∂tr(WTAW)=((AW)T)T+(WTA)T=AW+ATW=(A+AT)W
小结
- 使用矩阵微分,可以在不对向量或矩阵中的某一元素单独求导再拼接,因此会比较方便,当然熟练使用的前提是对上面矩阵微分的性质,以及迹函数的性质熟练运用。
- 还有一些场景,求导的自变量和因变量直接有复杂的多层链式求导的关系,此时微分法使用起来也有些麻烦。如果我们可以利用一些常用的简单求导结果,再使用链式求导法则。
3.链式法
求导的自变量和因变量直接有复杂的多层链式求导的关系,此时微分法使用起来也有些麻烦。使用矩阵向量求导链式法则,快速求出导数结果。
- 标量对向量的求导,标量对矩阵的求导使用分母布局, 向量对向量的求导使用分子布局。
1.向量对向量的求导法则
假设存在多个向量的依赖关系,如 x → y → z \mathbf{x}\rightarrow \mathbf{y} \rightarrow \mathbf{z} x→y→z。其中 x p ∗ 1 , y m ∗ 1 , z n ∗ 1 \mathbf{x}_{p*1},\mathbf{y}_{m*1},\mathbf{z}_{n*1} xp∗1,ym∗1,zn∗1。
-
∂ z ∂ x \frac{\partial \mathbf{z}}{\partial \mathbf{x}} ∂x∂z应该是 ( n ∗ p ) (n*p) (n∗p)维。采用分子布局,雅克比式。
-
所以有:
∂ z ∂ x = ∂ z ∂ y ∂ y ∂ x \frac{\partial \mathbf{z}}{\partial \mathbf{x}}=\frac{\partial \mathbf{z}}{\partial \mathbf{y}}\frac{\partial \mathbf{y}}{\partial \mathbf{x}} ∂x∂z=∂y∂z∂x∂y
注意:这个写法只在全是向量的依存关系时,才是对的。 -
拓展: x → y 1 ⋯ → y n → z \mathbf{x}\rightarrow \mathbf{y_1} \cdots\rightarrow \mathbf{y_n}\rightarrow \mathbf{z} x→y1⋯→yn→z。
∂ z ∂ x = ∂ z ∂ y n ∂ y n ∂ y n − 1 ⋯ ∂ y ∂ x \frac{\partial \mathbf{z}}{\partial \mathbf{x}}= \frac{\partial \mathbf{z}}{\partial \mathbf{y_n}} \frac{\partial \mathbf{y_n}}{\partial \mathbf{y_{n-1}}} \cdots \frac{\partial \mathbf{y}}{\partial \mathbf{x}} ∂x∂z=∂yn∂z∂yn−1∂yn⋯∂x∂y
2.标量对多个向量的链式求导法则
在机器学习算法中,最终要优化的一般是一个标量损失函数,因此最后求导的目标是标量。所以这个更常用一点。
假设存在多个向量的依赖关系,如 x → y → z \mathbf{x}\rightarrow \mathbf{y} \rightarrow z x→y→z。其中 x p ∗ 1 , y m ∗ 1 , z 1 ∗ 1 \mathbf{x}_{p*1},\mathbf{y}_{m*1},\mathbf{z}_{1*1} xp∗1,ym∗1,z1∗1。 z z z是标量。
-
∂ z ∂ x \frac{\partial z}{\partial \mathbf{x}} ∂x∂z应该是 ( p ∗ 1 ) (p*1) (p∗1)维。采用分母布局。
-
∂ z ∂ y \frac{\partial z}{\partial \mathbf{y}} ∂y∂z是 ( m ∗ 1 ) (m*1) (m∗1)维,采用分母布局。 ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial \mathbf{x}} ∂x∂y是 ( m ∗ p ) (m*p) (m∗p)维。
-
要使上述的链式求导时维度可以相容,即
维 度 p ∗ 1 = 维 度 p ∗ m ∗ 维 度 m ∗ 1 维度_{p*1}=维度_{p*m}*维度_{m*1} 维度p∗1=维度p∗m∗维度m∗1∂ z ∂ x = ( ∂ y ∂ x ) T ∂ z ∂ y \frac{\partial z}{\partial \mathbf{x}}=(\frac{\partial \mathbf{y}}{\partial \mathbf{x}})^T\frac{\partial z}{\partial \mathbf{y}} ∂x∂z=(∂x∂y)T∂y∂z
-
推论: x → y 1 ⋯ → y n → z \mathbf{x}\rightarrow \mathbf{y_1} \cdots\rightarrow \mathbf{y_n}\rightarrow z x→y1⋯→yn→z。
∂ z ∂ x = ( ∂ y n ∂ y n − 1 ∂ y n − 1 ∂ y n − 2 ⋯ ∂ y 1 ∂ x ) T ∂ z ∂ y n \frac{\partial \mathbf{z}}{\partial \mathbf{x}}= ( \frac{\partial \mathbf{y_n}}{\partial \mathbf{y_{n-1}}} \frac{\partial \mathbf{y_{n-1}}}{\partial \mathbf{y_{n-2}}} \cdots \frac{\partial \mathbf{y_{1}}}{\partial \mathbf{x}} )^T \frac{\partial z}{\partial \mathbf{y_n}} ∂x∂z=(∂yn−1∂yn∂yn−2∂yn−1⋯∂x∂y1)T∂yn∂z
例子
设有列向量 θ \theta θ,列向量 z = X θ − y \mathbf{z}=X\theta-\mathbf{y} z=Xθ−y,标量 l = z T z l=z^Tz l=zTz。 θ n ∗ 1 , X m ∗ n , y m ∗ 1 , l 1 ∗ 1 \theta_{n*1},X_{m*n},\mathbf{y}_{m*1},l_{1*1} θn∗1,Xm∗n,ym∗1,l1∗1。
构成:
θ
→
z
→
l
\theta \rightarrow \mathbf{z} \rightarrow l
θ→z→l,求
∂
l
∂
θ
\frac{\partial l}{\partial \theta}
∂θ∂l
∂
l
∂
θ
=
(
∂
z
∂
θ
)
T
∂
l
∂
z
\frac{\partial l}{\partial \theta}=(\frac{\partial \mathbf{z}}{\partial \theta})^T\frac{\partial l}{\partial \mathbf{z}}
∂θ∂l=(∂θ∂z)T∂z∂l
-
∂ z ∂ θ = ∂ ( X θ − y ) ∂ θ = ∂ ( X θ ) ∂ θ = 向 量 向 量 = X \frac{\partial \mathbf{z}}{\partial \theta}=\frac{\partial (X\theta-\mathbf{y})}{\partial \theta}=\frac{\partial (X\theta)}{\partial \theta}=\frac{向量}{向量}=X ∂θ∂z=∂θ∂(Xθ−y)=∂θ∂(Xθ)=向量向量=X
- 采用分子布局, ∂ ( X θ ) ∂ θ \frac{\partial (X\theta)}{\partial \theta} ∂θ∂(Xθ)是( m ∗ n m*n m∗n)维。所以结果是 X m ∗ n X_{m*n} Xm∗n,而不是 X T X^T XT。
-
∂ l ∂ z = ∂ z T z ∂ z = 标 量 向 量 = 2 z \frac{\partial l}{\partial \mathbf{z}}=\frac{\partial z^Tz}{\partial z}=\frac{标量}{向量}=2z ∂z∂l=∂z∂zTz=向量标量=2z
- 这个计算,可以用定义法求解。前面已经求过了。
-
∂ l ∂ θ = ( ∂ z ∂ θ ) T ∂ l ∂ z = X T ( 2 z ) = 2 X T ( X θ − y ) \frac{\partial l}{\partial \theta}=(\frac{\partial \mathbf{z}}{\partial \theta})^T\frac{\partial l}{\partial \mathbf{z}}=X^T(2\mathbf{z})=2X^T(X\theta - \mathbf{y}) ∂θ∂l=(∂θ∂z)T∂z∂l=XT(2z)=2XT(Xθ−y)
3.标量对多个矩阵的链式求导法则
假设有 X → Y → z X \rightarrow Y \rightarrow z X→Y→z。其中 X p ∗ q , Y m ∗ n , z 1 ∗ 1 X_{p*q},Y_{m*n},z_{1*1} Xp∗q,Ym∗n,z1∗1。 X , Y X,Y X,Y是矩阵,$z是标量。求网络的参数。
-
矩阵对矩阵的求导是比较复杂的定义,不给出基于矩阵整体的链式求导法则。参考
-
给出对矩阵中一个标量的链式求导方法。
-
虽然我们没有全局的标量对矩阵的链式求导法则,但是对于一些线性关系的链式求导,还是可以得到一些有用的结论的。
∂ z ∂ x i j = ∑ k , l ∂ z ∂ Y k l ∂ Y k l ∂ x i j = t r ( ( ∂ z ∂ Y ) T ∂ Y ∂ x i j ) \frac{\partial z}{\partial x_{ij}}=\sum_{k,l}\frac{\partial z}{\partial Y_{kl}}\frac{\partial Y_{kl}}{\partial x_{ij}}=tr((\frac{\partial z}{\partial Y})^T \frac{\partial Y}{\partial x_{ij}}) ∂xij∂z=k,l∑∂Ykl∂z∂xij∂Ykl=tr((∂Y∂z)T∂xij∂Y)- 其中 k , l k,l k,l分别从 Y Y Y的行数和列数中取值(或列数和行数)。
- 第一等式成立是以为,在 X X X中的一个元素 x i j x_{ij} xij都和 Y Y Y中的元素 y k l y_{kl} ykl相关。同时对于 Y Y Y的某个确定的 y k ∗ l ∗ y_{k_{*}l_{*}} yk∗l∗。 y k ∗ l ∗ y_{k_{*}l_{*}} yk∗l∗总是和 z z z相关。所以出现对 Y Y Y中的每个元素对 x i j x_{ij} xij求导, z z z对每个 Y Y Y中的元素求导,然后用链式穿起来(因为都是标量,所以谁前谁后没关系)。
- 第二等式成立是以为,前面矩阵微分已经详细说明了,并且举了例子。
经典例子
设 A , X , B , Y A,X,B,Y A,X,B,Y都是矩阵, z z z是标量,其中 z = f ( Y ) , Y = A X + B z=f(Y),Y=AX+B z=f(Y),Y=AX+B。求 ∂ z ∂ X \frac{\partial z}{\partial X} ∂X∂z就是经典的机器学习中问题。 A A A是参数矩阵, X X X是数据集构成的矩阵。其中 X m ∗ n , A p ∗ m , Y p ∗ n , z 1 ∗ 1 , B p ∗ n X_{m*n},A_{p*m},Y_{p*n},z_{1*1},B_{p*n} Xm∗n,Ap∗m,Yp∗n,z1∗1,Bp∗n。
-
标量的链式求导法则求 ∂ z ∂ x i j \frac{\partial z}{\partial x_{ij}} ∂xij∂z。
∂ z ∂ x i j = ∑ k , l ∂ z ∂ Y k l ∂ Y k l ∂ x i j \frac{\partial z}{\partial x_{ij}}=\sum_{k,l}\frac{\partial z}{\partial Y_{kl}}\frac{\partial Y_{kl}}{\partial x_{ij}} ∂xij∂z=k,l∑∂Ykl∂z∂xij∂Ykl -
对于 ∂ Y k l ∂ x i j \frac{\partial Y_{kl}}{\partial x_{ij}} ∂xij∂Ykl。
∂ Y k l ∂ x i j = ∂ ∑ s ( A k s x s l ) ∂ x i j = ∂ ( A k i x i l ) ∂ x i j = { A k i , l = j 0 , l ≠ j = A k i δ l j . 当 l = j 时 , δ l j = 1 ; 当 l ≠ j 时 , δ l j = 0. \frac{\partial Y_{kl}}{\partial x_{ij}}=\frac{\partial \displaystyle \sum_{s}(A_{ks}x_{sl})}{\partial x_{ij}}=\frac{\partial (A_{ki}x_{il})}{\partial x_{ij}}=\begin{cases}A_{ki},l=j \\0,l\neq j\end{cases}=A_{ki}\delta_{lj}.\\当l=j时,\delta_{lj}=1;当l \neq j时,\delta_{lj}=0. ∂xij∂Ykl=∂xij∂s∑(Aksxsl)=∂xij∂(Akixil)={Aki,l=j0,l=j=Akiδlj.当l=j时,δlj=1;当l=j时,δlj=0.- 第一个等号成立是因为,为了方便第二个等式的推导。其实没必要给出,给出的目的只是为了强化矩阵的乘法。
- 算的的标量的求导,那么对于 x i j x_{ij} xij的偏导一定是一个变量,说白了就是矩阵相乘时 x i j x_{ij} xij前的系数。这个系数的计算肯定用到矩阵的乘法。
- 第二个等式成立是因为:
- X X X和 A A A相乘,现在已经知道是对 X i j X_{ij} Xij求导,它在第 i i i行出现,对应的 A k l A_{kl} Akl一定在第 i i i列。所以 s = i s=i s=i。所以锁定 A k i A_{ki} Aki。其中的 k k k是已经确定的,相当于知道了是 A A A的第 k k k行。
- 与 A k i A_{ki} Aki相乘的元素,对应 X X X中的第 i i i行,可以表示为 A k i x i l A_{ki}x_{il} Akixil, l l l取尽 X X X中的所有列。因为要求的是 x i j x_{ij} xij的导数,所以在 l = j l=j l=j时,对它的导数为 A k i A_{ki} Aki,在 l ≠ j l \neq j l=j时,对它的导数 0 0 0。
- 第一个等号成立是因为,为了方便第二个等式的推导。其实没必要给出,给出的目的只是为了强化矩阵的乘法。
-
所以
∂ z ∂ x i j = ∑ k , l ∂ z ∂ Y k l ∂ Y k l ∂ x i j = ∑ k ∂ z ∂ Y k j A k i δ l j = ∑ k ∂ z ∂ Y k j A k \frac{\partial z}{\partial x_{ij}}=\sum_{k,l}\frac{\partial z}{\partial Y_{kl}}\frac{\partial Y_{kl}}{\partial x_{ij}}=\sum_{k}\frac{\partial z}{\partial Y_{kj}}A_{ki}\delta_{lj}=\sum_{k}\frac{\partial z}{\partial Y_{kj}}A_{k} ∂xij∂z=k,l∑∂Ykl∂z∂xij∂Ykl=k∑∂Ykj∂zAkiδlj=k∑∂Ykj∂zAk- 第二个等式成立是因为,取尽所有
Y
Y
Y中的列数得出的结果。
- l ≠ j l \neq j l=j时, δ \delta δ为 0 0 0。 l = j l = j l=j时, δ \delta δ为 1 1 1。
- 第三个等式成立是因为,去掉 δ \delta δ并不会该变其值。因为 δ \delta δ的取值只有 0 或 1 0或1 0或1。
- 第二个等式成立是因为,取尽所有
Y
Y
Y中的列数得出的结果。
-
对于 ∑ k ∂ z ∂ Y k j A k i \sum_{k}\frac{\partial z}{\partial Y_{kj}}A_{ki} ∑k∂Ykj∂zAki。
-
这个可以写成矩阵的表达形式。
-
以为是对 k k k进行遍历求和,而给出的只有 ( k ∗ i ) (k*i) (k∗i)和 ( k ∗ l ) (k*l) (k∗l)。通过矩阵相乘的概念, k k k应该出现在矩阵相乘维度相容的中间,即 ( i ∗ k ) 和 ( k ∗ l ) (i*k)和(k*l) (i∗k)和(k∗l)或 ( l ∗ k ) 和 ∗ ( k ∗ i ) (l*k)和*(k*i) (l∗k)和∗(k∗i)。
-
若采用 ( i ∗ k ) 和 ( k ∗ l ) (i*k)和(k*l) (i∗k)和(k∗l),矩阵 A T A^T AT的第 i i i行和 ∂ z ∂ Y \frac{\partial z}{\partial Y} ∂Y∂z的第 j j j列的内积。
∂ z ∂ X = A T ∂ z ∂ Y \frac{\partial z}{\partial X}=A^T\frac{\partial z}{\partial Y} ∂X∂z=AT∂Y∂z- 因为采用分布分母布局,所以
∂
z
∂
X
\frac{\partial z}{\partial X}
∂X∂z应该是$m*n维的。
- A T A^T AT是 m ∗ p m*p m∗p的, ∂ z ∂ Y \frac{\partial z}{\partial Y} ∂Y∂z是 p ∗ n p*n p∗n的。
- 所以上述是维度是匹配的(相容的)。
- 因为采用分布分母布局,所以
∂
z
∂
X
\frac{\partial z}{\partial X}
∂X∂z应该是$m*n维的。
-
若采用 ( l ∗ k ) 和 ( k ∗ i ) (l*k)和(k*i) (l∗k)和(k∗i),矩阵 ( ∂ z ∂ Y ) T (\frac{\partial z}{\partial Y})^T (∂Y∂z)T的第 l l l行和 A A A的第 i i i列的内积。
∂ z ∂ X = ( ∂ z ∂ Y ) T A \frac{\partial z}{\partial X}=(\frac{\partial z}{\partial Y})^TA ∂X∂z=(∂Y∂z)TA- 因为采用的是分母布局,所以上述的表达式维度相容,故舍去。
-
结论
- 约定:采用分母布局。
结论1
- 设 A , X , B , Y A,X,B,Y A,X,B,Y都是矩阵, z z z是标量,其中 z = f ( Y ) , Y = A X + B z=f(Y),Y=AX+B z=f(Y),Y=AX+B。求 ∂ z ∂ X \frac{\partial z}{\partial X} ∂X∂z。
z = f ( Y ) , Y = A X + B z=f(Y),Y=AX+B z=f(Y),Y=AX+B
则
∂
z
∂
X
=
A
T
∂
z
∂
Y
\frac{\partial z}{\partial X}=A^T\frac{\partial z}{\partial Y}
∂X∂z=AT∂Y∂z
2. 设
A
A
A都是矩阵,
x
,
y
,
b
\mathbf{x},\mathbf{y},b
x,y,b是向量,
z
z
z是标量,其中
z
=
f
(
Y
)
,
Y
=
A
x
+
b
z=f(Y),Y=A\mathbf{x}+b
z=f(Y),Y=Ax+b。求
∂
z
∂
x
\frac{\partial z}{\partial \mathbf{x}}
∂x∂z。
z
=
f
(
Y
)
,
Y
=
A
x
+
b
z=f(Y),Y=A\mathbf{x}+b
z=f(Y),Y=Ax+b
∂ z ∂ x = A T ∂ z ∂ y \frac{\partial z}{\partial \mathbf{x}}=A^T\frac{\partial z}{\partial \mathbf{y}} ∂x∂z=AT∂y∂z
结论2
- 如果要求导的自变量在左边,线性变换在右边,也有类似稍有不同的结论如下
-
设 A , X , B , Y A,X,B,Y A,X,B,Y都是矩阵, z z z是标量,其中 z = f ( Y ) , Y = X A + B z=f(Y),Y=XA+B z=f(Y),Y=XA+B。求 ∂ z ∂ X \frac{\partial z}{\partial X} ∂X∂z。
z = f ( Y ) , Y = X A + B z=f(Y),Y=XA+B z=f(Y),Y=XA+B∂ z ∂ X = ∂ z ∂ Y A T \frac{\partial z}{\partial X}=\frac{\partial z}{\partial Y}A^T ∂X∂z=∂Y∂zAT
-
设 X X X是矩阵, a , y , b \mathbf{a},\mathbf{y},b a,y,b是向量, z z z是标量,其中 z = f ( Y ) , Y = X a + b z=f(Y),Y=X\mathbf{a}+b z=f(Y),Y=Xa+b。求 ∂ z ∂ x \frac{\partial z}{\partial \mathbf{x}} ∂x∂z。
z = f ( Y ) , Y = X a + b z=f(Y),Y=X\mathbf{a}+b z=f(Y),Y=Xa+b∂ z ∂ X = ∂ z ∂ y a T \frac{\partial z}{\partial X}=\frac{\partial z}{\partial \mathbf{y}}\mathbf{a}^T ∂X∂z=∂y∂zaT
技巧
- 无论自变量在那边,均采用分母布局的方式处理 标 量 矩 阵 \frac{标量}{矩阵} 矩阵标量。
- ∂ z ∂ X = 参 数 矩 阵 T ∗ ∂ z ∂ Y \frac{\partial z}{\partial X}= 参数矩阵^T * \frac{\partial z}{\partial Y} ∂X∂z=参数矩阵T∗∂Y∂z或 ∂ z ∂ X = ∂ z ∂ Y ∗ 参 数 矩 阵 T \frac{\partial z}{\partial X}= \frac{\partial z}{\partial Y} * 参数矩阵^T ∂X∂z=∂Y∂z∗参数矩阵T。至于是那种形式,根据矩阵相乘时的维度相容即可判别。
小结
- 在同等情况下,优先考虑链式求导法,尤其后面的的四个结论。其次选择微分法、最后考虑定义法。
- 没有结局的问题是,矩阵对矩阵的求导,还有矩阵对向量,向量对矩阵求导这三种形式。这个遇到的不多,具体参考:https://www.cnblogs.com/pinard/p/10930902.html。
- 常见的形式是:
标
量
标
量
,
标
量
向
量
,
标
量
矩
阵
,
向
量
标
量
,
向
量
向
量
,
矩
阵
标
量
\frac{标量}{标量},\frac{标量}{向量},\frac{标量}{矩阵},\frac{向量}{标量},\frac{向量}{向量},\frac{矩阵}{标量}
标量标量,向量标量,矩阵标量,标量向量,向量向量,标量矩阵。
- 重点: 标 量 向 量 , 标 量 矩 阵 , 向 量 向 量 \frac{标量}{向量},\frac{标量}{矩阵},\frac{向量}{向量} 向量标量,矩阵标量,向量向量。
- (矩阵微分性质+迹函数技巧)是真的强大,,矩阵向量链式求导法则(向量对多个向量求导,标量对多个向量求导,标量对多个矩阵的求导)【维度相容】。
参考:
这个是真的大佬!