矩阵微积分

在数学中，矩阵微积分是多元微积分的一种特殊表达，尤其是在矩阵空间上进行讨论的时候。它把单个函数对多个变量或者多元函数对单个变量的偏导数写成向量和矩阵的形式，使其可以被当成一个整体被处理。这使得要在多元函数寻找最大或最小值，又或是要为微分方程系统寻解的过程大幅简化。这里我们主要使用统计学和工程学中的惯用记法，而张量下标记法更常用于物理学中。

## 记法与术语说明

本条目中，我们使用单个字母变量来表示多个变量的集合体（向量和矩阵），这样可以充分利用矩阵记法的效用。

本条目使用不同字体来区分标量、向量和矩阵。下面使用M(n,m)来表示包含n行m列的n×m实矩阵的空间，它等同于$\mathbb{R}^{n \times m}$。该空间中的一般矩阵用粗体大写字母表示，例如$\mathbf{A}$，$\mathbf{X}$，$\mathbf{Y}$等。而若该矩阵属于M(n,1)，即列向量，则用粗体小写字母表示，如$\mathbf{a}$，$\mathbf{x}$，$\mathbf{y}$等。特别地，M(1,1)中的元素为标量，用小写斜体字母表示，如a，t，x等。$\mathbf{X}^\mathrm{T}$ 表示矩阵转置，tr($\mathbf{X}$)表示矩阵的迹，而 $\det(\mathbf{X})$或$|\mathbf{X}|$表示行列式。除非专门注明，所有函数都默认属于光滑函数C1。通常字母表前半部分的字母(a, b, c, …)用于表示常量，而后半部分的字母(t, x, y, …)用于表示变量。

### 矩阵的内积和范数

向量的内积（点积）在诸多领域中有着广泛的运用。

定义在$\mathbb{R}^n$上的向量$\mathbf{a}=[a_1, a_2, \cdots, a_n]^T$和$\mathbf{b}=[b_1, b_2, \cdots, b_n]^T$的点积定义为：

$\langle \mathbf{a},\mathbf{b}\rangle := \mathbf{a}\cdot \mathbf{b} = \mathbf{a}^\mathrm{T} \mathbf{b} = \mathbf{b}^\mathrm{T} \mathbf{a}= \sum_{i=1}^n a_ib_i = a_1b_1 + a_2b_2 + \cdots + a_nb_n$。

和向量类似，矩阵也可以定义内积（弗罗比尼乌斯内积）：对于定义在$\mathbb{R}^{m \times n}$上的实矩阵$\mathbf{A}$和$\mathbf{B}$，$\langle \mathbf{A}, \mathbf{B}\rangle := \mathbf{A} : \mathbf{B} = \sum_{i=1}^m \sum_{j=1}^n A_{ij} B_{ij} = \mathrm{tr} ( \mathbf{B}^\mathrm{T} \mathbf{A} ) = \mathrm{tr} ( \mathbf{A} \mathbf{B}^\mathrm{T} ) = \mathrm{tr} ( \mathbf{A}^\mathrm{T} \mathbf{B} ) = \mathrm{tr} ( \mathbf{B} \mathbf{A}^\mathrm{T} )$。

利用内积，可以定义向量和矩阵的范数（模）。

向量可以以多种形式定义范数。欧几里得范数是 $\mathbb R ^n$ 上最常用的范数。它可以以向量与其自身的内积的平方根表示：

$\|\mathbf{a}\| := \sqrt{\langle \mathbf{a},\mathbf{a}\rangle} =\sqrt{\sum_{i=1}^n a_i^2} = \sqrt{a_1^2 + a_2^2 + \cdots + a_n^2}$。

而矩阵范数也有多种定义，数值线性代数中最常用的一种范数为弗罗贝尼乌斯范数，它是矩阵与其自身的弗罗比尼乌斯内积的平方根：对于定义在$\mathbb{R}^{m \times n}$上的实矩阵$\mathbf{A}$。

