附录C:常用矩阵恒等式

在大规模矩阵计算中,巧妙运用矩阵恒等式往往能将原本不可行的计算转化为高效算法。本章汇总了实践中最重要的矩阵恒等式,强调它们在数值计算中的应用价值。每个恒等式不仅给出数学表达,更重要的是说明其计算复杂度的改进和数值稳定性的考量。

21.1 矩阵求逆恒等式

21.1.1 Woodbury矩阵恒等式

最重要的矩阵求逆公式之一:

$$(\mathbf{A} + \mathbf{U}\mathbf{C}\mathbf{V}^T)^{-1} = \mathbf{A}^{-1} - \mathbf{A}^{-1}\mathbf{U}(\mathbf{C}^{-1} + \mathbf{V}^T\mathbf{A}^{-1}\mathbf{U})^{-1}\mathbf{V}^T\mathbf{A}^{-1}$$ 其中 $\mathbf{A} \in \mathbb{R}^{n \times n}$,$\mathbf{U} \in \mathbb{R}^{n \times k}$,$\mathbf{C} \in \mathbb{R}^{k \times k}$,$\mathbf{V} \in \mathbb{R}^{n \times k}$。

计算复杂度改进:当 $k \ll n$ 时,将 $O(n^3)$ 的直接求逆降至 $O(n^2k)$。

典型应用

  • 增量最小二乘更新
  • 低秩修正的快速求逆
  • Schur补计算
  • 在线学习算法的协方差更新

21.1.2 Sherman-Morrison公式

Woodbury恒等式的特例($k=1$): $$(\mathbf{A} + \mathbf{u}\mathbf{v}^T)^{-1} = \mathbf{A}^{-1} - \frac{\mathbf{A}^{-1}\mathbf{u}\mathbf{v}^T\mathbf{A}^{-1}}{1 + \mathbf{v}^T\mathbf{A}^{-1}\mathbf{u}}$$ 数值稳定性注意:分母 $1 + \mathbf{v}^T\mathbf{A}^{-1}\mathbf{u}$ 接近零时需特殊处理。

21.1.3 块矩阵求逆

对于分块矩阵: $$\begin{pmatrix} \mathbf{A} & \mathbf{B} \ \mathbf{C} & \mathbf{D} \end{pmatrix}^{-1} = \begin{pmatrix} \mathbf{A}^{-1} + \mathbf{A}^{-1}\mathbf{B}\mathbf{S}^{-1}\mathbf{C}\mathbf{A}^{-1} & -\mathbf{A}^{-1}\mathbf{B}\mathbf{S}^{-1} \ -\mathbf{S}^{-1}\mathbf{C}\mathbf{A}^{-1} & \mathbf{S}^{-1} \end{pmatrix}$$ 其中 $\mathbf{S} = \mathbf{D} - \mathbf{C}\mathbf{A}^{-1}\mathbf{B}$ 是Schur补。

替代形式(当 $\mathbf{D}^{-1}$ 更易计算时): $$\begin{pmatrix} \mathbf{A} & \mathbf{B} \ \mathbf{C} & \mathbf{D} \end{pmatrix}^{-1} = \begin{pmatrix} \mathbf{T}^{-1} & -\mathbf{T}^{-1}\mathbf{B}\mathbf{D}^{-1} \ -\mathbf{D}^{-1}\mathbf{C}\mathbf{T}^{-1} & \mathbf{D}^{-1} + \mathbf{D}^{-1}\mathbf{C}\mathbf{T}^{-1}\mathbf{B}\mathbf{D}^{-1} \end{pmatrix}$$ 其中 $\mathbf{T} = \mathbf{A} - \mathbf{B}\mathbf{D}^{-1}\mathbf{C}$。

21.1.4 Neumann级数

当 $|\mathbf{B}| < 1$ 时: $$(\mathbf{I} - \mathbf{B})^{-1} = \sum_{k=0}^{\infty} \mathbf{B}^k = \mathbf{I} + \mathbf{B} + \mathbf{B}^2 + \mathbf{B}^3 + \cdots$$ 实用截断形式: $$(\mathbf{I} - \mathbf{B})^{-1} \approx \sum_{k=0}^{K} \mathbf{B}^k$$ 误差界:$|\text{error}| \leq \frac{|\mathbf{B}|^{K+1}}{1-|\mathbf{B}|}$

