在各类机器学习和深度学习算法的推导过程中,尤其是通过损失函数求解参数最优解过程中,经常用到向量矩阵的求导。从本质上讲,向量矩阵求导就是将多元标量函数求导按照一定的布局排列为向量或矩阵。
按照求导中自变量和因变量的关系,标量、向量、矩阵可排列组合为9种组合(见下表)。本文仅涉及标量与向量和矩阵,向量与向量的五种求导。而矩阵和向量间的混合求导不做涉及。
自变量/因变量 | 标量y | 向量? | 矩阵? |
---|---|---|---|
标量? | ∂?/∂? | ∂?/∂? | ∂?/∂? |
向量? | ∂?/∂? | ∂?/∂? | ∂?/∂? |
矩阵? | ∂?/∂? | ∂?/∂? | ∂?/∂? |
一、求导布局
对向量矩阵求导结果进行布局的统一。常见有的分子布局和分母布局两种,两者之间互为转置:
分子布局:求导结果维度主要参考分子。
分母布局:求导结果维度主要参考分母。
若分母或分子维度无法确定,则取分子或分母分布的转置,如列向量与标量求导,结果按分母布局,应为行向量
向量和向量导数的布局定义:m维列向量?对n维列向量?求导,分子布局,则矩阵的第一个维度以分子为准( m × n m\times n m×n),常称为雅可比矩阵;分母布局,则矩阵的第一个维度以分母为准( n × m n\times m n×m),常称为梯度矩阵。
混合布局:一种默认的分子或分布布局。标量对向量或矩阵求导,按照分母布局;向量或矩阵对标量求导,按照分子布局;向量对向量求导,以雅可比矩阵(即分子布局)为主。
在看推导过程中经常出现 A A A或 A T A^T AT的表达,只是布局方式不一样。
二、定义法直接求解
即展开成多元函数对某个变量的求导,然后写成向量的形式。
三、标量对向量求导的基本法则
(1)常量对向量的求导结果为0。
(2)线性法则:如果?,?都是实值函数,
c
1
c_1
c1,
c
2
c_2
c2为常数,则:
(3)乘法法则,如果?,?都是实值函数(注意,这点必须满足),则:
(4)除法法则,如果?,?都是实值函数,且?(?)≠0,则:
四、微分法求导
微分法特别适用于矩阵?经加减乘法、逆、行列式、逐元素函数等运算构成的标量函数?的求导。其基本步骤为:
(1)使用相应的运算法则对?求微分;
(2)微分等式两边取迹tr,并对等式右边项进行变换,使??位于迹内最右侧
(3)对??左侧项取转置,即为所求导数
4.1 矩阵迹的基本属性
1) ∑ i ∑ j A i j B i j = t r ( A T B ) \sum\limits_i\sum\limits_j\boldsymbol A_{ij}\boldsymbol B_{ij}=tr(\boldsymbol {A^TB}) i∑j∑AijBij=tr(ATB)
2)标量的迹等于其子集 t r ( x ) = x tr(x)=x tr(x)=x
3)矩阵转置迹不变 t r ( A ) = t r ( A T ) tr(\boldsymbol A)=tr(\boldsymbol A^T) tr(A)=tr(AT)
4)转置同维矩阵 ( A , B T ) (\boldsymbol A,\boldsymbol B^T) (A,BT)的交换率: t r ( A B ) = t r ( B A ) tr(\boldsymbol A\boldsymbol B)=tr(\boldsymbol B\boldsymbol A) tr(AB)=tr(BA)
5)同维矩阵的加减法: t r ( A ± B ) = t r ( A ) ± t r ( B ) tr(\boldsymbol A\pm\boldsymbol B)=tr(\boldsymbol A)\pm tr(\boldsymbol B) tr(A±B)=tr(A)±tr(B)
6)同维三个矩阵的乘法和迹交换: t r ( ( A ⊙ B ) T C ) tr((\boldsymbol A\odot\boldsymbol B)^T\boldsymbol C) tr((A⊙B)TC)= t r ( A T ( B ⊙ C ) ) tr(\boldsymbol A^T(\boldsymbol B\odot\boldsymbol C)) tr(AT(B⊙C))
式中 ⊙ \odot ⊙为哈达马乘积,即逐元素乘积。
7)迹函数求导:
∂
t
r
(
A
B
)
∂
A
=
B
T
\frac{\partial tr(\boldsymbol{AB})}{\partial \boldsymbol A}=\boldsymbol B^T
∂A∂tr(AB)=BT,
∂
t
r
(
A
B
)
∂
B
=
A
T
\frac{\partial tr(\boldsymbol{AB})}{\partial \boldsymbol B}=\boldsymbol A^T
∂B∂tr(AB)=AT
可由
d
(
t
r
(
A
B
)
)
=
t
r
(
d
A
B
)
=
t
r
(
A
d
B
)
+
t
r
(
B
d
A
)
d(tr(\boldsymbol{AB}))=tr(d\boldsymbol{AB})=tr(\boldsymbol Ad\boldsymbol B)+tr(\boldsymbol Bd\boldsymbol A)
d(tr(AB))=tr(dAB)=tr(AdB)+tr(BdA)推导得到
4.2 向量矩阵微分的写法
向量微分:
矩阵微分:
可见,标量函数对向量或矩阵的求导可转换为:微分取迹后迹内自变量前系数项的转置
4.3 矩阵微分的性质
微分加减法: d ( X ± Y ) = d X ± d Y d(\boldsymbol X\pm\boldsymbol Y)=d\boldsymbol X\pm d\boldsymbol Y d(X±Y)=dX±dY
微分乘法: d ( X Y ) = X d Y + Y d X d(\boldsymbol{XY})=\boldsymbol Xd\boldsymbol Y+\boldsymbol Yd\boldsymbol X d(XY)=XdY+YdX
微分转置: d ( X T ) = ( d X ) T d(\boldsymbol X^T)=(d\boldsymbol X)^T d(XT)=(dX)T
微分的迹: d ( t r X ) = t r ( d X ) d(tr\boldsymbol X)=tr(d\boldsymbol X) d(trX)=tr(dX)
微分哈达马乘积: d ( X ⊙ Y ) = X ⊙ d Y + Y ⊙ d X d(\boldsymbol X\odot\boldsymbol Y)=\boldsymbol X\odot d\boldsymbol Y+\boldsymbol Y \odot d\boldsymbol X d(X⊙Y)=X⊙dY+Y⊙dX
逐元素求导: d σ ( X ) = σ ′ ( X ) d X d\sigma(\boldsymbol X)=\sigma'(\boldsymbol X)d\boldsymbol X dσ(X)=σ′(X)dX
逆矩阵微分: d X − 1 = − X − 1 d X X − 1 d\boldsymbol X^{-1}=-\boldsymbol X^{-1}\boldsymbol dX\boldsymbol X^{-1} dX−1=−X−1dXX−1
行列式微分: d ∣ X ∣ = ∣ X ∣ t r ( X − 1 d X ) d|\boldsymbol X|=|\boldsymbol X|tr(\boldsymbol X^{-1}d\boldsymbol X) d∣X∣=∣X∣tr(X−1dX)
五、链式求导法则
链式求导法则可用于向量对向量、标量对向量的求导等场景
5.1 向量对向量求导的链式法则
对于向量间关系,?→?→?,其链式求导表达式可以表示为:
∂?/∂?=∂?/∂?*∂?/∂?
5.2 标量对多个向量恩链式法则
对于向量到标量的关系,
y
1
\boldsymbol y_1
y1→
y
2
\boldsymbol y_2
y2→…→
y
n
\boldsymbol y_n
yn→?,则其链式求导表达式可以表示为:
5.3 标量对多个矩阵的链式求导法则
对于矩阵到标量的关系,X→Y→…z,其链式求导表达式可以表示为:
∂ z ∂ X i j = ∑ k , l ∂ z ∂ Y k l ∂ Y k l ∂ X i j = t r ( ( ∂ z ∂ Y ) T ∂ Y ∂ X i j ) \frac{\partial z}{\partial \boldsymbol X_{ij}}=\sum\limits_{k,l}\frac{\partial z}{\partial \boldsymbol Y_{kl}}\frac{\partial \boldsymbol Y_{kl}}{\partial \boldsymbol X_{ij}}=tr((\frac{\partial z}{\partial \boldsymbol Y})^T\frac{\partial \boldsymbol Y}{\partial \boldsymbol X_{ij}}) ∂Xij∂z=k,l∑∂Ykl∂z∂Xij∂Ykl=tr((∂Y∂z)T∂Xij∂Y)
若矩阵间为线性关系,则改链式求导表达式可进一步表示。