CoRL 2026 · 人形机器人 · 基于模型的强化学习

SuperMimic:用一个可微世界模型扩展人形全身控制

Scaling Humanoid Whole-Body Control with One Differentiable World Model

Qiayuan Liao, Yiyang Shao, Junfeng Long, Kevin Zakka, Roberto Horowitz, Pieter Abbeel, Koushil Sreenath · UC Berkeley arXiv 2610.28480 项目主页(含网页 demo 与视频)
一句话:几万条人类动作各不相同,但背后是同一个机器人、同一套刚体接触动力学。SuperMimic 把这套共享动力学学成一个可微的神经网络世界模型,让策略梯度直接从模型里反传出来,于是单张 GPU 三小时就超过了用 128 张 GPU 训练七天的基线 SONIC,GPU 小时数少 1000 倍以上。
论文图 1:左侧为世界模型想象滚动中的人形机器人叠影,右侧对比 128 张 L40 训练 168 小时与 1 张 H100 训练 3 小时
论文 Figure 1。左:策略在世界模型的"想象"中滚动并改进。右:SONIC 用 128 张 L40 训练 168 小时,SuperMimic 用 1 张 H100 训练 3 小时。

1. 背景:动作跟踪为什么这么贵

目前训练"通用"人形全身控制器的主流路线叫动作跟踪(motion tracking):给策略一段人类动作捕捉(mocap)片段当参考,策略输出每个关节的目标位置,奖励就是机器人当前姿态和参考动作像不像。代表工作有 DeepMimic、PHC、BeyondMimic 和 SONIC。经验规律是:动作库越大越多样,训出来的控制器越强。

代价是算力。SONIC 用无模型强化学习(PPO)直接在仿真器里暴力训练,用了 128 张 L40 跑 7 天,约 21,000 GPU 小时。作者指出问题所在:PPO 把仿真器当黑箱,对每条动作都要靠大量随机采样去"重新摸索"动作的后果;而所有动作共享的那套刚体动力学结构,PPO 从来没有显式利用。于是扩展动作库等价于扩展算力。

≈21,000
SONIC 的 GPU 小时
128 × L40,168 h
3
SuperMimic 超过 SONIC 所需 GPU 小时
1 × H100
>1000×
GPU 小时缩减(实际约 7200×)
墙钟时间约 56×

2. 核心思想:学一个共享的、可微的动力学模型

既然动力学是共享的,就专门学一个神经网络 \(f_\omega\) 来表示它,并且这个网络是可微的。这样策略改进就不必再靠采样估计梯度,而是把"想象中的累积回报"对策略参数直接求导。训练是一个三阶段循环,三部分同时更新,而不是先学好模型再学策略:

  1. 采数据当前策略在 MuJoCo Warp(GPU 版 MuJoCo)里跑,把 (状态, 带噪声的动作, 仿真上下文 ξ) 存入固定大小的回放缓冲区,新数据替换最旧的。动作噪声只是为了让模型见过更宽的动作范围。
  2. 拟合世界模型从缓冲区抽长度 8 步的短窗口,自回归地训练 \(f_\omega\)。因为动力学与"是哪个策略采的数据"无关,旧策略的数据始终有效。
  3. 改进策略冻结 \(f_\omega\),从缓冲区里一个真实状态出发,在想象中滚动 H = 32 步,把回报通过时间反向传播(BPTT)到策略参数;32 步之外的回报由一个 critic 估计。
论文图 2:三阶段训练循环,采数据、拟合世界模型、改进策略,底部是共享的回放缓冲区
论文 Figure 2。雪花表示冻结,火焰表示在训练。阶段 (3) 里世界模型冻结、策略在训练,虚线箭头是梯度流。
关键点:梯度来自学到的模型,而不是对仿真器求导。所以它不要求仿真器可微,接触再不光滑、实现再不可导都没关系。这是和 SHAC 这类"可微仿真器"方法的本质区别。

3. 世界模型:仿真器的可微替身

世界模型由一个动力学网络和奖励、观测、终止三个输出头组成,每个头要么学出来、要么直接解析计算:

\[\hat s_{t+1}=f_\omega(\hat s_t,a_t,\xi),\qquad \hat r_{t+1}=r_\omega(\hat s_t,a_t,g_t),\qquad \hat{\bar o}_t=g_\omega(\hat s_t,\xi),\qquad \hat d_t=d_\omega(\hat s_t,g_t)\]

拟合损失(论文公式 1):从记录的状态 \(s_0\) 出发,按记录的动作往前滚 8 步,让每一步的状态、奖励、观测、终止都贴近仿真结果:

\[\mathcal L_{\mathrm{WM}}(\omega)=\mathbb E_{\mathcal B}\sum_{j=1}^{8}\Big[\,\|\hat s_j-s_j\|^2+(\hat r_j-r_j)^2+\|\hat{\bar o}_j-\bar o_j\|^2+\mathrm{BCE}(\hat d_j,d_j)\Big]\]

8 步自回归训练让模型学会修正自己的误差,所以虽然只在 8 步窗口上拟合,实际滚动 32 步甚至无限长也保持稳定。

4. 策略学习:短视野 BPTT + critic 自举

每次策略更新时模型参数冻结。从回放缓冲区的真实状态和它记录的 ξ 出发,模型每步给出去噪观测,加回传感器噪声,策略 \(a_t=\pi_\theta(\hat{\bar o}_t+\eta_t,\,g_t)\) 出动作。目标函数(论文公式 2)是 32 步折扣奖励和,加上 critic 对剩余回报的估计:

\[\hat J(\theta)=\mathbb E\Big[\sum_{t=0}^{H-1}\gamma^t\,\hat c_t\,\hat r_{t+1}+\gamma^H\,\hat c_H\,V_\psi(\hat s_H,g_H,\xi)\Big],\qquad H=32\]

整条链路可微,所以 BPTT 通过模型对 \(\hat s_t\) 和 \(a_t\) 的雅可比就能算出一阶梯度 \(\nabla_\theta\hat J\)。critic 用只在想象转移上计算的 GAE 回报拟合(公式 3),没有目标网络。奖励沿用 BeyondMimic 的动作跟踪奖励,去掉自碰撞惩罚。

PPO(无模型)

  • 动力学是黑箱
  • 用似然比 \(\nabla_\theta\log\pi_\theta\cdot\hat A\) 估计梯度
  • 需要随机策略和大量采样
  • 方差大

BPTT 穿过世界模型

  • 动力学是可微网络
  • 直接对每一步动作求导
  • 策略是确定性的
  • 短视野下方差低得多

这个结构接近 SHAC 的短视野 actor-critic,差别是:用学到的模型代替可微仿真器;用软存活权重代替硬终止;critic 没有 EMA 目标网络。以前用解析梯度做动作控制的工作(SuperTrack、ControlVAE)往往不用 critic,只优化 H 步奖励和,作者在第 7 节说明这会让策略短视。

5. 主结果:3 小时单卡超过 SONIC