21.2 迹与行列式恒等式

21.2.1 迹的循环性质

$$\text{tr}(\mathbf{A}\mathbf{B}\mathbf{C}) = \text{tr}(\mathbf{B}\mathbf{C}\mathbf{A}) = \text{tr}(\mathbf{C}\mathbf{A}\mathbf{B})$$ 计算优化应用:选择计算量最小的顺序。例如,若 $\mathbf{A} \in \mathbb{R}^{n \times k}$,$\mathbf{B} \in \mathbb{R}^{k \times m}$,$\mathbf{C} \in \mathbb{R}^{m \times n}$,且 $k \ll n, m$,则计算 $\text{tr}(\mathbf{B}\mathbf{C}\mathbf{A})$ 最高效。

21.2.2 迹的线性性质

$$\text{tr}(\mathbf{A} + \mathbf{B}) = \text{tr}(\mathbf{A}) + \text{tr}(\mathbf{B})$$ $$\text{tr}(c\mathbf{A}) = c \cdot \text{tr}(\mathbf{A})$$

21.2.3 内积的迹表示

$$\mathbf{x}^T\mathbf{y} = \text{tr}(\mathbf{y}\mathbf{x}^T)$$ $$\langle \mathbf{A}, \mathbf{B} \rangle_F = \text{tr}(\mathbf{A}^T\mathbf{B}) = \text{tr}(\mathbf{B}^T\mathbf{A})$$

21.2.4 行列式恒等式

矩阵行列式引理: $$\det(\mathbf{A} + \mathbf{u}\mathbf{v}^T) = \det(\mathbf{A})(1 + \mathbf{v}^T\mathbf{A}^{-1}\mathbf{u})$$ Sylvester行列式定理: $$\det(\mathbf{I}_n + \mathbf{A}\mathbf{B}) = \det(\mathbf{I}_m + \mathbf{B}\mathbf{A})$$ 其中 $\mathbf{A} \in \mathbb{R}^{n \times m}$,$\mathbf{B} \in \mathbb{R}^{m \times n}$。

21.2.5 对数行列式技巧

为避免数值溢出: $$\log\det(\mathbf{A}) = \text{tr}(\log(\mathbf{A})) = \sum_{i=1}^n \log(\lambda_i)$$ 其中 $\lambda_i$ 是 $\mathbf{A}$ 的特征值。实践中通过Cholesky分解计算: $$\log\det(\mathbf{A}) = 2\sum_{i=1}^n \log(L_{ii})$$ 其中 $\mathbf{L}$ 是 $\mathbf{A} = \mathbf{L}\mathbf{L}^T$ 的Cholesky因子。

21.3 特征值与奇异值恒等式

21.3.1 谱定理应用

对称矩阵 $\mathbf{A} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^T$: $$\mathbf{A}^k = \mathbf{Q}\mathbf{\Lambda}^k\mathbf{Q}^T$$ $$f(\mathbf{A}) = \mathbf{Q}f(\mathbf{\Lambda})\mathbf{Q}^T$$ 其中 $f(\mathbf{\Lambda}) = \text{diag}(f(\lambda_1), \ldots, f(\lambda_n))$。

21.3.2 特征值扰动界

Weyl不等式:设 $\lambda_i(\mathbf{A})$ 表示按降序排列的特征值,则: $$|\lambda_i(\mathbf{A} + \mathbf{E}) - \lambda_i(\mathbf{A})| \leq |\mathbf{E}|_2$$ Hoffman-Wielandt定理: $$\sum_{i=1}^n |\lambda_i(\mathbf{A} + \mathbf{E}) - \lambda_i(\mathbf{A})|^2 \leq |\mathbf{E}|_F^2$$

21.3.3 交织定理

对于 $n \times n$ 对称矩阵 $\mathbf{A}$ 及其 $(n-1) \times (n-1)$ 主子矩阵 $\mathbf{A}_{-i}$: $$\lambda_1(\mathbf{A}) \geq \lambda_1(\mathbf{A}_{-i}) \geq \lambda_2(\mathbf{A}) \geq \cdots \geq \lambda_{n-1}(\mathbf{A}_{-i}) \geq \lambda_n(\mathbf{A})$$

21.3.4 奇异值恒等式

