深度⏱ ~2 min

论文:Peng, Ma, Abbeel, Levine, Kanazawa. AMP: Adversarial Motion Priors for Stylized Physics-Based Character Control. SIGGRAPH 2021 / ACM TOG 40(4). arXiv:2104.02180. 🌐

一句话直觉

让虚拟人的动作看起来像真人。秘诀是请一个"风格裁判"打分。不再逐帧抄参考视频。📎好比品酒师不背化学式,尝过成百上千杯真波尔多,一口尝出“这杯像不像波尔多”——标准来自一整片样本云,不是某一杯“标准答案”。不过这位品酒师的舌头每轮都在长:每出一批新酒他就重新学一次。他评的不是"绝对像波尔多",而是"能不能把你和真波尔多区分开"。

是什么·为什么

要解决的问题:让仿真人的动作看起来像真人。📎

老办法:DeepMimic 这类工作让角色"逐帧跟读"参考动捕。📎动捕(mocap)是给真人穿感应衣录下的动作。角色每一步都要踩在参考的某一帧上。节奏不能自由发挥。跌倒就很难恢复。一段参考只能训出一个动作。

AMP 的转身:不再逐帧抄,只要求"整体分布像人"。"分布"指角色所有姿态、动作连起来的整体长相。📎那个"风格裁判"是个会打分的神经网络,叫判别器。它看一段动作就给个分,越像真人分越高。这个分当奖励,驱动角色一步步改动作,越改越像人。动捕第一次成了可跨任务复用的资源。

你会看到:同一份动捕,能训出边走边打拳的角色。还能按速度自动在走、慢跑、跑之间切换。📎后续 ASE、PHC 等整条脉络都站在它肩上。📎

一句话类比:AMP 之于动作模仿,就像印象派之于肖像画——不求像素级像,只求神似。

怎么做

核心机制:训一个判别器(一个打分的神经网络)。📎它要学会"区分真人动捕和角色自己生成的动作"。判别器越觉得"这段像真人",给的风格奖励就越高。强化学习再拿这个奖励训角色。📎于是整段动捕被凝练成一个奖励信号。

关键设计·只看姿态对:和 GAIL(经典对抗模仿方法)不同,AMP 的判别器只看相邻两个姿态,不看动作。📎原因很实在:动捕数据只有姿态序列,没有电机指令。"当前姿态、下一姿态"这一对,就是判别器的全部输入。

风格奖励:判别器给出一个实数分 D。奖励写成 $r^S = \max(0,\; 1 - 0.25(D-1)^2)$。📎逐项读:D 是判别器打的分;平方项衡量离峰值(D=1)的差距;0.25 是缩放系数。内层是关于 D=1 对称的开口向下抛物线,D=1 处天然取峰值 1,向两侧衰减到 0 以下;外层 $\max(0,\cdot)$ 只把负值部分截到 0。所以奖励落在 $[0,1]$——上界 1 是公式自带的,下界 0 才是 max 截出来的。最终奖励是任务奖励和风格奖励各占一半。📎

常见误区(先抛一个,完整版见末尾):"AMP 不就是在学奖励函数吗?"——是,但学的是对抗式、非固定的奖励。[未确认]奖励是判别器隐式定义的,每轮随判别器一起更新(这与 RLHF 那种学一个独立的、阶段性冻结的 reward model 不同)。更准确的说法是:用对抗训练把"像人"这个模糊目标,自动翻译成强化学习能用的奖励。

深度

判别器怎么训:AMP 用 Least-Squares GAN(LSGAN)损失,不是常见的 sigmoid 交叉熵📎原因是 sigmoid 在判别器变强后梯度消失。LSGAN 让判别器输出实数分(真人样本目标 +1,角色样本目标 -1),等价于最小化两类分布间的 Pearson $\chi^2$ 散度。

梯度惩罚:只在真人样本上加 R1 风格的梯度惩罚(系数 $w_{gp}=10$),不是 WGAN-GP 的双边惩罚。📎论文消融明确:去掉它训练就不稳定。注意惩罚是对观测特征 $\Phi(s)$ 求梯度,不是对完整状态。