论文图 3:(a) 归一化回报随 GPU 小时变化,SuperMimic 在 3 小时越过 SONIC 的 0.90 虚线;(b) 达到目标回报所需 GPU 小时随数据量缓慢增长;(c) 8 步预测误差随数据量保持稳定
论文 Figure 3。(a) SuperMimic 一卡、两卡的回报曲线与 SONIC 公开 checkpoint(虚线 0.90),同一个 129,514 条动作的基准。(b, c) 数据从 1 小时扩到 264 小时,所需算力缓慢增长,预测误差几乎不变。
SONIC 公开 checkpointSuperMimic 1×H100, 3 hSuperMimic 2×H100, 9.8 h
训练方式PPO,无模型BPTT 穿过学到的世界模型
硬件 / 时长128 × L40,168 h1 × H100,3 h2 × H100,9.8 h
GPU 小时≈21,0003≈20
动作数据611 h264.56 h(BONES-SEED 公开子集)
失败动作 / 129,514179250

作者对公平性的说明。两边数据量差 2.3 倍,H100 对 L40 的峰值算力最多差 5.5 倍,这两项加起来解释不了 1000 倍的差距。3 小时这个数字取得保守:从 3 小时起之后每个 checkpoint 都领先 SONIC 至少一半差距。基准上的 129,514 条都是训练集动作,所以失败数衡量的是覆盖率而非泛化。

受控对比:同设定下 PPO 堆卡也追不上

论文图 4:(a) LAFAN1 上 SuperMimic 与 1/4/8 卡 PPO-Sim 的回报随墙钟时间;(b, c) 不同想象视野 H 下有无 critic 的最终回报和到达 0.82 的小时数
论文 Figure 4。(a) LAFAN1 的 40 条动作。PPO-Sim 与 SuperMimic 共用动作、观测、奖励、终止、域随机化、网络大小和评估协议。(b, c) 用于第 7 节的 critic 分析。

SuperMimic 单卡 1.2 小时达到回报 0.82。PPO-Sim 在 18 小时预算内都没达到:1 卡最终 0.60,4 卡 0.70,8 卡 0.72,从 4 卡到 8 卡几乎没有提升。

6. 为什么快:三个因素

论文图 5:(a) 世界模型与 MuJoCo Warp 每秒步数随并行环境数变化,常用区间快 11 到 26 倍,64k 时快 62 倍;(b) 同在世界模型上训练,BPTT 比 PPO 少约 64 倍想象步数
论文 Figure 5。(a) 一步是一个 50 Hz 控制步(MuJoCo Warp 算四个 5 ms 子步),世界模型用 TF32。(b) PPO-WM 是在世界模型滚动上跑 PPO,四种批量里 16k×32 最好。
  1. 一个模型摊销整个动作库。数据从 1 小时扩到 264 小时,8 步预测误差始终在 0.007 到 0.011 之间。每条动作都由同一个机器人执行,新增片段只是给共享的身体和接触动力学提供更多证据,不需要新容量。
  2. 想象比仿真快。常用批量(2k 到 16k 并行环境)下世界模型比 MuJoCo Warp 快 10 倍以上,64k 并行时快 62 倍,此时 MuJoCo Warp 的吞吐已经饱和。
  3. 解析梯度本身更高效。这是机制消融:同样在世界模型上训练,BPTT 比 PPO 少约 64 倍想象步数就达到同样回报。所以收益不只是因为滚得快。

7. critic 的作用:更短的视野,还能抗推

回到 Figure 4(b, c)。没有 critic 时 H ≤ 16 训练失败;有 critic 时 H = 16 就能和无 critic 的 H = 32 打平,H = 32 最快到达 0.82。把 H 加到 128(H100 上能放下的最长视野)反而耗时近三倍、最终回报更低。

更有意思的是行为差异。在仿真里让机器人保持 T 字姿势并施加 0.5 到 4 m/s 的推力:带 critic 的策略 0.5 到 2.4 秒内站稳;无 critic 的策略在 0.5 m/s 就一直踉跄,4 m/s 时摔倒。原因是恢复平衡的奖励常常落在 32 步窗口之外,只有 critic 看得到。

8. 真机:一个策略直接上 Unitree G1

论文图 6:真实 Unitree G1 的四行连续帧,分别是跳跃式单脚跳、侧滚、90 度翻转和原地 360 度空翻
论文 Figure 6。(a) 跳跃式单脚跳 (b) 躯干和四肢着地的侧滚 (c) 90° 翻转 (d) 原地 360° 空翻。同一个策略,不做逐动作调参。

世界模型只从仿真数据学,但它条件在域随机化参数 ξ 上,策略在想象中就见过不同摩擦和质心,所以零样本迁移到真机。项目主页另有"世界模型 vs 仿真器"的并排预测视频,包括关闭策略后摔倒和摩擦系数 0.3 的滑地面两种情况。

9. 下游任务:RL 训练的速度编码器 vs 蒸馏

同一个世界模型还能训练别的目标接口。作者做了一个初步实验:一个速度指令编码器,与动作跟踪接口共享解码器和世界模型。两种训练方式对比:

论文图 7:三个速度指令平面上的 672 个阶跃响应,蓝圈表示 RL 编码器更好,橙圈表示蒸馏更好,黑圈表示蒸馏摔倒
论文 Figure 7。672 个阶跃响应里 RL 编码器稳态误差更低的有 650 个,蒸馏编码器 15 个;只有蒸馏编码器出现摔倒(7 次,都在动作库几乎没有数据的快速转向上)。

10. 局限(作者自述)与我的看法

从读者角度补两点。第一,这篇文章的新意不在奖励或网络结构,而在于把"共享可微动力学模型 + 短视野 BPTT + critic 自举"这套基于模型的 RL 配方第一次在大规模人形动作跟踪上做通并上真机,相关思路在 SuperTrack、ControlVAE、SuperDyno 等角色动画工作中已有雏形。第二,截至写作时项目主页未给出代码和数据下载链接,复现需要自己搭 MuJoCo Warp 管线和 BONES-SEED 数据。

第二部分:基础概念与符号表

先把后面公式里反复出现的概念用白话讲一遍,再给一张符号总表。读第三部分遇到不认识的符号,回来查这张表就行。

C1. 强化学习的基本对象

状态、观测、动作

状态 \(s_t\) 是时刻 \(t\) 机器人在仿真里的完整物理状况:所有关节的角度和角速度、骨盆在世界里的位置姿态和速度等。知道了 \(s_t\) 和接下来的动作,物理定律就能唯一决定 \(s_{t+1}\)。

观测 \(o_t\) 是策略实际"看得到"的那部分。真机上没有动捕,机器人只知道自己的关节编码器、IMU 读数,不知道自己在世界里的绝对位置。所以 \(o_t\) 比 \(s_t\) 少很多信息,这就是"部分可观"(POMDP 里的 PO)。论文里 \(o_t\) 是 93 维,策略看最近 10 帧。

