机器学习数学基础之一矩阵求导
矩阵求导
【注】:本文采用分子布局(numerator layout)
【符号约定】: y ⃗ ∈ R m ; x ⃗ ∈ R n ; x , y ∈ R m × n ; X , Y ∈ R m × n ; \vec{y}\in{R^m};\vec{x}\in{R^n};x,y\in{R^{m\times{n}}};X,Y\in{R^{m\times{n}}}; y∈Rm;x∈Rn;x,y∈Rm×n;X,Y∈Rm×n;
I 第一部分 基本求导公式
一、向量对标量求导
d y ⃗ d x = [ d y 1 d x , d y 2 d x , . . . , d y m d x ] T \frac{d\vec{y}}{dx}=[\frac{dy_1}{dx},\frac{dy_2}{dx},...,\frac{dy_m}{dx}]^T dxdy=[dxdy1,dxdy2,...,dxdym]T
二、标量对向量求导
d y d x ⃗ = [ d y d x 1 , d y d x 2 , . . . , d y d x n ] \frac{dy}{d\vec{x}}=[\frac{dy}{dx_1},\frac{dy}{dx_2},...,\frac{dy}{dx_n}] dxdy=[dx1dy,dx2dy,...,dxndy]
三、向量对向量求导
d y ⃗ d x ⃗ = ( d y 1 d x 1 d y 1 d x 2 . . . d y 1 d x n d y 2 d x 1 d y 2 d x 2 . . . d y 2 d x n . . . . d y m d x 1 d y m d x 2 . . . d y m d x n ) m × n \frac{d\vec{y}}{d\vec{x}}=\begin{pmatrix} \frac{dy_1}{dx_1} & \frac{dy_1}{dx_2} &.&.&.&\frac{dy_1}{dx_n} \\ \frac{dy_2}{dx_1}&\frac{dy_2}{dx_2}&.&.&.&\frac{dy_2}{dx_n}\\.& & & &&.\\.&&&&&.\\\frac{dy_m}{dx_1}&\frac{dy_m}{dx_2}&.&.&.&\frac{dy_m}{dx_n} \end{pmatrix}_{m\times{n}} dxdy=⎝⎜⎜⎜⎜⎜⎛dx1dy1dx1dy2..dx1dymdx2dy1dx2dy2dx2dym.........dxndy1dxndy2..dxndym⎠⎟⎟⎟⎟⎟⎞m×n
四、标量对矩阵求导
d y d X = ( d y d x 1 , 1 d y d x 1 , 2 . . . d y d x 1 , n d y d x 2 , 1 d y d x 2 , 2 . . . d y d x 2 , n . . . . d y d x m , 1 d y d x m , 2 . . . d y d x m , n ) \frac{dy}{dX}=\begin{pmatrix} \frac{dy}{dx_{1,1}}&\frac{dy}{dx_{1,2}}&.&.&.&\frac{dy}{dx_{1,n}}\\\frac{dy}{dx_{2,1}}&\frac{dy}{dx_{2,2}}&.&.&.& \frac{dy}{dx_{2,n}}\\.&&&&&.\\.&&&&&.\\\frac{dy}{dx_{m,1}}&\frac{dy}{dx_{m,2}}&.&.&.&\frac{dy}{dx_{m,n}}\end{pmatrix} dXdy=⎝⎜⎜⎜⎜⎜⎛dx1,1dydx2,1dy..dxm,1dydx1,2dydx2,2dydxm,2dy.........dx1,ndydx2,ndy..dxm,ndy⎠⎟⎟⎟⎟⎟⎞
五、矩阵对标量求导
d Y d x = ( d y 1 , 1 d x d y 1 , 2 d x . . . d y 1 , n d x d y 2 , 1 d x d y 2 , 2 d x . . . d y 2 , n d x . . . . d y m , 1 d x d y m , 2 d x . . . d y m , n d x ) \frac{dY}{dx}=\begin{pmatrix} \frac{dy_{1,1}}{dx}&\frac{dy_{1,2}}{dx} &.&.&.&\frac{dy_{1,n}}{dx} \\\frac{dy_{2,1}}{dx} &\frac{dy_{2,2}}{dx}&.&.&.&\frac{dy_{2,n}}{dx}\\.&&&&&.\\.&&&&&.\\\frac{dy_{m,1}}{dx}&\frac{dy_{m,2}}{dx}&.&.&.&\frac{dy_{m,n}}{dx}\end{pmatrix} dxdY=⎝⎜⎜⎜⎜⎛dxdy1,1dxdy2,1..dxdym,1dxdy1,2dxdy2,2dxdym,2.........dxdy1,ndxdy2,n..dxdym,n⎠⎟⎟⎟⎟⎞
II 第二部分 复杂求导公式
【例】求解 d ( A x ⃗ ) d x ⃗ \frac{d(A\vec{x})}{d\vec{x}} dxd(Ax)
分析:A x ⃗ \vec{x} x为 ( m × 1 ) (m\times{1}) (m×1)维的向量, x ⃗ \vec{x} x为 ( n × 1 ) (n\times{1}) (n×1)维的向量,适用向量对向量的求导法则。
解: A = ( a 1 , 1 a 1 , 2 . . . a 1 , n a 2 , 1 a 2 , 2 . . . a 2 , n . . . . a m , 1 a m , 2 . . . a m , n ) , x = ( x 1 x 2 . . x n ) A=\begin{pmatrix}a_{1,1}&a_{1,2}&.&.&.&a_{1,n}\\a_{2,1}&a_{2,2}&.&.&.&a_{2,n}\\.&&&&&. \\.&&&&&.\\a_{m,1}&a_{m,2}&.&.&.&a_{m,n}\end{pmatrix},x=\begin{pmatrix}x_1\\x_2\\.\\.\\x_n\end{pmatrix} A=⎝⎜⎜⎜⎜⎛a1,1a2,1..am,1a1,2a2,2am,2.........a1,na2,n..am,n⎠⎟⎟⎟⎟⎞,x=⎝⎜⎜⎜⎜⎛x1x2..xn⎠⎟⎟⎟⎟⎞,则 A x ⃗ = ( ( A x ⃗ ) 1 ( A x ⃗ ) 2 . . ( A x ⃗ ) m ) A\vec{x}=\begin{pmatrix}(A\vec{x})_1\\(A\vec{x})_2\\.\\.\\(A\vec{x})_m\end{pmatrix} Ax=⎝⎜⎜⎜⎜⎛(Ax)1(Ax)2..(Ax)m⎠⎟⎟⎟⎟⎞,
其中 ( A x ⃗ ) i = a i , 1 x 1 + a i , 2 x 2 + . . . + a i , n x n (A\vec{x})_i=a_{i,1}x_1+a_{i,2}x_2+...+a_{i,n}x_n (Ax)i=ai,1x1+ai,2x2+...+ai,nxn
则很容易得到:
d ( A x ⃗ ) d x ⃗ = ( ( A x ⃗ ) 1 d x 1 ( A x ⃗ ) 1 d x 2 . . . ( A x ⃗ ) 1 d x n ( A x ⃗ ) 2 d x 1 ( A x ⃗ ) 2 d x 2 . . . ( A x ⃗ ) 2 d x n . . . . ( A x ⃗ ) m d x 1 ( A x ⃗ ) m d x 2 . . . ( A x ⃗ ) m d x n ) = ( a 1 , 1 a 1 , 2 . . . a 1 , n a 2 , 1 a 2 , 2 . . . a 2 , n . . . . a m , 1 a m , 2 . . . a m , n ) = A \frac{d(A\vec{x})}{d\vec{x}}=\begin{pmatrix} \frac{(A\vec{x})_1}{dx_1}&\frac{(A\vec{x})_1}{dx_2}&.&.&.&\frac{(A\vec{x})_1}{dx_n}\\\frac{(A\vec{x})_2}{dx_1}&\frac{(A\vec{x})_2}{dx_2}&.&.&.&\frac{(A\vec{x})_2}{dx_n}\\.&&&&&.\\.&&&&&.\\\frac{(A\vec{x})_m}{dx_1}&\frac{(A\vec{x})_m}{dx_2}&.&.&.&\frac{(A\vec{x})_m}{dx_n}\end{pmatrix}=\begin{pmatrix}a_{1,1}&a_{1,2}&.&.&.&a_{1,n}\\a_{2,1}&a_{2,2}&.&.&.&a_{2,n}\\.&&&&&.\\.&&&&&.\\a_{m,1}&a_{m,2}&.&.&.&a_{m,n}\end{pmatrix}=A dxd(Ax)=⎝⎜⎜⎜⎜⎜⎛dx1(Ax)1dx1(Ax)2..dx1(Ax)mdx2(Ax)1dx2(Ax)2dx2(Ax)m.........dxn(Ax)1dxn(Ax)2..dxn(Ax)m⎠⎟⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛a1,1a2,1..am,1a1,2a2,2am,2.........a1,na2,n..am,n⎠⎟⎟⎟⎟⎞=A
理论上任意一个矩阵都可以按照上述方法进行求导,但是往往比较麻烦,在实际应用中,即可以查找求导表进行查询,也可以运用在线矩阵求导工具进行求导。
下图为使用该在线编辑工具进行求导的结果:
【传送门】:矩阵求导表链接,在线求导工具链接
【参考】:https://blog.csdn.net/daaikuaichuan/article/details/80620518
https://zhuanlan.zhihu.com/p/137702347