本文仅对https://blog.csdn.net/txwh0820/article/details/46392293进行重新排版供个人学习,侵删
矩阵的迹求导法则
1. 复杂矩阵问题求导方法:可以从小到大,从scalar到vector再到matrix
2. x is a column vector, A is a matrix
d ( A ∗ x ) d x = A \frac{d(A∗x)}{dx}=A dxd(A∗x)=A
d ( x T ∗ A ) d x T = A \frac{d(x^T∗A)}{dx^T}=A dxTd(xT∗A)=A
d ( x T ∗ A ) d x = A T \frac{d(x^T∗A)}{dx}=A^T dxd(xT∗A)=AT
d ( x T ∗ A ∗ x ) d x = x T ( A T + A ) \frac{d(x^T∗A∗x)}{dx}=x^T(A^T+A) dxd(xT∗A∗x)=xT(AT+A)
3. Practice:
4. 矩阵求导计算法则
求导公式:
Y = A ∗ X → D Y D X = A T Y = A * X \to \frac{DY}{DX} = A^T Y=A∗X→DXDY=AT
Y = X ∗ A → D Y D X = A Y = X * A \to \frac{DY}{DX} = A Y=X∗A→DXDY=A
Y = A T ∗ X ∗ B → D Y D X = A ∗ B T Y = A^T * X * B \to \frac{DY}{DX} = A * B^T Y=AT∗X∗B→DXDY=A∗BT
Y = A T ∗ X T ∗ B → D Y D X = B ∗ A T Y = A^T * X^T * B \to \frac{DY}{DX} = B * A^T Y=AT∗XT∗B→DXDY=B∗AT
乘积的导数:
d ( f ∗ g ) d x = d f T d x g + d g d x f T \frac{d(f*g)}{dx}=\frac{df^T}{dx}g+\frac{dg}{dx}f^T dxd(f∗g)=dxdfTg+dxdgfT
一些结论:
- 矩阵
Y
Y
Y 对标量
x
x
x 求导:
相当于每个元素求导数后转置一下,注意M×N矩阵求导后变成 N × M N×M N×M 了
Y = [ y i j ] → d Y d x = [ d y j i d x ] Y = [y_{ij}] \to \frac{dY}{dx} = [\frac{dy_{ji}}{dx}] Y=[yij]→dxdY=[dxdyji]
- 标量
y
y
y 对列向量
X
X
X 求导:
注意与上面不同,这次括号内是求偏导,不转置,对 N × 1 N×1 N×1 向量求导后还是 N × 1 N×1 N×1 向量
y = f ( x 1 , x 2 , . . , x n ) → d y d X = ( D y D x 1 , D y D x 2 , . . , D y D x n ) T y = f(x_1,x_2,..,x_n) \to \frac{dy}{dX}= (\frac{Dy}{Dx_1},\frac{Dy}{Dx_2},..,\frac{Dy}{Dx_n})^T y=f(x1,x2,..,xn)→dXdy=(Dx1Dy,Dx2Dy,..,DxnDy)T
- 行向量
Y
T
Y^T
YT 对列向量
X
X
X 求导:
注意 1 × M 1×M 1×M 向量对 N × 1 N×1 N×1 向量求导后是 N × M N×M N×M 矩阵。
将 Y Y Y 的每一列对 X X X 求偏导,将各列构成一个矩阵。
重要结论:
d X T d X = I \frac{dX^T}{dX} =I dXdXT=I d ( A X ) T d X = A T \frac{d(AX)^T}{dX} =A^T dXd(AX)T=AT
- 列向量
Y
Y
Y 对行向量
X
T
X^T
XT 求导:
转化为行向量 Y T Y^T YT 对列向量 X X X 的导数,然后转置。
注意 M × 1 M×1 M×1 向量对 1 × N 1×N 1×N 向量求导结果为 M × N M×N M×N 矩阵。
d Y d X T = ( d Y T d X ) T \frac{dY}{dX^T} =(\frac{dY^T}{dX})^T dXTdY=(dXdYT)T
- 向量积对列向量
X
X
X 求导运算法则:
注意与标量求导有点不同。
d ( U V T ) d X = ( d U d X ) V T + U ( d V T d X ) \frac{d(UV^T)}{dX} =(\frac{dU}{dX})V^T + U(\frac{dV^T}{dX}) dXd(UVT)=(dXdU)VT+U(dXdVT) d ( U T V ) d X = ( d U T d X ) V + ( d V T d X ) U T {\frac{d(U^TV)}{dX} =(\frac{dU^T}{dX})V + (\frac{dV^T}{dX}})U^T dXd(UTV)=(dXdUT)V+(dXdVT)UT
重要结论:
d ( X T A ) d X = ( d X T d X ) A + ( d A d X ) X T = I A + 0 X T = A \frac{d(X^TA)}{dX} =(\frac{dX^T}{dX})A + (\frac{dA}{dX})X^T = IA + 0X^T = A dXd(XTA)=(dXdXT)A+(dXdA)XT=IA+0XT=A
d ( A X ) d X T = ( d ( X T A T ) d X ) T = ( A T ) T = A \frac{d(AX)}{dX^T} =(\frac{d(X^TA^T)}{dX})^T = (A^T)^T = A dXTd(AX)=(dXd(XTAT))T=(AT)T=A
d ( X T A X ) d X = ( d X T d X ) A X + ( d ( A X ) T d X ) X = A X + A T X \frac{d(X^TAX)}{dX} =(\frac{dX^T}{dX})AX + (\frac{d(AX)^T}{dX})X = AX + A^TX dXd(XTAX)=(dXdXT)AX+(dXd(AX)T)X=AX+ATX
- 矩阵
Y
Y
Y 对列向量
X
X
X 求导:
将 Y Y Y 对 X X X 的每一个分量求偏导,构成一个超向量。
注意该向量的每一个元素都是一个矩阵。
- 矩阵积对列向量求导法则:
d ( u V ) d X = ( d u d X ) V + u ( d V d X ) \frac{d(uV)}{dX} =(\frac{du}{dX})V + u(\frac{dV}{dX}) dXd(uV)=(dXdu)V+u(dXdV) d ( U V ) d X = ( d U d X ) V + U ( d V d X ) \frac{d(UV)}{dX} =(\frac{dU}{dX})V + U(\frac{dV}{dX}) dXd(UV)=(dXdU)V+U(dXdV)
重要结论:
d ( X T A ) d X = ( d X T d X ) A + X T ( d A d X ) = I A + X T 0 = A \frac{d(X^TA)}{dX} =(\frac{dX^T}{dX})A + X^T(\frac{dA}{dX}) = IA + X^T0 = A dXd(XTA)=(dXdXT)A+XT(dXdA)=IA+XT0=A
- 标量
y
y
y 对矩阵
X
X
X 的导数:
类似标量 y y y 对列向量 X X X 的导数,
把 y y y 对每个 X X X 的元素求偏导,不用转置。
d y d X = [ D y D x i j ] \frac{dy}{dX} = [\frac{Dy}{Dx_{ij}} ] dXdy=[DxijDy]
重要结论:
y = U T X V = Σ Σ u i x i j v j y = U^TXV= ΣΣu_{i}x_{ij}v_{j} y=UTXV=ΣΣuixijvj 于是 d y d X = [ u i v j ] = U V T \frac{dy}{dX} = [u_iv_j] =UV^T dXdy=[uivj]=UVT
y = U T X T X U y = U^TX^TXU y=UTXTXU 则 d y d X = 2 X U U T \frac{dy}{dX} = 2XUU^T dXdy=2XUUT
y = ( X U − V ) T ( X U − V ) y =(XU-V)^T(XU-V) y=(XU−V)T(XU−V) 则
d y d X = d ( U T X T X U − 2 V T X U + V T V ) d X \frac{dy}{dX} = \frac{d(U^TX^TXU - 2V^TXU + V^TV)}{dX} dXdy=dXd(UTXTXU−2VTXU+VTV)
= 2 X U U T − 2 V U T + 0 = 2 ( X U − V ) U T = 2XUU^T - 2VU^T +0 = 2(XU-V)U^T =2XUUT−2VUT+0=2(XU−V)UT
- 矩阵
Y
Y
Y 对矩阵
X
X
X 的导数:
将 Y Y Y 的每个元素对 X X X 求导,然后排在一起形成超级矩阵。
- 乘积的导数