$\|\mathbf{A}\| := \sqrt{\langle \mathbf{A},\mathbf{A}\rangle} = \sqrt{\sum_{i=1}^m \sum_{j=1}^n A_{ij}^2} = \sqrt{\mathrm{tr} ( \mathbf{A}^\mathrm{T} \mathbf{A} )} = \sqrt{\mathrm{tr} ( \mathbf{A} \mathbf{A}^\mathrm{T} )}$。

对于复向量和复矩阵，将转置改为共轭转置即可。

### 线性映射

线性映射指的是满足保持向量空间中向量加法和数乘运算的映射。此处的“向量”是抽象代数意义上的。也就是说，从向量空间$V$到$W$（二者的系数体均为$K$）的映射$\mathcal{L}: V \to W$要想成为线性映射，必须满足齐次性和叠加性：

- 齐次性：对于任何向量$\mathbf{x} \in V$ 和任何标量 $a \in K$：

$$\mathcal{L}(a \mathbf{x})= a \mathcal{L}(\mathbf{x})$$

- 叠加性：对于任意两个 $V$ 中的向量 $\mathbf{x}$ 和 $\mathbf{y}$：

$$\mathcal{L}(\mathbf{x} + \mathbf{y})= \mathcal{L}(\mathbf{x}) + \mathcal{L}(\mathbf{y})$$

对于实列向量（即一般意义上的实向量），将上述表述中的$V$、$W$和$K$改为$\mathbb R ^m$、$\mathbb R ^n$和$\mathbb R$即可。可以知道这种线性映射可以通过n×m实矩阵矩阵左乘向量得到。

对于实矩阵，将上述表述中的$V$、$W$和$K$改为$\mathbb R ^{m \times n}$、$\mathbb R ^{p \times q}$和$\mathbb R$即可。

特别地，对于实标量，线性映射指的就是正比例函数。

## 向量和矩阵的极限

对于向量和矩阵，可以使用类似于标量的极限定义方式来定义它们的极限。

标量序列的极限的现代定义如下：

对于标量序列$\{a_n\}$，当

$\forall \epsilon > 0, \exists N > 0,$使得$\forall n > N,$都有$|a_n - A|<\epsilon$

称其在$n \to \infty$时的极限为A。记作$\lim_{n \to \infty} a_n = A$。

对于向量或矩阵序列也有类似的定义。

对于定义在$\mathbb{R}^{m \times n}$的子集$S$上的向量或者矩阵序列$\{\mathbf{A}^{(n)}\}$，令$\mathbf{X}_0$为$S$的内点，当

$\forall \epsilon > 0, \exists N > 0,$使得$\forall n > N,$都有$\|\mathbf{A}^{(n)} - \mathbf{A}\|<\epsilon$

称其在$n \to \infty$时的极限为$\mathbf{A}$。记作$\lim_{n \to \infty} \mathbf{A}^{(n)} = \mathbf{A}$。

标量函数的极限的现代定义如下：

对于标量函数$f(x)$，当

$\forall \epsilon > 0, \exists \delta > 0,$使得$\forall x \in \{x \in \mathbb{R} | 0<|x - x_0|<\delta\},$都有$|f(x) - A|<\epsilon$

称其在$x_0$处的极限为A。记作$\lim_{x \to x_0} f(x) = A$。

对于向量或矩阵函数也有类似的定义。

对于定义在$\mathbb{R}^{m \times n}$的子集$S$上的向量或者矩阵函数$\mathbf{F}(\mathbf{X}): S \to \mathbb{R}^{p \times q}$，令$\mathbf{X}_0$为$S$的内点，当 $\forall \epsilon > 0, \exists \delta > 0,$使得$\forall \mathbf{X} \in \{\mathbf{X} \in S | 0<\|\mathbf{X} - \mathbf{X}_0\|<\delta\},$都有$\|\mathbf{F}(\mathbf{X}) - \mathbf{A}\|<\epsilon$ 时，称其在$\mathbf{X}_0$处的极限为$\mathbf{A}$。记作$\lim_{\mathbf{X} \to \mathbf{X}_0} \mathbf{F}(\mathbf{X}) = \mathbf{A}$。可以定义向量函数的连续：