$$\sigma_i(\mathbf{A}) = \sqrt{\lambda_i(\mathbf{A}^T\mathbf{A})} = \sqrt{\lambda_i(\mathbf{A}\mathbf{A}^T)}$$ Eckart-Young定理:最优秩-$k$ 近似 $$\min_{\text{rank}(\mathbf{B})=k} |\mathbf{A} - \mathbf{B}|_F = \sqrt{\sum_{i=k+1}^{\min(m,n)} \sigma_i^2}$$

21.3.5 迹与特征值关系

$$\text{tr}(\mathbf{A}) = \sum_{i=1}^n \lambda_i(\mathbf{A})$$ $$\text{tr}(\mathbf{A}^k) = \sum_{i=1}^n \lambda_i^k(\mathbf{A})$$

21.4 Kronecker积与Hadamard积恒等式

21.4.1 Kronecker积基本性质

$$(\mathbf{A} \otimes \mathbf{B})^T = \mathbf{A}^T \otimes \mathbf{B}^T$$ $$(\mathbf{A} \otimes \mathbf{B})^{-1} = \mathbf{A}^{-1} \otimes \mathbf{B}^{-1}$$ $$(\mathbf{A} \otimes \mathbf{B})(\mathbf{C} \otimes \mathbf{D}) = (\mathbf{A}\mathbf{C}) \otimes (\mathbf{B}\mathbf{D})$$

21.4.2 混合积规则

$$(\mathbf{A} \otimes \mathbf{B}) + (\mathbf{C} \otimes \mathbf{D}) = (\mathbf{A} + \mathbf{C}) \otimes \mathbf{B} \quad \text{(仅当} \mathbf{B} = \mathbf{D}\text{)}$$

21.4.3 向量化技巧

$$\text{vec}(\mathbf{A}\mathbf{X}\mathbf{B}) = (\mathbf{B}^T \otimes \mathbf{A})\text{vec}(\mathbf{X})$$ 特别地: $$\text{vec}(\mathbf{A}\mathbf{X}) = (\mathbf{I} \otimes \mathbf{A})\text{vec}(\mathbf{X})$$ $$\text{vec}(\mathbf{X}\mathbf{B}) = (\mathbf{B}^T \otimes \mathbf{I})\text{vec}(\mathbf{X})$$

21.4.4 Hadamard积性质

$$(A \odot B)^T = A^T \odot B^T$$ $$\text{rank}(A \odot B) \leq \text{rank}(A) \cdot \text{rank}(B)$$ $$A \odot (B + C) = (A \odot B) + (A \odot C)$$ 与Kronecker积的关系: $$\text{diag}(\mathbf{a}) \mathbf{B} \text{diag}(\mathbf{c}) = \mathbf{B} \odot (\mathbf{a}\mathbf{c}^T)$$

21.5 矩阵导数公式

21.5.1 基本导数规则

$$\frac{\partial}{\partial \mathbf{X}} \text{tr}(\mathbf{A}\mathbf{X}) = \mathbf{A}^T$$ $$\frac{\partial}{\partial \mathbf{X}} \text{tr}(\mathbf{X}^T\mathbf{A}) = \mathbf{A}$$ $$\frac{\partial}{\partial \mathbf{X}} \text{tr}(\mathbf{A}\mathbf{X}\mathbf{B}) = \mathbf{A}^T\mathbf{B}^T$$ $$\frac{\partial}{\partial \mathbf{X}} \text{tr}(\mathbf{X}^T\mathbf{A}\mathbf{X}) = (\mathbf{A} + \mathbf{A}^T)\mathbf{X}$$

21.5.2 行列式导数

$$\frac{\partial}{\partial \mathbf{X}} \log\det(\mathbf{X}) = \mathbf{X}^{-T}$$ $$\frac{\partial}{\partial \mathbf{X}} \det(\mathbf{X}) = \det(\mathbf{X})\mathbf{X}^{-T}$$

21.5.3 逆矩阵导数

$$\frac{\partial}{\partial t} \mathbf{A}^{-1}(t) = -\mathbf{A}^{-1}(t) \frac{\partial \mathbf{A}(t)}{\partial t} \mathbf{A}^{-1}(t)$$

21.5.4 链式法则

