Q1:ASE 能直接用在真机器人上吗?
不能。ASE 在 Isaac Gym 仿真里训,角色是 37 DoF 虚拟人(含剑盾),on_robot=false。📎真机还需 sim2real、retarget 等额外步骤。ASE 的贡献是 motor policy 结构,不是真机部署。
论文: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. 🌐 · 是同作者前作 AMP(P-AMP-2021)的结构化升级,T04 转折 3「结构化 latent skill」。
给虚拟人一个能点菜的技能库。秘诀是给每段人类动作编个门牌号。
这套方法之于动作模仿,就像自助餐之于点菜。
老法子只端一道大锅菜。它摆满桌菜随你挑。
要解决的问题:上一年的 AMP 把整段动捕凝练成一个风格总分。📎
这个总分不可指挥。你没法对它说"现在踢一下"。
而且每来一个新任务,整套策略都要从头训。
对抗训练还爱作弊。角色容易反复刷同一个拿高分的动作。📎
ASE 的转身:给角色一个可寻址的技能库。
每个技能用一串数字当门牌号。
高层指挥官只报门牌号,低层就照做。
预训练一次,换任务时只训指挥官。📎
方法核心(大白话):分两层训。
低层是技能库。它要学会一大堆人类动作。
每个动作用一串六十四维数字标记。
怎么学?两股力量同时拉。
第一股是"像人"裁判。它和 AMP 用同一个判别器,给"像不像真人"打分。📎
第二股是新规矩:不同门牌号必须做出不同动作。
没有这条,角色会把所有门牌号都映射到同一个最容易拿分的动作。
门牌号住在一个球面上,不是普通向量。
这有个意外好处:指挥官离球心越远,就越专心做某个技能;离球心近,就到处试探新动作。📎
第二层是高层指挥官。它只输出一个门牌号。
预训练好的裁判被冻结,当随身的风格把关。
换任务时低层技能库不动,只重训指挥官。📎
为什么重要:同一份技能库,五个任务复用。
够东西、调速、转向、移位、击打。
击打任务里,角色自动跑近目标、切到挥剑、打完回站立——全部自己涌现。📎
一百八十七段动捕、约三十分钟、一百亿样本,一次预训练全吃下。📎
一句话类比:ASE 之于技能库,就像图书馆之于书堆。
给每本书编号上架,你按号索取。
不用每次都钻进书堆里从头翻。
核心机制·两层 latent skill 架构。
ASE 把"学技能"和"用技能"拆开。
低层在预训练阶段学;高层在任务阶段学。📎
低层目标是两项之和(Eq.2):
互信息不可算,借 DIAYN 思路引入一个 skill encoder,让它能从行为反解出 z。
一句话:ASE = AMP 的判别器 + DIAYN 的互信息 + 一条多样性正则。📎
三个工程细节决定能否训出来:
高层的几何 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 里,漏洞利用基本消失。📎
局限:
图谱定位:ASE 是 motion prior 线索从"reward"升级到"结构化 latent skill"的转折点(T04 转折 3)。📎
它把 AMP 那个不可指挥的标量 reward,换成 64 维可寻址的技能空间,让高层 policy 在低维空间探索就能完成任务。这是 HRL 在物理角色控制里的真正落地——之前的 skill library 都要手工拆 skill。
后续演进清晰,每一步都把"判别器式 style prior"换一种形态:📎
形态链:reward → latent → controller → foundation → tokenized foundation。
ASE vs AMP 的本质:两者共享"判别器即先验"的核心。ASE 多出来的不是判别器,而是 (a) latent $z$ 进策略、(b) 互信息 skill discovery、(c) diversity 正则。理解这点就理解了 T04 转折 3。[未确认]
Open problems:
"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 路线。[未确认]
ASE 分两层。低层技能库预训练一次就不动,换任务只训高层指挥官。低层的"门牌号"是什么?高层指挥官输出的是什么?
💡 参考答案
低层训练有两股力量同时拉。第一股是"像人"裁判(和 AMP 同一个判别器)。第二股是什么?没有第二股会出什么问题?
💡 参考答案
ASE 的门牌号住在一个球面上,不是普通向量。用"图书馆"或你自己举的类比,用自己的话解释:为什么门牌号要住球面、不能是无界向量?
💡 参考答案
ASE 的低层技能库预训练时,裁判和策略一起训。但到了任务阶段训高层指挥官时,裁判被"冻结"了。为什么要冻结它?冻结后它还起什么作用?
💡 参考答案
假设有人给你一个 ASE 预训练好的技能库,但要做一个训练数据里没有的新任务(比如"边走边挥手")。你觉得高层指挥官能直接用旧技能库做出这个任务吗?用类比的思路说说你的判断。
💡 参考答案
不能。ASE 在 Isaac Gym 仿真里训,角色是 37 DoF 虚拟人(含剑盾),on_robot=false。📎真机还需 sim2real、retarget 等额外步骤。ASE 的贡献是 motor policy 结构,不是真机部署。
论文 Table 2 写 64,但正文没给理论推导。这是一个"调出来够用"的工程常数:大到能承载 187 段动捕的多样性,又小到让高层在低维空间探索可负担。后续 CALM/PADL/BeyondMimic 都沿用或接近这个量级。📎
结构同源(都是观测转移对判别器、LSGAN 风格、梯度惩罚),且 ASE 的判别器与 skill encoder 共享 backbone。但 ASE 的判别器在任务阶段被冻结当 portable motion prior,不再随策略更新——这点和 AMP 的"判别器随策略共演化"不同。📎
先查三处:(1) latent 是不是球面归一化的(不是高斯);(2) diversity 权重 $w_{div}=0.01$ 加了没、是不是只在梯度更新时用;(3) skill discovery 权重 $\beta=0.5$ 没设错。去掉 diversity 直接塌缩到"原地站立"。📎
同思路(latent skill),CALM 是 ASE 的后续改进:给 latent 加 skill label 语义,让"门牌号"可读。ASE 的 $z$ 是黑箱,CALM 给它装了门牌。[未确认]