对于定义于$\mathbb{R}^n$的子集$S$的向量函数$\mathbf{f}(\mathbf{x}): S \to \mathbb{R}^m$，令$\mathbf{x}_0$为$S$的内点，当

$\forall \epsilon > 0, \exists \delta > 0,$使得$\forall \mathbf{x} \in \{\mathbf{x} \in S | \|\mathbf{x} - \mathbf{x}_0\|<\delta\},$都有$\|\mathbf{f}(\mathbf{x}) - \mathbf{f}(\mathbf{x}_0)\|<\epsilon$

称其在$\mathbf{x}_0$处连续。

## 矩阵的级数

类似于标量级数，我们规定矩阵序列$\{\mathbf{A}^{(n)}\}$的无穷和$\mathbf{A}^{(0)} + \mathbf{A}^{(1)} + \mathbf{A}^{(2)} + \cdots$为矩阵的级数。记为$\sum_{k=0}^{\infty} \mathbf{A}^{(k)}$。它是部分和序列$\mathbf{S}^{(n)} = \sum_{k = 0}^n \mathbf{A}^{(k)}$在$n \to \infty$时的极限。如果这个极限收敛，称这个矩阵级数收敛，反之称为矩阵级数发散。

如果所有矩阵的各个位置的元素的级数和都是绝对收敛的，称这个矩阵绝对收敛。可以证明这与矩阵范数的级数和收敛等价。

绝对收敛的矩阵级数一定收敛，并且可以 交换求和次序并且不影响结果。

对于矩阵也可以定义幂级数。规定对于方阵序列$\{\mathbf{A}^k\}$以及复数序列$c_k$，无穷和$\sum_{k=0}^\infty c_k \mathbf{A}^k =c_0\mathbf{A}^{0} + c_1\mathbf{A}^{1} + c_2\mathbf{A}^{2} + \cdots$为矩阵的幂级数。

## 矩阵初等函数

可以利用方阵的幂级数定义方阵的初等函数。

下面是常见的方阵函数。

$$e^{\mathbf{A}} = \sum_{k = 0}^\infty \frac{\mathbf{A}^k}{k!} = \mathbf{E} + \frac{\mathbf{A}}{1!} + \frac{\mathbf{A}^2}{2!}+ \frac{\mathbf{A}^3}{3!} + \cdots + \frac{\mathbf{A}^k}{k!} + \cdots$$

$\sin \mathbf{A} = \sum_{k = 0}^\infty (-1)^k \frac{\mathbf{A}^{2k+1}}{(2k+1)!} = \frac{\mathbf{A}}{1!} - \frac{\mathbf{A}^3}{3!}+ \frac{\mathbf{A}^5}{5!} + \cdots + (-1)^k \frac{\mathbf{A}^{2k+1}}{(2k+1)!} + \cdots$ $\cos \mathbf{A} = \sum_{k = 0}^\infty (-1)^k \frac{\mathbf{A}^{2k}}{(2k)!} = \mathbf{E} - \frac{\mathbf{A}^2}{2!}+ \frac{\mathbf{A}^4}{4!} + \cdots + (-1)^k \frac{\mathbf{A}^{2k}}{(2k)!} + \cdots$

## 向量求导

由于向量可看成仅有一列的矩阵，最简单的矩阵求导为向量求导。

这里的标记方法可以通过如下方式表达大部分向量微积分：把n维向量构成的空间M(n,1)等同为欧氏空间$\mathbb{R}^n$，标量M(1,1)等同于$\mathbb{R}$。对应的向量微积分的概念在每小节末尾列出。

首先定义向量函数的微分：

采用分子布局记法时，对于定义于$\mathbb{R}^n$的子集$S$的向量函数$\mathbf{f}(\mathbf{x}): S \to \mathbb{R}^m$，令$\mathbf{x}_0$为$S$的内点，$B(\mathbf{x}_0;r)$为$S$中以$\mathbf{x}_0$为球心，$r$为半径的超球体，$\mathbf{x}\in B(\mathbf{x}_0;r)$，如果存在一个线性映射$\mathbf{A}$，使得

