打破误差循环: 解耦梯度如何彻底改变基于模型的强化学习
在机器人技术领域,我们一直在追逐一个特定的梦想: 让机器人能够在几分钟内,而不是几天内,学会像跑酷或双足行走这样复杂的敏捷行为。
强化学习 (RL) 已经为我们带来了一些令人惊叹的成果,但它代价高昂: 样本效率低下。像 PPO (近端策略优化) 这样的标准“无模型”算法就像试错机器。它们尝试一个动作,观察结果,然后稍微调整行为。这种方法行之有效,但通常需要数百万次甚至数十亿次的交互才能收敛。
为了加速这一过程,研究人员将目光投向了可微模拟器 。 想象一下,如果机器人能在数学上确切地知道物理规律是如何运作的。它就可以计算奖励相对于其动作的导数,并一步完成精确的大幅更新 (一阶更新) ,而不是盲目猜测。然而,为具有接触物理特性 (如脚触地) 的复杂环境构建完全可微的模拟器是非常困难的。
这就引入了基于模型的强化学习 (MBRL) , 即机器人学习其自身的世界模型。这听起来很完美,但它有一个致命的缺陷: 复合预测误差 。 如果机器人的内部模型在第 1 步稍微有点偏差,那么在第 10 步就会错得离谱。“想象”出来的轨迹会与现实背道而驰,机器人最终会学到一个针对不存在的幻想世界的策略。
今天,我们将深入探讨一篇研究论文,该论文提出了一个巧妙的解决方案来解决这一困境: 解耦前向后向基于模型的策略优化 (DMO) 。

如图 1 所示,这种方法足够稳健,不仅能教四足机器人行走,还能让它执行动态动作,甚至用两条腿保持平衡——这是一项需要高精度控制的壮举。
核心问题: 梯度与现实的对立
要理解 DMO,我们首先需要理解轨迹生成与梯度计算之间的张力。
目标
在强化学习中,我们的目标是找到一个策略 \(\pi\),使未来奖励的总期望值最大化。在数学上,它是这样的:

为了高效地优化这一点,我们需要使用梯度上升 。 我们希望对这个总回报关于策略参数 \(\theta\) 求导。这就是事情变得棘手的地方。

看上面的公式。为了计算梯度,我们需要知道状态 \(s\) 如何随着参数 \(\theta\) 的变化而变化 (即项 \(\frac{ds}{d\theta}\)) 。
在标准的物理引擎中,这种关系通常是一个“黑盒”。你给它一个动作,它给你下一个状态,但它不会告诉你那个转换的数学斜率 (导数) 。
“复合误差”这一罪魁祸首
传统的一阶梯度 MBRL (FoG-MBRL) 试图通过学习一个神经网络 \(\hat{f}\) 来近似物理引擎解决这个问题。机器人使用这个学习到的模型来“想象”一系列步骤 (推演) :
- 从 \(s_0\) 开始。
- 使用策略获得 \(a_0\)。
- 使用学习到的模型预测 \(\hat{s}_1\)。
- 使用策略获得 \(a_1\)。
- 使用学习到的模型预测 \(\hat{s}_2\)……以此类推。
问题在于 \(\hat{f}\) 永远不会是完美的。\(\hat{s}_1\) 中的误差会馈送到 \(\hat{s}_2\) 的预测中,从而放大误差。当你到达第 20 步时,预测的状态可能在物理上是不可能的。如果你基于这个产生幻觉的轨迹来优化策略,你的策略在现实世界中就会失败。
解决方案: 解耦前向和后向传播
DMO 的作者提出了一个令人惊讶的优雅修复方案: 不要使用学习到的模型来生成轨迹。
相反,他们将该过程解耦为两个不同的阶段:
- 前向传播 (轨迹展开) : 使用高保真模拟器 (如 Isaac Gym 或 MuJoCo) 生成轨迹。即使模拟器不可微,它也是准确的。这确保了状态 \(s_t\) 是真实的、物理上有效的状态。
- 后向传播 (梯度计算) : 仅在反向传播期间使用学习到的可微模型来计算梯度。
通过这样做,DMO 确保了梯度是在状态空间中的有效点局部计算的,从而防止了导致传统基于模型的方法失效的“漂移”。
数学原理
让我们分解一下梯度计算。我们需要计算下一个状态相对于策略参数的变化。链式法则告诉我们:

在这个公式中:
- \(f(s,a)\) 是动力学函数。
- 我们需要偏导数 \(\frac{\partial f}{\partial s}\) 和 \(\frac{\partial f}{\partial a}\)。
DMO 用学习到的模型 \(\hat{f}_\phi\) 的导数替换了真实的动力学导数。学习到的模型被训练为输出下一个状态的分布:

该模型的训练仅仅通过最大化经验回放缓冲区中观察到的转换的似然性:

“梯度交换”技巧
这个概念的实现是工程魔术发生的地方。在 PyTorch 等框架中,计算图是在运行前向传播时自动构建的。但在这里,我们希望前向传播使用一个函数 (模拟器) ,而后向传播使用另一个函数 (学习到的模型) 。
作者使用“梯度交换函数”实现了这一点。
- 前向: 算法获取状态 \(s_t\) 和动作 \(a_t\)。它向模拟器请求真实的下一个状态,我们称之为 \(s_{t+1}^{real}\)。它也向学习到的模型请求预测的下一个状态 \(s_{t+1}^{pred}\)。
- 构建图: 它丢弃 \(s_{t+1}^{pred}\) 的值,但保留 \(s_{t+1}^{real}\)。然而,它欺骗软件,让软件认为 \(s_{t+1}^{real}\) 来自学习到的模型图。
- 后向: 当 PyTorch 计算梯度时,它查看图。它看到了学习到的模型组件,并将梯度流回 \(\hat{f}_\phi\)。
这使我们能够按如下方式近似梯度:

具体来说,我们使用学习到的模型的导数来近似模拟器的导数, 并在真实的模拟器状态下进行评估 :

这导致了链式法则中的一个清晰替换:

通过在真实状态 \(s_t\) (由模拟器提供) 而不是预测状态 \(\hat{s}_t\) (可能包含误差) 上评估学习到的模型的导数,梯度估计保持了准确性和低方差。
算法变体: BPTT, SHAC 和 SAPO
DMO 框架非常灵活。作者通过将其应用于三种不同的优化策略证明了其有效性:
DMO-BPTT: 这是最简单的版本。它截断轨迹并在奖励总和上计算梯度。它很轻量,但在长期视界或稀疏奖励方面表现不佳。

DMO-SHAC: 这是基于 SHAC 算法构建的。它在截断轨迹的末尾添加了一个学习到的价值函数 (评论家) 。这有助于机器人考虑超出短推演视界的长期奖励。

DMO-SAPO: 专为重探索环境设计,该版本在目标中添加了熵正则化 (鼓励机器人尝试不同的动作) 。

评论家 (价值函数) 被同时训练以预测预期的未来回报,最小化其预测与实际回报之间的误差:

实验结果
研究人员使用 DFlex 模拟器和 Isaac Gym 在一系列困难的控制任务中测试了 DMO。环境包括标准的 Ant (蚂蚁) 、Hopper (单腿跳跃者) 和 Cheetah (猎豹) ,以及复杂的 Humanoids (人形机器人) 和灵巧手 Allegro Hand。

样本效率
最引人注目的结果是 DMO 的样本效率。在强化学习中,“样本效率”指的是机器人学习一个好策略需要多少数据点 (模拟步骤) 。
看看下面的对比:

在左图中:
- DMO (蓝线): 几乎立即飙升,在不到 400 万个样本内解决了任务。
- PPO (绿线): 一个标准的无模型基线。在相同的样本预算内,它几乎没有起色。
- MAAC (红线): 一种传统的基于模型的方法。它的表现比 DMO 差,可能是由于 DMO 避免了复合误差问题。
在右图中 (消融实验) : 这是科学上的铁证。“Model-Based Forward”线 (橙色) 代表与 DMO 完全相同的算法,但没有解耦 (即前向传播使用学习到的模型) 。性能差距是巨大的。这证明了解耦轨迹生成与梯度估计是驱动性能的关键因素。
墙上时间 (实际运行时间)
样本效率固然好,但有时复杂的基于模型的方法计算速度很慢。然而,DMO 有效地利用了 GPU 并行性。

即使允许 PPO 在多 40 倍的数据上训练 (1.6 亿样本 vs DMO 的 400 万) ,DMO 通常也能达到更高的最终回报。至关重要的是,右图显示,与基线相比,DMO (蓝色) 在现实世界时间 (分钟) 内更快地达到了这些结果。
梯度近似真的有效吗?
你可能会问: “如果我们使用学习到的模型来猜测梯度,梯度难道不会错吗?”
作者通过将 DMO 梯度与 DFlex 可微模拟器提供的真实解析梯度进行比较来测试这一点。

右图显示了“余弦相似度”,它衡量了 DMO 梯度与真实梯度指向同一方向的程度。
- 蓝线 (True vs. DMO) 保持在较高水平 (0.7 以上) ,表明近似非常准确。
- 橙线显示了如果你在前向传播中使用学习到的模型会发生什么。相似度显着下降,证明了有效的状态轨迹对于准确的梯度估计至关重要。
现实世界部署: Go2 机器人
模拟结果令人鼓舞,但机器人论文的真正考验是硬件部署。作者将 DMO 训练的策略部署到了 Unitree Go2 四足机器人上。
他们解决了两个截然不同的挑战:
- 四足行走: 标准的移动任务。
- 双足平衡: 一个更难的任务,机器人必须用后腿站立并保持平衡。
因为真实的机器人 (以及用于它的 Isaac Gym 模拟器) 是不可微的,像 SHAC 这样的方法不能直接应用。然而,DMO 在这里完美运行,因为它只需要模拟器输出状态,不需要梯度。
结果令人印象深刻。机器人成功地将敏捷行为从模拟转移到了现实中。

在上图中,查看“Go2Env”和“Go2BipedalEnv”图表,DMO (蓝色) 展示了强大的学习曲线,高效地解决了 PPO 难以应对的任务。
结论与启示
DMO 论文为强化学习中的混合架构提出了令人信服的论据。通过结合模拟器的最佳部分 (精确的物理集成) 和神经网络的最佳部分 (可微优化) ,我们可以打破样本效率和稳定性之间的权衡。
以下是给学生和从业者的主要启示:
- 解耦是强大的: 你不需要可微模拟器来执行一阶优化。你可以学习一个局部导数模型。
- 复合误差很重要: 在传统的 MBRL 中,微小的误差会累积。在前向传播过程中每一步都将状态重置为“真实”模拟器状态,可以消除这种漂移。
- 仿真到现实的可行性: DMO使得在复杂的、不可微的模拟器 (通常能更好地模拟现实世界的摩擦和接触) 上训练策略成为可能,同时仍享受基于梯度的学习速度。
这种方法为机器人学习高度动态的技能 (如跑酷或灵巧操作) 铺平了道路,而无需传统上阻碍该领域的数周训练时间。随着模拟器变得更加逼真 (计算量也更大) ,像 DMO 这样高效的方法对于弥合模拟与现实世界之间的差距将至关重要。
](https://deep-paper.org/en/paper/2509.00215/images/cover.png)