对于 $f(\mathbf{A}(\mathbf{X}))$: $$\frac{\partial f}{\partial X_{ij}} = \text{tr}\left(\left(\frac{\partial f}{\partial \mathbf{A}}\right)^T \frac{\partial \mathbf{A}}{\partial X_{ij}}\right)$$

21.6 特殊结构矩阵恒等式

21.6.1 对称矩阵性质

对于对称矩阵 $\mathbf{S}$:

  • 所有特征值为实数
  • 存在正交对角化 $\mathbf{S} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^T$
  • $\mathbf{S}^{1/2} = \mathbf{Q}\mathbf{\Lambda}^{1/2}\mathbf{Q}^T$(当 $\mathbf{S} \succeq 0$)

21.6.2 正交矩阵性质

对于正交矩阵 $\mathbf{Q}$($\mathbf{Q}^T\mathbf{Q} = \mathbf{I}$):

  • $|\mathbf{Q}\mathbf{x}|_2 = |\mathbf{x}|_2$(保范性)
  • $\det(\mathbf{Q}) = \pm 1$
  • 所有特征值的模为1
  • $\mathbf{Q}^{-1} = \mathbf{Q}^T$

21.6.3 正定矩阵性质

对于正定矩阵 $\mathbf{P} \succ 0$:

  • Cholesky分解存在且唯一:$\mathbf{P} = \mathbf{L}\mathbf{L}^T$
  • 所有主子矩阵也是正定的
  • $\mathbf{A}^T\mathbf{P}\mathbf{A} \succeq 0$,等号成立当且仅当 $\mathbf{A}\mathbf{x} = 0$

21.6.4 投影矩阵性质

对于投影矩阵 $\mathbf{P}$($\mathbf{P}^2 = \mathbf{P}$):

  • 特征值只能是0或1
  • $\text{rank}(\mathbf{P}) = \text{tr}(\mathbf{P})$
  • 正交投影时:$\mathbf{P} = \mathbf{P}^T$

本章小结

本章汇总的矩阵恒等式是大规模计算的基础工具。关键要点:

  1. Woodbury恒等式是处理低秩更新的核心,将高维求逆转化为低维计算
  2. 迹的循环性质允许重排矩阵乘积以优化计算顺序
  3. Kronecker积的向量化技巧将矩阵方程转化为向量形式,便于求解
  4. 矩阵导数公式是优化算法和自动微分的理论基础
  5. 特殊结构(对称、正交、正定)的性质可大幅简化计算

记住:选择合适的恒等式往往能将不可行的计算变为实际可行,特别是在处理大规模稀疏或低秩结构时。

练习题

练习21.1(基础)

证明Sherman-Morrison公式是Woodbury恒等式的特例。

提示

令 $\mathbf{U} = \mathbf{u}$,$\mathbf{V}^T = \mathbf{v}^T$,$\mathbf{C} = 1$。

答案

在Woodbury恒等式中设置 $\mathbf{U} = \mathbf{u}$(列向量),$\mathbf{V}^T = \mathbf{v}^T$(行向量),$\mathbf{C} = 1$(标量)。则: $$(\mathbf{A} + \mathbf{u} \cdot 1 \cdot \mathbf{v}^T)^{-1} = \mathbf{A}^{-1} - \mathbf{A}^{-1}\mathbf{u}(1^{-1} + \mathbf{v}^T\mathbf{A}^{-1}\mathbf{u})^{-1}\mathbf{v}^T\mathbf{A}^{-1}$$ 由于 $(1 + \mathbf{v}^T\mathbf{A}^{-1}\mathbf{u})^{-1} = \frac{1}{1 + \mathbf{v}^T\mathbf{A}^{-1}\mathbf{u}}$,得到Sherman-Morrison公式。

练习21.2(基础)

利用迹的循环性质,找出计算 $\text{tr}(\mathbf{A}\mathbf{B}\mathbf{C}\mathbf{D})$ 的最优顺序,其中 $\mathbf{A} \in \mathbb{R}^{1000 \times 10}$,$\mathbf{B} \in \mathbb{R}^{10 \times 1000}$,$\mathbf{C} \in \mathbb{R}^{1000 \times 10}$,$\mathbf{D} \in \mathbb{R}^{10 \times 1000}$。

提示

比较不同顺序的计算复杂度,考虑中间矩阵的大小。

答案

