矩陣求導公式算法
基本公式:
Y = A * X --> DY/DX = AT,spa
Y = X * A --> DY/DX = A.net
Y=XT*A--> DY/DX = Ablog
Y = A * X--> DYT/DX = ATclass
Y = A * X -->DY/DXT = (DYT/DX)T=Aim
Y = AT * X * B --> DY/DX = A * BTps
Y = AT * XT * B --> DY/DX = B * AT
乘積的導數:
d(f*g)/dx=(dfT/dx)g+(dg/dx)fT
dY/dXT = (dYT/dX)T
dYT/dX = (dY/dXT)T
1.矩陣Y對標量x求導:
至關於每一個元素求導數後轉置一下,注意M×N矩陣求導後變成N×M了
Y = [y(ij)] --> dY/dx = [dy(ji)/dx]
2. 標量y對列向量X求導:
注意與上面不一樣,此次括號內是求偏導,不轉置,對N×1向量求導後仍是N×1向量
y = f(x1,x2,..,xn) --> dy/dX =(Dy/Dx1,Dy/Dx2,..,Dy/Dxn)T
3. 行向量Y對列向量X求導:
注意1×M向量對N×1向量求導後是N×M矩陣。
將Y的每一列對X求偏導,將各列構成一個矩陣。
重要結論:
dXT/dX = I
d(AX)T/dX = AT
4. 列向量Y對行向量XT求導:
轉化爲行向量YT對列向量X的導數,而後轉置。
注意M×1向量對1×N向量求導結果爲M×N矩陣。
dY/dXT = (dYT/dX)T
5. 向量積對列向量X求導運算法則:
注意與標量求導有點不一樣。
d(UVT)/dX = (dU/dX)VT + U(dVT/dX)
d(UTV)/dX = (dUT/dX)V + (dVT/dX)U
重要結論:
d(XTA)/dX = (dXT/dX)A + (dAT/dX)X = IA + 0X = A
d(AX)/dXT = (d(XTAT)/dX)T = (AT)T = A
d(XTAX)/dX = (dXT/dX)AX + (d(AX)T/dX)X = AX + ATX
6. 矩陣Y對列向量X求導:
將Y對X的每個份量求偏導,構成一個超向量。
注意該向量的每個元素都是一個矩陣。
7. 矩陣積對列向量求導法則:
d(UV)/dX = (dU/dX)V + U(dV/dX)
重要結論:
d(XTA)/dX = (dXT/dX)A + XT(dA/dX) = IA + XT0 = A
8. 標量y對矩陣X的導數:
相似標量y對列向量X的導數,
把y對每一個X的元素求偏導,不用轉置。
dy/dX = [ Dy/Dx(ij) ]
重要結論:
y = UTXV = ΣΣu(i)x(ij)v(j) 因而 dy/dX = [u(i)v(j)] = UVT
y = UTXTXU 則 dy/dX = 2XUUT
y = (XU-V)T(XU-V) 則 dy/dX = d(UTXTXU - 2VTXU + VTV)/dX = 2XUUT -2VUT + 0 = 2(XU-V)UT
9. 矩陣Y對矩陣X的導數:
將Y的每一個元素對X求導,而後排在一塊兒造成超級矩陣。
10.乘積的導數
d(f*g)/dx=(dfT/dx)g+(dg/dx)fT
結論
d(xTAx)=(d(xTT)/dx)Ax+(d(Ax)/dx)(xTT)=Ax+ATx (注意:TT是表示兩次轉置)
轉自:https://blog.csdn.net/u010025211/article/details/51646739
https://blog.csdn.net/txwh0820/article/details/46392293