总结矩阵求导以及矩阵求导在机器学子中的应用
在深度学习神经网络的反向传播时,需要根据最后输出的loss反向更新网络的参数,神经网络的训练过程实际上就是参数的更新过程,参数是根据梯度下降法更新的,而梯度的计算需要用到偏导数。因此本文总结了3种在机器学习种用到最多的矩阵求导公式。
考虑三种常见的情况:
case1 vector to vector
y
=
f
(
x
)
\mathbf{y}=f(\mathbf{x})
y=f(x),其中,y是m维列向量,x是n维列向量。
?
y
?
x
=
[
?
y
1
?
x
1
?
y
1
?
x
2
?
?
y
1
?
x
n
?
y
2
?
x
1
?
y
2
?
x
2
?
?
y
2
?
x
n
?
?
?
?
y
m
?
x
1
?
y
m
?
x
2
?
?
y
m
?
x
n
]
\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
×
n
m\times n
m×n 个元素,然后确定结果的形状,
y
,
x
\mathbf{y},\mathbf{x}
y,x均为向量,
y
\mathbf{y}
y 纵向拉,
x
\mathbf{x}
x横向拉。
case2 向量内积形式求导
结果等于另一个向量,很重要,建议直接背!
y
=
a
T
x
\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
?
A
x
y=\mathbf{x}^{\top} \mathbf{A} \mathbf{x}
y=x?Ax 注意,这里的y是一个标量,这个x是一个n维的列向量,A矩阵是n维的方阵 则
?
y
?
x
=
(
A
+
A
T
)
b
\frac{\partial y}{\partial \mathbf{x}}=(A+A^T)\mathbf{b}
?x?y?=(A+AT)b
|