可能的计算顺序及复杂度:

  1. $\text{tr}((\mathbf{A}\mathbf{B})(\mathbf{C}\mathbf{D}))$:$\mathbf{A}\mathbf{B}$ 是 $1000 \times 1000$,复杂度 $O(10^7)$
  2. $\text{tr}(((\mathbf{A}\mathbf{B})\mathbf{C})\mathbf{D})$:同样需要计算 $1000 \times 1000$ 矩阵
  3. $\text{tr}(\mathbf{B}(\mathbf{C}\mathbf{D})\mathbf{A})$:$\mathbf{C}\mathbf{D}$ 是 $1000 \times 1000$,复杂度高
  4. $\text{tr}((\mathbf{B}\mathbf{C})(\mathbf{D}\mathbf{A}))$:$\mathbf{B}\mathbf{C}$ 和 $\mathbf{D}\mathbf{A}$ 都是 $10 \times 10$,复杂度 $O(10^5)$

最优顺序是第4种,先计算 $\mathbf{B}\mathbf{C}$ 和 $\mathbf{D}\mathbf{A}$。

练习21.3(基础)

推导正定矩阵 $\mathbf{A}$ 的条件数与其最大最小特征值的关系。

提示

回忆条件数定义 $\kappa(\mathbf{A}) = |\mathbf{A}|_2 |\mathbf{A}^{-1}|_2$。

答案

对于正定矩阵:

  • $|\mathbf{A}|_2 = \lambda_{\max}(\mathbf{A})$
  • $|\mathbf{A}^{-1}|_2 = \lambda_{\max}(\mathbf{A}^{-1}) = \frac{1}{\lambda_{\min}(\mathbf{A})}$

因此: $$\kappa(\mathbf{A}) = \lambda_{\max}(\mathbf{A}) \cdot \frac{1}{\lambda_{\min}(\mathbf{A})} = \frac{\lambda_{\max}(\mathbf{A})}{\lambda_{\min}(\mathbf{A})}$$

练习21.4(挑战)

设 $\mathbf{A} \in \mathbb{R}^{n \times n}$ 是对称正定矩阵,$\mathbf{B} \in \mathbb{R}^{n \times k}$ 且 $k \ll n$。推导一个高效算法计算 $(\mathbf{A} + \mathbf{B}\mathbf{B}^T)^{-1}\mathbf{B}$,避免显式计算逆矩阵。

提示

使用Woodbury恒等式,注意最终目标是计算 $(\mathbf{A} + \mathbf{B}\mathbf{B}^T)^{-1}\mathbf{B}$,而非单独的逆矩阵。

答案

应用Woodbury恒等式($\mathbf{U} = \mathbf{V} = \mathbf{B}$,$\mathbf{C} = \mathbf{I}_k$): $$(\mathbf{A} + \mathbf{B}\mathbf{B}^T)^{-1} = \mathbf{A}^{-1} - \mathbf{A}^{-1}\mathbf{B}(\mathbf{I}_k + \mathbf{B}^T\mathbf{A}^{-1}\mathbf{B})^{-1}\mathbf{B}^T\mathbf{A}^{-1}$$ 因此: $$(\mathbf{A} + \mathbf{B}\mathbf{B}^T)^{-1}\mathbf{B} = \mathbf{A}^{-1}\mathbf{B} - \mathbf{A}^{-1}\mathbf{B}(\mathbf{I}_k + \mathbf{B}^T\mathbf{A}^{-1}\mathbf{B})^{-1}\mathbf{B}^T\mathbf{A}^{-1}\mathbf{B}$$ 令 $\mathbf{Z} = \mathbf{A}^{-1}\mathbf{B}$,则: $$(\mathbf{A} + \mathbf{B}\mathbf{B}^T)^{-1}\mathbf{B} = \mathbf{Z} - \mathbf{Z}(\mathbf{I}_k + \mathbf{B}^T\mathbf{Z})^{-1}\mathbf{B}^T\mathbf{Z} = \mathbf{Z}(\mathbf{I}_k + \mathbf{B}^T\mathbf{Z})^{-1}$$ 计算步骤:

  1. 解线性系统 $\mathbf{A}\mathbf{Z} = \mathbf{B}$ 得到 $\mathbf{Z}$
  2. 计算 $k \times k$ 矩阵 $\mathbf{M} = \mathbf{I}_k + \mathbf{B}^T\mathbf{Z}$
  3. 解 $k \times k$ 系统 $\mathbf{M}\mathbf{Y} = \mathbf{I}_k$
  4. 计算 $\mathbf{Z}\mathbf{Y}$