$$\mathbf{f}(\mathbf{x}) - \mathbf{f}(\mathbf{x}_0) = \mathbf{A}(\mathbf{x}-\mathbf{x}_0)+\mathbf{r}_{\mathbf{x}_0}(\mathbf{x}-\mathbf{x}_0)$$

并且

$$\lim_{\mathbf{x} \to \mathbf{x}_0} \frac{\mathbf{r}_{\mathbf{x}_0}(\mathbf{x}-\mathbf{x}_0)}{\|\mathbf{x}-\mathbf{x}_0\|} = 0$$

称其在$\mathbf{x}_0$处可微。我们定义向量函数的微分为$\operatorname{d}\mathbf{f} := \mathbf{A}\operatorname{d}\mathbf{x}$。

有如下的定理：

当$\mathbf{f}(\mathbf{x})$在$\mathbf{x}_0$处可微时，其在该点处连续。反之则不然。

我们将向量函数$\mathbf{f}(\mathbf{x})$的第i个分量在$\mathbf{x}_0$处对自变量向量的第j个分量的偏导数定义为$\lim_{t \to 0}\frac{f_i(\mathbf{x}_0 + t\mathbf{e}_j) - f_i(\mathbf{x}_0)}{t}$，其中$\mathbf{e}_j$是第j个单位向量。记作$\operatorname{D}_j f_i$。

当$\mathbf{f}(\mathbf{x})$在$\mathbf{x}_0$处可微时，其各分量在该点处关于自变量各分量的偏导数存在。当$\mathbf{f}(\mathbf{x})$在$\mathbf{x}_0$处可微时，如果令$\operatorname{D}\mathbf{f}$为一个m×n矩阵，其第i行第j列元素为$\operatorname{D}_j f_i$。那么它就是向量微分定义中的矩阵$\mathbf{A}$。

我们把矩阵$\operatorname{D}\mathbf{f}$叫做向量函数的导数。也记作$\frac{\operatorname{d}\mathbf{f}}{\operatorname{d}\mathbf{x}}$。注意这里使用的是分子布局记法。

这里的“分子布局记法”一般指，在表示导数向量（或矩阵）时，该导数的行数等于导数表达式中处于分子部分的参数维度；若采用分母布局记法，则导数的行数等于导数表达式中处于分母部分的参数维度。分子布局记法的结果与分母布局记法的结果互为转置关系。

### 向量对标量求导

标量可以视作一个1维向量。所以采用分子布局记法时，m维向量向量对标量求导的结果是一个m×1的矩阵，也就是m维列向量。

向量$<pre> \mathbf{y} = \begin{bmatrix} y_1 & y_2 & \cdots & y_m \end{bmatrix}^\mathsf{T} </pre>$关于标量x的导数可以（用分子记法）写成

$$\frac{\operatorname{d} \mathbf{y}}{\operatorname{d} x} = <pre> \begin{bmatrix} \frac{\operatorname{d} y_1}{\operatorname{d} x}\\ \frac{\operatorname{d} y_2}{\operatorname{d} x}\\ \vdots\\ \frac{\operatorname{d} y_m}{\operatorname{d} x}\\ \end{bmatrix} </pre>$$

在向量微积分中，向量$\mathbf{y}$关于标量$x$的导数也被称为向量$\mathbf{y}$的切向量，$\frac{\operatorname{d} \mathbf{y}}{\operatorname{d} x}$。注意这里$\mathbf{y}: \mathbb{R} \rightarrow \mathbb{R}^{n}$。

可以看到向量对标量求导就是其各个分量分别对标量求导。

有$\operatorname{d} \mathbf{y} = \frac{\operatorname{d} \mathbf{y}}{\operatorname{d} x}\operatorname{d} x$

例子 简单的样例包括欧式空间中的速度向量，它是位移向量（看作关于时间的函数）的切向量。更进一步而言，加速度是速度的切向量。

### 标量对向量求导

