本文仅对https://blog.****.net/txwh0820/article/details/46392293进行重新排版供个人学习,侵删
矩阵的迹求导法则



1. 复杂矩阵问题求导方法:可以从小到大,从scalar到vector再到matrix


2. x is a column vector, A is a matrix
dxd(A∗x)=A
dxTd(xT∗A)=A
dxd(xT∗A)=AT
dxd(xT∗A∗x)=xT(AT+A)
3. Practice:

4. 矩阵求导计算法则
求导公式:
Y=A∗X→DXDY=AT
Y=X∗A→DXDY=A
Y=AT∗X∗B→DXDY=A∗BT
Y=AT∗XT∗B→DXDY=B∗AT
乘积的导数:
dxd(f∗g)=dxdfTg+dxdgfT
一些结论:
- 矩阵 Y 对标量 x 求导:
相当于每个元素求导数后转置一***意M×N矩阵求导后变成 N×M 了
Y=[yij]→dxdY=[dxdyji]
- 标量 y 对列向量 X 求导:
注意与上面不同,这次括号内是求偏导,不转置,对 N×1 向量求导后还是 N×1 向量
y=f(x1,x2,..,xn)→dXdy=(Dx1Dy,Dx2Dy,..,DxnDy)T
- 行向量 YT 对列向量 X 求导:
注意 1×M 向量对 N×1 向量求导后是 N×M 矩阵。
将 Y 的每一列对 X 求偏导,将各列构成一个矩阵。
重要结论:
dXdXT=I dXd(AX)T=AT
- 列向量 Y 对行向量 XT 求导:
转化为行向量 YT 对列向量 X 的导数,然后转置。
注意 M×1 向量对 1×N 向量求导结果为 M×N 矩阵。
dXTdY=(dXdYT)T
- 向量积对列向量 X 求导运算法则:
注意与标量求导有点不同。
dXd(UVT)=(dXdU)VT+U(dXdVT) dXd(UTV)=(dXdUT)V+(dXdVT)UT
重要结论:
dXd(XTA)=(dXdXT)A+(dXdA)XT=IA+0XT=A
dXTd(AX)=(dXd(XTAT))T=(AT)T=A
dXd(XTAX)=(dXdXT)AX+(dXd(AX)T)X=AX+ATX
- 矩阵 Y 对列向量 X 求导:
将 Y 对 X 的每一个分量求偏导,构成一个超向量。
注意该向量的每一个元素都是一个矩阵。
- 矩阵积对列向量求导法则:
dXd(uV)=(dXdu)V+u(dXdV) dXd(UV)=(dXdU)V+U(dXdV)
重要结论:
dXd(XTA)=(dXdXT)A+XT(dXdA)=IA+XT0=A
- 标量 y 对矩阵 X 的导数:
类似标量 y 对列向量 X 的导数,
把 y 对每个 X 的元素求偏导,不用转置。
dXdy=[DxijDy]
重要结论:
y=UTXV=ΣΣuixijvj 于是 dXdy=[uivj]=UVT
y=UTXTXU 则 dXdy=2XUUT
y=(XU−V)T(XU−V) 则
dXdy=dXd(UTXTXU−2VTXU+VTV)
=2XUUT−2VUT+0=2(XU−V)UT
- 矩阵 Y 对矩阵 X 的导数:
将 Y 的每个元素对 X 求导,然后排在一起形成超级矩阵。
- 乘积的导数
dxd(f∗g)=(dxdfT)g+(dxdg)fT
结论
d(xTAx)=(dxd(xTT))Ax+(dxd(Ax))(xTT)=Ax+ATx
(注意:TT是表示两次转置)