总复杂度:$O(n^2k + k^3)$,远优于直接求逆的 $O(n^3)$。

练习21.5(挑战)

证明对于任意矩阵 $\mathbf{A}, \mathbf{B} \in \mathbb{R}^{n \times n}$,有: $$\text{eig}(\mathbf{A} \otimes \mathbf{I} + \mathbf{I} \otimes \mathbf{B}) = {\lambda_i + \mu_j : i,j = 1,\ldots,n}$$ 其中 $\lambda_i$ 和 $\mu_j$ 分别是 $\mathbf{A}$ 和 $\mathbf{B}$ 的特征值。

提示

考虑 $\mathbf{A}$ 和 $\mathbf{B}$ 的特征向量,利用Kronecker积的性质。

答案

设 $\mathbf{A}\mathbf{v}_i = \lambda_i\mathbf{v}_i$,$\mathbf{B}\mathbf{w}_j = \mu_j\mathbf{w}_j$。考虑向量 $\mathbf{v}_i \otimes \mathbf{w}_j$: $$(\mathbf{A} \otimes \mathbf{I} + \mathbf{I} \otimes \mathbf{B})(\mathbf{v}_i \otimes \mathbf{w}_j)$$ $$= (\mathbf{A} \otimes \mathbf{I})(\mathbf{v}_i \otimes \mathbf{w}_j) + (\mathbf{I} \otimes \mathbf{B})(\mathbf{v}_i \otimes \mathbf{w}_j)$$ $$= (\mathbf{A}\mathbf{v}_i) \otimes \mathbf{w}_j + \mathbf{v}_i \otimes (\mathbf{B}\mathbf{w}_j)$$ $$= \lambda_i\mathbf{v}_i \otimes \mathbf{w}_j + \mathbf{v}_i \otimes \mu_j\mathbf{w}_j$$ $$= (\lambda_i + \mu_j)(\mathbf{v}_i \otimes \mathbf{w}_j)$$ 因此 $\mathbf{v}_i \otimes \mathbf{w}_j$ 是特征向量,对应特征值 $\lambda_i + \mu_j$。由于这给出了 $n^2$ 个线性独立的特征向量,所以这是完整的特征值集合。

练习21.6(挑战)

给定 $\mathbf{X} \in \mathbb{R}^{n \times p}$ 和对称矩阵 $\mathbf{S} \in \mathbb{R}^{p \times p}$,推导 $\frac{\partial}{\partial \mathbf{S}} \log\det(\mathbf{X}^T\mathbf{X} + \mathbf{S})$,假设 $\mathbf{X}^T\mathbf{X} + \mathbf{S} \succ 0$。

提示

使用链式法则和 $\frac{\partial}{\partial \mathbf{A}} \log\det(\mathbf{A}) = \mathbf{A}^{-T}$。

答案

令 $\mathbf{M} = \mathbf{X}^T\mathbf{X} + \mathbf{S}$。使用链式法则: $$\frac{\partial}{\partial \mathbf{S}} \log\det(\mathbf{M}) = \text{tr}\left(\frac{\partial \log\det(\mathbf{M})}{\partial \mathbf{M}} \frac{\partial \mathbf{M}}{\partial \mathbf{S}}\right)$$ 已知 $\frac{\partial}{\partial \mathbf{M}} \log\det(\mathbf{M}) = \mathbf{M}^{-T} = \mathbf{M}^{-1}$(因为 $\mathbf{M}$ 对称)。

由于 $\mathbf{M} = \mathbf{X}^T\mathbf{X} + \mathbf{S}$,有 $\frac{\partial M_{ij}}{\partial S_{kl}} = \delta_{ik}\delta_{jl}$。

考虑到 $\mathbf{S}$ 是对称的,最终结果是: $$\frac{\partial}{\partial \mathbf{S}} \log\det(\mathbf{X}^T\mathbf{X} + \mathbf{S}) = (\mathbf{X}^T\mathbf{X} + \mathbf{S})^{-1}$$

注意:如果不限制 $\mathbf{S}$ 对称,则需要对结果进行对称化。

