矩阵微积分
本笔记主要介绍矩阵求导的相关知识。更准确地来说,是“多变量求导”的相关知识,“矩阵”只是我们的规定。
参考:维基百科 Matrix Calculus
1 规定
我们规定,所有的 n 维向量都以 \(\mathbf{x}_n = \begin{bmatrix}x_1 & x_2 & \cdots & x_n\end{bmatrix}^\top\) 的形式表示。
1.1 布局流派
问:n 维向量对 m 维向量求导,结果矩阵尺寸如何?
根据回答的不同,矩阵求导的符号大致分为两个流派:
1.1.1 分子布局
分子布局 (Numerator Layout),别名 Jacobian Foumulation ,特点是行数与分子相同。
\[\frac{\partial \mathbf{y}_n}{\partial \mathbf{x}_m} = A_{n\times m} = \begin{bmatrix}\dfrac{\partial y_1}{\partial x_1} & \dfrac{\partial y_1}{\partial x_2} & \cdots & \dfrac{\partial y_1}{\partial x_m}\\ \dfrac{\partial y_2}{\partial x_1} & \dfrac{\partial y_2}{\partial x_2} & \cdots & \dfrac{\partial y_2}{\partial x_m}\\ \vdots & \vdots & \vdots & \vdots\\ \dfrac{\partial y_n}{\partial x_1} & \dfrac{\partial y_n}{\partial x_2} & \cdots & \dfrac{\partial y_n}{\partial x_m}\end{bmatrix}\]
有时,分子布局也采用如下符号:
\[\frac{\partial \mathbf{y}_n}{\partial \mathbf{x}_m^\top} = A_{n\times m}\]
1.1.2 分母布局
分母布局 (Denominator Layout),别名 Hessian Formulation ,特点是行数与分母相同,与分子布局互为转置。
\[\frac{\partial \mathbf{y}_n}{\partial \mathbf{x}_m} = B_{m\times n} = A_{n\times m}^\top\]
规定了向量对向量的求导结果的布局之后,标量对向量,矩阵对向量等求导结果都可以按照该布局来定义。
在本网站中,若无特殊说明,我们采用经典的 分子布局 。
Question
Q: 为什么选择分子布局
A: 因为分子布局的求导结果能直接应用于泰勒展开式。
2 基于分子布局的详细定义
2.1 标量对向量求导
对于一个定义在 n 维空间上的标量函数 \(f(\mathbf{x})\)
\[\frac{\partial f}{\partial \mathbf{x}} = \begin{bmatrix}\dfrac{\partial f}{\partial x_1} & \dfrac{\partial f}{\partial x_2} & \cdots & \dfrac{\partial f}{\partial x_n}\end{bmatrix}\]
2.2 向量对标量求导
\[\frac{\mathrm{d}\mathbf{y}}{\mathrm{d}x} = \begin{bmatrix}\dfrac{\partial y_1}{\partial x} & \dfrac{\partial y_2}{\partial x} & \cdots & \dfrac{\partial y_n}{\partial x}\end{bmatrix}^{\top}\]
2.3 向量对向量求导
有向量 \(\mathbf{y}_n \in \mathbb{R}^n, \mathbf{x}_m \in \mathbb{R}^m\) ,且 \(\mathbf{y}_n = \begin{bmatrix}y_1 & y_2 & \cdots & y_n\end{bmatrix}^\top, \mathbf{x}_m = \begin{bmatrix}x_1 & x_2 & \cdots & x_m\end{bmatrix}^\top\) ,则
\[\frac{\partial \mathbf{y}_n}{\partial \mathbf{x}_m} = \begin{bmatrix}\dfrac{\partial y_1}{\partial x_1} & \dfrac{\partial y_1}{\partial x_2} & \cdots & \dfrac{\partial y_1}{\partial x_m}\\ \dfrac{\partial y_2}{\partial x_1} & \dfrac{\partial y_2}{\partial x_2} & \cdots & \dfrac{\partial y_2}{\partial x_m}\\ \vdots & \vdots & \vdots & \vdots\\ \dfrac{\partial y_n}{\partial x_1} & \dfrac{\partial y_n}{\partial x_2} & \cdots & \dfrac{\partial y_n}{\partial x_m}\end{bmatrix}\]
在向量微积分中,常把一个向量函数关于另一个向量函数的导数称为 雅可比矩阵 (Jacobian Matrix).
2.4 矩阵对标量求导
有矩阵 \(A_{m\times n}\in \mathbb{R}^{m\times n}\) ,则
\[\frac{\partial Y_{m\times n}}{\partial x} = \begin{bmatrix}\dfrac{\partial a_{11}}{\partial x} & \dfrac{\partial a_{12}}{\partial x} & \cdots & \dfrac{\partial a_{1n}}{\partial x}\\ \dfrac{\partial a_{21}}{\partial x} & \dfrac{\partial a_{22}}{\partial x} & \cdots & \dfrac{\partial a_{2n}}{\partial x}\\ \vdots & \vdots & \vdots & \vdots\\ \dfrac{\partial a_{m1}}{\partial x} & \dfrac{\partial a_{m2}}{\partial x} & \cdots & \dfrac{\partial a_{mn}}{\partial x}\end{bmatrix}\]
2.5 标量对矩阵求导
对于一个定义在 \(\mathbb{R}^{m\times n}\) 的标量函数 \(f(X_{m\times n})\) ,有
\[\frac{\partial f}{\partial X_{m\times n}} = \begin{bmatrix}\dfrac{\partial f}{\partial x_{11}} & \dfrac{\partial f}{\partial x_{21}} & \cdots & \dfrac{\partial f}{\partial x_{m1}}\\ \dfrac{\partial f}{\partial x_{12}} & \dfrac{\partial f}{\partial x_{22}} & \cdots & \dfrac{\partial f}{\partial x_{m2}}\\ \vdots & \vdots & \vdots & \vdots\\ \dfrac{\partial f}{\partial x_{1n}} & \dfrac{\partial f}{\partial x_{2n}} & \cdots & \dfrac{\partial f}{\partial x_{mn}}\end{bmatrix}\]
3 链式法则
链式法则同样适用于矩阵微积分,只需要注意矩阵相乘的维度对应关系即可。实例参见 例 4.2.4 。
4 例子
4.1 标量对向量求导
4.1.1
考虑向量 \(\mathbf{a}, \mathbf{b} \in \mathbb{R}^{n}\),求 \(\mathbf{a}\cdot\mathbf{b} = \mathbf{b} \cdot \mathbf{a} = \mathbf{a}^\top \mathbf{b} = \mathbf{b}^{\top}\mathbf{a}\) 分别对 \(\mathbf{a}\) 和 \(\mathbf{b}\) 的偏导。
这是一个典型的标量对向量求导。 \(\mathbf{a}^\top \mathbf{b} = a_1b_1 + a_2b_2 + \cdots + a_nb_n\) ,因此
\[\begin{aligned}
\frac{\partial \mathbf{a}^\top \mathbf{b}}{\partial \mathbf{a}}
&= \begin{bmatrix}\dfrac{\partial \mathbf{a}^\top \mathbf{b}}{\partial a_1} & \dfrac{\partial \mathbf{a}^\top \mathbf{b}}{\partial a_2} & \cdots & \dfrac{\partial \mathbf{a}^\top \mathbf{b}}{\partial a_n}\end{bmatrix}\\
&= \begin{bmatrix}b_1 & b_2 & \cdots & b_n\end{bmatrix}\\
&= \mathbf{b}^\top\\
\frac{\partial \mathbf{a}^\top \mathbf{b}}{\partial \mathbf{b}}
&= \begin{bmatrix}a_1 & a_2 & \cdots & a_n\end{bmatrix}\\
&= \mathbf{a}^\top
\end{aligned}\]
我们进一步考虑 \(\mathbf{a} = \mathbf{b}\) 的情形:
\[\begin{aligned}
\frac{\partial \mathbf{b}^\top\mathbf{b}}{\partial\mathbf{b}}
&= \begin{bmatrix}2b_1 & 2b_2 & \cdots & 2b_n\end{bmatrix}\\
&= 2\mathbf{b}^\top
\end{aligned}\]
4.1.2
引入矩阵 \(W \in \mathbb{R}^{n\times n}\) ,考虑 \(\mathbf{a}^{\top}W\mathbf{b}\) 分别对 \(\mathbf{a}\) 和 \(\mathbf{b}\) 的偏导。
\[\begin{aligned}
\frac{\partial\mathbf{a}^{\top}W\mathbf{b}}{\partial \mathbf{a}} &=
\begin{bmatrix}w_{11}b_1+w_{12}b_2+\cdots+w_{1n}b_n\\
w_{21}b_1+w_{22}b_2+\cdots+w_{2n}b_n\\ \vdots\\
w_{n1}b_1+w_{n2}b_2+\cdots+w_{nn}b_n
\end{bmatrix}^{\top}\\
&= \mathbf{b}^{\top}W^{\top}\\
\frac{\partial \mathbf{a}^{\top}W\mathbf{b}}{\partial \mathbf{b}} &=
\begin{bmatrix}w_{11}a_1 + w_{21}a_2 + \cdots + w_{n1}a_n\\
w_{12}a_1 + w_{22}a_2 + \cdots + w_{n2}a_n\\ \vdots\\
w_{1n}a_1 + w_{2n}a_2 + \cdots + w_{nn}a_n\\
\end{bmatrix}^{\top}\\
&= \mathbf{a}^{\top}W
\end{aligned}\]
同样地,考虑 \(\mathbf{a}=\mathbf{b}\) 的情形:
\[\begin{aligned}
\frac{\partial \mathbf{a}^{\top}W\mathbf{a}}{\partial \mathbf{a}} &=
\begin{bmatrix}2w_{11}a_1+(w_{21}+w_{12})a_2+\cdots+(w_{n1}+w_{1n})a_n\\
(w_{12}+w_{21})a_1+2w_{22}a_2+\cdots+(w_{n2}+w_{2n})a_n\\ \vdots\\
(w_{1n}+w_{n1})a_1+(w_{2n}+w_{n2})a_2+\cdots+2w_{nn}a_n\\
\end{bmatrix}^{\top}\\
&= \mathbf{a}^{\top}\left(W+W^{\top}\right)
\end{aligned}\]
如果 \(W\) 是个对称矩阵,那么可得
\[\frac{\partial \mathbf{a}^{\top}W\mathbf{a}}{\partial \mathbf{a}} = 2\mathbf{a}^{\top}W\]
4.2 向量对向量求导
4.2.1
考虑向量 \(\mathbf{a} \in \mathbb{R}^n\) 和矩阵 \(A \in \mathbb{R}^{m\times n}\) ,有
\[\frac{\partial A_{m\times n}\mathbf{a}_n}{\partial \mathbf{a}_n} = A_{m\times n}\]
4.2.2
考虑向量 \(\mathbf{a} \in \mathbb{R}^{n}\) 和参数 \(k \in \mathbb{R}\) ,有
\[\frac{\partial k\mathbf{a}_n}{\partial \mathbf{a}_n} = k I_{n\times n}\]
4.2.3
考虑向量 \(\mathbf{a}, \mathbf{b} \in \mathbb{R}^{n}\),求 \((\mathbf{a}\cdot\mathbf{b})\mathbf{a} = \mathbf{a}^\top \mathbf{b} \mathbf{a}\) 分别对 \(\mathbf{a}\) 和 \(\mathbf{b}\) 的偏导。
我们不用定义法,而是采用微分法进行推导。微分法的原理是
\[\mathrm{d} f(\mathbf{a}, \mathbf{b}) = \frac{\partial f}{\partial \mathbf{a}}\mathrm{d}\mathbf{a} + \frac{\partial f}{\partial \mathbf{b}} \mathrm{d}\mathbf{b}\]
我们进行推导:
\[\begin{aligned}
\mathrm{d} (\mathbf{a}^\top\mathbf{b}\mathbf{a}) &= \mathrm{d} (\mathbf{a}^\top\mathbf{b})\mathbf{a} + (\mathbf{a}^\top\mathbf{b})\mathrm{d}\mathbf{a}\\
&= ((\mathrm{d}\mathbf{a}^\top)\mathbf{b} + \mathbf{a}^\top(\mathrm{d}\mathbf{b}))\mathbf{a} + (\mathbf{a}^\top\mathbf{b})\mathrm{d}\mathbf{a}\\
&= (\mathrm{d}\mathbf{a}^\top\mathbf{b})\mathbf{a}+(\mathbf{a}^\top\mathrm{d}\mathbf{b})\mathbf{a}+(\mathbf{a}^\top\mathbf{b})\mathrm{d}\mathbf{a}\\
\end{aligned}\]
其中,\(\mathrm{d}\mathbf{a}^\top\mathbf{b}, \mathbf{a}^\top\mathrm{d}\mathbf{b}\) 都是标量,转置不变。标量×向量,可以交换先后顺序,写成向量×标量。因此有
\[\begin{aligned}
\mathrm{d} \left(\mathbf{a}^\top\mathbf{b}\mathbf{a}\right) &= (\mathrm{d}\mathbf{a}^\top\mathbf{b})\mathbf{a}+(\mathbf{a}^\top\mathrm{d}\mathbf{b})\mathbf{a}+(\mathbf{a}^\top\mathbf{b})\mathrm{d}\mathbf{a}\\
&= (\mathbf{b}^{\top}\mathrm{d}\mathbf{a})\mathbf{a} + (\mathbf{a}^\top\mathrm{d}\mathbf{b})\mathbf{a} + (\mathbf{a}^\top\mathbf{b})\mathrm{d}\mathbf{a}\\
&= \mathbf{a}(\mathbf{b}^{\top}\mathrm{d}\mathbf{a}) + \mathbf{a}(\mathbf{a}^\top\mathrm{d}\mathbf{b}) + (\mathbf{a}^\top\mathbf{b})\mathrm{d}\mathbf{a}\\
&= (\mathbf{a}\mathbf{b}^{\top})\mathrm{d}\mathbf{a} + (\mathbf{a}\mathbf{a}^\top)\mathrm{d}\mathbf{b} + (\mathbf{a}^\top\mathbf{b})\mathrm{d}\mathbf{a}\\
&= (\mathbf{a}\mathbf{b}^{\top} + \mathbf{a}^\top\mathbf{b}I_{n\times n})\mathrm{d}\mathbf{a} + (\mathbf{a}\mathbf{a}^\top)\mathrm{d}\mathbf{b}
\end{aligned}\]
所以
\[\begin{aligned}
\frac{\partial\mathbf{a}^\top \mathbf{b}\mathbf{a}}{\partial \mathbf{a}}
&= \mathbf{a}^\top\mathbf{b}I_{n\times n} + \mathbf{a}\mathbf{b}^\top\\
\frac{\partial\mathbf{a}^\top \mathbf{b}\mathbf{a}}{\partial\mathbf{b}}
&= \frac{\partial\mathbf{a}^\top \mathbf{b}\mathbf{a}}{\partial\mathbf{a}^\top\mathbf{b}}\frac{\partial\mathbf{a}^\top\mathbf{b}}{\partial \mathbf{b}} = \mathbf{a}\mathbf{a}^\top
\end{aligned}\]
4.2.4
我们考虑更一般的情况:引入 \(\mathbf{c} \in \mathbb{R}^n\) ,求 \(\mathbf{a}^\top\mathbf{b}\mathbf{c}\) 对 \(\mathbf{b}\) 的偏导。此时,可以采用链式法则。
\[\begin{aligned}
\frac{\partial \mathbf{a}^\top\mathbf{b}\mathbf{c}}{\partial \mathbf{b}}
&= \begin{bmatrix}c_1a_1 & c_1a_2 & \cdots & c_1a_n\\
c_2a_1 & c_2a_2 & \cdots & c_2a_n\\
\vdots & \vdots & \vdots & \vdots\\
c_na_1 & c_na_2 & \cdots & c_na_n\end{bmatrix} = \mathbf{c}\mathbf{a}^\top\\
&= \frac{\partial\mathbf{a}^\top \mathbf{b}\mathbf{c}}{\partial\mathbf{a}^\top\mathbf{b}}\frac{\partial\mathbf{a}^\top\mathbf{b}}{\partial \mathbf{b}} = \mathbf{c}\mathbf{a}^\top
\end{aligned}\]
在上式的基础上,我们考虑 \(\mathbf{a} = \mathbf{b}\) 的情形:
\[\frac{\partial\mathbf{b}^\top\mathbf{b}\mathbf{c}}{\partial \mathbf{b}}
= \frac{\partial\mathbf{b}^\top \mathbf{b}\mathbf{c}}{\partial\mathbf{b}^\top\mathbf{b}}\frac{\partial\mathbf{b}^\top\mathbf{b}}{\partial \mathbf{b}} = \mathbf{c}\left(2\mathbf{b}^\top\right) = 2\mathbf{c}\mathbf{b}^\top
\]
n 维向量的2-范数的导数
考虑 \(\mathbf{a} \in \mathbb{R}^{n}\) ,该向量的2-范数定义为:
\[\left\| \mathbf{a} \right\|_2 = \sqrt{a_1^2 + a_2^2 + \cdots + a_n^2}\]
则有:
\[\dot{\left\| \mathbf{a} \right\|} = \dfrac{\mathbf{a}^\top\dot{\mathbf{a}}}{\left\| \mathbf{a} \right\|}\]
证明如下:
\[\begin{aligned}
\dot{\left\| \mathbf{a} \right\|} &= \dfrac{\partial \left\| \mathbf{a} \right\|}{\partial a_1} \dot{a_1} + \dfrac{\partial \left\| \mathbf{a} \right\|}{\partial a_2} \dot{a_2} + \cdots + \dfrac{\partial \left\| \mathbf{a} \right\|}{\partial a_n} \dot{a_n}\\
&= \dfrac{2a_1\dot{a_1}}{2\sqrt{a_1^2+a_2^2+\cdots+a_n^2}} + \dfrac{2a_2\dot{a_2}}{2\sqrt{a_1^2+a_2^2+\cdots+a_n^2}} + \cdots + \dfrac{2a_n\dot{a_n}}{2\sqrt{a_1^2+a_2^2+\cdots+a_n^2}}\\
&= \dfrac{\mathbf{a}^\top \dot{\mathbf{a}}}{\sqrt{a_1^2+a_2^2+\cdots+a_n^2}}\\
&= \dfrac{\mathbf{a}^\top \dot{\mathbf{a}}}{\left\| \mathbf{a} \right\|}
\end{aligned}\]