当前位置: 首页 > news >正文

【笔记】为什么Cholesky Decomposition和Rotation-Scaling Decomposition可以解决协方差矩阵正半定性问题?

在优化协方差矩阵 Σ \boldsymbol{\Sigma} Σ(例如在高斯分布建模中)时,一个关键挑战是确保 Σ \boldsymbol{\Sigma} Σ 始终保持正半定性(positive semi-definite)。如果直接使用梯度下降优化 Σ \boldsymbol{\Sigma} Σ 的元素,矩阵可能在更新过程中变得非正半定,导致无效的高斯分布或数值不稳定性。**Cholesky Decomposition(Cholesky分解)Rotation-Scaling Decomposition(旋转-缩放分解)**通过提供一种特殊的参数化方式,解决了这个问题,使得 Σ \boldsymbol{\Sigma} Σ 在优化过程中始终满足正半定性要求。以下是对这两种方法的详细解释。


1. Cholesky Decomposition(Cholesky分解)

Cholesky分解将协方差矩阵 Σ \boldsymbol{\Sigma} Σ 表示为一个下三角矩阵 L \boldsymbol{L} L 与其转置 L T \boldsymbol{L}^T LT 的乘积:
Σ = L L T \boldsymbol{\Sigma} = \boldsymbol{L} \boldsymbol{L}^T Σ=LLT
对于一个 2×2 的协方差矩阵, L \boldsymbol{L} L 可以写为:
L = [ l 1 0 l 2 l 3 ] \boldsymbol{L} = \begin{bmatrix} l_1 & 0 \\ l_2 & l_3 \end{bmatrix} L=[l1l20l3]
其中 l 1 , l 2 , l 3 l_1, l_2, l_3 l1,l2,l3 是可学习的参数。

对于任意矩阵 L \boldsymbol{L} L Σ = L L T \boldsymbol{\Sigma} = \boldsymbol{L} \boldsymbol{L}^T Σ=LLT 总是正半定的。这是因为对于任意非零向量 a \mathbf{a} a,有:
a T Σ a = a T L L T a = ( L T a ) T ( L T a ) = ∥ L T a ∥ 2 ≥ 0 \mathbf{a}^T \boldsymbol{\Sigma} \mathbf{a} = \mathbf{a}^T \boldsymbol{L} \boldsymbol{L}^T \mathbf{a} = (\boldsymbol{L}^T \mathbf{a})^T (\boldsymbol{L}^T \mathbf{a}) = \|\boldsymbol{L}^T \mathbf{a}\|^2 \geq 0 aTΣa=aTLLTa=(LTa)T(LTa)=LTa20
这满足正半定矩阵的定义(即 a T Σ a ≥ 0 \mathbf{a}^T \boldsymbol{\Sigma} \mathbf{a} \geq 0 aTΣa0 对所有 a \mathbf{a} a 成立)。

如果 L \boldsymbol{L} L 的对角元素 l 1 > 0 l_1 > 0 l1>0 l 3 > 0 l_3 > 0 l3>0,则 Σ \boldsymbol{\Sigma} Σ 是正定的(即 a T Σ a > 0 \mathbf{a}^T \boldsymbol{\Sigma} \mathbf{a} > 0 aTΣa>0 对所有 a ≠ 0 \mathbf{a} \neq 0 a=0 成立)。正定性通常是高斯分布所需的更强条件。

与其直接优化 Σ \boldsymbol{\Sigma} Σ 的元素,不如优化 L \boldsymbol{L} L 的元素 l 1 , l 2 , l 3 l_1, l_2, l_3 l1,l2,l3。由于 Σ = L L T \boldsymbol{\Sigma} = \boldsymbol{L} \boldsymbol{L}^T Σ=LLT 的形式,无论 l 1 , l 2 , l 3 l_1, l_2, l_3 l1,l2,l3 如何取值, Σ \boldsymbol{\Sigma} Σ 始终是正半定的。

为了保证 Σ \boldsymbol{\Sigma} Σ 是正定的,可以对对角元素 l 1 l_1 l1 l 3 l_3 l3 施加约束。例如,使用参数化:
l 1 = exp ⁡ ( θ 1 ) , l 3 = exp ⁡ ( θ 3 ) l_1 = \exp(\theta_1), \quad l_3 = \exp(\theta_3) l1=exp(θ1),l3=exp(θ3)
其中 θ 1 , θ 3 \theta_1, \theta_3 θ1,θ3 是无约束的可学习参数。由于指数函数 exp ⁡ ( ⋅ ) \exp(\cdot) exp() 始终大于 0,这保证了 l 1 > 0 l_1 > 0 l1>0 l 3 > 0 l_3 > 0 l3>0。而非对角元素 l 2 l_2 l2 可以是任意实数,因为它不直接影响正定性。

