矩阵微积分
本笔记主要介绍矩阵求导的相关知识。更准确地来说,是“多变量求导”的相关知识,“矩阵”只是我们的规定。
参考:维基百科 Matrix Calculus
1 背景 / 一些约定
我们规定,所有的 n 维向量都以 \(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 Y_n}{\partial 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 Y_n}{\partial X_m} = B_{m\times n} = A_{n\times m}^\top\]
1.1.3 分子布局 (符号特别版)
\[\frac{\partial Y_n}{\partial X_m^\top} = A_{n\times m}\]
规定了向量对向量的求导结果的布局之后,标量对向量,矩阵对向量等求导结果都可以按照该布局来定义。
在本文中,我们采用 分子布局 。在其它笔记中,偶尔可能会出现第三种情况。
2 基于分子布局的详细定义
2.1 标量对向量求导
对于一个定义在 n 维空间上的标量函数 \(f(X)\)
\[\frac{\partial f}{\partial X} = \begin{bmatrix}\dfrac{\partial f}{\partial x_1} & \dfrac{\partial f}{\partial x_2} & \cdots & \dfrac{\partial f}{\partial x_n}\end{bmatrix}\]
例子
考虑向量 \(\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}\]
我们再考虑 \(\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}\]
2.2 向量对标量求导
\[\frac{\mathrm{d}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 向量对向量求导
有向量 \(Y_n \in \mathbb{R}^n, X_m \in \mathbb{R}^m\) ,且 \(Y_n = \begin{bmatrix}y_1 & y_2 & \cdots & y_n\end{bmatrix}^\top, X_m = \begin{bmatrix}x_1 & x_2 & \cdots & x_m\end{bmatrix}^\top\) ,则
\[\frac{\partial Y_n}{\partial 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).
例子
考虑向量 \(\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}\) 的偏导。
\[\begin{aligned}
\mathbf{a}^\top \mathbf{b}\mathbf{a}
&= (a_1b_1+a_2b_2+\cdots+a_nb_n)\mathbf{a}\\
&= \begin{bmatrix}a_1(a_1b_1 + a_2b_2 + \cdots + a_nb_n)\\
a_2(a_1b_1 + a_2b_2 + \cdots + a_nb_n)\\
\vdots\\
a_n(a_1b_1 + a_2b_2 + \cdots + a_nb_n)\end{bmatrix}\\
\frac{\partial\mathbf{a}^\top \mathbf{b}\mathbf{a}}{\partial \mathbf{a}}
&= \begin{bmatrix}a_1b_1 + \mathbf{a}^\top\mathbf{b} & a_1b_2 & \cdots & a_1b_n\\
a_2b_1 & a_2b_2+\mathbf{a}^\top\mathbf{b} & \cdots & a_2b_n\\
\vdots & \vdots & \vdots & \vdots\\
a_nb_1 & a_nb_2 & \cdots & a_nb_n+\mathbf{a}^\top\mathbf{b}\end{bmatrix}\\
&= \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}} &= \begin{bmatrix}a_1^2 & a_1a_2 & \cdots & a_1a_n\\
a_2a_1 & a_2^2 & \cdots & a_2a_n\\
\vdots & \vdots & \vdots & \vdots\\
a_na_1 & a_na_2 & \cdots & a_n^2
\end{bmatrix} = \mathbf{a}\mathbf{a}^\top\\
&= \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}\]
上式最后一行的做法值得怀疑,把 \(\dfrac{\partial\mathbf{a}^\top\mathbf{b}\mathbf{a}}{\partial \mathbf{a}^\top\mathbf{b}}\) 当成 \(\dfrac{\partial k\mathbf{a}}{\partial k}\) 来处理,似乎是不太合理的。为此,我们考虑一个更一般的情况:引入 \(\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}\) 的情形:
\[\begin{aligned}
\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
\end{aligned}\]
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 n 维向量的2-范数的导数
考虑一个 n 维向量 \(\mathbf{a} = \begin{bmatrix}a_1 & a_2 & \cdots & a_n\end{bmatrix}^\top\) ,该向量的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}\]