矩阵或者向量求导时经常会被分子/分母布局搞得头大,如什么时候转置,什么时候不转置。本文将简明介绍常用的矩阵/向量求导技巧。
简单例子
\(\mathbf{a}^{\top} \mathbf{x}\)
对向量\(\mathbf{x}\)求导,举个例子:
令\(\mathbf{a} = \left[\begin{array}{ll} 1 \\
2 \end{array}\right]\), \(\mathbf{x} =
\left[\begin{array}{ll} x_1 \\ x_2 \end{array}\right]\),则 \(\mathbf{a}^{\top} \mathbf{x} =x_1+
2x_2\)
于是
\[
\begin{aligned}
\frac{\partial \mathbf{a}^{\top}\mathbf{x}}{\partial \mathbf{x}} =
& {\left[\begin{array}{ll}
\frac{\partial (x_1+ 2x_2)}{\partial x_{1}} \\
\frac{\partial (x_1+ 2x_2)}{\partial x_{2}}
\end{array}\right] } \\
=& {\left[\begin{array}{ll}
1 \\
2
\end{array}\right] } \\
=& \mathbf{a} (分母布局)
\end{aligned}
\]
注意,上述结果以分母布局进行排布,具体见后一节的一般形式。
\(\mathbf{A} \mathbf{x}\)
对向量\(\mathbf{x}\)求导,可以举一个具体的例子对求导过程进行推导。
令\(\mathbf{A} = \left[\begin{array}{ll} 1
& 2 \\ 3 & 4 \end{array}\right]\), \(\mathbf{x} = \left[\begin{array}{ll} x_1 \\ x_2
\end{array}\right]\) 则:
\[
\begin{aligned}
\mathbf{A x}
=& {\left[\begin{array}{ll}
1 & 2 \\
3 & 4
\end{array}\right]\left[\begin{array}{l}
x_{1} \\
x_{2}
\end{array}\right] } \\
=& {\left[\begin{array}{l}
x_{1}+2 x_{2} \\
3 x_{1}+4 x_{2}
\end{array}\right] } \\
=&\left[\begin{array}{c}
f_{1} \\
f_{2}
\end{array}\right]
\end{aligned}
\]
所以,
\[
\begin{aligned}
\frac{\partial \mathbf{A}\mathbf{x}}{\partial \mathbf{x}} =
& {\left[\begin{array}{ll}
\frac{\partial f_{1}}{\partial x_{1}} & \frac{\partial
f_{2}}{\partial x_{1}} \\
\frac{\partial f_{1}}{\partial x_{2}} & \frac{\partial
f_{2}}{\partial x_{2}}
\end{array}\right] } \\
=& {\left[\begin{array}{ll}
1 & 3 \\
2 & 4
\end{array}\right] } \\
=& \mathbf{A}^{\top}(分母布局)
\end{aligned}
\]
或者,
\[
\begin{aligned}
\frac{\partial \mathbf{A}\mathbf{x}}{\partial \mathbf{x}} =
& {\left[\begin{array}{ll}
\frac{\partial f_{1}}{\partial x_{1}} & \frac{\partial
f_{1}}{\partial x_{2}} \\
\frac{\partial f_{2}}{\partial x_{1}} & \frac{\partial
f_{2}}{\partial x_{2}}
\end{array}\right] } \\
=& {\left[\begin{array}{ll}
1 & 2 \\
3 & 4
\end{array}\right] } \\
=& \mathbf{A} (分子布局)
\end{aligned}
\]
上述求导结果的排列方式分别展示了分母布局与分子布局。
一般形式
向量一般可以被认为成一维矩阵,默认按列进行排列。
向量对向量求导,如\(\partial \mathbf{y} /
\partial \mathbf{x}\),其中\(\mathbf{y}=\left[\begin{array}{lll}y_{1} &
\cdots & y_{m}\end{array}\right]^{\top}\)以及\(\mathbf{x}=\left[\begin{array}{lll}x_{1} &
\cdots & x_{n}\end{array}\right]^{\top}\)
于是\(\partial \mathbf{y} / \partial
\mathbf{x}\)是一个拥有\(m \times
n\)元素的矩阵,那么应该如何组织这个矩阵呢?目前有两种矩阵排列方式,它们分别是:分子布局(Numerator
Layout),分母布局(Denominator Layout)
分子布局
一句话就是按照分子的排列方式进行排列,分子原来怎样排列,求导之后的结果就怎样排列,如:
\[
\begin{gathered}
\frac{\partial \mathbf{y}}{\partial \mathbf{x}}=\left[\begin{array}{ccc}
\frac{\partial y_{1}}{\partial x_{1}} & \cdots & \frac{\partial
y_{1}}{\partial x_{n}} \\
\vdots & \ddots & \vdots \\
\frac{\partial y_{m}}{\partial x_{1}} & \cdots & \frac{\partial
y_{m}}{\partial x_{n}}
\end{array}\right] \\
\equiv \frac{\partial \mathbf{y}}{\partial \mathbf{x}^{\top}}
\end{gathered}
\]
上式结果中,分子\(\mathbf{y}\)的每个元素是是按照下标\(1
...m\)按列排布,于是\(\frac{\partial \mathbf{y}}{\partial \mathbf{x}}
\in \mathbb{R}^{m \times
n}\),这种形式也被叫做雅可比矩阵3(Jacobian matrix)。
当\(y\)是标量,\(\mathbf{x}\) 是向量时:
\[
\frac{\partial y}{\partial \mathbf{x}}=\left[\begin{array}{lll}
\frac{\partial y}{\partial x_{1}} & \cdots & \frac{\partial
y}{\partial x_{n}}
\end{array}\right] \equiv \frac{\partial y}{\partial \mathbf{x}^{\top}}
\]
上述分子布局在标量对向量的求导的数据排布中并不常见。
分母布局
\[
\frac{\partial \mathbf{y}}{\partial \mathbf{x}}=\left[\begin{array}{ccc}
\frac{\partial y_{1}}{\partial x_{1}} & \cdots & \frac{\partial
y_{m}}{\partial x_{1}} \\
\vdots & \ddots & \vdots \\
\frac{\partial y_{1}}{\partial x_{n}} & \cdots & \frac{\partial
y_{m}}{\partial x_{n}}
\end{array}\right]
\]
上式结果中,分母\(\mathbf{x}\)的每个元素是是按照下标\(1 ...n\)按列排布,于是\(\frac{\partial \mathbf{y}}{\partial \mathbf{x}}
\in \mathbb{R}^{n \times m}\)
当\(y\)是标量,\(\mathbb{x}\)是向量时: \[
\frac{\partial y}{\partial \mathbf{x}}=\left[\begin{array}{c}
\frac{\partial y}{\partial x_{1}} \\
\vdots \\
\frac{\partial y}{\partial x_{n}}
\end{array}\right]
\]
这种标量对向量求导的情况非常常见,通常是以分母布局对求导结果进行排布。
那么向量求导两种方式结果数据排布方式的图示效果如下图所示1:
分子-分母布局图示
以上两种形式比较容易搞混(通常在是否使用转置之间徘徊),在使用时务必要说明使用哪种布局!但是实际读论文时很少看到作者写明到底用的哪种,此时需要结合上下文进行判断,推理出论文公式使用的何种布局。另外,值得说明的是,如果作者没有明确说明,自己又懒得看,这时候你可以认为作者使用了“混合布局”,具体地:\(\frac{\partial \mathbf{y}}{\partial {x}}\)
按照分子布局,\(\frac{\partial {y}}{\partial
\mathbf{x}}\)
按照分母布局3。
以分母布局为例,常用的矩阵求导公式有:
\[
\begin{aligned}
\frac{\partial \mathbf{x}^{\top} \mathbf{a}}{\partial
\mathbf{x}}&=\mathbf{a} \\
\frac{\partial \mathbf{A} \mathbf{x}}{\partial
\mathbf{x}}&=\mathbf{A}^{\top} \\
\frac{\partial \mathbf{x}^{\top} \mathbf{A} \mathbf{x}}{\partial
\mathbf{x}}&=\left(\mathbf{A}+\mathbf{A}^{\top}\right) \mathbf{x} \\
\frac{\partial \mathbf{u}^{\top}}{\partial \mathbf{x}}&= \left(
\frac{\partial \mathbf{u}}{\partial \mathbf{x}} \right)^{\top} \\
\end{aligned}
\]
这里有个小技巧,即分母布局中要加个转置,这是为什么呢?因为分母布局中要求按照分母的排列方式进行组织(一般为列),而分子呢,则"被迫"需要进行转置,反映在求导结果上也就需要转置。
当\(\mathbf{W}\)为对称矩阵时,我们有如下公式2: \[
\begin{aligned}
\frac{\partial}{\partial \mathbf{s}}(\mathbf{x}-\mathbf{A}
\mathbf{s})^{T} \mathbf{W}(\mathbf{x}-\mathbf{A} \mathbf{s}) &=-2
\mathbf{A}^{T} \mathbf{W}(\mathbf{x}-\mathbf{A} \mathbf{s}) \\
\frac{\partial}{\partial \mathbf{x}}(\mathbf{x}-\mathbf{s})^{T}
\mathbf{W}(\mathbf{x}-\mathbf{s}) &=2
\mathbf{W}(\mathbf{x}-\mathbf{s}) \\
\frac{\partial}{\partial \mathbf{s}}(\mathbf{x}-\mathbf{s})^{T}
\mathbf{W}(\mathbf{x}-\mathbf{s}) &=-2
\mathbf{W}(\mathbf{x}-\mathbf{s}) \\
\frac{\partial}{\partial \mathbf{x}}(\mathbf{x}-\mathbf{A}
\mathbf{s})^{T} \mathbf{W}(\mathbf{x}-\mathbf{A} \mathbf{s}) &=2
\mathbf{W}(\mathbf{x}-\mathbf{A} \mathbf{s}) \\
\frac{\partial}{\partial \mathbf{A}}(\mathbf{x}-\mathbf{A}
\mathbf{s})^{T} \mathbf{W}(\mathbf{x}-\mathbf{A} \mathbf{s}) &=-2
\mathbf{W}(\mathbf{x}-\mathbf{A} \mathbf{s}) \mathbf{s}^{T}
\end{aligned}
\]
小节3
向量对向量求导
标量对向量求导
特别需要注意的是: \[
\begin{aligned}
\frac{\partial \mathbf{u}^{\top} \mathbf{v}}{\partial \mathbf{x}} &=
\mathbf{u}^{\top} \frac{\partial \mathbf{v}}{\partial
\mathbf{x}}+\mathbf{v}^{\top} \frac{\partial \mathbf{u}}{\partial
\mathbf{x}}
(分子布局)
\\
\frac{\partial \mathbf{u}^{\top} \mathbf{v}}{\partial \mathbf{x}} &=
\frac{\partial \mathbf{u}}{\partial \mathbf{x}}
\mathbf{v}+\frac{\partial \mathbf{v}}{\partial \mathbf{x}} \mathbf{u}
(分母布局)
\end{aligned}
\]
其中\(\mathbf{u} = \mathbf{u(x)},
\mathbf{v} = \mathbf{v(x)}\), \(\mathbf{u}^{\top}\mathbf{v}\)为标量。
应用
最小化误差\(E\):
\[
E=\sum_{i=1}^{n}\left(\mathbf{a}_{i}^{\top}
\mathbf{x}-b_{i}\right)^{2}=\|\mathbf{A} \mathbf{x}-\mathbf{b}\|^{2}
\]
推导过程如下:
\[
\begin{aligned}
E=\|\mathbf{A x}-\mathbf{b}\|^{2} &=(\mathbf{A
x}-\mathbf{b})^{\top}(\mathbf{A x}-\mathbf{b}) \\
&=\left(\mathbf{x}^{\top}
\mathbf{A}^{\top}-\mathbf{b}^{\top}\right)(\mathbf{A a}-\mathbf{b}) \\
&=\mathbf{x}^{\top} \mathbf{A}^{\top} \mathbf{A x}-\mathbf{x}^{\top}
\mathbf{A}^{\top} \mathbf{b}-\mathbf{b}^{\top} \mathbf{A
x}+\mathbf{b}^{\top} \mathbf{b}
\end{aligned}
\]
我们对每项进行求导:
\[
\begin{aligned}
\frac{ \partial{ \mathbf{x}^{\top} \mathbf{A}^{\top} \mathbf{A x}}}
{\partial \mathbf{x}} =(\mathbf{A}^{\top} \mathbf{A} + \mathbf{A}^{\top}
\mathbf{A}) \mathbf{x}
&= 2\mathbf{A}^{\top} \mathbf{A}\mathbf{x} \\
\frac{\partial{ \mathbf{x}^{\top} \mathbf{A}^{\top} \mathbf{b}}}
{\partial \mathbf{x}} &=\mathbf{A}^{\top} \mathbf{b} \\
\frac{\partial{ \mathbf{b}^{\top} \mathbf{A x}}}
{\partial \mathbf{x}} &=(\mathbf{b}^{\top} \mathbf{A})^{\top} =
\mathbf{A^{\top}b} \\
\frac{\partial{ \mathbf{b}^{\top} \mathbf{b}}}
{\partial \mathbf{x}} &= \mathbf{0} (列向量)
\end{aligned}
\]
所以:
\[
\begin{aligned}
\frac{\partial{ E}}
{\partial \mathbf{x}} &= 2\mathbf{A}^{\top} \mathbf{A}\mathbf{x} -
\mathbf{A}^{\top} \mathbf{b} - \mathbf{A^{\top}b} + \mathbf{0} \\
&= 2\mathbf{A}^{\top} \mathbf{A}\mathbf{x} - 2\mathbf{A}^{\top}
\mathbf{b}
\end{aligned}
\]
令\(\frac{\partial{ E}}{\partial
\mathbf{x}} = 0\),我们有:
\[
\begin{aligned}
2\mathbf{A}^{\top} \mathbf{A}\mathbf{x} - 2\mathbf{A}^{\top} \mathbf{b}
&= \mathbf{0}\\
\mathbf{A}^{\top} \mathbf{A}\mathbf{x} &= \mathbf{A}^{\top}
\mathbf{b} \\
\mathbf{x} &= ( \mathbf{A}^{\top} \mathbf{A})^{-1}\mathbf{A}^{\top}
\mathbf{b}
\end{aligned}
\]
\(\mathbf{x} = ( \mathbf{A}^{\top}
\mathbf{A})^{-1}\mathbf{A}^{\top}
\mathbf{b}\)就是上述线性最小二乘问题的解。
参考
1.Matrix
Differentiation in Lecture CS5240 Theoretial Foundations in Multimedia,
https://www.comp.nus.edu.sg/~cs5240/lecture/matrix-diff.pdf↩︎
2.Matrix
Cookbook,
http://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf↩︎
3.Matrix
calculus,
https://en.jinzhao.wiki/wiki/Matrix_calculus↩︎
4.Vector/Matrix
Calculus More notes on matrix
differentiation.↩︎
5.Matrix
Differentiation (and some other stuff), Randal J. Barnes, Department
of Civil Engineering, University of
Minnesota.↩︎
6.Matrix
Calculus(一款矩阵求导计算器),
http://www.matrixcalculus.org/↩︎
揭秘Windows电池续航之谜:5招轻松看懂电池使用时间,告别电量焦虑!
在部队编制单位中,司令到底不是最大的官呢?看完后才知道不是的