动作 \(a_t\) 是策略的输出,29 维,对应 G1 的 29 个关节。它不是直接的力矩,而是经过 \(q^{\mathrm{sp}}=\alpha a_t+q^0\) 变成关节目标位置,再由低增益 PD 控制器转成力矩。

策略 \(\pi_\theta\)

策略就是"看到观测、给出动作"的函数,\(\theta\) 是它的神经网络参数。这里的策略是确定性的:同样的输入永远给同样的输出。PPO 用的是随机策略(输出一个高斯分布再采样),两者在求梯度的方式上完全不同,后面会讲。

策略还接收目标 \(g_t\):对动作跟踪来说就是"接下来 10 帧参考动作长什么样"。写成 \(a_t=\pi_\theta(o_t,g_t)\)。

奖励、回报、折扣

奖励 \(r_{t+1}\) 是每一步得到的分数,这里主要是"身体各部分和参考动作有多像",越像越接近 1。

回报 \(J\) 是把未来所有奖励加起来,但远处的奖励打折:\(J=\sum_t\gamma^t r_{t+1}\)。折扣 \(\gamma=0.99\) 的意思是每往后一步奖励的价值乘 0.99;100 步(2 秒)之后的奖励只值当前的 37%。这样和既让策略看长远,又让总和有限。

强化学习的目标就是调 \(\theta\) 让回报的期望最大。所有方法的区别都在"怎么估计回报对 \(\theta\) 的梯度"。

终止与存活权重

摔倒或偏离参考太远,回合就终止,\(d_t=1\),之后没有奖励。为了让这件事可以进公式,定义存活权重 \(c_t\):开始为 1,每一步乘以 \((1-d_{t+1})\),终止后变 0。于是回报可以写成 \(\sum_t\gamma^t c_t r_{t+1}\),终止后的项自动归零。

在世界模型里,终止是预测出来的概率 \(\hat d_t\in[0,1]\) 而不是 0/1,于是 \(\hat c_t\) 是连续量,能对策略参数求导。这就是论文说的"软存活权重"。

价值函数 / critic \(V_\psi\)

\(V_\psi(s)\) 回答一个问题:从状态 \(s\) 出发,按现在的策略走下去,期望还能拿多少折扣回报?\(\psi\) 是这个网络的参数。它叫 critic(评论家),因为它只打分不行动。

它的用途是自举(bootstrap):当我们只愿意往前算 32 步时,第 32 步之后的回报用 \(V_\psi(\hat s_{32})\) 一个数代替。没有它,策略只会在乎 32 步内的奖励,叫"短视"。

C2. 世界模型是什么

仿真器 vs 世界模型

MuJoCo 这样的仿真器是用物理方程写出来的:给它当前状态和动作,它算碰撞、求解约束、积分一步,给出下一个状态。它很准,但两点不好用:一是慢(接触求解贵),二是不可微,意思是你没法问它"动作改一点点,下一状态会怎么变",因为接触的开关是不连续的。

世界模型是一个神经网络 \(f_\omega\),用仿真器产生的大量 \((s_t,a_t)\to s_{t+1}\) 数据训练,学会模仿仿真器:"给我当前状态、动作和这回合的物理参数 \(\xi\),我预测下一个状态。" \(\omega\) 是它的参数。它是仿真器的替身,神经网络天然可微、而且一次前向能并行算几万个环境,比仿真器快 10 到 60 倍。

论文里的"世界模型"除了 \(f_\omega\) 还配了三个头:预测奖励 \(\hat r\)、预测观测 \(\hat{\bar o}\)、预测终止概率 \(\hat d\)。四个一起,就能在不碰仿真器的情况下"想象"一整段轨迹。

为什么要"可微"

想象你调策略参数 \(\theta\) 一点点,动作 \(a_0\) 变了一点,于是 \(s_1\) 变一点,\(a_1\) 跟着变,\(s_2\) 变……最后回报变了多少?如果每一环都可导,链式法则就能把"回报对 \(\theta\) 的导数"精确算出来,这叫解析梯度。

PPO 做不到这点,因为仿真器是黑箱。它只能让策略随机试很多动作,看哪些动作之后回报高就加大其概率,这是似然比估计:\(\nabla_\theta\log\pi_\theta(a\mid o)\cdot\hat A\)。它的噪声很大,需要海量样本。

所以世界模型的价值不只是快,更在于它让"直接求导"成为可能。Figure 5(b) 的消融就是证明:同样在世界模型里训练,直接求导比 PPO 少 64 倍样本。

BPTT:通过时间反向传播

把 32 步想象展开成一条长链:\(s_0\to a_0\to \hat s_1\to a_1\to\hat s_2\to\cdots\to\hat s_{32}\)。每个箭头要么是策略网络、要么是世界模型网络。回报是这条链上所有 \(\hat r\) 的加权和。

反向传播从链尾出发,一步步把"回报对 \(\hat s_{32}\) 的导数"传给 \(\hat s_{31}\),再传给 \(a_{31}\) 和 \(\hat s_{30}\)……每经过一次 \(f_\omega\) 就乘一次它的雅可比矩阵 \(\partial\hat s_{t+1}/\partial\hat s_t\)。这就是 BPTT,和训练 RNN 一模一样。

问题也一样:32 个雅可比连乘很容易爆炸或消失。论文的应对是两道梯度裁剪、短视野 \(H=32\) 加 critic 补尾巴、8 步自回归训练让模型平滑。

想象 rollout、回放缓冲区、Dyna

想象 rollout 就是在世界模型里跑出的一段轨迹,相对于在仿真器里跑的"真实 rollout"。

回放缓冲区 \(\mathcal B\) 是一个大队列,存仿真器里发生过的转移。它有两个用途:训练世界模型的数据来源;想象 rollout 的起点来源(起点是真实状态,模型只负责往后推 32 步,不必从零编造姿态)。

这种"真实数据训模型,从真实状态出发在模型里想象,用想象更新策略"的套路叫 Dyna(Sutton 1990)。

自回归训练 vs teacher forcing

训练序列模型有两种喂法。Teacher forcing:每一步都给真实的 \(s_t\) 作输入,只预测一步。自回归:只给起点 \(s_0\),之后每一步输入模型自己上一步的预测 \(\hat s_t\)。

论文用自回归 8 步。好处是模型在训练时就见过"自己的误差",学会纠偏,所以在想象里滚 32 步不会漂走。

sim context \(\xi\) 与域随机化

域随机化是 sim-to-real 的常规手段:每回合随机抽摩擦系数、质心偏置等物理参数,让策略在各种"版本"的机器人上都能工作,真机就落在这个范围里。

