总结矩阵求导以及矩阵求导在机器学子中的应用

在深度学习神经网络的反向传播时,需要根据最后输出的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]xy=x1y1x1y2x1ymx2y1x2y2x2ymxny1xny2xnym

需要将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}xy=a, ∂y∂a=x\frac{\partial \mathbf{y}}{\partial \mathbf{a}}=\mathbf{x}ay=x

case3 二次型

y=x⊤Axy=\mathbf{x}^{\top} \mathbf{A} \mathbf{x}y=xAx
注意,这里的y是一个标量,这个x是一个n维的列向量,A矩阵是n维的方阵
∂y∂x=(A+AT)b\frac{\partial y}{\partial \mathbf{x}}=(A+A^T)\mathbf{b}xy=(A+AT)b

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