观测特征 $\Phi(s)$ 的构成:判别器并不直接吃原始 state,而是先抽四类特征——root 的线速度+角速度、各关节局部旋转(球关节用 6D 表示避免万向锁)、关节局部速度、末端效应器 3D 位置。📎刻意不含任务相关特征,所以一份先验可跨任务复用。窗口仅 1 步(一对 $(s_t, s_{t+1})$),没有时序堆叠。

和 GAIL 的关系:GAIL 用 $(s,a)$(状态-动作对)喂判别器,需要专家动作。📎动捕只有姿态、没有扭矩,所以 GAIL 直接用不了。AMP 改成只用观测转移对(思路来自 Torabi et al. 2018 的状态转移对判别器),是最早一批在物理角色上跑通的对抗式模仿方案——且更进一步:从原始动捕(无 action 标注)、无需 phase variable 与 motion planner、scale 到大规模非结构化数据集。Merel et al. 2017 等前作已用对抗思路做物理角色,但需 phase variable 或只能单 motion。两者共享"判别器即奖励"的核心,差别在输入。

更新节奏:每个 iteration 先采一批轨迹,再对判别器做约 16 次小批量更新,最后才做一次 PPO 更新。📎判别器 stepsize $10^{-5}$,policy stepsize $2$–$4\times10^{-6}$——两者同量级,判别器反而略大 2.5–5 倍(见 Table 4)。📎真正稳住对抗的不是"步长小",而是三件事:(a) LSGAN 替代 sigmoid 交叉熵,避免判别器变强后梯度饱和;(b) 只在真人样本上的 R1 梯度惩罚 $w_{gp}=10$;(c) 判别器挂一个 $10^5$ 大小的 replay buffer,防过拟合最新一批 rollout。"更新勤"是真的(每 iteration 约 16 次小批量 vs PPO 1 次),"步长小"是假的。

网络结构:策略、价值、判别器三者同构——全连接,2 个隐层 1024→512,ReLU,线性输出;策略输出对角高斯,协差不学习。📎

实验要点:角色覆盖 34 DoF 人形、59 DoF 霸王龙、64 DoF 狗。📎最惊艳的两个涌现:用纯 locomotion 数据集训"按方向走",policy 自动在 1 m/s 走、2.5 m/s 慢跑、4.5 m/s 跑之间切换并能 bank 转向;用"走+打拳"混合数据集训击打,policy 会先走近目标再出拳。训练 30–140 小时,每个 policy 100–300M 样本(论文只说 16 CPU cores,未提 GPU 使用)。📎

仍然没摆脱的 trick:AMP 仍需 reference state initialization(RSI,从动捕片段随机采初始状态)和 early termination(除脚外任何部位触地即终止)。📎它去掉了 DeepMimic 的 phase variable,但没完全告别这些稳定化手段。

局限

  1. mode collapse:对抗训练的固有病。policy 容易找到一两个判别器给高分的姿态反复刷分,动作"像人但单调"。论文用混合风格数据集 + 梯度惩罚 + reward 截断缓解,没根治。📎
  2. 依赖高质量动捕:没有对应风格的参考片段就学不了;跨形态(人到四足)不能直接迁移。
  3. 单层先验、无技能词典:判别器把所有动捕压成一个标量奖励,没有可指挥的技能 vocabulary——这正是 ASE(两层 latent skill)、Multi-AMP(多离散风格)、CALM(条件化 latent)要解决的。📎

研究者视角

图谱定位:AMP 是 motion prior 线索的标志性工作。📎它把模仿从"状态对齐"(reference tracking)升级到"分布对齐"(distribution matching),让动捕成为可跨任务复用的资源。后续演进清晰:

  • AMP(2021):判别器 = 风格奖励,单层、无条件。
  • ASE(2022):把先验从 reward 升级成可索引的 latent skill 库,policy 能"点菜"。🌐
  • PHC / UHC(2023):把这套先验做成大规模 controller,追踪精度推到新高度。
  • BFM(2025):走向 humanoid foundation model,先验被吸收进一个通用基座。🌐

