跳转至

矩阵微积分

本笔记主要介绍矩阵求导的相关知识。更准确地来说,是“多变量求导”的相关知识,“矩阵”只是我们的规定。

参考:维基百科 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}\]