标量y对向量$<pre> \mathbf{x} = \begin{bmatrix} x_1 & x_2 & \cdots & x_n \end{bmatrix}^\mathsf{T} </pre>$的导数可以（用分子记法）写成

$$\frac{\operatorname{d} y}{\operatorname{d} \mathbf{x}} = <pre> \begin{bmatrix} \frac{\partial y}{\partial x_1} & \frac{\partial y}{\partial x_2} & \cdots & \frac{\partial y}{\partial x_n} \end{bmatrix} </pre>$$

有$\operatorname{d} y = \frac{\operatorname{d} y}{\operatorname{d} \mathbf{x}} \operatorname{d} \mathbf{x} = \sum_{i = 1}^n \frac{\partial y}{\partial x_i} \operatorname{d} x_i$。

在向量微积分中，标量y在空间$\mathbb R ^n$(其独立坐标是x的分量)中的梯度是标量y对向量$\mathbf{x}$的导数的转置。在物理学中，电场是电势的负梯度向量。

标量函数$f(\mathbf{x})$对空间向量$\mathbf{x}$在单位向量$\mathbf{u}$（在这里表示为列向量）方向上的方向导数可以用梯度定义：

$$\nabla_{\mathbf{u}}{f}(\mathbf{x}) = \nabla f(\mathbf{x}) \cdot \mathbf{u}$$

使用刚才定义的标量对向量的导数的记法，我们可以把方向导数写作

$\nabla_\mathbf{u} f = \left(\frac{\partial f}{\partial \mathbf{x}}\right)^\top\mathbf{u}$。

这类记法在证明乘法法则和链式法则的时候非常直观，因为它们与我们熟悉的标量导数的形式较为相似。

### 向量对向量求导

前面两种情况可以看作是向量对向量求导在其中一个是一维向量情况下的特例。类似地我们将会发现有关矩阵的求导可被以一种类似的方式化归为向量求导。

向量函数 (分量为函数的向量) $<pre> \mathbf{y} = \begin{bmatrix} y_1 & y_2 & \cdots & y_m \end{bmatrix}^\mathsf{T} </pre>$对输入向量$<pre> \mathbf{x} = \begin{bmatrix} x_1 & x_2 & \cdots & x_n \end{bmatrix}^\mathsf{T} </pre>$的导数，可以（用分子记法) 写作

$$\frac{\operatorname{d} \mathbf{y}}{\operatorname{d} \mathbf{x}} = <pre> \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} & \cdots & \frac{\partial y_1}{\partial x_n}\\ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} & \cdots & \frac{\partial y_2}{\partial x_n}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{\partial y_m}{\partial x_1} & \frac{\partial y_m}{\partial x_2} & \cdots & \frac{\partial y_m}{\partial x_n}\\ \end{bmatrix} </pre>$$

在向量微积分中，向量函数$\mathbf{y}$对分量表示一个空间的向量$\mathbf{x}$的导数也被称为前推，或雅可比矩阵。

向量函数$\mathbf{f}$对Rn空间中向量$\mathbf{v}$的前推为$<pre> \operatorname{d}\mathbf{f}(\mathbf{v}) = \frac{\operatorname{d} \mathbf{f}}{\operatorname{d} \mathbf{v}} \operatorname{d}\mathbf{v} </pre>$

## 矩阵求导

有两种类型的矩阵求导可以被写成相同大小的矩阵：矩阵对标量求导和标量对矩阵求导。它们在解决应用数学的许多领域常见的最小化问题中十分有用。类比于向量求导，相应的概念有切矩阵和梯度矩阵。

### 矩阵对标量求导

矩阵函数$\mathbf{Y}$对标量x的导数被称为切矩阵，(用分子记法)可写成：

$$\frac{\operatorname{d} \mathbf{Y}}{\operatorname{d} x} = \begin{bmatrix} \frac{\partial y_{11}}{\partial x} & \frac{\partial y_{12}}{\partial x} & \cdots & \frac{\partial y_{1n}}{\partial x}\\ \frac{\partial y_{21}}{\partial x} & \frac{\partial y_{22}}{\partial x} & \cdots & \frac{\partial y_{2n}}{\partial x}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{\partial y_{m1}}{\partial x} & \frac{\partial y_{m2}}{\partial x} & \cdots & \frac{\partial y_{mn}}{\partial x}\\ \end{bmatrix}$$