对世界模型来说,这些参数如果不告诉它,同一个 \((s,a)\) 在不同回合会得到不同的 \(s'\),模型只能学个平均。论文把这些参数拼成向量 \(\xi\) 直接喂给模型,于是模型对每个回合都是确定的函数。这就是"随机性来源已知,所以模型可以是确定性的"。

GAE:critic 的训练目标怎么来

要训 \(V_\psi\),得有"正确答案"。一步目标 \(\hat r_{t+1}+\gamma V_{t+1}\) 偏差大、方差小;直接把 32 步奖励加起来偏差小、方差大。GAE(\(\lambda\)) 用 \(\lambda=0.95\) 在两者之间做几何加权平均,递推式就是第 14 节的 \(\hat R_t\) 公式:从链尾 \(\hat R_H=V_H\) 开始,每往前一步把下一步的目标和 critic 估值按 \((\lambda,1-\lambda)\) 混合再加当前奖励。

C3. 符号总表

约定:带帽子 \(\hat{\ }\) 的量是世界模型预测的版本,不带帽子的是仿真器里的真实值;带横线 \(\bar{\ }\) 的观测是去掉传感器噪声的版本;下标 \(t\) 是时刻,\(j\) 是世界模型训练窗口内的步数,\(b\) 是刚体编号。

符号读法含义
状态与观测
\(s_t\)s仿真器的完整物理状态。
\(\hat s_t\)s hat世界模型预测的状态。想象里第 0 步 \(\hat s_0=s_0\) 取真实值。
\(o_t\)o带噪观测,策略真正看到的输入(93 维 × 10 帧)。
\(\bar o_t\)o bar去噪观测,\(o_t=\bar o_t+\eta_t\)。
\(\hat{\bar o}_t\)o bar hat世界模型预测的去噪观测,再加噪声后喂给策略。
\(\eta_t\sim\rho_\eta\)eta传感器噪声,按 Table A.1 的均匀分布采样,仿真和想象里都加。
\(g_t\)g目标。动作跟踪里是未来 10 帧参考动作;速度接口里是速度指令。
\(\xi\)xisim context:该回合的摩擦、关节标定偏移、躯干质心偏置。
动作与策略
\(a_t\)a策略输出的 29 维动作,映射为关节设定点。
\(\epsilon_t\sim\rho_\epsilon\)epsilon只在仿真采数据时加的动作噪声,\(\mathcal N(0,0.1^2)\)。缓冲区存 \(a_t+\epsilon_t\)。
\(\pi_\theta\)pi theta策略网络,参数 \(\theta\)。由目标编码器 enc 和共享解码器 dec 组成。
\(z\)z编码器输出的 32 维潜变量,经 tanh 限幅。
\(q,\ \dot q,\ q^0,\ q^{\mathrm{sp}}\)q关节位置、关节速度、默认姿态、关节设定点。
世界模型
\(f_\omega\)f omega动力学网络,\(\hat s_{t+1}=f_\omega(\hat s_t,a_t,\xi)\)。参数 \(\omega\)。
\(r_\omega,\ g_\omega,\ d_\omega\)奖励头、观测头、终止头,输出 \(\hat r,\hat{\bar o},\hat d\)。可以是网络也可以是解析公式。
\(k=8\)k训练世界模型时自回归窗口的长度。
\(\mathcal L_{\mathrm{WM}}\)L WM世界模型损失,公式 (1)。
\(\mathrm{BCE}(\hat d,d)\)二元交叉熵 \(-[d\log\hat d+(1-d)\log(1-\hat d)]\),训练终止概率。
\(\|x\|^2\)向量 \(x\) 各分量平方和,即欧氏距离的平方。
奖励、回报、终止
\(r_{t+1}\) / \(\hat r_{t+1}\)r执行 \(a_t\) 后得到的奖励(真实 / 预测)。下标 \(t+1\) 表示它在 \(s_{t+1}\) 时结算。
\(d_t\) / \(\hat d_t\)d终止标志。真实值是 0 或 1,预测值是概率。
\(c_t\) / \(\hat c_t\)c存活权重,\(c_0=1,\ c_{t+1}=c_t(1-d_{t+1})\)。
\(\gamma=0.99\)gamma折扣因子。
\(H=32\)H想象视野,每次想象 rollout 的步数。
\(J(\theta)\) / \(\hat J(\theta)\)J策略目标:真实的期望折扣回报 / 在世界模型里算出的 32 步代理目标,公式 (2)。
\(\mathbb E[\cdot]\)期望对随机量取平均。实现里就是对一个 batch 求均值。下标写明对什么取平均,如 \(\mathbb E_{\mathcal B}\) 是对缓冲区采样。
\(\rho_0\)rho 0想象起点的分布,即从缓冲区采样起点的方式。
critic
\(V_\psi(\hat s_t,g_t,\xi)\)V psi价值网络,估计从该状态起的剩余折扣回报。参数 \(\psi\)。
\(V_t\)\(V_\psi(\hat s_t,g_t,\xi)\) 的简写。
\(\hat R_t\)R hatGAE 回报目标,critic 的回归标签,公式 (3)。
\(\lambda=0.95\)lambdaGAE 的混合系数。
\(\mathcal L_V\)L Vcritic 的均方误差损失。
\(\hat A\)A hat优势估计,PPO 公式里用,表示某动作比平均好多少。
奖励公式里的量
\(\mathcal T\)T被跟踪刚体的集合,\(|\mathcal T|\) 是其个数。
\(\mathbf p_b,\ R_b,\ \mathbf v_b,\ \boldsymbol\omega_b\)刚体 \(b\) 的世界系位置、旋转矩阵、线速度、角速度。上标 des 是参考动作里的目标值。
\(\log(R^{\mathrm{des}}R^{\top})\)两个旋转之间的相对旋转取对数映射,得到一个 3 维轴角向量,其范数就是旋转角误差。
\(\exp(-e^2/\sigma^2)\)把误差 \(e\) 变成 0 到 1 的分数,\(\sigma\)(如 0.3、0.4、1.0)控制多大误差算"差"。
\(e_{p,z},\ e_{\mathrm{tilt}}\)终止用的根部高度误差和倾斜误差。
\(\Delta t=0.02\,\mathrm s\)控制周期(50 Hz),每一项奖励都乘它。
优化
\(\theta,\ \omega,\ \psi\)theta, omega, psi策略、世界模型、critic 三组网络参数。
\(\alpha_\theta,\ \alpha_\omega\)alpha对应的学习率。
\(\nabla_\theta\)nabla对 \(\theta\) 求梯度。
\(\partial\hat s_{t+1}/\partial\hat s_t\)世界模型的雅可比矩阵,BPTT 每一步要乘它。

第三部分:实现细节(复现用)

以下内容整理自论文第 3 节和附录 A 到 G。标注 训练 的是该阶段有梯度更新的参数,冻结 的是该阶段只做前向、不更新的参数。凡论文没有明说、属于我的推断的地方,都放在橙色提示框里并注明。

11. 训练链路总览

整个系统只有一个外层循环。每一次迭代依次做三件事,三件事共享同一个回放缓冲区 B。没有"先预训练世界模型再训练策略"的分期,世界模型 ω 和策略 θ 每次迭代都更新;ω 只在策略的反向传播里被停梯度(Algorithm A.1 的说明原文)。

阶段做什么训练冻结 / 只前向数据来自损失
1 采数据策略在 MuJoCo Warp 里跑,转移写入 B无\(\pi_\theta\)、仿真器4096 个并行环境,起点按 return-based reset 采样无
2 拟合世界模型从 B 抽 8 步窗口,自回归预测并回归仿真结果\(f_\omega\)(以及若有学习头:\(r_\omega\)、\(g_\omega\)、\(d_\omega\))无(不涉及策略)B 中任意时期的转移,含旧策略数据\(\mathcal L_{\mathrm{WM}}\),公式 (1)
3a 改进策略从 B 的真实状态出发在 \(f_\omega\) 里想象 32 步,BPTT\(\pi_\theta\)(含目标编码器与共享解码器)\(f_\omega\)(停梯度)、\(V_\psi\)(作为终端值,是否停梯度见第 23 节)B 中的起点状态与其记录的 ξ−\(\hat J(\theta)\),公式 (2)
3b 拟合 critic对同一批想象轨迹算 GAE 目标,回归\(V_\psi\)\(f_\omega\)、\(\pi_\theta\)(轨迹已生成)阶段 3a 刚生成的想象轨迹\(\mathcal L_V\),公式 (3)
flowchart LR
  subgraph S1["阶段 1 · 采数据"]
    SIM["MuJoCo Warp
4096 envs"] -->|"(s_t, a_t+ε_t, ξ, r, d, o)"| B[("回放缓冲区 B
1000 步/env")] PI0["π_θ 前向"] --> SIM end subgraph S2["阶段 2 · 拟合世界模型"] B -->|"8 步窗口 ×2048 ×10 批"| FW["f_ω 自回归 8 步"] FW --> LWM["L_WM = Σ ‖ŝ−s‖² + (r̂−r)² + ‖ô−ō‖² + BCE(d̂,d)"] LWM -.->|"∇_ω"| FW end subgraph S3["阶段 3 · 改进策略与 critic"] B -->|"起点 s_0, ξ ×4096"| IM["想象 32 步
f_ω 冻结, π_θ 出动作"] IM --> J["Ĵ = Σ γ^t ĉ_t r̂_t+1 + γ^H ĉ_H V_ψ"] J -.->|"∇_θ (BPTT 穿过 f_ω)"| IM IM --> GAE["GAE 目标 R̂_t"] GAE --> LV["L_V = Σ (V_t − R̂_t)²"] LV -.->|"∇_ψ"| GAE end

实线是数据流,虚线是梯度流。下面逐阶段展开。

12. 阶段 1:采数据 \(\pi_\theta\) 冻结

每次迭代做的事

  1. 4096 个并行仿真环境各前进若干步(步数由更新数据比决定,见第 19 节),策略用当前 θ 前向,动作是确定性的 \(a_t=\pi_\theta(o_t,g_t)\)。
  2. 仿真器实际执行的是带噪动作 \(a_t+\epsilon_t\),\(\epsilon_t\sim\mathcal N(0,\,0.1^2)\) 逐维独立。缓冲区存的是这个执行过的带噪动作,不是策略输出。噪声只为了让世界模型见过更宽的动作范围,论文说它是可选的。
  3. 每条转移存入 B:状态 \(s_t\)、带噪动作、该回合的 sim context ξ,以及仿真给出的奖励 \(r_{t+1}\)、硬终止 \(d_{t+1}\in\{0,1\}\) 和观测 \(o_{t+1}\)(公式 1 要回归这些量,所以必须存)。B 是固定大小 1000 步 × 每环境,新转移替换最旧的。
  4. 回合终止条件(附录 A):根部相对参考的高度误差 \(|e_{p,z}|>0.25\,\mathrm m\),或倾斜误差 \(e_{\mathrm{tilt}}>0.8\)。\(e_{\mathrm{tilt}}\) 是参考坐标系与骨盆坐标系中重力方向 z 分量之差的绝对值,直立参考下 0.8 约对应 78°。不像 BeyondMimic 那样对末端执行器偏差终止。

Return-based reset sampling(附录 D.1)

回合重置到动作库里的某个时间点,倾向选策略当前回报低的地方。做法:

  1. 把整个动作库的时间轴切成 1 秒一个 bin,每个 bin b 维护一个折扣回报的运行估计 \(G_b\),用策略自己的 rollout 更新。
  2. 重置时按三种分布混合抽 bin:50% 在所有 bin 上均匀;40% 按 \(\mathrm{softmax}_b\!\left(-25\,G_b/G_{\max}\right)\),\(G_{\max}\) 是可达到的最大折扣回报,回报越低概率越大;10% 按每个 bin过去的 softmax 权重,让已经学会的难动作仍保留一些练习。

注意这影响两处:仿真回合的起点,以及(通过 B)想象 rollout 的起点分布 \(\rho_0\)。Figure 4 的"训练回报"因此和 checkpoint 评估分数不一致,论文自己也指出了。

13. 阶段 2:拟合世界模型 ω 训练

模型的接口

\[\hat s_{t+1}=f_\omega(\hat s_t,a_t,\xi),\qquad \hat r_{t+1}=r_\omega(\hat s_t,a_t,g_t),\qquad \hat{\bar o}_t=g_\omega(\hat s_t,\xi),\qquad \hat d_t=d_\omega(\hat s_t,g_t)\]
  • \(f_\omega\) 是 MLP,隐层 (2048, 2048, 2048),输入拼接 [\(\hat s\)_t, \(a_t\), ξ],输出 \(\hat s_{t+1}\)(Table A.4)。
  • 模型是确定性的:仿真里的随机来源(摩擦、标定偏移、质心偏置)全部进入 ξ 作为输入,传感器噪声 η 在模型外面另外加。
  • 每个头"要么学、要么解析计算,解析头没有损失项"。Table A.4 只列了动力学网络一个 MLP,奖励、观测、终止头是否为网络见第 23 节。

\(\mathcal L_{\mathrm{WM}}\) 的构造(公式 1)

\[\mathcal L_{\mathrm{WM}}(\omega)=\mathbb E_{\mathcal B}\sum_{j=1}^{k}\Big[\,\|\hat s_j-s_j\|^2+(\hat r_j-r_j)^2+\|\hat{\bar o}_j-\bar o_j\|^2+\mathrm{BCE}(\hat d_j,d_j)\Big],\qquad k=8\]
  1. 从 B 里采一个长度 k = 8 的连续窗口:\((s_0,a_0,\dots,a_7,\xi)\) 以及仿真记录的 \(s_1,\dots,s_8\)、\(r_1,\dots,r_8\)、\(\bar o_1,\dots,\bar o_8\)、\(d_1,\dots,d_8\)。
  2. 用记录的真实状态初始化 \(\hat s_0=s_0\)。
  3. 按记录的动作(带噪的)自回归往前滚:\(\hat s_1=f_\omega(\hat s_0,a_0,\xi)\),\(\hat s_2=f_\omega(\hat s_1,a_1,\xi)\)……每一步的输入都是模型自己上一步的输出,不是 teacher forcing。
  4. 在每一步 j = 1..8 上算四项:状态平方误差、奖励平方误差、去噪观测平方误差、终止的二元交叉熵。这里的 \(\bar o_j\) 是去噪观测(η 已去掉),\(d_j\) 是仿真的硬终止 0/1。
  5. 对 8 步求和、对 batch 求均值,Adam 更新 ω。梯度按全局范数 1.0 裁剪。
  6. 每次迭代做 10 个 minibatch,每个 2048 个窗口。学习率 2×10⁻⁴(单卡);双卡 √2 × 2×10⁻⁴。

为什么用 8 步自回归而不是单步:模型学会在自己的预测误差上继续预测,因此在 32 步想象乃至更长的滚动里保持稳定(§3.3 原文)。

推断:四项损失没有权重系数,意味着状态、观测、奖励的尺度要大致可比,否则某一项会主导。论文没提归一化方式,复现时状态和观测大概率要做标准化。

14. 阶段 3:改进策略与 critic θ、ψ 训练 ω 冻结

3a. 想象 rollout 的生成

  1. 从 B 采 4096 个起点 \(s_0\) 及其记录的 ξ(Dyna 风格,起点是真实状态,所以不需要模型从零生成合理姿态)。目标 \(g_t\) 来自该起点对应的参考动作后续帧。
  2. 每一步 t = 0..31:
    \(\hat{\bar o}_t=g_\omega(\hat s_t,\xi)\)(去噪观测)→ 加采样噪声 \(\eta_t\sim\rho_\eta\)(Table A.1 的均匀噪声)→ 策略出动作 \(a_t=\pi_\theta(\hat{\bar o}_t+\eta_t,\,g_t)\) → \(\hat s_{t+1}=f_\omega(\hat s_t,a_t,\xi)\),\(\hat r_{t+1}=r_\omega(\hat s_t,a_t,g_t)\),\(\hat d_{t+1}=d_\omega(\hat s_{t+1},g_{t+1})\)。
  3. 软存活权重:\(\hat c_0=1\),\(\hat c_{t+1}=\hat c_t\,(1-\hat d_{t+1})\)。\(\hat d\) 是概率而不是 0/1,所以 \(\hat c\) 对 \(\theta\) 可微。这是用来替代 SHAC 的硬终止的。
  4. 想象里策略的动作不加 ε 噪声(ε 只在阶段 1 的仿真里加);观测噪声 η 加。

3a. \(\hat J(\theta)\) 的构造与梯度(公式 2)

\[\hat J(\theta)=\mathbb E_{s_0\sim\rho_0,\;\pi_\theta}\Big[\sum_{t=0}^{H-1}\gamma^t\,\hat c_t\,\hat r_{t+1}+\gamma^H\,\hat c_H\,V_\psi(\hat s_H,g_H,\xi)\Big],\qquad H=32,\ \gamma=0.99\]
  1. 前 32 步的折扣奖励用存活权重 \(\hat c_t\) 加权求和。
  2. 终端加 critic 对第 32 步状态的估值,同样乘 \(\gamma^H\) 和 \(\hat c_H\)。critic 的输入是 \((\hat s_H,g_H,\xi)\)。
  3. 对 4096 条想象轨迹求均值,做 \(\theta\leftarrow\theta+\alpha_\theta\nabla_\theta\hat J\)。梯度通过 BPTT 流经 32 步里每个 \(f_\omega\)、\(g_\omega\)、\(r_\omega\)、\(d_\omega\) 的雅可比,ω 本身停梯度。
  4. 梯度裁剪两道:先全局范数 1.0,再逐元素 0.1。Adam β = (0.9, 0.95),学习率同 ω。
  5. 每次世界模型更新对应 1 次策略更新。

和 PPO 的根本差别:PPO 需要随机策略并用 \(\nabla_\theta\log\pi_\theta(a\mid o)\cdot\hat A\) 做似然比估计;这里策略是确定性的,梯度是 \(\frac{\partial\hat J}{\partial a_t}\cdot\frac{\partial a_t}{\partial\theta}\) 沿链式法则一路回传。

3b. critic 的目标与 \(\mathcal L_V\)(公式 3)

\[\mathcal L_V(\psi)=\mathbb E\sum_{t=0}^{H-1}\big(V_t-\hat R_t\big)^2,\qquad V_t=V_\psi(\hat s_t,g_t,\xi)\]
\[\hat R_t=\hat r_{t+1}+\gamma\,(1-\hat d_{t+1})\Big[(1-\lambda)\,V_{t+1}+\lambda\,\hat R_{t+1}\Big],\qquad \hat R_H=V_H,\quad \lambda=0.95\]
  1. 只用想象转移,不用仿真转移。
  2. 从末尾往回递推:先令 \(\hat R_H=V_H\)(critic 对视野之外的估计),再按上式逐步往前算 \(\hat R_{31},\hat R_{30},\dots,\hat R_0\)。这就是 GAE(λ) 回报的递推形式,折扣里乘了 \((1-\hat d)\) 处理软终止。
  3. 目标 \(\hat R_t\) 每条 rollout 只算一次并固定,然后对 ψ 做回归:5 个 epoch,每个 epoch 把数据打乱分成 4 个 minibatch。Adam,全局范数裁剪 1.0。
  4. 没有 EMA 目标网络(与 SHAC 不同)。

critic 为什么必要:没有它只优化 32 步奖励和时,训练在 H ≤ 16 失败,并且策略对推力的恢复行为很差,因为恢复奖励在窗口之外(§4.3)。

15. 状态、观测、动作、目标

观测 \(o_t\)(Table A.1)

策略接收最近 10 帧观测。每帧内容和逐维传感器噪声 \(\eta_t\) 如下,η 服从均匀分布:

项维度噪声 \(\eta_t\)单位
关节位置 \(q-q^0\)(相对默认姿态)29U[−0.01, 0.01]rad
关节速度 \(\dot q\)29U[−0.5, 0.5]rad/s
基座角速度(IMU)3U[−0.2, 0.2]rad/s
投影重力(基座系)3U[−0.05, 0.05]–
上一步动作 \(a_{t-1}\)29––

合计每帧 93 维,10 帧 930 维。观测里没有根部位置和线速度,是纯本体感知。

目标 \(g_t\)

动作跟踪接口的目标是参考动作的未来 K = 10 帧序列(BeyondMimic 用单帧目标,这里改成序列)。编码器输入就是这 10 帧。

动作 \(a_t\)

29 维,映射到关节设定点 \(q^{\mathrm{sp}}=\alpha\,a_t+q^0\)。沿用 BeyondMimic 的低 PD 增益,设定点实际是关节力矩的代理而不是真要到达的位置。α 的数值论文未给。

状态 \(s_t\)

论文没有明确列出 s 的内容。可以从用途反推:(1) 奖励要用所有被跟踪刚体的世界系位置、姿态、线速度、角速度和根部位姿;(2) 观测头 \(g_\omega\) 要能从 \(\hat s\) 算出关节位置、关节速度、基座角速度、投影重力;(3) 终止头要用根部高度误差和倾斜。所以 \(s\) 至少包含关节位置与速度、根部位姿与速度,很可能还包含各刚体的位姿与速度(或者能由前向运动学解析得到)。复现时这是第一个要自己定的设计决策。

16. 奖励与终止

动作跟踪奖励沿用 BeyondMimic(Table A.2),改动两处:去掉自碰撞惩罚(它防的是随机策略的奖励黑客,这里策略在想象中是确定性的,没必要);关节限位惩罚权重从 −10 降到 −2。每一项都乘以控制周期 Δt = 0.02 s。T 是被跟踪刚体的集合。

项公式权重
跟踪项
刚体位置\(\exp\!\Big(-\tfrac{1}{|\mathcal T|}\sum_{b\in\mathcal T}\|\mathbf p_b^{\mathrm{des}}-\mathbf p_b\|^2\big/0.3^2\Big)\)1.0
刚体姿态\(\exp\!\Big(-\tfrac{1}{|\mathcal T|}\sum_{b\in\mathcal T}\|\log(R_b^{\mathrm{des}}R_b^{\top})\|^2\big/0.4^2\Big)\)1.0
刚体线速度\(\exp\!\Big(-\tfrac{1}{|\mathcal T|}\sum_{b\in\mathcal T}\|\mathbf v_b^{\mathrm{des}}-\mathbf v_b\|^2\big/1.0^2\Big)\)1.0
刚体角速度\(\exp\!\Big(-\tfrac{1}{|\mathcal T|}\sum_{b\in\mathcal T}\|\boldsymbol\omega_b^{\mathrm{des}}-\boldsymbol\omega_b\|^2\big/3.14^2\Big)\)1.0
根部位置\(\exp\!\big(-\|\mathbf p_{\mathrm{root}}^{\mathrm{des}}-\mathbf p_{\mathrm{root}}\|^2/0.3^2\big)\)0.5
根部姿态\(\exp\!\big(-\|\log(R_{\mathrm{root}}^{\mathrm{des}}R_{\mathrm{root}}^{\top})\|^2/0.4^2\big)\)0.5
正则项
动作平滑\(\|\mathbf a_t-\mathbf a_{t-1}\|^2\)−0.1
关节限位\(\sum_j\big[\max(0,\,q_j-q_j^{\max})+\max(0,\,q_j^{\min}-q_j)\big]\)−2

归一化回报 = 整回合每步奖励之和 ÷ 该和的最大可能值。跟踪项全是 exp 形式,上界是 1,所以最大值可以直接算。

终止:\(|e_{p,z}|>0.25\,\mathrm m\) 或 \(e_{\mathrm{tilt}}>0.8\)(见第 12 节)。仿真记录硬终止 0/1,世界模型预测概率 \(\hat d\)。

17. 域随机化与 sim context ξ(Table A.3)

参数采样分布(每回合)
摩擦系数 μU[0.3, 1.2]
关节标定偏移 Δ\(q_j\)⁰U[−0.01, 0.01] rad,逐关节
躯干质心偏移Δx ~ U[−0.025, 0.025] m,Δy ~ U[−0.05, 0.05] m,Δz ~ U[−0.05, 0.05] m

这三组量拼成 ξ,作为 \(f_\omega\)、\(g_\omega\) 和 \(V_\psi\) 的输入。去掉了 BeyondMimic 的根部速度扰动(随机推),因为推力是状态的不连续跳变,确定性世界模型无法表示;作者发现只随机化物理参数就够上真机。

18. 网络(Table A.4)

网络输入输出结构(隐层宽度)
动力学 \(f_\omega\)\(\hat s\)_t, \(a_t\), ξ\(\hat s_{t+1}\)MLP (2048, 2048, 2048)
动作编码器 \(\mathrm{enc}_{\theta,\mathrm{motion}}\)K = 10 帧未来参考zMLP (2048, 1024, 512, 256)
速度编码器 \(\mathrm{enc}_{\theta,\mathrm{vel}}\)(附录 G)归一化指令 (\(v_x\), \(v_y\), \(\omega_z\)) + 最近 10 帧 o 的特征zMLP (256, 256)
共享解码器 \(\mathrm{dec}_\theta\)z, 最近 10 帧 o\(a_t\)MLP (2048, 1024, 512, 256)
critic \(V_\psi\)\(\hat s\)_t, \(g_t\), ξ标量MLP (256, 128),每个接口一个 critic

潜变量 z 为 32 维,经 tanh 限幅。策略 = 编码器 + 解码器:\(z=\mathrm{enc}_{\theta,i}(g)\),\(a=\mathrm{dec}_\theta(z,o)\)。激活函数、层归一化、初始化论文均未给出。

19. 超参与调度(Table A.5)

组超参值
世界模型窗口长度 k8
优化器Adam
学习率 \(\alpha_\omega\)单卡 2×10⁻⁴;双卡 √2 × 2×10⁻⁴
批量每次更新 10 批,每批 2048 个窗口
梯度裁剪全局范数 1.0
想象与策略想象视野 H32
优化器Adam,β = (0.9, 0.95)
学习率 \(\alpha_\theta\)同 \(\alpha_\omega\)
批量每次更新 4096 条想象 rollout
梯度裁剪全局范数 1.0,然后逐元素 0.1
折扣 γ0.99
传感器噪声 ηTable A.1(第 15 节)
criticGAE λ0.95
优化器Adam
学习率同 \(\alpha_\omega\)
梯度裁剪全局范数 1.0
每次更新的 epoch5 个 epoch,每个 4 个打乱的 minibatch
数据采集每 GPU 仿真环境数4096
动作噪声 εN(0, 0.1²) 逐维
回放缓冲区每环境 1000 步
调度更新数据比(UTD)0.4
每次世界模型更新对应的策略更新数1
学习率调度余弦衰减到 0.03 倍,历时 250,000 次迭代,之后恒定
训练长度320,000 次迭代
多卡数据并行,跨卡平均梯度

PPO-Sim 基线用 BeyondMimic 的 PPO 超参,每 GPU 8192 个环境,是 SuperMimic 的两倍。PPO-WM 消融(Figure 5b)在世界模型上跑 PPO,四种批量里 16k × 32 最好。

推断:"UTD 0.4" 和"每次迭代"的精确含义论文没有展开。按常见定义,UTD = 梯度更新次数 ÷ 新采集的环境步数;若每次迭代做 10 个世界模型 minibatch 算 1 次"更新",则每次迭代需要约 2.5 步 × 4096 环境的新数据。也可能按样本数算。这是复现时需要试的。

20. 数据与过滤(附录 E)

训练集是 BONES-SEED 的 G1 重定向公开子集(HuggingFace bones-studio/seed),是 SONIC 数据的公开部分。原始 142,220 条,两道过滤后 129,514 条,合计 264.56 小时。

阶段条数
原始 BONES-SEED(G1 重定向)142,220
名称过滤后129,667
可行性过滤后129,514

Figure 4 的受控实验用 LAFAN1 的 40 条片段(2.45 小时);Figure 5b 用其中走、跑、冲刺;数据量扫描用 1、7、40、264 小时的子集。

21. 评估协议(附录 F)

22. 下游接口的联合训练(附录 B、G)

速度跟踪奖励项(Table A.6)公式权重
线速度\(\exp\!\big(-\|\mathbf v_{xy}-\mathbf v_{xy}^{\mathrm{cmd}}\|^2/0.5^2\big)\)2.0
偏航角速度\(\exp\!\big(-(\omega_z-\omega_z^{\mathrm{cmd}})^2/0.5\big)\)2.0
动作平滑\(\|\mathbf a_t-\mathbf a_{t-1}\|^2\)−0.3
关节限位同 Table A.2−2
躯干侧倾\(\sin^2\phi_{\mathrm{torso}}\)(前倾不罚)−4
躯干滚转、俯仰角速度\(\omega_{\mathrm{roll}}^2+\omega_{\mathrm{pitch}}^2\)−0.05

阶跃测试:从站立接收固定指令 5 s,每个指令 4 次试验,稳态误差取最后 2 s 平均速度误差的范数除以指令范数,取未摔倒试验的中位数。三个平面各 15 × 15 网格,去掉站立指令共 672 个。RL 编码器中位相对误差 0.16,蒸馏 0.49。

23. 论文没说清的地方与复现提示

下面是按你"让 agent 照规格复现效果不好"的问题,我认为最可能出偏差的点,按重要性排序。

  1. 状态 s 的定义(第 15 节)。它同时决定了 \(f_\omega\) 的输出维度、奖励能否解析计算和观测头的构造。建议直接用"关节 q、\(\dot q\) + 根部位姿与线/角速度 + 所有被跟踪刚体的世界系位姿与线/角速度",并把姿态用能连续回归的表示(旋转矩阵前两列或四元数再归一化)。
  2. 奖励、观测、终止头是学的还是解析的。Table A.4 只有一个网络,公式 1 却写了四项损失。两种一致的读法:(a) 三个头都是网络,只是表里没列;(b) 三个头都解析,公式只是通用写法。如果 s 包含完整刚体运动学,奖励和观测都能解析算(奖励还要参考帧 \(g_t\)),唯一必须软化的是终止:硬阈值 0/1 对 \(\hat s\) 不可微,要换成 \(\sigma\big((|e_{p,z}|-0.25)/\tau\big)\) 一类的形式,τ 需要自己调。
  3. 策略的输入是去噪观测加噪声,而不是状态。想象里每步必须先过 \(g_\omega\) 再加 η,策略永远看不到 \(\hat s\)。这决定了部署时策略只依赖本体感知。
  4. critic 终端值对 θ 的梯度。公式 2 里 \(V_\psi(\hat s_H)\) 是否对 \(\hat s_H\) 回传梯度到策略,论文没说。SHAC 是回传的(critic 冻结但可导)。两种都试过的话差别可能很大,因为这是 32 步之外信息进入策略的唯一通道。
  5. 梯度裁剪的两道门槛(全局 1.0 再逐元素 0.1)和世界模型拟合用的 10 个 minibatch。BPTT 穿 32 步 2048 宽 MLP 很容易梯度爆炸,这两处是论文给出的直接防护。
  6. 自回归 8 步拟合是在模型自己的预测上继续滚,不是 teacher forcing。这是模型能稳定滚 32 步的前提。
  7. reset 采样和缓冲区中的 ξ 绑定。想象起点必须带着该回合的 ξ,否则 \(f_\omega\) 的输入分布和训练时不一致。
  8. 动作噪声只进仿真,不进想象。把 ε 也加进想象会让策略梯度方差上升,和论文设计不符。
  9. MuJoCo Warp 的 50 Hz 控制步 = 四个 5 ms 子步;奖励每项乘 Δt = 0.02。换仿真器时要保持这个时间尺度,否则奖励权重与折扣 0.99 的有效视野都会变。
  10. 学习率调度是 250k 次迭代余弦到 0.03 倍,但 Figure 3 的 3 小时远不到 250k 次迭代;也就是说超过 SONIC 时学习率几乎还在初值附近。短预算复现不必纠结调度。
我们自己的复现经验(10 月 25 日至 26 日)。我们第一版自己写的实现没有复现出速度结论,排查后确认是实现问题而不是论文问题:GitHub 上已有多个可工作的复现(LaoYang1994/SuperMimic-Rep、CuboiLeo/SuperMimic-Reproduced、zita-ch/supermimic_vibed 等),在我们的共享 RTX 6000 Ada 上不改代码跑 LAFAN1 40 条,3 小时内归一化回报到 0.81 到 0.84,和论文 Figure 4(a) 一致。对照之下,上面第 1、2 条"论文没说清"的地方,可工作的复现是这样选的:世界模型状态用 71 维的根部加关节量,刚体位姿由可微前向运动学从状态算出,而不是直接预测 14 个刚体位姿;输入输出用固定的手设尺度而不是运行统计归一化;终止头是学出来的网络,不是解析 sigmoid;策略损失取 −Ĵ/H。我们的版本在这四点上都选了另一边,每次更新的学习量差约 7 倍。

术语表

动作跟踪
给策略一段参考动作,奖励它复现这段动作的训练范式。是当前人形全身控制的主流。
无模型 / 基于模型
无模型 RL(如 PPO)只从采样的回报估计梯度;基于模型 RL 先学一个环境模型,再在模型里规划或优化策略。
世界模型
这里指一个预测"下一状态、奖励、观测、终止"的神经网络,充当仿真器的替身。
可微
能对输入求导。可微的世界模型让"回报对动作的导数"可以逐步往回传。
BPTT
通过时间反向传播。把一段多步滚动展开成一条计算图,从末尾一路对参数求导。
想象 / 想象视野 H
在世界模型里而不是仿真器里滚动叫"想象";H 是每次滚动的步数,论文默认 32。
critic / 自举
critic 是价值网络 \(V_\psi\),估计从某状态起的未来回报;用它代替 H 步之外的真实回报叫自举(bootstrap)。
回放缓冲区
存历史转移的固定大小队列。SuperMimic 用它既拟合模型,又作为想象的起点(Dyna 风格)。
sim context ξ
每个回合的域随机化参数(摩擦、标定偏移、质心),作为世界模型输入,使模型可以是确定性的。
归一化回报
整回合每步奖励之和除以其最大可能值。提前终止的策略得分低。
GPU 小时
GPU 数量 × 训练小时数,衡量总算力开销。
SONIC
基线。基于 BeyondMimic 奖励的大规模 PPO 跟踪器,128 卡训练 7 天,是最接近的已发表对比对象。