矩阵或者向量求导时经常会被分子/分母布局搞得头大,如什么时候转置,什么时候不转置。本文将简明介绍常用的矩阵/向量求导技巧。
简单例子
- $\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$
于是
注意,上述结果以分母布局进行排布,具体见后一节的一般形式。
- $\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]
$
则:
所以,
或者,
上述求导结果的排列方式分别展示了分母布局与分子布局。
一般形式
向量一般可以被认为成一维矩阵,默认按列进行排列。
向量对向量求导,如$\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)
分子布局
一句话就是按照分子的排列方式进行排列,分子原来怎样排列,求导之后的结果就怎样排列,如:
上式结果中,分子$\mathbf{y}$的每个元素是是按照下标$1 …m$按列排布,于是$\frac{\partial \mathbf{y}}{\partial \mathbf{x}} \in \mathbb{R}^{m \times n}$,这种形式也被叫做雅可比矩阵3(Jacobian matrix)。
当$y$是标量,$\mathbb{x}$是向量时:
上述分子布局在标量对向量的求导的数据排布中并不常见。
分母布局
上式结果中,分母$\mathbf{x}$的每个元素是是按照下标$1 …n$按列排布,于是$\frac{\partial \mathbf{y}}{\partial \mathbf{x}} \in \mathbb{R}^{n \times m}$
当$y$是标量,$\mathbb{x}$是向量时:
这种标量对向量求导的情况非常常见,通常是以分母布局对求导结果进行排布。
那么向量求导两种方式结果数据排布方式的图示效果如下图所示1:
以上两种形式比较容易搞混(通常在是否使用转置之间徘徊),在使用时务必要说明使用哪种布局!但是实际读论文时很少看到作者写明到底用的哪种,此时需要结合上下文进行判断,推理出论文公式使用的何种布局。另外,值得说明的是,如果作者没有明确说明,自己又懒得看,这时候你可以认为作者使用了“混合布局”,具体地:$\frac{\partial \mathbf{y}}{\partial {x}}$ 按照分子布局,$\frac{\partial {y}}{\partial \mathbf{x}}$ 按照分母布局3。
以分母布局为例,常用的矩阵求导公式有:
这里有个小技巧,即分母布局中要加个转置,这是为什么呢?因为分母布局中要求按照分母的排列方式进行组织(一般为列),而分子呢,则”被迫”需要进行转置,反映在求导结果上也就需要转置。
当$\mathbf{W}$为对称矩阵时,我们有如下公式2:
小节3
- 向量对向量求导
- 标量对向量求导
特别需要注意的是:
其中$\mathbf{u} = \mathbf{u(x)}, \mathbf{v} = \mathbf{v(x)}$, $\mathbf{u}^{\top}\mathbf{v}$为标量。
应用
最小化误差$E$:
推导过程如下:
我们对每项进行求导:
所以:
令$\frac{\partial{ E}}{\partial \mathbf{x}} = 0$,我们有:
$\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/ ↩