### 标量对矩阵求导

定义在元素是独立变量的p×q矩阵$\mathbf{X}$上的标量函数y对$\mathbf{X}$的导数可以(用分子记法)写作

$$\frac{\operatorname{d} y}{\operatorname{d} \mathbf{X}} = \begin{bmatrix} \frac{\partial y}{\partial x_{11}} & \frac{\partial y}{\partial x_{21}} & \cdots & \frac{\partial y}{\partial x_{p1}}\\ \frac{\partial y}{\partial x_{12}} & \frac{\partial y}{\partial x_{22}} & \cdots & \frac{\partial y}{\partial x_{p2}}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{\partial y}{\partial x_{1q}} & \frac{\partial y}{\partial x_{2q}} & \cdots & \frac{\partial y}{\partial x_{pq}}\\ \end{bmatrix}$$

定义矩阵上的重要的标量函数包括矩阵的迹和行列式。

类比于向量微积分，这个导数常被写成如下形式：

$$\nabla_\mathbf{X} y(\mathbf{X}) = \frac{\partial y(\mathbf{X})}{\partial \mathbf{X}}$$

类似地，标量函数f(X)关于矩阵X在方向Y的方向导数可写成

$$\nabla_\mathbf{Y} f = \operatorname{tr} \left(\frac{\partial f}{\partial \mathbf{X}} \mathbf{Y}\right)$$

梯度矩阵经常被应用在估计理论的最小化问题中，比如卡尔曼滤波算法的推导，因此在这些领域中有着重要的地位。

## 向量的二阶导数

考虑定义于$\mathbb{R}^n$的子集$S$的向量函数$\mathbf{f}(\mathbf{x}): S \to \mathbb{R}^m$，设向量函数$\mathbf{f}(\mathbf{x})$的第i个分量为$f_i(\mathbf{x})$，并假设其在S的内部点及其开邻域内有偏导数$\operatorname{D}_j f_i$。

考虑极限$\lim_{t \to 0}\frac{\operatorname{D}_j f_i(\mathbf{x}_0 + t\mathbf{e}_k) - \operatorname{D}_j f_i(\mathbf{x}_0)}{t}$，其中$\mathbf{e}_k$是第k个单位向量。如果这个极限存在，称其为$f_i(\mathbf{x})$在$\mathbf{x}_0$处的第(k, j)二阶偏导数，记作$\operatorname{D}^2_{kj} f_i (\mathbf{x}_0)$。

### 黑塞矩阵

黑塞矩阵是一个包含所有二阶偏导数的矩阵。这个矩阵只对定义于$\mathbb{R}^n$的子集$S$的实值函数$f(\mathbf{x}): S \to \mathbb{R}$有定义，是一个n×n矩阵。其定义如下：

对于定义于$\mathbb{R}^n$的子集$S$的实值函数$f(\mathbf{x}): S \to \mathbb{R}$，令$\mathbf{x}_0$为$S$的内点，并且此处的各个二阶偏导数存在，我们定义该处的黑塞矩阵如下：

$$\begin{bmatrix} \operatorname{D}^2_{11} f(\mathbf{x}_0) & \operatorname{D}^2_{21} f (\mathbf{x}_0) & \cdots & \operatorname{D}^2_{n1} f (\mathbf{x}_0) \\\operatorname{D}^2_{12} f(\mathbf{x}_0) & \operatorname{D}^2_{22} f (\mathbf{x}_0) & \cdots & \operatorname{D}^2_{n2} f (\mathbf{x}_0) \\ \vdots & \vdots & & \vdots \\\operatorname{D}^2_{1n} f(\mathbf{x}_0) & \operatorname{D}^2_{2n} f (\mathbf{x}_0) & \cdots & \operatorname{D}^2_{nn} f (\mathbf{x}_0) \end{bmatrix}$$