常用矩阵求导

矩阵求导用来做什么:在机器学习中都是近世代数学运算,所以求导数也往往是对矩阵求导数。
矩阵求导的本质一个矩阵中的每一个元素对另外一个矩阵的每一个元素求导数。因此核心问题是明白求导以后,所得到的导数如何分布的。
我们由简单到复杂解释如何进行矩阵求导:
对于简单情况,x为向量y为标量,y对x每一个分量求导,不难理解有如下结论。f(x)代表着对x的运算。
x = [ x 1 x 2 ⋅ ⋅ x n ]   y = f ( x ) x= \begin{bmatrix} x_1 \\ x_2 \\ ·\\ ·\\ x_n \end{bmatrix} \, y=f(x) x=x1x2xny=f(x)
∇ x y = [ d y d x 1 d y d x 2 ⋅ ⋅ d y d x n ] \nabla_{x}y= \begin{bmatrix} \frac{\mathrm{d}y}{\mathrm{d}x_1} \\ \frac{\mathrm{d}y}{\mathrm{d}x_2}\\ ·\\ ·\\ \frac{\mathrm{d}y}{\mathrm{d}x_n} \end{bmatrix} xy=dx1dydx2dydxndy
同理可得x为标量y为向量的情况下

y = [ f 1 ( x ) , f 2 ( x ) , ~ , f n ( x ) ] y=\begin{bmatrix}f_1(x),f_2(x),~,f_n(x)\end{bmatrix} y=[f1(x),f2(x),,fn(x)]
有:
∇ x y = [ d y 1 x , d y 2 x , ~ , d y 3 x ] \nabla_x y=\begin{bmatrix}\frac{\mathrm{d}y_1}{x},\frac{\mathrm{d}y_2}{x},~,\frac{\mathrm{d}y_3}{x}\end{bmatrix} xy=[xdy1,xdy2,,xdy3]
对于复杂的情况,比如x和y都是向量的情况下,我们可以分开来分析,首先将y看作一个整体,对x各个分量求导数。然后根据链式法则,或者是参考反向传播,y的每个分量都需要对x的特定分量进行求导。
x = [ x 1 x 2 ⋅ ⋅ x n ] y = [ y 1 y 2 ⋅ ⋅ y n ] x= \begin{bmatrix} x_1 \\ x_2 \\ ·\\ ·\\ x_n \end{bmatrix} y= \begin{bmatrix} y_1 \\ y_2 \\ ·\\ ·\\ y_n \end{bmatrix} x=x1x2xny=y1y2yn
∇ x y = [ d y d x 1 d y d x 2 ⋅ ⋅ d y d x n ] = [ d y 1 d x 1   d y 2 d x 1   d y 3 d x 1 ~   d y 2 d x 1 d y 1 d x 2 d y 2 d x 2 d y 3 d x 2 ~ d y 4 d x 2 ⋅ ⋅ d y 1 d x n , d y 2 d x n , d y 3 d x n ~ d y 4 d x n ] \nabla_{x}y= \begin{bmatrix} \frac{\mathrm{d}y}{\mathrm{d}x_1} \\ \frac{\mathrm{d}y}{\mathrm{d}x_2}\\ ·\\ ·\\ \frac{\mathrm{d}y}{\mathrm{d}x_n} \end{bmatrix}=\begin{bmatrix} \frac{\mathrm{d}y_1}{\mathrm{d}x_1} \, \frac{\mathrm{d}y_2}{\mathrm{d}x_1} \, \frac{\mathrm{d}y_3}{\mathrm{d}x_1}~\, \frac{\mathrm{d}y_2}{\mathrm{d}x_1}\\ \frac{\mathrm{d}y_1}{\mathrm{d}x_2} \frac{\mathrm{d}y_2}{\mathrm{d}x_2} \frac{\mathrm{d}y_3}{\mathrm{d}x_2}~ \frac{\mathrm{d}y_4}{\mathrm{d}x_2}\\ ·\\ ·\\ \frac{\mathrm{d}y_1}{\mathrm{d}x_n} , \frac{\mathrm{d}y_2}{\mathrm{d}x_n} , \frac{\mathrm{d}y_3}{\mathrm{d}x_n} ~\frac{\mathrm{d}y_4}{\mathrm{d}x_n} \end{bmatrix} xy=dx1dydx2dydxndy=dx1dy1dx1dy2dx1dy3dx1dy2dx2dy1dx2dy2dx2dy3dx2dy4dxndy1,dxndy2,dxndy3dxndy4

常用的几个结论:
d x T d x = 1 \frac{\mathrm{d}x^T}{\mathrm{d}x}=1 dxdxT=1
∇ x X T A X = ( A + A T ) X \nabla_{x}X^TAX=(A+A^T)X xXTAX=(A+AT)X
∇ u ( t ) v ( t ) = u ( t ) ∇ t v ( t ) + ∇ t u ( t ) v ( t ) \nabla u(t)v(t)=u(t) \nabla_t v(t)+ \nabla_tu(t)v(t) u(t)v(t)=u(t)tv(t)+tu(t)v(t)

应该足够应付大部分问题了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值