深度⏱ ~2 min
枢纽
⭐ 为何重要

把 AMP 升级成可复用的低维 skill embedding:high-level policy 在潜空间里组合底层 skill 来完成下游任务。是 AMP 谱系向 hierarchical motion+RL 控制演进的核心代表,为后续 humanoid skill library 与任务驱动的动作生成奠定结构,也是大规模可复用技能库的早期范例。

数据集Reallusion
物理感知
实时
输入模态proprioception

论文:Xue Bin Peng, Yunrong Guo, Lina Halper, Sergey Levine, Sanja Fidler. ASE: Large-Scale Reusable Adversarial Skill Embeddings for Physically Simulated Characters. ACM TOG / SIGGRAPH 2022, 41(4) Art.94. arXiv:2205.01906. 🌐 · 是同作者前作 AMPP-AMP-2021)的结构化升级,T04 转折 3「结构化 latent skill」。

一句话直觉

给虚拟人一个能点菜的技能库。秘诀是给每段人类动作编个门牌号。

这套方法之于动作模仿,就像自助餐之于点菜。

老法子只端一道大锅菜。它摆满桌菜随你挑。

是什么·为什么

要解决的问题:上一年的 AMP 把整段动捕凝练成一个风格总分。📎

这个总分不可指挥。你没法对它说"现在踢一下"。

而且每来一个新任务,整套策略都要从头训。

对抗训练还爱作弊。角色容易反复刷同一个拿高分的动作。📎

ASE 的转身:给角色一个可寻址的技能库。

每个技能用一串数字当门牌号。

高层指挥官只报门牌号,低层就照做。

预训练一次,换任务时只训指挥官。📎

方法核心(大白话):分两层训。

低层是技能库。它要学会一大堆人类动作。

每个动作用一串六十四维数字标记。

怎么学?两股力量同时拉。

第一股是"像人"裁判。它和 AMP 用同一个判别器,给"像不像真人"打分。📎

第二股是新规矩:不同门牌号必须做出不同动作。

没有这条,角色会把所有门牌号都映射到同一个最容易拿分的动作。

门牌号住在一个球面上,不是普通向量。

这有个意外好处:指挥官离球心越远,就越专心做某个技能;离球心近,就到处试探新动作。📎

第二层是高层指挥官。它只输出一个门牌号。

预训练好的裁判被冻结,当随身的风格把关。

换任务时低层技能库不动,只重训指挥官。📎

为什么重要:同一份技能库,五个任务复用。

够东西、调速、转向、移位、击打。

击打任务里,角色自动跑近目标、切到挥剑、打完回站立——全部自己涌现。📎

一百八十七段动捕、约三十分钟、一百亿样本,一次预训练全吃下。📎

一句话类比:ASE 之于技能库,就像图书馆之于书堆。

给每本书编号上架,你按号索取。

不用每次都钻进书堆里从头翻。

怎么做

核心机制·两层 latent skill 架构

ASE 把"学技能"和"用技能"拆开。

低层在预训练阶段学;高层在任务阶段学。📎

低层目标是两项之和(Eq.2)

  • 模仿项:让策略产生的状态转移分布匹配动捕的转移分布。这步用判别器 D,和 AMP 几乎照搬(含梯度惩罚系数 5)。📎
  • 技能发现项:最大化技能 z 与它产生行为的互信息。直觉是不同 z 要产生不同行为,同一 z 要产生可预测行为。📎

互信息不可算,借 DIAYN 思路引入一个 skill encoder,让它能从行为反解出 z。

一句话:ASE = AMP 的判别器 + DIAYN 的互信息 + 一条多样性正则。📎

