先说明一些符号:
标量y,向量
y
→
\overrightarrow{y}
y,矩阵
X
,
Y
X,Y
X,Y.
y
→
=
[
y
1
y
2
⋮
y
n
]
x
→
=
[
x
1
x
2
⋮
x
n
]
\overrightarrow{y}=\begin{bmatrix} y_1\\ y_2\\ \vdots \\ y_n \end{bmatrix} \overrightarrow{x}=\begin{bmatrix} x_1\\ x_2\\ \vdots \\ x_n \end{bmatrix}
y=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
X
=
[
x
11
x
12
⋯
x
1
n
x
21
x
22
⋯
x
2
n
⋮
⋮
⋯
⋮
x
m
1
x
m
2
⋯
x
m
n
]
X=\begin{bmatrix} x_{11} &x_{12} &\cdots &x_{1n} \\ x_{21}&x_{22} &\cdots &x_{2n} \\ \vdots& \vdots & \cdots &\vdots \\ x_{m1}&x_{m2} & \cdots &x_{mn} \end{bmatrix}
X=⎣⎢⎢⎢⎡x11x21⋮xm1x12x22⋮xm2⋯⋯⋯⋯x1nx2n⋮xmn⎦⎥⎥⎥⎤
在矩阵求导这里有两种布局方式,常用的是分子布局,我下面所用的就是分子布局。
标量对向量求导
∂
y
∂
x
→
=
[
∂
y
∂
x
1
∂
y
∂
x
2
⋯
∂
y
∂
x
n
]
\frac{\partial y}{\partial \overrightarrow{x}}=\begin{bmatrix} \frac{\partial y}{\partial x_1} & \frac{\partial y}{\partial x_2}& \cdots& \frac{\partial y}{\partial x_n} \end{bmatrix}
∂x∂y=[∂x1∂y∂x2∂y⋯∂xn∂y]
这是分子布局下标量对向量的求导,记住了这种方式,下面的就容易多了.
向量对向量求导
向量对向量求导,本质就是分子向量的每一个值(标量)对分母向量求导,具体的就是
y
1
y_1
y1对
x
→
\overrightarrow{x}
x求导,
y
2
y_2
y2对
x
→
\overrightarrow{x}
x求导,一直到
y
n
y_n
yn对
x
→
\overrightarrow{x}
x求导.那么正如标量对向量求导,
y
1
y_1
y1对
x
→
\overrightarrow{x}
x求导的结果就是
∂
y
1
∂
x
→
=
[
∂
y
1
∂
x
1
∂
y
1
∂
x
2
⋯
∂
y
1
∂
x
n
]
\frac{\partial y_1}{\partial \overrightarrow{x}}=\begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2}& \cdots& \frac{\partial y_1}{\partial x_n} \end{bmatrix}
∂x∂y1=[∂x1∂y1∂x2∂y1⋯∂xn∂y1]
所以
∂
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
n
∂
x
1
∂
y
n
∂
x
1
⋯
∂
y
n
∂
x
n
]
\frac{\partial \overrightarrow{y}}{\partial \overrightarrow{x}}=\begin{bmatrix} \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 & \cdots &\vdots \\ \frac{\partial y_n}{\partial x_1}&\frac{\partial y_n}{\partial x_1} & \cdots & \frac{\partial y_n}{\partial x_n} \end{bmatrix}
∂x∂y=⎣⎢⎢⎢⎢⎡∂x1∂y1∂x1∂y2⋮∂x1∂yn∂x2∂y1∂x2∂y2⋮∂x1∂yn⋯⋯⋯⋯∂xn∂y1∂xn∂y2⋮∂xn∂yn⎦⎥⎥⎥⎥⎤
每一行就是标量对向量求导的计算结果。
标量对矩阵求导
对于矩阵
X
X
X,它是
m
×
n
m\times n
m×n的矩阵,我们可以给它看成是
n
n
n个
m
m
m维的列向量,那么问题就变为了标量对
n
n
n个向量的求导,例如标量
y
y
y对矩阵
X
X
X的第一列
[
x
11
x
21
⋮
x
m
1
]
\begin{bmatrix} x_{11}\\ x_{21}\\ \vdots\\ x_{m1} \end{bmatrix}
⎣⎢⎢⎢⎡x11x21⋮xm1⎦⎥⎥⎥⎤
的求导就是
[
y
∂
x
11
y
∂
x
21
⋯
y
∂
x
m
1
]
\begin{bmatrix} \frac{y}{\partial x_{11}} &\frac{y}{\partial x_{21}} &\cdots &\frac{y}{\partial x_{m1}} \end{bmatrix}
[∂x11y∂x21y⋯∂xm1y]
所以
∂
y
∂
X
=
[
∂
y
∂
x
11
∂
y
∂
x
21
⋯
∂
y
∂
x
m
1
∂
y
∂
x
12
∂
y
∂
x
22
⋯
∂
y
∂
x
m
2
⋮
⋮
⋯
⋮
∂
y
∂
x
1
n
∂
y
∂
x
2
n
⋯
∂
y
∂
x
m
n
]
\frac{\partial y}{\partial X}=\begin{bmatrix} \frac{\partial y}{\partial x_{11}} & \frac{\partial y}{\partial x_{21}} & \cdots & \frac{\partial y}{\partial x_{m1}} \\ \frac{\partial y}{\partial x_{12}} & \frac{\partial y}{\partial x_{22}} &\cdots &\frac{\partial y}{\partial x_{m2}} \\ \vdots& \vdots & \cdots & \vdots\\ \frac{\partial y}{\partial x_{1n}} &\frac{\partial y}{\partial x_{2n}} & \cdots &\frac{\partial y}{\partial x_{mn}} \end{bmatrix}
∂X∂y=⎣⎢⎢⎢⎢⎡∂x11∂y∂x12∂y⋮∂x1n∂y∂x21∂y∂x22∂y⋮∂x2n∂y⋯⋯⋯⋯∂xm1∂y∂xm2∂y⋮∂xmn∂y⎦⎥⎥⎥⎥⎤
下图来自维基百科上矩阵求导详述
解释完了上面的部分,我们也就明白下图中为什么是这样的结果了
我们仅仅看分子布局(Numerator layout)那一列
假如
a
→
=
[
a
1
a
2
⋯
a
m
]
T
\overrightarrow{a}=\begin{bmatrix} a_1 & a_2 &\cdots &a_m \end{bmatrix}^T
a=[a1a2⋯am]T,向量
a
→
\overrightarrow{a}
a和向量
x
→
=
[
x
1
x
2
⋯
x
n
]
T
\overrightarrow{x}=\begin{bmatrix} x_1 & x_2 &\cdots &x_n \end{bmatrix}^T
x=[x1x2⋯xn]T一点关系没有.
那么求导的结果就是
m
×
n
m\times n
m×n的零矩阵.
x
→
\overrightarrow{x}
x对自身求导的结果是单位矩阵.这两个就不写出来了,我们下面看一下后两个,假设
A
=
[
a
11
a
12
⋯
a
1
n
a
21
a
22
⋯
a
2
n
⋮
⋮
⋯
⋮
a
m
1
a
m
2
⋯
a
m
n
]
A=\begin{bmatrix} a_{11} &a_{12} &\cdots &a_{1n} \\ a_{21}& a_{22} & \cdots & a_{2n}\\ \vdots & \vdots &\cdots & \vdots\\ a_{m1} &a_{m2} &\cdots & a_{mn} \end{bmatrix}
A=⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2⋯⋯⋯⋯a1na2n⋮amn⎦⎥⎥⎥⎤
那么
A
x
=
[
a
11
x
1
+
a
12
x
2
+
⋯
+
a
1
n
x
n
a
21
x
1
+
a
22
x
2
+
⋯
+
a
2
n
x
n
⋮
a
m
1
x
1
+
a
m
2
x
2
+
⋯
+
a
m
n
x
n
]
Ax=\begin{bmatrix} a_{11}x_{1}+a_{12}x_{2}+\cdots+a_{1n}x_n\\ a_{21}x_{1}+a_{22}x_{2}+\cdots+a_{2n}x_n\\ \vdots\\ a_{m1}x_1+a_{m2}x_2+\cdots+a_{mn}x_n \end{bmatrix}
Ax=⎣⎢⎢⎢⎡a11x1+a12x2+⋯+a1nxna21x1+a22x2+⋯+a2nxn⋮am1x1+am2x2+⋯+amnxn⎦⎥⎥⎥⎤
此时
∂
A
x
∂
x
\frac{\partial Ax}{\partial x}
∂x∂Ax就是向量对向量的导数
,按照上述步骤就是分解为
m
m
m个标量对向量的导数,
第一个标量是
a
11
x
1
+
a
12
x
2
+
⋯
+
a
1
n
x
n
a_{11}x_{1}+a_{12}x_{2}+\cdots+a_{1n}x_n
a11x1+a12x2+⋯+a1nxn,它对
x
→
=
[
x
1
x
2
⋮
x
n
]
\overrightarrow{x}=\begin{bmatrix} x_1\\ x_2\\ \vdots \\ x_n \end{bmatrix}
x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
的导数是
[
a
11
a
12
⋯
a
1
n
]
\begin{bmatrix} a_{11} &a_{12} & \cdots &a_{1n} \end{bmatrix}
[a11a12⋯a1n]
看到这里大家最好拿纸笔自己推算一下。
那么自然的,就得到了
∂
A
x
∂
x
=
[
a
11
a
12
⋯
a
1
n
a
21
a
22
⋯
a
2
n
⋮
⋮
⋯
⋮
a
m
1
a
m
2
⋯
a
m
n
]
\frac{\partial Ax}{\partial x}=\begin{bmatrix} a_{11} &a_{12} &\cdots &a_{1n} \\ a_{21}& a_{22} & \cdots & a_{2n}\\ \vdots & \vdots &\cdots & \vdots\\ a_{m1} &a_{m2} &\cdots & a_{mn} \end{bmatrix}
∂x∂Ax=⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2⋯⋯⋯⋯a1na2n⋮amn⎦⎥⎥⎥⎤
这就是矩阵
A
A
A.
现在再看最后一个
∂
x
T
A
∂
x
\frac{\partial x^TA}{\partial x}
∂x∂xTA,
首先计算
x
T
A
x^TA
xTA,
x
→
T
=
[
x
1
x
2
⋯
x
n
]
\overrightarrow{x}^T=\begin{bmatrix} x_1 & x_2 &\cdots &x_n \end{bmatrix}
xT=[x1x2⋯xn],这里注意这里的矩阵
A
A
A和上一个不是一个矩阵,只不过用A这个符号表示这是一个矩阵。这里的矩阵
A
A
A应该等于
A
=
[
a
11
a
12
⋯
a
1
m
a
21
a
22
⋯
a
2
m
⋮
⋮
⋯
⋮
a
n
1
a
n
2
⋯
a
n
m
]
A=\begin{bmatrix} a_{11} &a_{12} &\cdots &a_{1m} \\ a_{21}& a_{22} & \cdots & a_{2m}\\ \vdots & \vdots &\cdots & \vdots\\ a_{n1} &a_{n2} &\cdots & a_{nm} \end{bmatrix}
A=⎣⎢⎢⎢⎡a11a21⋮an1a12a22⋮an2⋯⋯⋯⋯a1ma2m⋮anm⎦⎥⎥⎥⎤
n
×
m
n\times m
n×m型的矩阵。
那么
x
T
A
x^TA
xTA就等于
[
a
11
x
1
+
a
21
x
2
+
⋯
+
a
n
1
x
n
a
12
x
1
+
a
22
x
2
+
⋯
+
a
n
2
x
n
⋮
a
1
m
x
1
+
a
m
2
x
2
+
⋯
+
a
n
m
x
n
]
\begin{bmatrix} a_{11}x_{1}+a_{21}x_{2}+\cdots+a_{n1}x_n\\ a_{12}x_{1}+a_{22}x_{2}+\cdots+a_{n2}x_n\\ \vdots\\ a_{1m}x_1+a_{m2}x_2+\cdots+a_{nm}x_n \end{bmatrix}
⎣⎢⎢⎢⎡a11x1+a21x2+⋯+an1xna12x1+a22x2+⋯+an2xn⋮a1mx1+am2x2+⋯+anmxn⎦⎥⎥⎥⎤
所以
∂
x
T
A
∂
x
\frac{\partial x^TA}{\partial x}
∂x∂xTA依旧是向量对向量的求导,我们首先看第一个标量
a
11
x
1
+
a
21
x
2
+
⋯
+
a
n
1
x
n
a_{11}x_{1}+a_{21}x_{2}+\cdots+a_{n1}x_n
a11x1+a21x2+⋯+an1xn对
x
→
\overrightarrow{x}
x的导数,就是
[
a
11
a
21
⋯
a
n
1
]
\begin{bmatrix} a_{11} &a_{21} & \cdots & a_{n1} \end{bmatrix}
[a11a21⋯an1]
那么自然的
∂
x
T
A
∂
x
=
[
a
11
a
21
⋯
a
n
1
a
12
a
22
⋯
a
n
2
⋮
⋮
⋯
⋮
a
1
m
a
2
m
⋯
a
n
m
]
\frac{\partial x^TA}{\partial x}=\begin{bmatrix} a_{11} &a_{21} &\cdots &a_{n1} \\ a_{12}& a_{22} &\cdots & a_{n2}\\ \vdots& \vdots&\cdots & \vdots\\ a_{1m} &a_{2m} & \cdots& a_{nm} \end{bmatrix}
∂x∂xTA=⎣⎢⎢⎢⎡a11a12⋮a1ma21a22⋮a2m⋯⋯⋯⋯an1an2⋮anm⎦⎥⎥⎥⎤
这显然就是矩阵
A
A
A的转置。(别忘了这是分子布局的情况下)
其实只要记住分子布局下标量对向量的求导形式:
∂
y
∂
x
→
=
[
∂
y
∂
x
1
∂
y
∂
x
2
⋯
∂
y
∂
x
n
]
,
x
→
=
[
x
1
x
2
⋮
x
n
]
\frac{\partial y}{\partial \overrightarrow{x}}=\begin{bmatrix} \frac{\partial y}{\partial x_1} & \frac{\partial y}{\partial x_2}& \cdots& \frac{\partial y}{\partial x_n} \end{bmatrix} , \overrightarrow{x}=\begin{bmatrix} x_{1}\\ x_2\\ \vdots\\ x_n \end{bmatrix}
∂x∂y=[∂x1∂y∂x2∂y⋯∂xn∂y],x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
后面的各种形式也就很容易理解了。