Cholesky 分解还有助于提高计算稳定性。例如,计算逆矩阵 Σ − 1 = ( L L T ) − 1 = L − T L − 1 \boldsymbol{\Sigma}^{-1} = (\boldsymbol{L} \boldsymbol{L}^T)^{-1} = \boldsymbol{L}^{-T} \boldsymbol{L}^{-1} Σ1=(LLT)1=LTL1,由于 L \boldsymbol{L} L 是下三角矩阵,其逆可以通过简单的回代法求解,比直接求 Σ − 1 \boldsymbol{\Sigma}^{-1} Σ1 更稳定。

通过优化 L \boldsymbol{L} L 的参数而不是 Σ \boldsymbol{\Sigma} Σ 的元素,Cholesky 分解将正半定性约束嵌入到矩阵的构造中,避免了梯度下降可能导致的约束违反问题。


2. Rotation-Scaling Decomposition(旋转-缩放分解)

旋转-缩放分解将 Σ \boldsymbol{\Sigma} Σ 表示为旋转矩阵 R \boldsymbol{R} R 和缩放矩阵 S \boldsymbol{S} S 的组合:
Σ = ( R S ) ( R S ) T = R S S T R T \boldsymbol{\Sigma} = (\boldsymbol{R} \boldsymbol{S}) (\boldsymbol{R} \boldsymbol{S})^T = \boldsymbol{R} \boldsymbol{S} \boldsymbol{S}^T \boldsymbol{R}^T Σ=(RS)(RS)T=RSSTRT
对于 2D 情况:
R = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] \boldsymbol{R} = \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} R=[cosθsinθsinθcosθ]
由旋转角度 θ \theta θ 参数化。

S = [ s 1 0 0 s 2 ] \boldsymbol{S} = \begin{bmatrix} s_1 & 0 \\ 0 & s_2 \end{bmatrix} S=[s100s2]
由缩放因子 s 1 , s 2 s_1, s_2 s1,s2 参数化。

计算可得:
S S T = [ s 1 2 0 0 s 2 2 ] , Σ = R [ s 1 2 0 0 s 2 2 ] R T \boldsymbol{S} \boldsymbol{S}^T = \begin{bmatrix} s_1^2 & 0 \\ 0 & s_2^2 \end{bmatrix}, \quad \boldsymbol{\Sigma} = \boldsymbol{R} \begin{bmatrix} s_1^2 & 0 \\ 0 & s_2^2 \end{bmatrix} \boldsymbol{R}^T SST=[s1200s22],Σ=R[s1200s22]RT

R \boldsymbol{R} R 是正交矩阵( R T R = I \boldsymbol{R}^T \boldsymbol{R} = \boldsymbol{I} RTR=I),而 S S T = [ s 1 2 0 0 s 2 2 ] \boldsymbol{S} \boldsymbol{S}^T = \begin{bmatrix} s_1^2 & 0 \\ 0 & s_2^2 \end{bmatrix} SST=[s1200s22] 是对角矩阵,其对角元素 s 1 2 ≥ 0 s_1^2 \geq 0 s120 s 2 2 ≥ 0 s_2^2 \geq 0 s220(因为 s 1 , s 2 s_1, s_2 s1,s2 是实数)。因此, Σ \boldsymbol{\Sigma} Σ 是正半定的。

如果 s 1 > 0 s_1 > 0 s1>0 s 2 > 0 s_2 > 0 s2>0,则 S S T \boldsymbol{S} \boldsymbol{S}^T SST 的对角元素严格大于 0, Σ \boldsymbol{\Sigma} Σ 成为正定矩阵。

优化参数 θ , s 1 , s 2 \theta, s_1, s_2 θ,s1,s2 而不是直接优化 Σ \boldsymbol{\Sigma} Σ。由于 Σ \boldsymbol{\Sigma} Σ 的形式, θ \theta θ 可以取任意实数(因为旋转矩阵始终正交),而 s 1 s_1 s1 s 2 s_2 s2 需要保持非负。

为了保证正定性,可以参数化:
s 1 = exp ⁡ ( ϕ 1 ) , s 2 = exp ⁡ ( ϕ 2 ) s_1 = \exp(\phi_1), \quad s_2 = \exp(\phi_2) s1=exp(ϕ1),s2=exp(ϕ2)
其中 ϕ 1 , ϕ 2 \phi_1, \phi_2 ϕ1,ϕ2 是可学习参数,确保 s 1 > 0 s_1 > 0 s1>0 s 2 > 0 s_2 > 0 s2>0

