目录
向量导数与矩阵导数是机器学习的数学基础,认真读完本文,相信你会有不少收获~
提
及
向
量
时
,
若
无
特
殊
说
明
,
我
们
默
认
为
列
向
量
\textcolor{red}{提及向量时,若无特殊说明,我们默认为{\bf 列向量}}
提及向量时,若无特殊说明,我们默认为列向量
一、分子布局与分母布局
我们知道,标量(Scalar)、向量(Vector)和矩阵(Matrix)它们三者满足如下关系:
标
量
⊂
向
量
⊂
矩
阵
标量 \subset 向量 \subset 矩阵
标量⊂向量⊂矩阵
即向量可以理解为一种特殊的矩阵(列数为
1
1
1 的矩阵),标量可以理解为一种特殊的向量(维度为
1
1
1 的向量),也可以理解为一个
1
×
1
1\times 1
1×1 的矩阵,所以今天我们讨论的向量导数和矩阵导数可以统称为 “**矩阵导数**”.
常见的矩阵导数有以下六种:
标量对标量求导相信大家再熟悉不过了(
f
′
(
x
)
f'(x)
f′(x) 就是一个很典型的例子), 这里我们不再讨论. 事实上我们还可以讨论矩阵与向量之间的导数,矩阵与矩阵之间的导数,即表格中空着的地方,但因为这些导数的结果涉及到维数大于
2
2
2 的张量(tensor),我们无法再用矩阵的形式去表示,因此也不再讨论.
接下来我们会把重心放在剩余的五个矩阵导数上,即:
- 向量对标量求导
- 标量对向量求导
- 向量对向量求导
- 矩阵对标量求导
- 标量对矩阵求导
假设我们有
x
=
(
x
1
,
⋯
,
x
n
)
T
\boldsymbol{x}=(x_1,\cdots,x_n)^{\mathrm T}
x=(x1,⋯,xn)T 和
y
=
(
y
1
,
⋯
,
y
m
)
T
\boldsymbol{y}=(y_1,\cdots,y_m)^{\mathrm T}
y=(y1,⋯,ym)T 两个向量,则
∂
y
∂
x
\displaystyle \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}
∂x∂y 共有
m
n
mn
mn 个分量:
∂
y
i
∂
x
j
,
i
=
1
,
⋯
,
m
j
=
1
,
⋯
,
n
\frac{\partial y_i}{\partial x_j},\quad i=1,\cdots,m\quad j=1,\cdots,n
∂xj∂yi,i=1,⋯,mj=1,⋯,n
我们该如何去排列这
m
n
mn
mn 个分量呢?这就要用到我们的**分子布局**(Numerator Layout)和**分母布局**(Denominator Layout)了. 所谓布局,无非就是对上面结果的一种排列,若不对排列方式加以规定,则很有可能导致数学运算过程中出现错误(例如因矩阵维数原因导致不能相乘).
在谈向量导数时,我们有两个很重要的前提:
① 分子和分母都是向量,且其中一个是行向量,另外一个是列向量
② 分子和分母其中一个是标量,另外一个是行/列向量
当 ① 或 ② 满足时,我们接下来的讨论才有意义.
我们先看 ①:
- 若分母是列向量,分子是行向量,则称之为分母布局
- 若分子是列向量,分母是行向量,则称之为分子布局
用一句话概括就是:谁是列向量就是什么布局.
对于 ②,我们可以依然采用 “谁是列向量就是什么布局” 来判断,但如果分子分母都不是列向量时,该如何判断呢?
这种情形下也是一句话概括:谁是标量就是什么布局.
我们可以将这些讨论汇总在下表中:
对于矩阵导数,情况就有些不一样了:
此外,我们还有以下重要等式:
分
子
布
局
的
结
果
=
分
母
布
局
的
结
果
T
,
分
母
布
局
的
结
果
=
分
子
布
局
的
结
果
T
分子布局的结果=分母布局的结果^{\mathrm{T}},\qquad 分母布局的结果=分子布局的结果^{\mathrm{T}}
分子布局的结果=分母布局的结果T,分母布局的结果=分子布局的结果T
以上所有结果都可以汇总成下面三张图:
更为直观的表示:
接下来我们的讨论都将基于分子布局.
二、向量导数
2.1 向量对标量求导
向量对标量求导的一些法则:
2.2 标量对向量求导
标量对向量求导的一些法则:
标量对向量求导的一些重要结论:
∂
a
∂
x
=
0
T
(2.2.A)
\frac{\partial a }{\partial \boldsymbol x}={\bf 0}^{\mathrm T}\tag{2.2.A}
∂x∂a=0T(2.2.A)
∂
a
T
x
∂
x
=
∂
x
T
a
∂
x
=
a
T
(2.2.B)
\frac{\partial \boldsymbol a^{\mathrm T}\boldsymbol x }{\partial \boldsymbol x}=\frac{\partial \boldsymbol x^{\mathrm T}\boldsymbol a }{\partial \boldsymbol x}=\boldsymbol a^{\mathrm T} \tag{2.2.B}
∂x∂aTx=∂x∂xTa=aT(2.2.B)
∂
x
T
x
∂
x
=
2
x
T
(2.2.C)
\frac{\partial \boldsymbol x^{\mathrm T}\boldsymbol x }{\partial \boldsymbol x}=2\boldsymbol x^{\mathrm T} \tag{2.2.C}
∂x∂xTx=2xT(2.2.C)
∂
x
T
A
x
∂
x
=
x
T
(
A
+
A
T
)
(2.2.D)
\frac{\partial \boldsymbol x^{\mathrm T}{\bf A}\boldsymbol x }{\partial \boldsymbol x}=\boldsymbol x^{\mathrm T}({\bf A}+{\bf A}^{\mathrm T}) \tag{2.2.D}
∂x∂xTAx=xT(A+AT)(2.2.D)
2.3 向量对向量求导
向量对向量求导的一些法则:
向量对向量求导的一些重要结论:
∂
a
∂
x
=
O
(2.3.A)
\frac{\partial \boldsymbol a }{\partial \boldsymbol x}={\bf O}\tag{2.3.A}
∂x∂a=O(2.3.A)
∂
x
∂
x
=
I
(2.3.B)
\frac{\partial \boldsymbol x }{\partial \boldsymbol x}={\bf I}\tag{2.3.B}
∂x∂x=I(2.3.B)
∂
A
x
∂
x
=
A
(2.3.C)
\frac{\partial {\bf A}\boldsymbol x }{\partial \boldsymbol x}={\bf A}\tag{2.3.C}
∂x∂Ax=A(2.3.C)
三、矩阵导数
3.1 矩阵对标量求导
矩阵对标量求导的一些法则:
3.2 标量对矩阵求导
标量对矩阵求导的一些法则:
标量对矩阵求导的一些重要结论:
∂
a
∂
X
=
O
(3.2.A)
\frac{\partial a }{\partial {\bf X}}={\bf O}\tag{3.2.A}
∂X∂a=O(3.2.A)
∂
a
T
X
b
∂
X
=
b
a
T
(3.2.B)
\frac{\partial \boldsymbol a^{\mathrm T}{\bf X}\boldsymbol b }{\partial {\bf X}}=\boldsymbol{ba}^{\mathrm T}\tag{3.2.B}
∂X∂aTXb=baT(3.2.B)
∂
a
T
X
T
b
∂
X
=
a
b
T
(3.2.C)
\frac{\partial \boldsymbol a^{\mathrm T}{\bf X}^{\mathrm T}\boldsymbol b }{\partial {\bf X}}=\boldsymbol{ab}^{\mathrm T}\tag{3.2.C}
∂X∂aTXTb=abT(3.2.C)
此外,我们经常会遇到迹对矩阵求导的情形,相关结论如下:
∂
t
r
(
X
)
∂
X
=
I
(3.2.D)
\frac{\partial \mathrm{tr}({\bf X})}{\partial {\bf X}}={\bf I}\tag{3.2.D}
∂X∂tr(X)=I(3.2.D)
∂
t
r
(
X
k
)
∂
X
=
k
X
k
−
1
(3.2.E)
\frac{\partial \mathrm{tr}({\bf X}^{k})}{\partial {\bf X}}=k{\bf X}^{k-1}\tag{3.2.E}
∂X∂tr(Xk)=kXk−1(3.2.E)
∂
t
r
(
A
X
)
∂
X
=
∂
t
r
(
X
A
)
∂
X
=
A
(3.2.F)
\frac{\partial \mathrm{tr}({\bf AX})}{\partial {\bf X}}=\frac{\partial \mathrm{tr}({\bf XA})}{\partial {\bf X}}={\bf A}\tag{3.2.F}
∂X∂tr(AX)=∂X∂tr(XA)=A(3.2.F)
∂
t
r
(
A
X
T
)
∂
X
=
∂
t
r
(
X
T
A
)
∂
X
=
A
T
(3.2.G)
\frac{\partial \mathrm{tr}({\bf AX}^{\mathrm T})}{\partial {\bf X}}=\frac{\partial \mathrm{tr}({\bf X}^{\mathrm T}{\bf A})}{\partial {\bf X}}={\bf A}^{\mathrm T}\tag{3.2.G}
∂X∂tr(AXT)=∂X∂tr(XTA)=AT(3.2.G)
∂
t
r
(
X
T
A
X
)
∂
X
=
X
T
(
A
+
A
T
)
(3.2.H)
\frac{\partial \mathrm{tr}({\bf X}^{\mathrm T}{\bf AX})}{\partial {\bf X}}={\bf X}^{\mathrm T}({\bf A}+{\bf A}^{\mathrm T})\tag{3.2.H}
∂X∂tr(XTAX)=XT(A+AT)(3.2.H)
∂
t
r
(
X
−
1
A
)
∂
X
=
−
X
−
1
A
X
−
1
(3.2.I)
\frac{\partial \mathrm{tr}({\bf X}^{-1}{\bf A})}{\partial {\bf X}}=-{\bf X}^{-1}{\bf AX}^{-1}\tag{3.2.I}
∂X∂tr(X−1A)=−X−1AX−1(3.2.I)
∂
t
r
(
A
X
B
)
∂
X
=
∂
t
r
(
B
A
X
)
∂
X
=
B
A
(3.2.J)
\frac{\partial \mathrm{tr}({\bf AXB})}{\partial {\bf X}}=\frac{\partial \mathrm{tr}({\bf BAX})}{\partial {\bf X}}={\bf BA}\tag{3.2.J}
∂X∂tr(AXB)=∂X∂tr(BAX)=BA(3.2.J)
∂
t
r
(
A
X
B
X
T
C
)
∂
X
=
B
X
T
C
A
+
B
T
X
T
A
T
C
T
(3.2.K)
\frac{\partial \mathrm{tr}({\bf AXBX}^{\mathrm T}{\bf C})}{\partial {\bf X}}={\bf BX}^{\mathrm T}{\bf CA}+{\bf B}^{\mathrm T}{\bf X}^{\mathrm T}{\bf A}^{\mathrm T}{\bf C}^{\mathrm T} \tag{3.2.K}
∂X∂tr(AXBXTC)=BXTCA+BTXTATCT(3.2.K)
参考
[1] https://zhuanlan.zhihu.com/p/263777564
[2] https://www.zhihu.com/question/352174717
[3] https://cloud.tencent.com/developer/article/1551901
[4] https://en.wikipedia.org/wiki/Matrix_calculus
[5] https://www.comp.nus.edu.sg/~cs5240/lecture/matrix-diff.pdf
版权归原作者 serity 所有, 如有侵权,请联系我们删除。