1.两种布局约定方式
布局(Layout):在矩阵求导中有两种布局,分别为分母布局(denominator layout)和分子布局(numerator layout)。这两种不同布局的求导规则是不一样的。
向量
y
=
[
y
1
y
2
⋮
y
n
]
\mathbf{y}=\left[\begin{matrix} y_1\\ y_2\\ \vdots \\y_n\end{matrix} \right]
y=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤,关于标量
x
x
x的求导,
在分子布局下,为:
∂
y
∂
x
=
[
∂
y
1
∂
x
∂
y
2
∂
x
⋮
∂
y
n
∂
x
]
\frac{\partial \mathbf{y}}{\partial x}=\left[\begin{matrix} \frac{\partial y_1}{\partial x}\\\frac{\partial y_2}{\partial x}\\ \vdots \\\frac{\partial y_n}{\partial x}\end{matrix} \right]
∂x∂y=⎣⎢⎢⎢⎡∂x∂y1∂x∂y2⋮∂x∂yn⎦⎥⎥⎥⎤
而在分母布局下,为:
∂
y
∂
x
=
[
∂
y
1
∂
x
∂
y
2
∂
x
⋯
∂
y
n
∂
x
]
\frac{\partial \mathbf{y}}{\partial x}=\left[\begin{matrix}\frac{\partial y_1}{\partial x}&\frac{\partial y_2}{\partial x} & \cdots &\frac{\partial y_n}{\partial x}\end{matrix} \right]
∂x∂y=[∂x∂y1∂x∂y2⋯∂x∂yn]
通过观察和推导我们可以知道,分子布局和分母布局之间刚好差一个转置,即在分子布局下与原来
y
\mathbf{y}
y相同,而在分母布局下差一个转置。
2.矩阵求导的类型
类型 | 标量 | 向量 | 矩阵 |
---|---|---|---|
标量 | ∂ y ∂ x \frac{\partial y}{\partial x} ∂x∂y | ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial x} ∂x∂y | ∂ Y ∂ x \frac{\partial \mathbf{Y}}{\partial x} ∂x∂Y |
向量 | ∂ y ∂ x \frac{\partial y}{\partial \mathbf{x}} ∂x∂y | ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial \mathbf{x}} ∂x∂y | |
矩阵 | ∂ y ∂ X \frac{\partial y}{\partial \mathbf{X}} ∂X∂y |
3.标量对标量求导
这种情况就是平常的代数求导,直接为 ∂ y ∂ x \frac{\partial y}{\partial x} ∂x∂y
4.向量对标量求导
向量
y
=
[
y
1
y
2
⋮
y
n
]
\mathbf{y}=\left[\begin{matrix} y_1\\ y_2\\ \vdots \\y_n\end{matrix} \right]
y=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤,关于标量
x
x
x的求导(以分子布局约定)就是
y
\mathbf{y}
y的每一个元素分别对
x
x
x求导,可以表示为:
∂
y
∂
x
=
[
∂
y
1
∂
x
∂
y
2
∂
x
⋮
∂
y
n
∂
x
]
\frac{\partial \mathbf{y}}{\partial x}=\left[\begin{matrix} \frac{\partial y_1}{\partial x}\\\frac{\partial y_2}{\partial x}\\ \vdots \\\frac{\partial y_n}{\partial x} \end{matrix} \right]
∂x∂y=⎣⎢⎢⎢⎡∂x∂y1∂x∂y2⋮∂x∂yn⎦⎥⎥⎥⎤
此时为正切向量,
∂
y
∂
x
\frac{\partial \mathbf{y}}{\partial x}
∂x∂y为
y
\mathbf{y}
y的正切向量,有映射
y
\mathbf{y}
y:
R
n
⟹
R
n
\R^n\implies\R^n
Rn⟹Rn??
5.矩阵对标量求导
矩阵对标量的求导类似于向量关于标量的求导,也就是矩阵的每个元素分别对标量
x
x
x求导,矩阵
Y
=
[
y
11
y
12
⋯
y
1
n
y
21
y
22
⋯
y
2
n
⋮
⋮
⋱
⋮
y
n
1
y
n
2
⋯
y
n
n
]
\mathbf{Y} =\left[\begin{matrix} y_{11}&y_{12}& \cdots&y_{1n} \\ y_{21}&y_{22}& \cdots&y_{2n} \\ \vdots&\vdots&\ddots&\vdots\\ y_{n1}&y_{n2}& \cdots&y_{nn} \end{matrix} \right]
Y=⎣⎢⎢⎢⎡y11y21⋮yn1y12y22⋮yn2⋯⋯⋱⋯y1ny2n⋮ynn⎦⎥⎥⎥⎤对标量
x
x
x的导数(以分子布局约定)为:
∂
Y
∂
x
=
[
∂
y
11
∂
x
∂
y
12
∂
x
⋯
∂
y
1
n
∂
x
∂
y
21
∂
x
∂
y
22
∂
x
⋯
∂
y
2
n
∂
x
⋮
⋮
⋱
⋮
∂
y
n
1
∂
x
∂
y
n
2
∂
x
⋯
∂
y
n
n
∂
x
]
\frac{\partial \mathbf{Y} }{\partial x}=\left[\begin{matrix} \frac{\partial y_{11}}{\partial x}&\frac{\partial y_{12}}{\partial x}&\cdots&\frac{\partial y_{1n}}{\partial x}\\ \frac{\partial y_{21}}{\partial x}&\frac{\partial y_{22}}{\partial x}&\cdots&\frac{\partial y_{2n}}{\partial x} \\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial y_{n1}}{\partial x}&\frac{\partial y_{n2}}{\partial x}& \cdots&\frac{\partial y_{nn}}{\partial x} \end{matrix} \right]
∂x∂Y=⎣⎢⎢⎢⎡∂x∂y11∂x∂y21⋮∂x∂yn1∂x∂y12∂x∂y22⋮∂x∂yn2⋯⋯⋱⋯∂x∂y1n∂x∂y2n⋮∂x∂ynn⎦⎥⎥⎥⎤
6.标量对向量求导
标量
y
y
y关于向量
x
=
[
x
1
x
2
⋮
x
n
]
\mathbf{x}=\left[\begin{matrix} x_1\\x_2\\\vdots\\x_n \end{matrix} \right]
x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤的求导可以表示为:
∂
y
∂
x
=
[
∂
y
∂
x
1
∂
y
∂
x
2
⋯
∂
y
∂
x
n
]
\frac{\partial y}{\partial \mathbf{x}}=\left[\begin{matrix} \frac{\partial y}{\partial x_1}&\frac{\partial y}{\partial x_2}&\cdots&\frac{\partial y}{\partial x_n} \end{matrix} \right]
∂x∂y=[∂x1∂y∂x2∂y⋯∂xn∂y]
此时的向量叫做梯度向量。
∂
y
∂
x
\frac{\partial y}{\partial \mathbf{x}}
∂x∂y为标量
y
y
y在空间
R
n
\R^n
Rn的梯度,该空间以
x
x
x为基。
7.向量对向量求导
向量函数(即函数组成的向量)
y
=
[
y
1
y
2
⋮
y
n
]
\mathbf{y}=\left[\begin{matrix} y_1\\y_2\\\vdots\\y_n \end{matrix} \right]
y=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤关于向量
x
=
[
x
1
x
2
⋮
x
n
]
\mathbf{x}=\left[\begin{matrix} x_1\\x_2\\\vdots\\x_n \end{matrix} \right]
x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤的导数记作:
∂
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
2
⋯
∂
y
n
∂
x
n
]
\frac{\partial \mathbf{y} }{\partial \mathbf{x}}=\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_n}{\partial x_1}&\frac{\partial y_n}{\partial x_2}&\cdots&\frac{\partial y_n}{\partial x_n} \end{matrix} \right]
∂x∂y=⎣⎢⎢⎢⎢⎡∂x1∂y1∂x1∂y2⋮∂x1∂yn∂x2∂y1∂x2∂y2⋮∂x2∂yn⋯⋯⋱⋯∂xn∂y1∂xn∂y2⋮∂xn∂yn⎦⎥⎥⎥⎥⎤
此时获得的矩阵
∂
y
∂
x
\frac{\partial \mathbf{y} }{\partial \mathbf{x}}
∂x∂y叫做Jacobian矩阵。
8.标量对矩阵求导
自变量为矩阵X 的标量函数 y 关于矩阵X的导数为:(分子布局约定)
∂
y
∂
X
=
[
∂
y
∂
x
11
∂
y
∂
x
21
⋯
∂
y
∂
x
p
1
∂
y
∂
x
12
∂
y
∂
x
22
⋯
∂
y
∂
x
p
2
⋮
⋮
⋱
⋮
∂
y
∂
x
1
q
∂
y
∂
x
2
q
⋯
∂
y
∂
x
p
q
]
\frac{\partial y }{\partial \mathbf{X}}=\left[\begin{matrix} \frac{\partial y}{\partial x_{11}}&\frac{\partial y}{\partial x_{21}}&\cdots&\frac{\partial y}{\partial x_{p1}}\\ \frac{\partial y}{\partial x_{12}}&\frac{\partial y}{\partial x_{22}}&\cdots&\frac{\partial y}{\partial x_{p2}}\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial y}{\partial x_{1q}}&\frac{\partial y}{\partial x_{2q}}&\cdots&\frac{\partial y}{\partial x_{pq}}\\ \end{matrix} \right]
∂X∂y=⎣⎢⎢⎢⎢⎡∂x11∂y∂x12∂y⋮∂x1q∂y∂x21∂y∂x22∂y⋮∂x2q∂y⋯⋯⋱⋯∂xp1∂y∂xp2∂y⋮∂xpq∂y⎦⎥⎥⎥⎥⎤
注意到这里关于X的梯度的索引就是矩阵X索引的转置。(矩阵的标量函数会涉及到矩阵的迹和行列式)。
参考文献:
[1] Matrix calculus
[2] 矩阵求导(一)
[3] 数学-矩阵计算(4)两种布局
码字不易,如果您觉得有帮助,麻烦帮我点个赞~~