计算 Σ − 1 = R [ s 1 − 2 0 0 s 2 − 2 ] R T \boldsymbol{\Sigma}^{-1} = \boldsymbol{R} \begin{bmatrix} s_1^{-2} & 0 \\ 0 & s_2^{-2} \end{bmatrix} \boldsymbol{R}^T Σ1=R[s1200s22]RT 很简单,只要 s 1 , s 2 ≠ 0 s_1, s_2 \neq 0 s1,s2=0,计算就稳定且高效。

旋转-缩放分解通过将 Σ \boldsymbol{\Sigma} Σ 分解为旋转(方向)和缩放(大小),将正半定性嵌入到结构中,使得优化过程不会破坏这一性质。


3. 为什么这两种分解能解决问题?

Cholesky 分解通过 L L T \boldsymbol{L} \boldsymbol{L}^T LLT 的形式,天然保证了正半定性。
旋转-缩放分解通过 R S S T R T \boldsymbol{R} \boldsymbol{S} \boldsymbol{S}^T \boldsymbol{R}^T RSSTRT,利用正交矩阵和非负对角矩阵的性质,同样保证了正半定性。
这种参数化将约束“隐藏”在矩阵构造中,避免了直接优化 Σ \boldsymbol{\Sigma} Σ 时需要显式施加正半定性约束的复杂性。

直接优化 Σ \boldsymbol{\Sigma} Σ 的元素时,梯度下降可能使其偏离正半定区域(例如特征值变为负数),导致高斯分布无效或计算不稳定。而分解方法通过优化中间参数(如 L \boldsymbol{L} L θ , s 1 , s 2 \theta, s_1, s_2 θ,s1,s2),确保 Σ \boldsymbol{\Sigma} Σ 始终有效。

对于 2×2 的对称协方差矩阵, Σ \boldsymbol{\Sigma} Σ 有 3 个独立元素:

  • Cholesky 分解使用 l 1 , l 2 , l 3 l_1, l_2, l_3 l1,l2,l3(3 个参数)。
  • 旋转-缩放分解使用 θ , s 1 , s 2 \theta, s_1, s_2 θ,s1,s2(3 个参数)。

两种方法都未增加参数数量,同时保持了表达能力。

Cholesky 分解: L \boldsymbol{L} L 是三角矩阵,求逆和行列式( det ⁡ ( Σ ) = l 1 2 l 3 2 \det(\boldsymbol{\Sigma}) = l_1^2 l_3^2 det(Σ)=l12l32)计算简单。
旋转-缩放分解: Σ \boldsymbol{\Sigma} Σ 的逆和行列式( det ⁡ ( Σ ) = s 1 2 s 2 2 \det(\boldsymbol{\Sigma}) = s_1^2 s_2^2 det(Σ)=s12s22)同样易于计算,避免了 Σ \boldsymbol{\Sigma} Σ 接近奇异时的数值问题。


4. 总结

Cholesky 分解和旋转-缩放分解通过将协方差矩阵 Σ \boldsymbol{\Sigma} Σ 参数化为特定的矩阵乘积形式( L L T \boldsymbol{L} \boldsymbol{L}^T LLT R S S T R T \boldsymbol{R} \boldsymbol{S} \boldsymbol{S}^T \boldsymbol{R}^T RSSTRT),确保其在梯度下降优化中始终保持正半定性。这种方法:

  • 正半定性由分解结构保证,无需额外约束。
  • 避免直接操作 Σ \boldsymbol{\Sigma} Σ 的数值问题。
  • 将问题转化为无约束参数的优化,使得梯度下降更稳定和高效。

因此,这两种分解是解决协方差矩阵优化中正半定性问题的强大工具,广泛应用于机器学习和高斯建模任务中。

相关文章:

  • 网管平台核心功能解析(八)——端口下联
  • 红宝书第二十九讲:详解编辑器和IDE:VS Code与WebStorm
  • Lua环境搭建+Lua基本语法
  • OpenCV 图形API(13)用于执行两个矩阵(或图像)逐元素乘法操作的函数mul()
  • (八)图像视图
  • 使用LangGraph构建多代理Agent、RAG
  • WHAT - Electron 系列(一)
  • 第十八章:Python实战专题:北京市水资源数据可视化与图书馆书籍管理应用开发
  • C++ | 函数模板
  • CAD插件实现:自动递增编号(前缀、后缀、位数等)——CADc#实现
  • 配置文件 yaml
  • Unity2D:从零开始制作一款跑酷游戏!
  • 【第2月 day16】Matplotlib 散点图与柱状图
  • 第四课:模型的概念及应用
  • 【trino】trino配置证书https tls/ssl访问
  • Git -> git pull --rebase 遇到error : Filename too long的临时解决方案
  • LTSPICE仿真电路:(二十五)低侧电流检测电路仿真
  • 在WPF中使用VisualCollection创建复杂Adorner详解
  • AI Agent成为行业竞争新焦点:技术革新与商业重构的双重浪潮
  • 数据库事务与锁的知识点