为方便叙述,做如下定义:
x
x
x表示标量,
x
\boldsymbol{x}
x表示
n
n
n维列向量,
X
\boldsymbol{X}
X表示
m
×
n
m\times n
m×n维矩阵,
y
y
y表示标量,
y
\boldsymbol{y}
y表示
m
m
m维列向量,
Y
\boldsymbol{Y}
Y表示
p
×
q
p\times q
p×q维矩阵。
仅考虑实数域,不考虑复数域。
1 函数与标量、向量、矩阵
对于一个函数 f ( x ) f\left( x \right) f(x),根据自变量以及函数的类型可以分成9种类型:
1.1 函数为标量
函数为实值标量函数。用细体小写字母 f f f表示。
1.1.1 变元为标量
当函数的变元为标量(细体小写字母
x
x
x表示)时,就是我们在高数中学习的函数。
【例1.1】
f
(
x
)
=
x
+
a
f\left( x \right) =x+a
f(x)=x+a
1.1.2 变元为向量
当函数的变元为标量(粗体小写字母
x
\boldsymbol{x}
x表示)时,该函数仍是一个标量函数
。
【例1.2】设
x
=
[
x
1
,
x
2
,
⋯
,
x
n
]
T
\boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right] ^T
x=[x1,x2,⋯,xn]T,
f
(
x
)
=
a
1
x
1
2
+
a
2
x
2
2
+
⋯
+
a
n
x
n
2
f\left( \boldsymbol{x} \right) =a_1{x_1}^2+a_2{x_2}^2+\cdots +a_n{x_n}^2
f(x)=a1x12+a2x22+⋯+anxn2
1.1.3 变元为矩阵
当函数的变元为标量(粗体大写字母
X
\boldsymbol{X}
X表示)时,该函数仍是一个标量函数
。
【例1.3】设
X
=
[
x
11
x
12
x
13
x
21
x
22
x
23
]
\boldsymbol{X}=\left[ \begin{matrix} x_{11}& x_{12}& x_{13}\\ x_{21}& x_{22}& x_{23}\\ \end{matrix} \right]
X=[x11x21x12x22x13x23],
f
(
X
)
=
a
1
x
11
+
a
2
x
12
+
a
3
x
13
+
a
4
x
21
+
a
5
x
22
+
a
6
x
23
f\left( \boldsymbol{X} \right) =a_1x_{11}+a_2x_{12}+a_3x_{13}+a_4x_{21}+a_5x_{22}+a_6x_{23}
f(X)=a1x11+a2x12+a3x13+a4x21+a5x22+a6x23
1.2 函数为向量
当函数为实向量函数(用粗体小写字母 f \boldsymbol{f} f表示)时,表示 f \boldsymbol{f} f是由若干个实值标量函数 f {f} f组成的一个向量。
1.2.1 变元为标量
【例1.4】 f m × 1 ( x ) = [ f 1 ( x ) f 2 ( x ) ⋮ f m ( x ) ] = [ x + 1 x 2 + 2 ⋮ 3 x 3 + 1 ] \boldsymbol{f}_{m\times 1}\left( x \right) =\left[ \begin{array}{c} f_1\left( x \right)\\ f_2\left( x \right)\\ \vdots\\ f_m\left( x \right)\\ \end{array} \right] =\left[ \begin{array}{c} x+1\\ x^2+2\\ \vdots\\ 3x^3+1\\ \end{array} \right] fm×1(x)= f1(x)f2(x)⋮fm(x) = x+1x2+2⋮3x3+1
1.2.2 变元为向量
【例1.5】设
x
=
[
x
1
,
x
2
,
⋯
,
x
n
]
T
\boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right] ^T
x=[x1,x2,⋯,xn]T,
f
m
×
1
(
x
)
=
[
f
1
(
x
)
f
2
(
x
)
⋮
f
m
(
x
)
]
=
[
f
1
(
x
1
,
x
2
,
⋯
,
x
n
)
f
2
(
x
1
,
x
2
,
⋯
,
x
n
)
⋮
f
m
(
x
1
,
x
2
,
⋯
,
x
n
)
]
\boldsymbol{f}_{m\times 1}\left( \boldsymbol{x} \right) =\left[ \begin{array}{c} f_1\left( \boldsymbol{x} \right)\\ f_2\left( \boldsymbol{x} \right)\\ \vdots\\ f_m\left( \boldsymbol{x} \right)\\ \end{array} \right] =\left[ \begin{array}{c} f_1\left( x_1,x_2,\cdots ,x_n \right)\\ f_2\left( x_1,x_2,\cdots ,x_n \right)\\ \vdots\\ f_m\left( x_1,x_2,\cdots ,x_n \right)\\ \end{array} \right]
fm×1(x)=
f1(x)f2(x)⋮fm(x)
=
f1(x1,x2,⋯,xn)f2(x1,x2,⋯,xn)⋮fm(x1,x2,⋯,xn)
1.2.3 变元为矩阵
【例1.6】设
X
m
×
n
=
[
x
11
x
12
⋯
x
1
n
x
21
x
22
⋯
x
2
n
⋮
⋮
⋱
⋮
x
m
1
x
m
2
⋯
x
m
n
]
\boldsymbol{X}_{m\times n}=\left[ \begin{matrix} x_{11}& x_{12}& \cdots& x_{1n}\\ x_{21}& x_{22}& \cdots& x_{2n}\\ \vdots& \vdots& \ddots& \vdots\\ x_{m1}& x_{m2}& \cdots& x_{mn}\\ \end{matrix} \right]
Xm×n=
x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1nx2n⋮xmn
f
m
×
1
(
X
)
=
[
f
1
(
X
)
f
2
(
X
)
⋮
f
m
(
X
)
]
=
[
f
1
(
x
11
,
x
12
,
⋯
,
x
m
n
)
f
2
(
x
11
,
x
12
,
⋯
,
x
m
n
)
⋮
f
m
(
x
11
,
x
12
,
⋯
,
x
m
n
)
]
\boldsymbol{f}_{m\times 1}\left( \boldsymbol{X} \right) =\left[ \begin{array}{c} f_1\left( \boldsymbol{X} \right)\\ f_2\left( \boldsymbol{X} \right)\\ \vdots\\ f_m\left( \boldsymbol{X} \right)\\ \end{array} \right] =\left[ \begin{array}{c} f_1\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ f_2\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ \vdots\\ f_m\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ \end{array} \right]
fm×1(X)=
f1(X)f2(X)⋮fm(X)
=
f1(x11,x12,⋯,xmn)f2(x11,x12,⋯,xmn)⋮fm(x11,x12,⋯,xmn)
1.3 函数为矩阵
当函数是一个实矩阵函数(用粗体大写字母 F \boldsymbol{F} F表示)时,表示 F \boldsymbol{F} F是由若干个 f {f} f组成的一个矩阵。
1.3.1 变元为标量
【例1.7】 F m × n ( x ) = [ f 11 ( x ) f 12 ( x ) ⋯ f 1 n ( x ) f 21 ( x ) f 22 ( x ) ⋯ f 2 n ( x ) ⋮ ⋮ ⋱ ⋮ f m 1 ( x ) f m 2 ( x ) ⋯ f m n ( x ) ] m × n \boldsymbol{F}_{m\times n}\left( x \right) =\left[ \begin{matrix} f_{11}\left( x \right)& f_{12}\left( x \right)& \cdots& f_{1n}\left( x \right)\\ f_{21}\left( x \right)& f_{22}\left( x \right)& \cdots& f_{2n}\left( x \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( x \right)& f_{m2}\left( x \right)& \cdots& f_{mn}\left( x \right)\\ \end{matrix} \right] _{m\times n} Fm×n(x)= f11(x)f21(x)⋮fm1(x)f12(x)f22(x)⋮fm2(x)⋯⋯⋱⋯f1n(x)f2n(x)⋮fmn(x) m×n
1.3.2 变元为向量
【例1.8】设
x
=
[
x
1
,
x
2
,
⋯
,
x
n
]
T
\boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right] ^T
x=[x1,x2,⋯,xn]T,
F
m
×
n
(
x
)
=
[
f
11
(
x
)
f
12
(
x
)
⋯
f
1
n
(
x
)
f
21
(
x
)
f
22
(
x
)
⋯
f
2
n
(
x
)
⋮
⋮
⋱
⋮
f
m
1
(
x
)
f
m
2
(
x
)
⋯
f
m
n
(
x
)
]
=
[
f
11
(
x
1
,
x
2
,
⋯
,
x
n
)
f
12
(
x
1
,
x
2
,
⋯
,
x
n
)
⋯
f
1
n
(
x
1
,
x
2
,
⋯
,
x
n
)
f
21
(
x
1
,
x
2
,
⋯
,
x
n
)
f
22
(
x
1
,
x
2
,
⋯
,
x
n
)
⋯
f
2
n
(
x
1
,
x
2
,
⋯
,
x
n
)
⋮
⋮
⋱
⋮
f
m
1
(
x
1
,
x
2
,
⋯
,
x
n
)
f
m
2
(
x
1
,
x
2
,
⋯
,
x
n
)
⋯
f
m
n
(
x
1
,
x
2
,
⋯
,
x
n
)
]
\boldsymbol{F}_{m\times n}\left( \boldsymbol{x} \right) =\left[ \begin{matrix} f_{11}\left( \boldsymbol{x} \right)& f_{12}\left( \boldsymbol{x} \right)& \cdots& f_{1n}\left( \boldsymbol{x} \right)\\ f_{21}\left( \boldsymbol{x} \right)& f_{22}\left( \boldsymbol{x} \right)& \cdots& f_{2n}\left( \boldsymbol{x} \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( \boldsymbol{x} \right)& f_{m2}\left( \boldsymbol{x} \right)& \cdots& f_{mn}\left( \boldsymbol{x} \right)\\ \end{matrix} \right] \\ =\left[ \begin{matrix} f_{11}\left( x_1,x_2,\cdots ,x_n \right)& f_{12}\left( x_1,x_2,\cdots ,x_n \right)& \cdots& f_{1n}\left( x_1,x_2,\cdots ,x_n \right)\\ f_{21}\left( x_1,x_2,\cdots ,x_n \right)& f_{22}\left( x_1,x_2,\cdots ,x_n \right)& \cdots& f_{2n}\left( x_1,x_2,\cdots ,x_n \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( x_1,x_2,\cdots ,x_n \right)& f_{m2}\left( x_1,x_2,\cdots ,x_n \right)& \cdots& f_{mn}\left( x_1,x_2,\cdots ,x_n \right)\\ \end{matrix} \right]
Fm×n(x)=
f11(x)f21(x)⋮fm1(x)f12(x)f22(x)⋮fm2(x)⋯⋯⋱⋯f1n(x)f2n(x)⋮fmn(x)
=
f11(x1,x2,⋯,xn)f21(x1,x2,⋯,xn)⋮fm1(x1,x2,⋯,xn)f12(x1,x2,⋯,xn)f22(x1,x2,⋯,xn)⋮fm2(x1,x2,⋯,xn)⋯⋯⋱⋯f1n(x1,x2,⋯,xn)f2n(x1,x2,⋯,xn)⋮fmn(x1,x2,⋯,xn)
1.3.3 变元为矩阵
【例1.9】设
X
m
×
n
=
[
x
11
x
12
⋯
x
1
n
x
21
x
22
⋯
x
2
n
⋮
⋮
⋱
⋮
x
m
1
x
m
2
⋯
x
m
n
]
\boldsymbol{X}_{m\times n}=\left[ \begin{matrix} x_{11}& x_{12}& \cdots& x_{1n}\\ x_{21}& x_{22}& \cdots& x_{2n}\\ \vdots& \vdots& \ddots& \vdots\\ x_{m1}& x_{m2}& \cdots& x_{mn}\\ \end{matrix} \right]
Xm×n=
x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1nx2n⋮xmn
F
m
×
n
(
X
)
=
[
f
11
(
X
)
f
12
(
X
)
⋯
f
1
n
(
X
)
f
21
(
X
)
f
22
(
X
)
⋯
f
2
n
(
X
)
⋮
⋮
⋱
⋮
f
m
1
(
X
)
f
m
2
(
X
)
⋯
f
m
n
(
X
)
]
=
[
f
11
(
x
11
,
x
12
,
⋯
,
x
m
n
)
f
12
(
x
11
,
x
12
,
⋯
,
x
m
n
)
⋯
f
1
n
(
x
11
,
x
12
,
⋯
,
x
m
n
)
f
21
(
x
11
,
x
12
,
⋯
,
x
m
n
)
f
22
(
x
11
,
x
12
,
⋯
,
x
m
n
)
⋯
f
2
n
(
x
11
,
x
12
,
⋯
,
x
m
n
)
⋮
⋮
⋱
⋮
f
m
1
(
x
11
,
x
12
,
⋯
,
x
m
n
)
f
m
2
(
x
11
,
x
12
,
⋯
,
x
m
n
)
⋯
f
m
n
(
x
11
,
x
12
,
⋯
,
x
m
n
)
]
\boldsymbol{F}_{m\times n}\left( \boldsymbol{X} \right) =\left[ \begin{matrix} f_{11}\left( \boldsymbol{X} \right)& f_{12}\left( \boldsymbol{X} \right)& \cdots& f_{1n}\left( \boldsymbol{X} \right)\\ f_{21}\left( \boldsymbol{X} \right)& f_{22}\left( \boldsymbol{X} \right)& \cdots& f_{2n}\left( \boldsymbol{X} \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( \boldsymbol{X} \right)& f_{m2}\left( \boldsymbol{X} \right)& \cdots& f_{mn}\left( \boldsymbol{X} \right)\\ \end{matrix} \right] \\ =\left[ \begin{matrix} f_{11}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& f_{12}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& \cdots& f_{1n}\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ f_{21}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& f_{22}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& \cdots& f_{2n}\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& f_{m2}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& \cdots& f_{mn}\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ \end{matrix} \right]
Fm×n(X)=
f11(X)f21(X)⋮fm1(X)f12(X)f22(X)⋮fm2(X)⋯⋯⋱⋯f1n(X)f2n(X)⋮fmn(X)
=
f11(x11,x12,⋯,xmn)f21(x11,x12,⋯,xmn)⋮fm1(x11,x12,⋯,xmn)f12(x11,x12,⋯,xmn)f22(x11,x12,⋯,xmn)⋮fm2(x11,x12,⋯,xmn)⋯⋯⋱⋯f1n(x11,x12,⋯,xmn)f2n(x11,x12,⋯,xmn)⋮fmn(x11,x12,⋯,xmn)
1.4 总结
根据自变量、因变量是标量,向量还是矩阵,有9种矩阵形式:
函数\变元 | 标量变元 | 向量变元 | 矩阵变元 |
---|---|---|---|
实值标量函数 | f ( x ) f\left( x \right) f(x) | f ( x ) f\left( \boldsymbol{x} \right) f(x) | f ( X ) f\left( \boldsymbol{X} \right) f(X) |
实向量函数 | f ( x ) \boldsymbol{f}\left( x \right) f(x) | f ( x ) \boldsymbol{f}\left( \boldsymbol{x} \right) f(x) | f ( X ) \boldsymbol{f}\left( \boldsymbol{X} \right) f(X) |
实矩阵函数 | F ( x ) \boldsymbol{F}\left( x \right) F(x) | F ( x ) \boldsymbol{F}\left( \boldsymbol{x} \right) F(x) | F ( X ) \boldsymbol{F}\left( \boldsymbol{X} \right) F(X) |
对应地,有9种可能的矩阵求导定义:
函数\变元 | 标量变元 | 向量变元 | 矩阵变元 |
---|---|---|---|
实值标量函数 | ∂ f ∂ x \frac{\partial f}{\partial x} ∂x∂f | ∂ f ∂ x \frac{\partial f}{\partial \boldsymbol{x}} ∂x∂f | ∂ f ∂ X \frac{\partial f}{\partial \boldsymbol{X}} ∂X∂f |
实向量函数 | ∂ f ∂ x \frac{\partial \boldsymbol{f}}{\partial x} ∂x∂f | ∂ f ∂ x \frac{\partial \boldsymbol{f}}{\partial \boldsymbol{x}} ∂x∂f | ∂ f ∂ X \frac{\partial \boldsymbol{f}}{\partial \boldsymbol{X}} ∂X∂f |
实矩阵函数 | ∂ F ∂ x \frac{\partial \boldsymbol{F}}{\partial x} ∂x∂F | ∂ F ∂ x \frac{\partial \boldsymbol{F}}{\partial \boldsymbol{x}} ∂x∂F | ∂ F ∂ X \frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}} ∂X∂F |
2 矩阵求导的本质
在高等数学里面,我们已经学过了标量对标量的求导,比如标量
y
y
y对标量
x
x
x的求导,可以表示为
∂
y
∂
x
\frac{\partial y}{\partial x}
∂x∂y.有些时候,我们会对一组
标量
y
i
,
i
=
1
,
2
,
⋯
,
m
y_i,i=1,2,\cdots ,m
yi,i=1,2,⋯,m进行求导,我们会得到一组
标量求导的结果:
∂
y
i
∂
x
i
,
i
=
1
,
2
,
⋯
,
m
\frac{\partial y_i}{\partial x_i},i=1,2,\cdots ,m
∂xi∂yi,i=1,2,⋯,m
如果我们把这组标量写成向量的形式,即得到维度为
m
m
m的一个向量
y
\boldsymbol{y}
y对一个标量
x
x
x的求导,那么结果也是一个
m
m
m维的向量:
∂
y
∂
x
\frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}
∂x∂y.
可见,所谓向量对标量的求导,其实就是向量里的每个分量分别对标量求导,最后把求导的结果排列在一起,按一个向量表示而已。类似地,矩阵求导也是一样的,本质就是矩阵中的每个 f f f分别对变元中的每个元素逐个求偏导,只不过写成了向量、矩阵形式而已。
下面通过2个例子直观感受一下。
【例2.1】设
y
=
[
y
1
,
y
2
,
⋯
,
y
n
]
T
\boldsymbol{y}=\left[ y_1,y_2,\cdots ,y_n \right] ^T
y=[y1,y2,⋯,yn]T,则有:
∂
y
∂
x
=
[
∂
y
1
∂
x
,
∂
y
2
∂
x
,
⋯
∂
y
3
∂
x
]
T
\frac{\partial \boldsymbol{y}}{\partial x}=\left[ \frac{\partial y_1}{\partial x},\frac{\partial y_2}{\partial x},\cdots \frac{\partial y_3}{\partial x} \right] ^T
∂x∂y=[∂x∂y1,∂x∂y2,⋯∂x∂y3]T
【例2.2】求函数
f
(
x
)
=
x
T
x
=
x
1
2
+
x
2
2
+
⋯
+
x
n
2
f\left( \boldsymbol{x} \right) =\boldsymbol{x}^T\boldsymbol{x}={x_1}^2+{x_2}^2+\cdots +{x_n}^2
f(x)=xTx=x12+x22+⋯+xn2对
x
\boldsymbol{x}
x的导数.
显然这是一个标量对向量求导地形式:
d
f
d
x
=
[
∂
f
∂
x
1
,
∂
f
∂
x
2
,
⋯
,
∂
f
∂
x
n
]
T
=
[
2
x
1
,
2
x
2
,
⋯
,
2
x
n
]
T
=
2
[
x
1
,
x
2
,
⋯
,
x
n
]
T
=
2
x
\begin{aligned} \frac{\mathrm{d}f}{\mathrm{d}\boldsymbol{x}}&=\left[ \frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2},\cdots ,\frac{\partial f}{\partial x_n} \right] ^T=\left[ 2x_1,2x_2,\cdots ,2x_n \right] ^T \\ \\ &=2\left[ x_1,x_2,\cdots ,x_n \right] ^T=2\boldsymbol{x} \end{aligned}
dxdf=[∂x1∂f,∂x2∂f,⋯,∂xn∂f]T=[2x1,2x2,⋯,2xn]T=2[x1,x2,⋯,xn]T=2x
即:
d
(
x
T
x
)
d
x
=
2
x
\frac{\mathrm{d}\left( \boldsymbol{x}^T\boldsymbol{x} \right)}{\mathrm{d}\boldsymbol{x}}=2\boldsymbol{x}
dxd(xTx)=2x
如果函数中有
m
m
m个
f
f
f ,变元中有
n
n
n个元素,那么,每个
f
f
f对变元中的每个元素逐个求偏导后,就会产生
m
×
n
m\times n
m×n个结果。
更进一步,对于一个
m
×
n
m\times n
m×n的实矩阵函数
F
(
X
)
\boldsymbol{F}\left( \boldsymbol{X} \right)
F(X),变元为
p
×
q
p\times q
p×q的矩阵变元,那么每个
f
f
f对变元中的每个元素逐个求偏导后,就会产生
m
×
n
×
p
×
q
m\times n \times p\times q
m×n×p×q个结果。
求导的本质是把导数信息,即求导的结果排列起来,至于是按行排列还是按列排列都是可以的。但是这样也有问题,在机器学习算法优化过程中,如果行向量或者列向量随便写,那么结果就不唯一,而且编程时会因为维度问题而出错。为了解决这个问题,引入求导布局的概念。
3 分子布局和分母布局
矩阵求导有两种布局,分子布局(numerator layout)和分母布局(denominator layout)。两种布局互为转置关系
。
- 分子布局:结果的维度以分子为主。
- 分母布局:结果的维度以分母为主。
这里所说的以谁为主是指结果的第一个维度由谁决定。这里先举几个例子,方便加深对布局理论的理解。
3.1 标量对标量求导
标量对标量的求导就是高数中所学习的函数求导。
3.2 标量对向量求导
如 ∂ y ∂ x \frac{\partial y}{\partial \boldsymbol{x}} ∂x∂y,如果按照分子布局,结果的第一个维度与分子的第一个维度相同,为1行,结果就是 m m m维行向量;如果按照分母布局,结果的第一个维度与分母的第一个维度相同,为 m m m行,结果就会是 m m m维列向量。
3.3 标量对矩阵求导
因为
X
\boldsymbol{X}
X在分母上,因此默认使用分母布局。
标量
y
y
y对矩阵
X
\boldsymbol{X}
X的每个元素求导,然后将各个求导结果按矩阵
X
\boldsymbol{X}
X的形状排列。
【例3.1】设矩阵
X
\boldsymbol{X}
X为:
X
=
[
x
11
x
12
⋯
x
1
n
x
21
x
22
⋯
x
2
n
⋮
⋮
⋱
⋮
x
m
1
x
m
2
⋯
x
m
n
]
\boldsymbol{X}=\left[ \begin{matrix} x_{11}& x_{12}& \cdots& x_{1n}\\ x_{21}& x_{22}& \cdots& x_{2n}\\ \vdots& \vdots& \ddots& \vdots\\ x_{m1}& x_{m2}& \cdots& x_{mn}\\ \end{matrix} \right]
X=
x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1nx2n⋮xmn
则:
∂
f
∂
X
=
[
∂
f
∂
x
11
∂
f
∂
x
12
⋯
∂
f
∂
x
1
n
∂
f
∂
x
21
∂
f
∂
x
22
⋯
∂
f
∂
x
2
n
⋮
⋮
⋱
⋮
∂
f
∂
x
m
1
∂
f
∂
x
m
2
⋯
∂
f
∂
x
m
n
]
\frac{\partial f}{\partial \boldsymbol{X}}=\left[ \begin{matrix} \frac{\partial f}{\partial x_{11}}& \frac{\partial f}{\partial x_{12}}& \cdots& \frac{\partial f}{\partial x_{1n}}\\ \\\ \frac{\partial f}{\partial x_{21}}& \frac{\partial f}{\partial x_{22}}& \cdots& \frac{\partial f}{\partial x_{2n}}\\ \\\ \vdots& \vdots& \ddots& \vdots\\ \\\ \frac{\partial f}{\partial x_{m1}}& \frac{\partial f}{\partial x_{m2}}& \cdots& \frac{\partial f}{\partial x_{mn}}\\ \end{matrix} \right]
∂X∂f=
∂x11∂f ∂x21∂f ⋮ ∂xm1∂f∂x12∂f∂x22∂f⋮∂xm2∂f⋯⋯⋱⋯∂x1n∂f∂x2n∂f⋮∂xmn∂f
3.4 向量对标量求导
如
∂
f
∂
x
\frac{\partial \boldsymbol{f}}{\partial x}
∂x∂f,如果按照分子布局,结果就会是m维列向量,与分子维度一致。如果按照分母布局,结果就会是m维行向量。
设
y
=
[
y
1
,
y
2
,
⋯
,
y
m
]
T
\boldsymbol{y}=\left[ y_1,y_2,\cdots ,y_m \right] ^T
y=[y1,y2,⋯,ym]T,在分子布局下,有:
∂
y
∂
x
=
[
∂
y
1
∂
x
,
∂
y
2
∂
x
,
⋯
,
∂
y
m
∂
x
]
T
\frac{\partial \boldsymbol{y}}{\partial x}=\left[ \frac{\partial y_1}{\partial x},\frac{\partial y_2}{\partial x},\cdots ,\frac{\partial y_m}{\partial x} \right] ^T
∂x∂y=[∂x∂y1,∂x∂y2,⋯,∂x∂ym]T
在分母布局下,有:
∂
y
∂
x
=
[
∂
y
1
∂
x
,
∂
y
2
∂
x
,
⋯
,
∂
y
m
∂
x
]
\frac{\partial \boldsymbol{y}}{\partial x}=\left[ \frac{\partial y_1}{\partial x},\frac{\partial y_2}{\partial x},\cdots ,\frac{\partial y_m}{\partial x} \right]
∂x∂y=[∂x∂y1,∂x∂y2,⋯,∂x∂ym]
3.5 向量对向量求导
3.5.1 行向量对列向量求导
也称分母布局,用
∂
y
T
∂
x
\frac{\partial \boldsymbol{y}^T}{\partial \boldsymbol{x}}
∂x∂yT表示。
m
m
m维行向量
y
T
=
[
y
1
,
y
2
,
⋯
,
y
m
]
\boldsymbol{y}^T=\left[ y_1,y_2,\cdots ,y_m \right]
yT=[y1,y2,⋯,ym]对
n
n
n维列向量
x
=
[
x
1
,
x
2
,
⋯
,
x
n
]
T
\boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right] ^T
x=[x1,x2,⋯,xn]T求导,得到的是
n
×
m
n\times m
n×m维矩阵:
∂
y
T
∂
x
=
[
∂
y
T
∂
x
1
∂
y
T
∂
x
2
⋮
∂
y
T
∂
x
n
]
=
[
∂
y
1
∂
x
1
∂
y
2
∂
x
1
⋯
∂
y
m
∂
x
1
∂
y
1
∂
x
2
∂
y
2
∂
x
2
⋯
∂
y
m
∂
x
2
⋮
⋮
⋱
⋮
∂
y
1
∂
x
n
∂
y
2
∂
x
n
⋯
∂
y
m
∂
x
n
]
\frac{\partial \boldsymbol{y}^T}{\partial \boldsymbol{x}}=\left[ \begin{array}{c} \frac{\partial \boldsymbol{y}^T}{\partial x_1}\\ \\ \frac{\partial \boldsymbol{y}^T}{\partial x_2}\\ \\ \vdots\\ \\ \frac{\partial \boldsymbol{y}^T}{\partial x_n}\\ \end{array} \right] =\left[ \begin{matrix} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_2}{\partial x_1}& \cdots& \frac{\partial y_m}{\partial x_1}\\ \\ \frac{\partial y_1}{\partial x_2}& \frac{\partial y_2}{\partial x_2}& \cdots& \frac{\partial y_m}{\partial x_2}\\ \\ \vdots& \vdots& \ddots& \vdots\\ \\ \frac{\partial y_1}{\partial x_n}& \frac{\partial y_2}{\partial x_n}& \cdots& \frac{\partial y_m}{\partial x_n}\\ \end{matrix} \right]
∂x∂yT=
∂x1∂yT∂x2∂yT⋮∂xn∂yT
=
∂x1∂y1∂x2∂y1⋮∂xn∂y1∂x1∂y2∂x2∂y2⋮∂xn∂y2⋯⋯⋱⋯∂x1∂ym∂x2∂ym⋮∂xn∂ym
数学上将这种矩阵称之为梯度矩阵
3.5.2 列向量对行向量求导
也称分子布局,用
∂
y
∂
x
T
\frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}^T}
∂xT∂y表示。
m
m
m维列向量
y
=
[
y
1
,
y
2
,
⋯
,
y
m
]
T
\boldsymbol{y}=\left[ y_1,y_2,\cdots ,y_m \right]^T
y=[y1,y2,⋯,ym]T对
n
n
n维行向量
x
T
=
[
x
1
,
x
2
,
⋯
,
x
n
]
\boldsymbol{x}^T=\left[ x_1,x_2,\cdots ,x_n \right]
xT=[x1,x2,⋯,xn]求导,得到的是
m
×
n
m\times n
m×n维矩阵:
∂
y
∂
x
T
=
[
∂
y
1
∂
x
∂
y
2
∂
x
⋮
∂
y
m
∂
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 \boldsymbol{y}}{\partial \boldsymbol{x}^T}=\left[ \begin{array}{c} \frac{\partial y_1}{\partial \boldsymbol{x}}\\ \\\ \frac{\partial y_2}{\partial \boldsymbol{x}}\\ \\\ \vdots\\ \\\ \frac{\partial y_m}{\partial \boldsymbol{x}}\\ \end{array} \right] =\left[ \begin{matrix} \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& \ddots& \vdots\\ \\\ \frac{\partial y_m}{\partial x_1}& \frac{\partial y_m}{\partial x_2}& \cdots& \frac{\partial y_m}{\partial x_n}\\ \end{matrix} \right]
∂xT∂y=
∂x∂y1 ∂x∂y2 ⋮ ∂x∂ym
=
∂x1∂y1 ∂x1∂y2 ⋮ ∂x1∂ym∂x2∂y1∂x2∂y2⋮∂x2∂ym⋯⋯⋱⋯∂xn∂y1∂xn∂y2⋮∂xn∂ym
数学上将这种矩阵称之为雅克比 (Jacobian)矩阵。
3.5.3 列向量对列向量求导
设 n n n维列向量 x = [ x 1 , x 2 , ⋯ , x n ] T \boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right]^T x=[x1,x2,⋯,xn]T, m m m维列向量 y = [ y 1 , y 2 , ⋯ , y m ] T \boldsymbol{y}=\left[ y_1,y_2,\cdots ,y_m \right]^T y=[y1,y2,⋯,ym]T。则:
把
x
\boldsymbol{x}
x展开,然后
y
\boldsymbol{y}
y分别对
x
\boldsymbol{x}
x中的每一个元素进行求导,求导的结果保留在向量
x
\boldsymbol{x}
x上:
∂
y
∂
x
=
[
∂
y
∂
x
1
∂
y
∂
x
2
⋯
∂
y
∂
x
n
]
T
\frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}=\left[ \begin{matrix} \frac{\partial \boldsymbol{y}}{\partial x_1}& \frac{\partial \boldsymbol{y}}{\partial x_2}& \cdots& \frac{\partial \boldsymbol{y}}{\partial x_n}\\ \end{matrix} \right] ^T
∂x∂y=[∂x1∂y∂x2∂y⋯∂xn∂y]T
然后把结果中的
y
\boldsymbol{y}
y展开,得到此时会得到
m
m
m个向量,其中第一个向量为:
[
∂
y
1
∂
x
1
∂
y
1
∂
x
2
⋯
∂
y
1
∂
x
n
]
T
\left[ \begin{matrix} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_1}{\partial x_2}& \cdots& \frac{\partial y_1}{\partial x_n}\\ \end{matrix} \right] ^T
[∂x1∂y1∂x2∂y1⋯∂xn∂y1]T
按列排列的方式进行排序,得到:
∂
y
∂
x
=
[
∂
y
1
∂
x
1
⋯
∂
y
1
∂
x
n
⋯
∂
y
m
∂
x
1
⋯
∂
y
m
∂
x
n
]
T
\frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}= \left[ \begin{matrix} \frac{\partial y_1}{\partial x_1}& \cdots& \frac{\partial y_1}{\partial x_n}& \cdots& \frac{\partial y_m}{\partial x_1}& \cdots& \frac{\partial y_m}{\partial x_n}\\ \end{matrix} \right] ^T
∂x∂y=[∂x1∂y1⋯∂xn∂y1⋯∂x1∂ym⋯∂xn∂ym]T
3.5.4 行向量对行向量求导
设
n
n
n维行向量
x
T
=
[
x
1
,
x
2
,
⋯
,
x
n
]
\boldsymbol{x}^T=\left[ x_1,x_2,\cdots ,x_n \right]
xT=[x1,x2,⋯,xn],
m
m
m维列向量
y
T
=
[
y
1
,
y
2
,
⋯
,
y
m
]
\boldsymbol{y}^T=\left[ y_1,y_2,\cdots ,y_m \right]
yT=[y1,y2,⋯,ym]。则:
∂
y
∂
x
=
[
∂
y
∂
x
1
∂
y
∂
x
2
⋯
∂
y
∂
x
n
]
\frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}=\left[ \begin{matrix} \frac{\partial \boldsymbol{y}}{\partial x_1}& \frac{\partial \boldsymbol{y}}{\partial x_2}& \cdots& \frac{\partial \boldsymbol{y}}{\partial x_n}\\ \end{matrix} \right]
∂x∂y=[∂x1∂y∂x2∂y⋯∂xn∂y]
其中:
∂
y
∂
x
i
=
[
∂
y
1
∂
x
i
∂
y
2
∂
x
i
⋯
∂
y
m
∂
x
i
]
\frac{\partial \boldsymbol{y}}{\partial x_i}=\left[ \begin{matrix} \frac{\partial y_1}{\partial x_i}& \frac{\partial y_2}{\partial x_i}& \cdots& \frac{\partial y_m}{\partial x_i}\\ \end{matrix} \right]
∂xi∂y=[∂xi∂y1∂xi∂y2⋯∂xi∂ym]
可以根据需要进行调整,调整为行向量对列向量求导或是列向量对行向量求导。