三个工程细节决定能否训出来

  1. latent 在单位超球面,不是高斯。普通高斯 latent 无界,离原点远的会冒出低质量动作。ASE 把 z 归一化到长度 1(StyleGAN [Karras et al. 2019] 的 trick)。📎 球面还顺带送了一个好处。高层的探索/利用可由"均值离原点远近"这一个旋钮控制。
  2. encoder 用 von Mises-Fisher 分布(球面上的高斯):$q(z|s,s')=\tfrac{1}{Z}\exp(\kappa\,\mu_q^\top z)$。浓度参数 κ=1,均值 μ_q 必须归一化。encoder 与判别器共享骨干网络、两个输出头。📎
  3. diversity objective(Eq.15 末项)。两个 latent 越接近,它们的动作分布差距也该越小;离得远,差距也得远。这项只在梯度更新时用,不进环境 reward。消融里去掉它,策略直接塌缩到"原地站立"这一个片段。📎

高层的几何 trick:初始化均值在原点附近,归一化后 z 在球面均匀分布,等于自然探索。训练中梯度把均值推离原点,z 集中到某个方向,等于利用特定技能。📎

预训练规模:187 段 Reallusion 动捕、约 30 分钟、一百亿样本、约 10 年仿真时间、单 V100 训 10 天、4096 并行环境、120 Hz 仿真。📎

关键超参(Table 2):技能维度 dim(Z)=64;动作方差 0.0025(低层)/0.01(高层);技能发现权重 β=0.5;梯度惩罚 5;diversity 权重 0.01;vMF 浓度 κ=1;discount 0.99;PPO clip 0.2;低层 30 Hz,高层 6 Hz。📎

常见误区(先抛一个,完整版见末尾):"把 latent 从高斯换成球面只是工程细节。"不是。球面 latent 是高层探索/利用旋钮、vMF encoder、diversity 距离度量三件事的共同前提。换回高斯整套几何好处全没了。[未确认]

深度

目标函数完整推导(Eq.2 / Eq.15)

$$\max_\pi\; -D_{JS}\big(d^\pi(s,s')\,\|\,d^\mathcal{M}(s,s')\big) + \beta\, I(s,s';z\,|\,\pi)$$

JS 散度不可算,用 GAN 变分近似得到判别器,imitation reward 写成 $r^D_t=-\log(1-D(s_t,s_{t+1}))$。互信息用变分下界(Gregor 2017 / Eysenbach 2019)转成 $\log q(z|s,s')$。最终 surrogate(Eq.15):📎

$$\arg\max_\pi\;\mathbb{E}\Big[\sum_t\gamma^t\big(-\log(1-D)+\beta\log q(z_t|s_t,s_{t+1})\big)\Big] - w_{div}\,\mathbb{E}\Big[\tfrac{D_{KL}(\pi(\cdot|s,z_1),\pi(\cdot|s,z_2))}{D_z(z_1,z_2)}-1\Big]^2$$

其中球面余弦距离 $D_z(z_1,z_2)=0.5(1-z_1^\top z_2)$。这形如 multidimensional scaling(Kruskal 1964),论文实测比 Yang 2019 原版更稳定。

diversity 是 pseudo-reward:reward 只依赖 $q$ 和 $D$;diversity 项只在策略梯度更新时施加约束,不进环境。这是它和"加一项 reward"的本质区别。

dim(Z)=64 的依据:论文 Table 2 明确写 64,但正文没解释怎么选。这是一个"调出来够用"的工程常数。经验上 64 大到能承载 187 段动捕的多样性(clip-transition graph 比 No-SD/No-Div 稠密得多),又小到让高层在低维空间探索可负担。后续 CALM、PADL、BeyondMimic 都沿用或接近这个量级。📎

responsive skills 的两个修复:原始目标会让 $\pi$ 只看初始 $z_0$、中途换 $z$ 被忽略。ASE 两个修复:(a) 每个 timestep 都换 $z$,但同一个 $z$ 保持 1–150 步再换(防高频抖动);(b) diversity objective。📎

robust recovery 内嵌:预训练时每个 episode 有 10% 概率把角色随机扔到跌倒态(空中落下),让 $\pi$ 自带 fall recovery。下游任务无需重训 recovery——这个设计被 PHC/UHC 继承放大成"perpetual humanoid"卖点。📎

网络与 batch:低层 $\pi$ MLP [1024,1024,512]+linear+对角 $\Sigma$;value $V(s,z)$ 同结构;判别器与 encoder 共享 backbone、两个 head。每次 update 采 131072 样本,policy/value minibatch 16384,D/q minibatch 4096。state 120D(root+关节+末端),action 31D(PD target,球关节用 exponential map),37 DoF 角色(含剑盾)。📎

motion prior 在任务阶段:高层训练时把预训练好的判别器 $D$ 冻结,作为 portable motion prior 加进 reward:$r_t=w_G r^G_t+w_S r^S_t$,$w_G=0.9,w_S=0.1$。冻结判别器通常会被策略利用漏洞,但 ASE 发现低层已把行为限制在"像人"的 manifold 里,漏洞利用基本消失。📎

局限

  1. 风格受限于数据集:187 段 Reallusion 动捕偏格斗题材,论文的剑盾任务与数据集强相关。换形态(人到四足)要重新 retarget 加重新预训练,不能跨形态零样本。📎
  2. 仍是 task-conditional 高层:每个新任务要训 $\omega$(虽然比从头训策略快得多)。真正"一次预训练、零适配"的 motor foundation 要等到 BFM[未确认]
  3. GAN 式判别器不稳定:加了梯度惩罚 + diversity + 球面 latent,训练曲线仍抖动,需调 $w_{gp}/\beta/w_{div}$;换数据集要重调。[未确认]
  4. skill latent 没语义:每个 $z$ 对应什么行为要可视化才知道,没法说"$z=e_1$ 是走路"。CALM 用 transition code + skill label 给 latent 加语义,正是补这个洞。[未确认]
  5. 覆盖率 ≠ 生成能力:ASE 的技能库是已有片段的插值/组合,不能生成数据集外的新行为。这是 ASE(技能库)和 BFM(生成式分布)的本质区别。[未确认]

研究者视角

图谱定位:ASE 是 motion prior 线索从"reward"升级到"结构化 latent skill"的转折点(T04 转折 3)。📎

它把 AMP 那个不可指挥的标量 reward,换成 64 维可寻址的技能空间,让高层 policy 在低维空间探索就能完成任务。这是 HRL 在物理角色控制里的真正落地——之前的 skill library 都要手工拆 skill。

后续演进清晰,每一步都把"判别器式 style prior"换一种形态:📎

  • AMP(2021):判别器 = 风格 reward,单层、不可指挥。
  • ASE(2022):判别器 + 互信息 = 可索引的 latent skill 库,policy 能"点菜"。🌐
  • CALM(2023):给 latent 加 skill label 语义。
  • PHC / UHC(2023):把技能库升级成覆盖全 AMASS 的 universal tracker。
  • BFM(2025):从 tracker 放大为大规模预训练的生成式 motor foundation。🌐
  • SONIC(2025):universal token + scaling law + VLA 驱动,当前制高点。🌐

形态链:reward → latent → controller → foundation → tokenized foundation。

ASE vs AMP 的本质:两者共享"判别器即先验"的核心。ASE 多出来的不是判别器,而是 (a) latent $z$ 进策略、(b) 互信息 skill discovery、(c) diversity 正则。理解这点就理解了 T04 转折 3。[未确认]

Open problems

  1. latent 语义的自动获得:ASE 的 $z$ 是黑箱。能否在预训练时就赋予语义(动作类型、节奏、力度),而非事后可视化?CALM 走了一步,仍不彻底。[未确认]
  2. 跨形态的 skill library:人到四足、到灵巧手的技能迁移,ASE 的球面 latent 做不到。需要跨形态的共享 embedding[未确认]
  3. 生成 vs 检索:ASE 是对已有动捕的插值/组合,不能生成训练集外行为。什么时候 latent skill 库该换成生成式分布,仍是开放问题——BFM/SONIC 选了后者。[未确认]

常见误区

"ASE 就是 AMP 加个 latent" —— 不准确。

ASE 相对 AMP 多了三件事:latent $z$ 进策略、互信息 skill discovery、diversity 正则。

ASE = AMP 判别器 + DIAYN 互信息 + 多样性正则,三者缺一不可(去掉 diversity 直接塌缩)。📎

"latent 用高斯就行,球面只是花活" —— 错。

球面 latent 是高层探索/利用旋钮、vMF encoder、diversity 余弦距离三件事的共同前提。

球面不是装饰,是整套几何设计的基础;换回高斯这套好处全没。📎

"diversity 项是 reward 的一部分" —— 错。

论文明确 diversity 只在梯度更新时用,是 pseudo-reward,不进环境。

环境 reward 只含判别器分(imitation)和 encoder 分(skill discovery);diversity 是策略更新时的约束。📎

"ASE 解决了 mode collapse" —— 部分错。

diversity 正则缓解了塌缩,但 GAN 式判别器的不稳定它还在,训练曲线仍抖动。

ASE 把塌缩从"刷一个动作"压成"训练抖动",是 trade-off 不是根治。📎

"ASE 能生成数据集里没有的新动作" —— 错。

ASE 的技能库是已有 187 段动捕的插值/组合,不是生成模型。

覆盖率不等于生成能力;生成新行为要等 BFM 的 CVAE 或 SONIC 的扩散/ token 路线。[未确认]

检查点

Q1

ASE 分两层。低层技能库预训练一次就不动,换任务只训高层指挥官。低层的"门牌号"是什么?高层指挥官输出的是什么?

💡 参考答案

  • 门牌号 = 一串数字(latent code / 隐向量),用来标记/寻址每个技能;论文里是六十四维。
  • 高层指挥官输出的就是「门牌号」本身(一个 latent code),低层拿到门牌号就照着做对应技能。
  • 关键区分:低层是「技能执行者」(看门牌号做动作),高层是「点菜的」(只决定用哪个门牌号)。
Q2

低层训练有两股力量同时拉。第一股是"像人"裁判(和 AMP 同一个判别器)。第二股是什么?没有第二股会出什么问题?

💡 参考答案

  • 第二股规矩:不同的门牌号必须做出不同的动作(即门牌号之间要有区分度)。
  • 没有第二股的后果:角色会作弊,把所有门牌号都映射到同一个最容易拿高分的动作(mode collapse / 反复刷同一个动作)。
  • 对照:第一股逼「像人」,第二股逼「多样且可区分」,两者一起才有可寻址的技能库。
Q3

ASE 的门牌号住在一个球面上,不是普通向量。用"图书馆"或你自己举的类比,用自己的话解释:为什么门牌号要住球面、不能是无界向量?

💡 参考答案

  • 无界向量的风险:门牌号可以飘到离原点任意远的地方,远处的门牌号会冒出低质量、不像人的动作,且没法当地址用。
  • 球面的好处:所有门牌号都被归一化到同一半径(长度 1),每个都是合法地址,不会飘到坏区域。
  • 可选加分项(入门层 提到):球面还顺带让「指挥官离球心远近」成为探索/利用的旋钮——离球心近=到处试探,离球心远=专心做某个技能。
  • 类比锚:像图书馆的书架编号必须落在固定格点上,不能是任意实数,否则编到天外去就取不到书了。
Q4

ASE 的低层技能库预训练时,裁判和策略一起训。但到了任务阶段训高层指挥官时,裁判被"冻结"了。为什么要冻结它?冻结后它还起什么作用?

💡 参考答案

  • 冻结原因:让裁判变成一个稳定、不变的「风格把关」,高层训练时参考标准不漂移;也省去重训判别器的成本。
  • 冻结后作用:当随身的风格先验,继续给高层指挥官选出的动作打「像不像人」的分,保证换任务时动作仍然像人。
  • 对照 AMP:AMP 的判别器随策略一起演化(moving target);ASE 任务阶段把它冻住当便携先验——这是它能跨任务复用技能库的关键。
Q5

假设有人给你一个 ASE 预训练好的技能库,但要做一个训练数据里没有的新任务(比如"边走边挥手")。你觉得高层指挥官能直接用旧技能库做出这个任务吗?用类比的思路说说你的判断。

💡 参考答案

  • 判断:能做出「已有技能的组合/插值」(走 + 挥手,如果两者在库里有),但做不出训练数据里完全没有的全新动作。
  • 理由(技能库的本质):ASE 的技能库是已有动捕片段的可寻址/可组合表示,高层只能在已有门牌号之间挑选和组合,不能无中生有造新门牌号。
  • 类比锚:像图书馆只能借出已上架的书,组合出「边看 cookbook 边听音乐」可以,但借不出馆里根本没有的那本。
  • 区分(关键):覆盖率 ≠ 生成能力。能组合已有技能 vs 能生成数据集外新行为是两回事——后者要等生成式路线(BFM/SONIC)。

FAQ

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

不能。ASE 在 Isaac Gym 仿真里训,角色是 37 DoF 虚拟人(含剑盾),on_robot=false。📎真机还需 sim2real、retarget 等额外步骤。ASE 的贡献是 motor policy 结构,不是真机部署。

Q2:为什么 dim(Z) 选 64?

论文 Table 2 写 64,但正文没给理论推导。这是一个"调出来够用"的工程常数:大到能承载 187 段动捕的多样性,又小到让高层在低维空间探索可负担。后续 CALM/PADL/BeyondMimic 都沿用或接近这个量级。📎

Q3:ASE 和 AMP 的判别器是同一个吗?

结构同源(都是观测转移对判别器、LSGAN 风格、梯度惩罚),且 ASE 的判别器与 skill encoder 共享 backbone。但 ASE 的判别器在任务阶段被冻结当 portable motion prior,不再随策略更新——这点和 AMP 的"判别器随策略共演化"不同。📎

Q4:为什么我的 ASE 复现 mode collapse 了?

先查三处:(1) latent 是不是球面归一化的(不是高斯);(2) diversity 权重 $w_{div}=0.01$ 加了没、是不是只在梯度更新时用;(3) skill discovery 权重 $\beta=0.5$ 没设错。去掉 diversity 直接塌缩到"原地站立"。📎

Q5:ASE 和 CALM 什么关系?

同思路(latent skill),CALM 是 ASE 的后续改进:给 latent 加 skill label 语义,让"门牌号"可读。ASE 的 $z$ 是黑箱,CALM 给它装了门牌。[未确认]