每个后继都把"判别器式 style prior"换一种形态:reward → latent → controller → foundation。

副产品:AMP 的判别器替代了复杂手工奖励,被 AMP-Adroit 显式做成卖点。📎把 AMP 放进"reward 自动化"的大图,有两条平行的线,机制不同、不是前后继:

  • (a) 从数据学 reward——AMP(判别器从动捕学)和 RLHF(偏好模型从人类反馈学)属这条线:奖励由一个参数化模型隐式定义、随训练共演化。legged_gym 那种手工写死的 reward 函数是这两条线共同想摆脱的基线,不是 AMP 的前作。
  • (b) 让模型自动生成 reward 代码——Eureka/DrEureka 属这条线:LLM 直接写符号化的 reward 表达式,没有判别器、没有动捕,与 AMP 共享的只是"不想纯手写 reward"这个动机。

AMP 是 (a) 在物理角色上的代表,与 (b) 互补——把它们排成"legged_gym → AMP → Eureka"的演进链会误导:三者的机制(手工 / 对抗式从演示学 / LLM 生成代码)彼此独立。[未确认]

Open problems

  1. mode collapse 的根治:现有手段(混合数据、梯度惩罚、reward 截断)都是缓解。能否从判别器架构或散度选择上根本解决,仍是开放问题。[未确认]
  2. 摆脱 RSI 与 early termination:AMP 仍依赖这两个 DeepMimic 时代的 trick。一个不靠 reference state init、能从零冷启动的 motion prior,尚未出现。[未确认]
  3. 跨形态迁移:人到四足、到灵巧手的风格迁移,仍是 AMP 单层先验做不到的。

常见误区

"AMP 就是 reward learning" —— 没错,AMP 本身就是一种 reward learning(对抗式、从演示学)。[未确认]真正的区分点不在真假,而在机制:AMP 的奖励由判别器隐式定义、随 π 共同演化;RLHF 那种 reward model 是独立的、阶段性冻结的。

AMP 是对抗式 reward learning,把"像人"翻译成奖励。

"AMP 不需要参考动作了" —— 错。它仍需要动捕数据喂给判别器,仍用 RSI 初始化。📎

它不需要逐帧对齐参考,但离不开参考数据集本身。

"判别器用 WGAN-GP 训" —— 常见误传。论文用的是 LSGAN 损失 + 只在真实样本上的 R1 风格梯度惩罚。📎

$w_{gp}=10$ 只惩罚真人样本、对观测特征求梯度,不是双边 WGAN-GP。

"AMP 解决了 mode collapse" —— 错。对抗训练的 mode collapse 它也有,靠混合数据和梯度惩罚缓解,没根治。📎

它把问题从"帧帧对齐的脆弱"换成了"对抗训练的脆弱",是另一种 trade-off。

检查点

Q1

DeepMimic 靠 phase variable 把 policy 和参考动作的某一帧对齐;AMP 没用 phase variable。那 AMP 靠什么机制让 policy 知道"现在该模仿数据里的哪一段"?(提示:想想判别器把整个数据集变成了什么。)

💡 参考答案

  • 核心:判别器把整个动捕数据集凝练成一个标量风格奖励 r^S;policy 不需要显式选某段 clip,只要朝'判别器给高分'的方向改进,就自然落在数据集分布上。
  • 对照:DeepMimic 的 phase variable 是'显式逐帧索引'(policy 必须知道现在在第几帧);AMP 把'选哪段'这步隐式吸收进判别器的 reward,policy 无需索引。
  • 代价/为什么这是 trade-off:好处是跨任务复用、无需对齐;代价是判别器是 moving target(非平稳),且若判别器对某段过拟合会产生 mode collapse。
Q2

AMP 的判别器输入是什么?为什么不用 GAIL 那种 $(s,a)$ 输入?

