🚀 AdaRHD-S: 黎曼流形单循环自适应优化引擎
本项目开源了针对 黎曼双层优化 (Riemannian Bilevel Optimization, RBO) 的新型自适应单循环算法 —— AdaRHD-S。
该算法解决了传统黎曼双层优化方法中计算开销巨大、高度依赖二阶信息以及超参数调优困难的痛点。通过引入单循环(Single-Loop)更新机制与自适应(Adaptive)学习率,本算法在保证理论收敛界限的同时,显著提升了实际工程中的计算效率。
AdaRHD-S 在理论上实现了与非自适应算法持平的复杂度界限,但在实际执行中大幅减少了梯度计算成本:
-
迭代复杂度:在寻找
$\epsilon$ -驻点时,达到了$\mathcal{O}(1/\epsilon)$ 的迭代复杂度,与经典的双循环算法 AdaRHD 保持一致。 -
梯度复杂度:达到了
$\tilde{\mathcal{O}}(1/\epsilon)$ ,通过单循环结构,避免了内层子问题在每一轮外层迭代中都需要收敛至极高精度的开销。 -
计算优势:将传统方法的
$\mathcal{O}(1/\epsilon^2)$ 梯度复杂度显著优化,特别是在大规模数据集下优势更明显。
算法在理论上证明了:即使使用收缩映射 (Retraction Mapping) 代替昂贵的指数映射 (Exponential Mapping),依然能保持相同的收敛速率。这使得算法在 Stiefel 流形和 SPD 流形上的大规模矩阵运算变得极具可行性。
实验背景:在
-
单步时间优势:实验观察到 AdaRHD-S 在时钟运行时间(Wall-clock Time)上具有压倒性优势。在
$n=5000$ 的场景下,算法在前 10-20 秒内即实现了上层目标函数的快速俯冲。 -
架构权衡:
- AdaRHD-S:牺牲了单位轮数(Epoch)内的更新质量,但通过极快的单步迭代频率换取了总体的超速收敛。
- 对比算法:双循环算法(AdaRHD-CG/GD)受限于每轮内层求解的“串行等待”,在总时长上明显落后。
-
结论:在处理大规模数据流时,AdaRHD-S 是目前效率最高的黎曼双层优化方案。
(图示参考:
figures/simple_5000_50_20_upper_obj_time_all.pdf) simple_5000_50_20_upper_obj_time_all.pdf
实验背景:基于 AFEW 数据集的 3 层 SPD 神经网络(SPDNet),评估算法在深度嵌套结构中的鲁棒性。
-
动态学习率避坑:在 3 层 SPD 网络中,流形曲率变化剧烈。AdaRHD-S 利用自适应控制律
$a_{t+1} = \sqrt{a_t^2 + |\hat{G}_F|^2}$ ,在无需预知曲率参数的情况下,自动绕过梯度爆炸区域。 -
超梯度精度:相比于固定步长的截断梯度法(RHGD-20/50),AdaRHD-S 展现了更高的超梯度估计精度,收敛后的验证准确率(Acc)更加稳定。
(图示参考:
robust_dataratio0.05_acc_AdaRHD_S_comparison.pdf和robust_dataratio0.05_deep_hyrep_spd_gradnorm_AdaRHD_S_20_bestiter.pdf) robust_dataratio0.05_deep_hyrep_spd_gradnorm_AdaRHD_S_20_bestiter.pdf robust_dataratio0.05_acc_AdaRHD_S_comparison.pdf
本项目配套的 agent.json 定义了一个具有如下能力的智能体:
Uploading agent.json…
- 自动流形识别:智能检测变量所在的流形空间(Stiefel, SPD, Sphere),自动匹配相应的切空间投影与收缩映射。
- 免调参运行:内置自适应更新逻辑,根据当前的超梯度范数(Hyper-gradient Norm)动态缩放步长,实现“开箱即用”。
- 二阶开销优化:利用隐式函数定理(IFT)的近似计算,结合单循环步进,将原本需要海量内存的二阶信息压缩至线性空间。
-
导入配置:在支持的 Agent 平台导入
agent.json。 -
环境依赖:
- Python 3.8+
- PyTorch (支持 CUDA 加速)
- Geoopt (黎曼流形优化库)
-
运行实验:
python main.py --algorithm AdaRHD-S --problem simple --n 5000