总结3个在机器学习种用到的比较多的矩阵求导公式
总结矩阵求导以及矩阵求导在机器学子中的应用
在深度学习神经网络的反向传播时,需要根据最后输出的loss反向更新网络的参数,神经网络的训练过程实际上就是参数的更新过程,参数是根据梯度下降法更新的,而梯度的计算需要用到偏导数。因此本文总结了3种在机器学习种用到最多的矩阵求导公式。
考虑三种常见的情况:
case1 vector to vector
y=f(x)\mathbf{y}=f(\mathbf{x})y=f(x),其中,y是m维列向量,x是n维列向量。
∂y∂x=[∂y1∂x1∂y1∂x2⋯∂y1∂xn∂y2∂x1∂y2∂x2⋯∂y2∂xn⋮⋮⋮∂ym∂x1∂ym∂x2⋯∂ym∂xn]\frac{\partial \mathbf{y}}{\partial \mathbf{x}}=\left[\begin{array}{cccc}\frac{\partial y_{1}}{\partial x_{1}} & \frac{\partial y_{1}}{\partial x_{2}} & \cdots & \frac{\partial y_{1}}{\partial x_{n}} \\ \frac{\partial y_{2}}{\partial x_{1}} & \frac{\partial y_{2}}{\partial x_{2}} & \cdots & \frac{\partial y_{2}}{\partial x_{n}} \\ \vdots & \vdots & & \vdots \\ \frac{\partial y_{m}}{\partial x_{1}} & \frac{\partial y_{m}}{\partial x_{2}} & \cdots & \frac{\partial y_{m}}{\partial x_{n}}\end{array}\right]∂x∂y=⎣⎢⎢⎢⎢⎡∂x1∂y1∂x1∂y2⋮∂x1∂ym∂x2∂y1∂x2∂y2⋮∂x2∂ym⋯⋯⋯∂xn∂y1∂xn∂y2⋮∂xn∂ym⎦⎥⎥⎥⎥⎤
需要将y中的元素对x中的元素一一求导,那么求导结果是m×nm\times nm×n 个元素,然后确定结果的形状,y,x\mathbf{y},\mathbf{x}y,x均为向量,y\mathbf{y}y 纵向拉,x\mathbf{x}x横向拉。
case2 向量内积形式求导
结果等于另一个向量,很重要,建议直接背!
y=aTx\mathbf{y}=\mathbf{a}^T\mathbf{x}y=aTx
∂y∂x=a\frac{\partial \mathbf{y}}{\partial \mathbf{x}}=\mathbf{a}∂x∂y=a, ∂y∂a=x\frac{\partial \mathbf{y}}{\partial \mathbf{a}}=\mathbf{x}∂a∂y=x
case3 二次型
y=x⊤Axy=\mathbf{x}^{\top} \mathbf{A} \mathbf{x}y=x⊤Ax
注意,这里的y是一个标量,这个x是一个n维的列向量,A矩阵是n维的方阵
则∂y∂x=(A+AT)b\frac{\partial y}{\partial \mathbf{x}}=(A+A^T)\mathbf{b}∂x∂y=(A+AT)b
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)