💡 参考答案

  • 输入:相邻两个姿态的观测特征对 (Φ(s_t), Φ(s_{t+1})),即状态转移对,不看动作 a。窗口仅 1 步,无时序堆叠。
  • 为什么不用 (s,a):动捕数据只有姿态序列,没有电机指令/扭矩(action 未知),GAIL 的 (s,a) 输入直接用不了。
  • 对照 GAIL:GAIL 需要专家 action,适合有动作标注的设定;AMP 改成只用观测转移对(思路来自 Torabi et al. 2018),是它能在原始动捕上跑通的关键。
Q3

风格奖励 $r^S$ 里,为什么要在最外面套一层 $\max(0,\cdot)$?

💡 参考答案

  • 内层 1 - 0.25(D-1)^2 是关于 D=1 对称、开口向下的抛物线,D=1 处取峰值 1,向两侧衰减;当 |D-1|>2(即 D>3 或 D<-1)时内层为负。
  • max(0,·) 的作用:把内层为负的部分截到 0,使奖励落在 [0,1] 区间,避免负奖励。
  • 关键区分(红队 r1 M4 抓到的易错点):下界 0 是 max 截出来的;上界 1 是内层抛物线自带的天然峰值,不是 max 夹的。max 的第二个参数是 0 不是 1。
Q4

用"品酒师"或你自己举的类比,向一个没学过强化学习的人解释:AMP 是怎么让角色"像人"的?判分要点(rubric,自评须三选二才算合格):类比必须同时体现 (a) 判别器见过很多样本、不是单一原型;(b) policy 不逐帧对齐参考,只追求整体分布像;(c) 判别器的判别标准每轮都在动(非平稳)。少两条以上属不合格,请补或换。

💡 参考答案

  • 品酒师=判别器:是个会打分的神经网络,看角色做的一段动作就给分,越像真人分越高;这个分当奖励驱动角色改动作。
Q5

假如动捕数据里只有走路、没有跑步,你觉得 AMP 能训出会跑的角色吗?用类比的思路解释为什么。

💡 参考答案

  • 结论:大概率不能训出'像人的跑'(可能瞎折腾出奇怪步态但判别器不会给高分)。
  • 理由(判别器审美上限 = 数据覆盖范围):判别器的'像人'标准完全来自参考数据;数据里只有走,判别器眼里的高分=走得像真人;角色就算偶然做出跑步姿态,也会因偏离'走的分布'被压回去。
  • 类比锚:品酒师只尝过波尔多,尝不出'这杯像勃艮第'——他脑子里没那个参照。
  • 论文对照:Figure 4 的定量结论印证(混合 locomotion 数据集训出按速度切换 walk/jog/run;只有走则只学走)。

FAQ

Q1:AMP 能直接用在真机器人上吗?

不能直接用。AMP 在物理仿真(Bullet,1.2 kHz)里训,on_robot=false。📎真机还需 sim2realdomain randomization 等额外步骤。

Q2:一段参考能训多种风格吗?

单段参考只能训对应风格。AMP 的强项在于:一个混合数据集能训出会组合多种技能的角色。📎

Q3:判别器和策略,哪个更该调大?

都别贸然调大。论文里判别器 stepsize $10^{-5}$、policy stepsize $2$–$4\times10^{-6}$,两者同量级(判别器反而略大 2.5–5 倍),见 Table 4。📎要压住判别器不致太强,靠的不是更小的 stepsize,而是 replay buffer + 只在真人样本上的 R1 梯度惩罚。判别器太强会让 reward 对 policy 的微小改进不敏感,梯度信号消失。

Q4:为什么我的 AMP 训练崩了?

先查三处:(1) 判别器输入是不是用的观测特征对(不是 raw state 或 action);(2) 梯度惩罚 $w_{gp}=10$ 加了没、加在真人样本上没;(3) style reward 有没有 clamp 到 $[0,1]$。📎

Q5:AMP 和 RLHF 是一回事吗?

不是。RLHF 用人类偏好训奖励模型;AMP 用判别器对动捕做对抗匹配。两者都"学一个奖励",但信号来源和机制不同。[未确认]