Differentiable Nonlinear Model Predictive Control¶
会议: NeurIPS 2026
arXiv: 2505.01353
代码: https://github.com/acados/acados
领域: 机器人 / 具身智能
关键词: 微分模型预测控制, 非线性规划, 内点法, 隐函数定理, 伴随灵敏度
一句话总结¶
基于隐函数定理与内点法平滑KKT条件,构建结构化非线性模型预测控制(NMPC)的前向与伴随解灵敏度计算框架,结合两求解器解耦架构并在 acados 中实现,在 CPU 上实现比现有方法超 3 倍的加速。
研究背景与动机¶
将深度强化学习或端到端模仿学习与非线性模型预测控制(NMPC)相结合,是兼顾数据驱动高泛化能力与控制理论安全性、鲁棒稳定性的前沿范式。在四足/双足机器人、高动态无人机协同、自动驾驶赛车及智能微电网控制中,嵌入具有显式动力学和物理约束的 MPC 控制层,能够天然保证控制输入与状态轨迹不越界。然而,将 MPC 视为神经网络中的可微优化层(Differentiable Optimization Layer)并在端到端闭环下进行梯度反传,核心瓶颈在于缺乏针对通用非凸、带复杂非线性约束优化问题的高效参数解灵敏度求解器。
以往机器学习社区的可微优化库面临严重的局限性:OptNet、cvxpylayers 等工作仅支持凸二次规划或凸锥规划,无法直接处理非线性系统动力学与非线性不等式;Theseus 虽支持非线性最小二乘,但仅能处理软惩罚约束;而由 Amos 等人提出的经典 differentiable MPC(mpc.pytorch)不仅局限于简单控制幅值上下界,更在反传灵敏度时错误地复用了凸近似的 Gauss-Newton Hessian,导致在非凸或非线性约束下梯度严重失真。此外,当系统处于约束激活集切换的临界边界时,解映射天然非光滑甚至跳变,直接应用隐函数定理会因导数未定义而导致梯度爆炸或优化停滞。
本文的切入点在于打通数值最优化(SQP 与内点法)与现代深度学习自动微分之间的鸿沟。核心 idea:利用内点法对不等式互补条件的对数障碍平滑机制消除激活集切换奇异性,严格证明非线性规划与精确 Hessian 二次子问题灵敏度的等价性,并通过前向/伴随灵敏度与名义求解解耦的“两求解器架构”在 acados 中实现 Riccati 结构加速。
方法详解¶
整体框架¶
本文针对参数化离散时间最优控制问题(OCP),在每个控制周期求解带状态/控制约束的非线性规划。系统接受参数 \(\theta\)(如动力学参数、成本权重、跟踪目标等),输出最优控制与状态轨迹。为了提供梯度反向传播支持,整体流程分为五个阶段:首先通过名义求解器求解平滑 KKT 系统获得原始-对偶解;随后在解处评估严格基于拉格朗日函数精确 Hessian 的雅可比矩阵;接着对其缩约矩阵执行高效 Riccati 分解;最后针对前向全雅可比或伴随反传种子向量完成快速反代求解。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}%%
flowchart TD
A["输入参数 θ 与名义状态 x0"] --> B["名义 SQP-IPM 求解<br/>收敛至平滑 KKT 原始-对偶解"]
B --> C["精确 Hessian 投影<br/>构建真实拉格朗日曲率与残差导数"]
C --> D["OCP 结构化 Riccati 分解<br/>消除松弛与对偶变量并分解降维矩阵"]
D --> E{"灵敏度传播模式"}
E -->|前向模式| F["前向灵敏度回代<br/>输出解对参数的全雅可比"]
E -->|反向模式| G["伴随灵敏度回代<br/>输入反传种子 ν 并输出参数梯度"]
F --> H["下游控制器 / 策略网络更新"]
G --> H
关键设计¶
1. 内点平滑机制:消除激活集突变的非光滑性 在带不等式约束的优化控制中,当系统在无约束和有约束状态之间切换时,解映射的一阶导数通常存在剧烈跳变或未定义(例如标量问题 \(\min_x (x-\theta^2)^2 \text{ s.t. } -1 \le x \le 1\) 在 \(\theta=\pm 1\) 处的导数不连续)。针对这一痛点,本文利用内点法求解带目标对数障碍参数 \(\tau_{\min} > 0\) 的平滑 KKT 系统,将互补松弛条件 \(\mu_i h_i(z; \theta) = 0\) 替换为连续可微的松弛双曲线条件: $\(\mu_i s_i = \tau_{\min}, \quad s_i = -h_i(z; \theta), \quad i=1, \dots, n_h\)$ 该设计将不可微的解映射逼近为光滑函数 \(z_{\mathrm{ipm}}^{\mathrm{sol}}(\tau_{\min}, \theta)\)。理论证明当 \(\tau_{\min} \to 0^+\) 时,不仅平滑解以 \(\mathcal{O}(\tau_{\min})\) 的速率收敛到真解 \(z^\star\),而且即便在原始 NLP 严格互补性失效的临界边界上,该平滑解依旧保持局部唯一且连续可微,彻底消除了梯度爆炸并稳定了反向传播。
2. 精确 Hessian 灵敏度定理:杜绝 Gauss-Newton 梯度失真 在实时 MPC 求解中,SQP 通常使用凸的 Gauss-Newton Hessian 近似以加速前向收敛。然而以往可微 MPC(如 mpc.pytorch)直接复用收敛处的近似 Hessian 构造 IFT 灵敏度矩阵,造成求导误差巨大甚至方向完全相反。针对此陷阱,本文在定理 2 中严格证明:只有在收敛点 \((z^\star, \lambda^\star, \mu^\star)\) 处使用完整的拉格朗日精确二阶导数 \(Q_\star = \nabla^2_{zz} \mathcal{L}(z^\star, \lambda^\star, \mu^\star; \bar{\theta})\),QP 子问题的解灵敏度才与原非线性 NLP 的真实灵敏度严格吻合。若含有非线性约束或非最小二乘成本项,忽略约束二阶曲率 \(\nabla^2_{zz} h_i\) 或 \(\nabla^2_{zz} g_i\) 会导致伴随梯度严重偏差。
3. 两求解器解耦架构:前向加速与反向精确的兼得之道 名义优化与反向求导对算法结构的要求存在根本冲突:名义求解追求收敛速度和全局鲁棒性,宜采用阻尼、高斯-牛顿近似、正则化 Levenberg-Marquardt 项及冷/热启动策略;而灵敏度求解则严苛要求无正则化扰动的精确拉格朗日 Hessian 与确定的平滑参数 \(\tau_{\min}\)。为此,本文设计了“两求解器架构”(Two-Solver Architecture):名义求解器(Nominal Solver)自由选用最优 QP 求解器或凝聚策略高效计算原始-对偶解 \(w^\star(\bar{\theta})\);灵敏度求解器(Sensitivity Solver)仅读取该解,重新组装精确 Hessian 并执行单次因式分解与反代。该解耦机制兼顾了前向求解的极限吞吐与梯度反传的数学严谨性。
4. 伴随灵敏度的高效 Riccati 结构利用与反代 在深度神经网络的端到端训练中,损失函数通常为标量,反向传播只需计算对标量损失的梯度(伴随灵敏度),而非计算参数全雅可比矩阵。对于控制维度 \(n_w = n_z + n_g + 2n_h\) 及高维参数 \(n_\theta \gg n_w\),计算全前向雅可比极其昂贵。给定反传种子向量 \(\nu \in \mathbb{R}^{n_w}\),伴随灵敏度为: $\(s_{\mathrm{adj}} = J_\star(w^\star; \tau, \theta)^\top (\mathcal{M}_\star(w^\star; \tau, \theta)^{-\top} \nu)\)$ 尽管内点矩阵 \(\mathcal{M}_\star\) 本身非对称,但在先通过分块消元消去松弛变量 \(\Delta s\) 与对偶变量 \(\Delta \mu\) 后,其缩约矩阵 \(\widetilde{\mathcal{M}}_\star\) 恢复对称块三对角结构。本文在 HPIPM 与 BLASFEO 库中实现了定制的右端项缩约算法,复用计算复杂度仅为 \(\mathcal{O}(N(n_x+n_u)^3)\) 的经典 Riccati 因式分解,使得单个伴随梯度的求解复杂度降至 \(\mathcal{O}(N(n_x+n_u)^2)\),相比前向全雅可比计算提速达 2.5 倍以上。
损失函数 / 训练策略¶
在集成至深度强化学习(如 Actor-Critic MPC)或模仿学习框架(如 leap-c / PyTorch)时,可微 MPC 层将高层策略网络输出的代价权重矩阵 \(Q, R\)、跟踪轨迹目标 \(y_{\mathrm{ref}}\) 或动力学参数 \(\theta\) 作为输入,输出控制指令 \(u_0\)。损失函数 \(\mathcal{L}_{\mathrm{task}}(u_0, y)\) 关于控制指令的梯度 \(\nabla_{u_0} \mathcal{L}_{\mathrm{task}}\) 作为伴随种子向量 \(\nu\) 传入灵敏度求解器。通过调整内点最小障碍参数 \(\tau_{\min} \in [10^{-8}, 10^{-2}]\),可在梯度平滑度(便于优化探索)与最优化精确度(严格满足硬约束)之间进行平滑折演。
实验关键数据¶
主实验¶
在 Intel Core i7-8665U CPU 上测试 batch size 为 128 的约束线性二次调节器(LQR,时域 \(N=20, n_x=8, n_u=4, n_\theta=248\))在不同控制输入幅值界限 \(u_{\max}\) 下的计算耗时对比。
| 约束边界 \(u_{\max}\) | 求解环节 | acados (本文) | mpc.pytorch | cvxpygen (OSQP) | acados 相对加速比 |
|---|---|---|---|---|---|
| \(10^4\) (约束不激活) | 名义求解 | 8.5 ms | 78 ms | 262 ms | 9.2× / 31× |
| \(10^4\) (约束不激活) | 求解 + 伴随灵敏度 | 34.5 ms | 125 ms | 658 ms | 3.6× / 19× |
| \(1.0\) (约束强激活) | 名义求解 | 17.6 ms | 21024 ms | 6402 ms | 1200× / 360× |
| \(1.0\) (约束强激活) | 求解 + 伴随灵敏度 | 42.0 ms | 21899 ms | 6845 ms | 520× / 160× |
在配备 RTX 3080 Ti GPU 与 AMD Ryzen 9 5950X CPU 上的扩展对比表明,利用 GPU 并行能力的 mpc.pytorch 依然严重受限于小矩阵调度开销与 iLQR 激活集震荡,在 \(u_{\max}=1.0\) 下总耗时达 14.64 s,而纯 CPU 运行的 acados 仅需 0.033 s(加速比达 450×)。
消融实验:灵敏度计算模式与 Hessian 近似影响¶
在质点弹簧质量链非线性控制系统(\(N=40, n_x=9, n_u=3, n_\theta=113\))中评估不同灵敏度计算模式与 Hessian 类型的耗时及梯度准确性。
| 评估配置 / 计算方式 | 单次灵敏度耗时 | 相对前向计算提速 | 梯度与有限差分一致性 | 核心说明 |
|---|---|---|---|---|
| 全前向雅可比 (Forward Jac.) | ~1.30 ms | 1.0× (基准) | 完全一致 | 计算所有 \(n_\theta\) 个参数方向的完整导数 |
| 伴随反向 (Adjoint 1 seed) | ~0.52 ms | 2.5× | 完全一致 | 端到端训练标准反传方式,仅需单次回代 |
| 伴随反向 (Adjoint 10 seeds) | ~0.75 ms | 1.7× | 完全一致 | 随种子数增加因 \(J^\top\) 乘法逐渐趋平 |
| Gauss-Newton 近似 (IFT + GN) | ~0.52 ms | 2.5× | 严重失真 (错误) | 忽略非线性动力学二阶曲率,导致反传梯度符号颠倒 |
关键发现¶
- 在约束激活比例达到 7.3% 的严苛场景下(\(u_{\max}=1.0\)),传统基于主动集启发的 iLQR(mpc.pytorch)因缺乏从猜测集中正确弹出约束的机制而发生收敛震荡,acados 展现出了内点法极高的确定性数值鲁棒性与超三个数量级的性能优势。
- 在质点链实验中,单次伴随灵敏度评估相比全前向敏感度提速约 2.5 倍,这意味着在反向传播驱动的强化学习或模仿学习外环中,无需展开整个控制序列即可极低开销地获得参数梯度。
- 严谨的消融对比证明,当系统具有非线性动力学时,基于 Gauss-Newton 近似 Hessian 的 IFT 求导与有限差分真值完全背离,证实了采用精确拉格朗日 Hessian 的不可替代性。
亮点与洞察¶
- 两求解器解耦范式:将“寻找最优工作点”与“在工作点处微分”彻底拆解为独立阶段,前向阶段可随意使用启发式 Gauss-Newton 阻尼求解,求导阶段则干净地重构精确 Hessian,彻底化解了算法收敛性与导数准确性的固有矛盾。
- 内点松弛作为反传正则项:揭示了内点法障碍参数 \(\tau_{\min}\) 不仅是一个优化收敛阈值,更可作为端到端学习中调节策略平滑度、防止非凸流形梯度截断的自适应超参数。
- OCP 结构原语的极致加速:通过将伴随右端项代数变换嵌入 HPIPM,直接复用 Riccati 分解,将计算复杂度牢牢压制在时域长度 \(N\) 的线性阶,避免了通用稀疏或稠密线性求解器的巨额开销。
局限与展望¶
- 硬件局限:目前实现仅支持 CPU 多核 OpenMP 并行,由于 acados 专为嵌入式低功耗 C 代码设计,缺乏针对大批量训练的大规模 GPU 原生张量核优化。
- 离散时间动力学限制:当前要求系统动力学方程以离散形式(如 CasADi 符号图)显式给定,acados 内置的高性能 Runge-Kutta 连续积分器尚不支持直接微分该灵敏度传播流。
- 未来方向:作者团队正计划将该灵敏度引擎与保守雅可比(Conservative Jacobians)理论结合,并在连续时间高阶 DAE 积分器中推广通用可微接口。
相关工作与启发¶
- vs mpc.pytorch (Amos et al., 2018):mpc.pytorch 仅支持带输入界限的仿射系统和二次代价,并在灵敏度中错误复用了 GN-Hessian;本文支持通用非线性状态/控制约束与任意参数化动力学,采用精确 Hessian 并通过内点平滑解决非光滑性,提速 3× 至 1000×。
- vs cvxpygen / cvxpylayers (Agrawal et al., 2019 / Schaller et al., 2025):cvxpy 系列严格受限于凸规划范式(如二次规划或锥规划),无法处理非线性非凸控制问题,且通用求解器未针对控制时域结构进行 Riccati 分解优化。
- vs Theseus (Pineda et al., 2022):Theseus 面向通用非线性最小二乘,但仅通过软惩罚项处理约束;本文原生支持硬约束下的严格内点平滑与精确对偶乘子敏感度。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首次系统性提出结合内点平滑与精确 Hessian 的通用非线性 OCP 可微框架,理论严密。
- 实验充分度: ⭐⭐⭐⭐⭐ 涵盖数值真实性检验、两款主流 SOTA 可微求解器对比及高维参数伴随耗时剖析。
- 写作质量: ⭐⭐⭐⭐⭐ 数学推导深入清晰,定理与假设前提交代极其完备。
- 价值: ⭐⭐⭐⭐⭐ 开源集成于顶级控制软件 acados,为机器人安全强化学习与自适应控制提供了颠覆性的工程基石。