SLMP:把「动作潜空间」压到一个球面上,怎么采样都不摔
SLMP 的做法是:把所有可能的动作都映射到一个单位球面上,用「球面距离 + 判别器语义」做双约束,只要在这个球上随便采一个点,都能得到合理动作。然后高层策略只需在球面上选点,不用直接管数十个关节。
🎯 为什么重要:动作先验的「两难」终结者
控制高自由度人形机器人(或仿真角色)的一个核心难题是:动作空间太高维,直接 RL 学不会。解决思路是给策略套一个「动作先验」——把合法动作压缩到一个低维 latent 空间,RL 只在 latent 空间里学。但两条主流路线都有硬伤:
💡 核心思想:单位球面 latent + 三损失塑造流形
SLMP 是两阶段方法。第一阶段:用传统方法训一个超强的 motion tracking 控制器 $\pi_{\text{track}}$(基于 PPO + goal-conditioned RL),它能在物理仿真里精准复现 mocap 参考——但它需要一个明确的「目标动作」作为输入,不能直接被高层调用。
第二阶段:把 $\pi_{\text{track}}$ 蒸馏到一个「latent-conditioned 先验策略」$\pi_\phi(s, z)$,其中 $z$ 是单位球面 $S^{d-1}$ 上的一个点。蒸馏用三个损失一起塑造球面结构:
其中几何权重 $w_d = e^{-\beta d_{12}}$(球面越近权重越高,鼓励局部平滑);语义权重 $w_c = 1 + \min(0, D(s_t, a^{t_2}))$(判别器分越低、越「不像专家」的点,受到越强的约束——把球面上的「空白区」填满)。
🛠️ 关键设计:先训几何,再加语义
| 设计 | 做法 | 为什么必要 |
|---|---|---|
| ① 蒸馏而非重建 | 不用 encoder–decoder 重建动作,直接让 $\pi_\phi$ 模仿 $\pi_{\text{track}}$ 的关节输出 | 绕开 VAE 的信息瓶颈——细节不丢,MPJPE 和专家几乎一致(31.7 vs 31.2) |
| ② 单位球面约束 | 所有 latent 强制 $\|z\|_2 = 1$,用 $\epsilon / \|\epsilon\|_2$ 采样 | 消除 VAE 高斯 prior 在尾部「无信号」的病;球面是紧致无边界的,每一点都能被训练信号覆盖 |
| ③ 两阶段训练 | 先用 $w_d$(几何)训到收敛,再加入 $w_c$(判别器语义)联合训 | 纯判别器信号太噪会破坏几何结构;先有几何再叠语义更稳 |
| ④ 状态条件球面 | 同一 $s_t$ 下,球面被聚类染色,揭示「这个状态有多少合法续作」 | 站立时球面=多色多模式(可踢可打可躲);空中飞踢时球面=1-2 色(只能落地)——结构是动态自适应的 |
高斯 latent 的概率密度集中在原点附近,越往尾部密度越低、训练信号越稀。所以「球外圈」永远没被训过,随机采样落到那里就崩。
球面是紧致的——所有点到原点等距,没有「尾部」。只要你把整个球面用 DLSC 填满语义结构,任意采样都落在已训区域。换几何 = 换命运。
📊 关键结果:99.8% 随机采样存活率
基于自采的 2 小时战斗 mocap 数据集(Xsens MVN Link,180Hz;502 段约 14 秒片段,30Hz 下采样),在 Isaac Gym 评测。
| 评测维度 | 数字 | 对照 |
|---|---|---|
| 潜空间跟踪 Success(信息保留) | 100.0% | PULSE 99.2%;Expert 上界 100.0% |
| 潜空间 MPJPE(关节误差,越低越好) | 31.7 | Expert 上界 31.2;PULSE 约 41.1(信息瓶颈导致误差更大) |
| 随机采样 10s 存活率(1000 次试验) | 99.8% | VAE 10.2%,VQ-VAE 12.4%,球面无 DLSC 0.1%,ASE/PULSE 长程崩 |
| 30s 长程存活率 | 95.4% | PULSE 90.1%(论文 Fig.5,差距随时间拉大) |
| 双人对战:稀疏规则奖励 | 多样、人类-like 击打/闪避/步法 | NCP 稠密奖励 → 退化(贴贴不打的「僵持」);Smplolympics → 重复出拳 |
| 跨本体 | 同一管线可迁移到真实仿真人形机器人 | 见 Appendix A(PM01 等真实机器人形态) |
🌐 在领域中的位置
SLMP 属于「motion prior 谱系」的最新一环,介于 AMP(对抗)和 ASE(latent 对抗)与 CALM(条件 latent)之间,把球面几何 + 蒸馏带进了这个分支。它和 DeepMimic(源头)一起,构成了「物理仿真人形动作控制」从「跟一个 clip」到「在 latent 球上自由组合」的演进主轴。
❓ 常见误区
球面 latent 听起来很怪,为什么不用高斯、不用 VQ-VAE?
作者都做了对照(论文 Table 1)。VAE/VQ-VAE 跟踪 success 也能到 99%+,但随机采样 10s 存活只有 10-12%——它们都靠「重建」学,没训练过的 latent 区域解码就崩。球面 + DLSC 把存活率拉到 99.8%。
DLSC 损失里的 $w_c$ 不就是个判别器项吗,和 AMP 有啥区别?
AMP 把判别器 logits 当 reward 反传给策略,梯度粗。SLMP 的 $w_c$ 是权重,不是 reward——它控制「这个随机点要被多强地拉向专家动作」,配合 MSE 损失给出关节级精细梯度。判别器在 SLMP 里只负责「指认哪些区域是空白」,不负责教动作。
2 小时 mocap 数据是不是太少?
这是论文的诚实之处——专攻「战斗」这一个高动态技能域,所以数据自采。作者明确说未来工作要扩到 AMASS 级(几十小时)的多领域数据集,验证 SLMP 的 scale 能力。
「双人对战」和机器人控制有啥关系?
它是一个高层决策 testbed。证明 SLMP 作为低层先验时,高层只需在 latent 球上学「什么时候出什么招」,不用管数十个关节怎么动。这个范式直接迁移到真实人形机器人:高层=任务策略,低层=SLMP 动作先验。