4.3Cholesky分解


文档摘要

4.3 Cholesky 分解 在机器学习中,我们经常遇到需要分解特殊类型矩阵的情况。对于正实数,我们有平方根运算,它可以将一个数分解为相同的因子,例如$9=3\cdot3$。然而,对于矩阵,我们需要小心处理,确保我们在正数或正定矩阵上执行类似平方根的操作。 对于对称正定矩阵(见第3.2.3节),我们可以选择多种与平方根等效的操作。其中,Cholesky分解提供了一种在对称正定矩阵上进行类似平方根操作的方法,这在实践中非常有用。 定理4.18(Cholesky分解):一个对称正定矩阵$A$可以分解为两个矩阵的乘积,即$A=LL^\top$,其中$L$是一个下三角矩阵,且其对角线元素为正。

4.3 Cholesky 分解

在机器学习中,我们经常遇到需要分解特殊类型矩阵的情况。对于正实数,我们有平方根运算,它可以将一个数分解为相同的因子,例如9=3\cdot3。然而,对于矩阵,我们需要小心处理,确保我们在正数或正定矩阵上执行类似平方根的操作。

对于对称正定矩阵(见第3.2.3节),我们可以选择多种与平方根等效的操作。其中,Cholesky分解提供了一种在对称正定矩阵上进行类似平方根操作的方法,这在实践中非常有用。

定理4.18(Cholesky分解):一个对称正定矩阵A可以分解为两个矩阵的乘积,即A=LL^\top,其中L是一个下三角矩阵,且其对角线元素为正。

具体来说,如果 A 是一个 n\times n 的对称正定矩阵,那么存在一个唯一的下三角矩阵L(称为A的Cholesky因子),其对角线元素为正,使得 A=LL^\top

Cholesky分解的矩阵形式如下:

A = \begin{bmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn} \end{bmatrix} = \begin{bmatrix} l_{11} & \cdots & 0 \\ \vdots & \ddots & \vdots \\ l_{n1} & \cdots & l_{nn} \end{bmatrix} \begin{bmatrix} l_{11} & \cdots & l_{n1} \\ \vdots & \ddots & \vdots \\ 0 & \cdots & l_{nn} \end{bmatrix}\tag{4.44}

这里,L是下三角矩阵,其元素l_{ij}(对于i>jl_{ij}=0)可以通过递归方式计算得到,通常使用Cholesky算法的迭代步骤来求解。

译者注:Cholesky分解在数值分析和统计中非常有用,特别是在处理大规模矩阵时,因为它提供了一种有效的方法来计算矩阵的逆和行列式,同时避免了直接计算可能导致的数值不稳定性。此外,Cholesky分解还广泛应用于求解线性方程组、优化问题和蒙特卡洛模拟等领域。

例 4.10 Cholesky 分解

考虑一个对称正定矩阵 A \in \mathbb{R}^{3\times3}。我们对其进行Cholesky分解,即找到矩阵 L 使得 A = LL^\top,具体形式为:

A = \begin{bmatrix} a_{11} & a_{21} & a_{31} \\ a_{21} & a_{22} & a_{32} \\ a_{31} & a_{32} & a_{33} \end{bmatrix} = L L^\top = \begin{bmatrix} l_{11} & 0 & 0 \\ l_{21} & l_{22} & 0 \\ l_{31} & l_{32} & l_{33} \end{bmatrix} \begin{bmatrix} l_{11} & l_{21} & l_{31} \\ 0 & l_{22} & l_{32} \\ 0 & 0 & l_{33} \end{bmatrix} \tag{4.45}

将右侧矩阵相乘,我们得到:

A = \begin{bmatrix} l_{11}^2 & l_{11}l_{21} & l_{11}l_{31} \\ l_{11}l_{21} & l_{21}^2 + l_{22}^2 & l_{21}l_{31} + l_{22}l_{32} \\ l_{11}l_{31} & l_{21}l_{31} + l_{22}l_{32} & l_{31}^2 + l_{32}^2 + l_{33}^2 \end{bmatrix}\tag{4.46}

比较(4.45)的左侧和(4.46)的右侧,我们可以看到对角元素 l_{ii} 有一个简单的模式:

l_{11} = \sqrt{a_{11}}, \quad l_{22} = \sqrt{a_{22} - l_{21}^2}, \quad l_{33} = \sqrt{a_{33} - (l_{31}^2 + l_{32}^2)} \tag{4.47}

类似地,对于下三角元素 l_{ij}(其中 i > j),也存在一个重复的模式:

l_{21} = \frac{1}{l_{11}}a_{21}, \quad l_{31} = \frac{1}{l_{11}}a_{31}, \quad l_{32} = \frac{1}{l_{22}}(a_{32} - l_{31}l_{21}) \tag{4.48}

因此,我们为任何对称正定的 3\times3 矩阵构造了Cholesky分解。关键之处在于,给定矩阵 A 的元素 a_{ij} 和之前已计算的 l_{ij} 值,我们可以反向计算出 L 的各个分量 l_{ij}

当然,以下是继续的中文翻译,保持对原文的忠实:

Cholesky 分解是机器学习底层数值计算中的一个重要工具。在这里,对称正定矩阵经常需要被处理,例如,多元高斯变量的协方差矩阵(见第6.5节)就是对称且正定的。这个协方差矩阵的Cholesky分解允许我们从高斯分布中生成样本。此外,它还允许我们对随机变量进行线性变换,这在计算深度随机模型(如变分自编码器,Jimenez Rezende et al., 2014; Kingma 和 Welling, 2014)中的梯度时被大量利用。Cholesky 分解还允许我们非常高效地计算行列式。给定Cholesky分解 A = LL^\top,我们知道\det(A) = \det(L)\det(L^\top) = \det(L)^2。由于 L 是一个三角矩阵,其行列式简单地等于其对角线元素的乘积,即 \det(A) = \prod_{i} l_{ii}^2。因此,许多数值软件包使用Cholesky分解来提高计算效率。

Cholesky 分解的这些特性使其成为处理大规模数据和复杂模型时不可或缺的工具,尤其是在机器学习和统计计算领域。通过减少计算复杂度和提高数值稳定性,Cholesky 分解促进了更高效和准确的算法开发。


作者与出处
原作者: Datawhale
来源:Datawhale
许可证:CC BY-SA 4.0
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: Datawhale 转发
评论区 (0)
U