1. Riemannian优化基础与结构保持度量

1.1 Riemannian流形的数学框架

Riemannian优化是在光滑流形上进行的优化方法,其核心在于利用流形的几何结构来定义梯度方向。一个d维光滑流形M是一个局部同胚于欧氏空间的拓扑空间,每个点p∈M都有一个切空间TpM,可以理解为该点处所有可能的方向。Riemannian度量g为每个切空间赋予了一个内积结构gp:TpM×TpM→ℝ,这使得我们可以在流形上测量长度和角度。

在概率单纯形Δd = {p∈ℝd+1 | Σpi=1, pi>0}这样的约束集合上,传统的欧氏梯度下降会导致迭代点脱离可行域。而Riemannian优化通过保持流形结构来解决这个问题——更新方向始终保持在切空间内,并通过指数映射或回缩映射(Retraction)将更新点拉回流形。

关键点:回缩映射Retp(v)是指数映射的近似,满足Retp(0)=p且dRetp|0=id,计算代价更低但保持了一阶几何性质。

1.2 结构保持度量的构造原理

结构保持度量是指与原始度量在优化性质上相容的新度量。论文中通过共形变换(conformal transformation)构造:

g̃ = e²φg

其中φ:M→ℝ是光滑函数。这种变换保持角度不变但改变长度,特别地,当选择φ(p)=½β log h(p),h(p)=1+Σ(1/pi²)-1/(d+1)(Σ1/pi)²时,得到的度量能保持概率单纯形的边界回避性质。

在实际操作中,我们通过以下步骤实现:

  1. 计算标度因子h(p)及其梯度∇h(p)
  2. 构造共形系数e²φ = h(p)^β
  3. 验证新度量下的梯度范数满足∥∇g̃f(p)∥g̃ ≤ ∥∇gf(p)∥g

这种构造的优点是:当β>0时,靠近边界(某些pi→0)的区域会被赋予更大的度量张量,使得优化轨迹自然远离边界。

2. 对称零阶梯度估计器设计

2.1 基本估计器形式

在无法获得解析梯度的黑箱场景下,对称零阶估计器通过函数值差分来近似梯度。对于流形M上的函数f,在点p∈M处的估计器为:

b∇f(p;v) = [f(Retp(μv)) - f(Retp(-μv))]/(2μ) · v

其中:

  • v∈TpM是从单位球面均匀采样的切向量
  • μ>0是扰动步长
  • Retp是回缩映射

在欧氏空间中,这退化为经典的中心差分估计。流形上的关键在于:

  1. 扰动方向v必须属于切空间
  2. 函数评估通过回缩映射而非简单加法

2.2 采样偏差与度量修正

传统方法直接使用欧氏度量采样v,会导致估计偏差。论文提出在采样时考虑流形曲率的影响:

  1. 对度量张量g进行特征分解:g=QΛQᵀ
  2. 构造线性变换L=QΛ^{-1/2}
  3. 从欧氏球面采样s∼Unif(S^{d-1})
  4. 生成v=Ls并接受概率√(vᵀg²v/λ_max)

这种采样方式保证v在g̃-度量下均匀分布,抵消了曲率带来的偏差。实验显示在条件数κ(g)=10⁴时,修正后的估计误差比朴素方法降低83%。

3. 收敛性理论分析

3.1 主要定理与假设

定理2.9 :设(M,g)是完备d维Riemannian流形,f满足:

  1. 梯度Lipschitz:∥∇f(p)-∇f(q)∥ ≤ L·d(p,q)
  2. 三阶导数有界:∥∇³f(p)∥_{HS} ≤ M₃
  3. 里奇曲率有界:|Ric(v,v)| ≤ κ²∥v∥²

则采用步长η≲√(d/T)和扰动μ≲1/d²·√(d/T)时,SGD满足: min_{1≤t≤T} E[∥∇f(pt)∥²] ≲ √(d/T)

证明要点

  1. 通过泰勒展开分析估计偏差:
    # 伪代码:梯度估计误差分解
    error = Z0(v) + μ²Z2(v) + R(v)  # 零阶项+曲率项+余项
    
  2. 控制各阶矩:
    • E[∥Z0(v)∥²] ≤ (1/d - 1/d²)∥∇f∥²
    • E[∥Z2(v)∥²] ≲ (M₃² + κ²∥∇f∥²)/d³
  3. 递推关系导出收敛率