练习21.7(开放性思考)

在深度学习中,经常需要计算形如 $(\lambda\mathbf{I} + \mathbf{H})^{-1}\mathbf{g}$ 的表达式,其中 $\mathbf{H}$ 是Hessian矩阵,$\mathbf{g}$ 是梯度。讨论当 $\mathbf{H}$ 具有不同结构(低秩、稀疏、Kronecker因子分解)时,如何设计高效算法。

提示

考虑不同结构下的特殊求解技巧,以及如何避免显式形成和存储 $\mathbf{H}$。

答案

不同结构的处理策略:

  1. 低秩结构 $\mathbf{H} = \mathbf{U}\mathbf{U}^T$: - 使用Woodbury恒等式:$(\lambda\mathbf{I} + \mathbf{U}\mathbf{U}^T)^{-1} = \frac{1}{\lambda}\mathbf{I} - \frac{1}{\lambda^2}\mathbf{U}(\mathbf{I} + \frac{1}{\lambda}\mathbf{U}^T\mathbf{U})^{-1}\mathbf{U}^T$ - 只需求解 $k \times k$ 系统($k$ 是秩)

  2. 稀疏结构: - 使用共轭梯度法(CG)迭代求解 - 利用稀疏矩阵向量乘法 - 预条件子选择:不完全Cholesky分解

  3. Kronecker因子分解 $\mathbf{H} \approx \mathbf{A} \otimes \mathbf{B}$: - $(\lambda\mathbf{I} + \mathbf{A} \otimes \mathbf{B})^{-1}\text{vec}(\mathbf{G}) = \text{vec}(\mathbf{X})$ - 等价于求解 Sylvester方程:$\lambda\mathbf{X} + \mathbf{A}\mathbf{X}\mathbf{B}^T = \mathbf{G}$ - 复杂度从 $O(n^3)$ 降至 $O(n^{3/2})$

  4. 混合结构(低秩+对角)$\mathbf{H} = \mathbf{D} + \mathbf{U}\mathbf{U}^T$: - 再次使用Woodbury恒等式 - 对角部分易于处理

  5. 隐式表示(只有Hessian-向量积): - 使用CG法,只需要计算 $\mathbf{H}\mathbf{v}$ - 通过自动微分实现,避免存储 $\mathbf{H}$

实践建议:

  • 始终避免显式形成完整Hessian
  • 利用问题的特殊结构
  • 考虑精度-效率权衡
  • 监控条件数,必要时调整 $\lambda$

常见陷阱与错误

  1. 数值稳定性陷阱 - Sherman-Morrison公式中分母接近零 - 解决方案:检查 $|1 + \mathbf{v}^T\mathbf{A}^{-1}\mathbf{u}| > \epsilon$,否则回退到直接方法

  2. 矩阵求逆的误用 - 错误:计算 $\mathbf{A}^{-1}\mathbf{b}$ 时显式求逆 - 正确:解线性系统 $\mathbf{A}\mathbf{x} = \mathbf{b}$

  3. Kronecker积的内存爆炸 - 错误:显式形成 $\mathbf{A} \otimes \mathbf{B}$ - 正确:利用向量化技巧或保持因子形式

  4. 特征值计算的条件数敏感性 - 病态矩阵的特征值计算不可靠 - 使用SVD作为更稳定的替代

  5. 迹运算的计算顺序 - 忽视循环性质导致不必要的大矩阵计算 - 始终选择计算量最小的顺序

  6. 对称性的丢失 - 数值误差可能破坏对称性 - 定期进行对称化:$\mathbf{A} \leftarrow (\mathbf{A} + \mathbf{A}^T)/2$

最佳实践检查清单

  • [ ] 识别矩阵的特殊结构(稀疏、低秩、对称等)
  • [ ] 选择利用结构的恒等式
  • [ ] 避免显式矩阵求逆,使用线性系统求解
  • [ ] 考虑数值稳定性,特别是在接近奇异的情况
  • [ ] 利用迹的循环性质优化计算顺序
  • [ ] 保持隐式表示以节省内存(如Kronecker积)
  • [ ] 在迭代算法中监控条件数
  • [ ] 使用对数行列式避免溢出
  • [ ] 定期验证对称性和正定性
  • [ ] 基准测试不同方法的性能