3.2 曲率与步长的关系

曲率κ直接影响允许的最大步长:

μ² ≤ min{1/(d-1), 1/(2 + 6/d + 8/d²)}

高曲率(κ≫1)时需要更小的μ来控制高阶项。在概率单纯形实验中,当β从0.5增加到2.0时:

  • 最大截面曲率K_max从+3.2降至+0.8
  • 最优步长η可相应增大2.4倍

4. 网格优化应用实践

4.1 CFD网格参数化

在计算流体力学(CFD)中,我们优化20×20粗网格节点位置P={pi},使在200×200细网格上插值的解uP逼近参考解uref。关键步骤:

  1. 参数化 :每个内部节点pi用重心坐标b∈Δ³表示
    def barycentric_to_cartesian(b, vertices):
        return np.dot(b, vertices)  # b∈Δ³, vertices是单元顶点
    
  2. 度量选择 :采用β=1.5的共形度量,平衡边界回避与曲率
  3. 随机采样 :每步随机选择30%节点(120个)更新

4.2 实现细节

  • 梯度估计
    def riemannian_grad_est(f, p, v, mu=0.1):
        v_unit = v / np.sqrt(inner_product(v, v, g(p)))  # g-归一化
        f_plus = f(retraction(p, mu * v_unit))
        f_minus = f(retraction(p, -mu * v_unit))
        return (f_plus - f_minus) / (2 * mu) * v_unit
    
  • 采样修正
    def sample_tangent_vector(p):
        A = metric_tensor(p)  # 获取g_p
        L = np.linalg.cholesky(np.linalg.inv(A))  # A⁻¹=LLᵀ
        s = random.uniform_on_sphere(dim=2)
        v = L @ s
        accept_prob = np.sqrt(v.T @ A @ A @ v) / A.max_eigval
        return v if random.uniform() < accept_prob else sample_tangent_vector(p)
    

实验结果显示,结构保持方法比传统无约束优化:

  • 最终MSE降低47%
  • 训练稳定性提高(方差减少68%)
  • 保持100%的网格有效性(无畸形单元)

5. 常见问题与调参指南

5.1 参数选择经验

  1. 扰动步长μ

    • 初始值设为√(d/T)/10
    • 观察训练曲线:若震荡大则减小μ,若收敛慢则增大
    • 在概率单纯形上建议μ∈[0.01,0.1]
  2. 学习率η

    • 与μ²成反比关系
    • 推荐初始值η=√d / (L√T),L为 Lipschitz常数估计
    • 网格优化中η∈[300,500]表现最佳
  3. 度量参数β

    • 通过试探法选择:从1.0开始,每50epoch乘1.2
    • 监控边界距离min(p_i),应保持在1e-3以上

5.2 典型故障排查

问题1 :优化轨迹振荡严重

  • 检查μ是否过大:应满足μ²κ²/d ≪ 1
  • 验证回缩映射的保距性:∥Retp(v)-p∥ ≈ ∥v∥

问题2 :收敛停滞

  • 确认采样偏差:计算E[∥v∥g²]是否接近1
  • 检查曲率估计:通过Ricci曲率诊断工具验证κ

问题3 :数值不稳定

  • 启用对数域计算:特别是h(p)=1+Σ(1/pi²)-...
  • 添加安全裁剪:φ ← max(min(φ, φ_max), φ_min)

6. 扩展应用与性能对比

6.1 其他应用场景

  1. 概率分布优化

    • 在黑盒变分推断中优化KL散度
    • 使用β=0.8的度量避免参数退化为Dirac分布
  2. 矩阵流形优化

    • Stiefel流形上的正交约束问题
    • 采用Grassmann度量的结构保持变体
  3. 机器人路径规划

    • 构型空间(Configuration Space)中的避障
    • 通过度量设计使障碍物区域曲率增大

6.2 基准测试结果

在合成逻辑回归任务上对比:

方法 最终损失 迭代次数 边界违规率
欧氏投影法 0.142 15k 6.2%
黎曼SGD(本文) 0.087 12k 0%
无约束+Sigmoid 0.153 20k 21.7%
镜像下降 0.095 18k 0%

结构保持方法的优势体现在:

  • 更快的收敛速度(减少25-40%迭代)
  • 严格的可行性保持
  • 对曲率变化鲁棒
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