ControlVAE:用 VAE + 世界模型给物理角色装一个「动作词典」
🎯 为什么重要:物理角色动画的「重用」老大难
DeepMimic 之后,物理小人学单个动作(走、跳、后空翻)已经不难。但真要做产品级动画,问题在重用:
ControlVAE 的破局就是:学一个世界模型替仿真器「挡一刀」。世界模型可微,于是 motion domain 的目标函数能直接监督 policy。
💡 核心思想:VAE 编码技能 + 世界模型打通反向传播
🛠️ 关键设计:四个让它真正训得动的细节
| 设计 | 心智 | 为什么必要 |
|---|---|---|
| ① State-conditional prior | p(z|s) 而不是标准 N(0,I) | 标准 N(0,I) 把所有技能揉成一团;让 prior 看当前状态,不同状态下采样到不同技能,下游更稳 |
| ② 世界模型 | 神经网络预测 $s_{t+1}=\omega(s_t,a_t)$ | 把不可微的仿真器替换成可微的近似,让 motion domain 的 loss 直接监督 policy |
| ③ 数据平衡 | 按状态价值采样初始状态,难动作被多采 | 简单动作(走路)会霸占训练 buffer;按价值反比例采样让难动作(跳跃、起身)也有机会 |
| ④ Trajectory Sampler 切换 | 训练时随机切换参考动作片段 | 逼迫 policy 学会动作间过渡,而不是只学独立片段 |
VAE 在 motion domain(无物理)早就好用,但搬到物理角色上不行,因为仿真器这堵黑盒墙挡住了梯度。ControlVAE 的核心贡献是:训练一个可微的世界模型,让「motion 的 loss → 世界模型 → policy」这条反传链路通了。下游任务(走到目标点、跳跃朝向)可以直接用世界模型采样/求导来训,不必再开昂贵的 RL。论文显示:model-based 半小时收敛到 PPO 几个小时的水平。
想象「z 是动作词典的索引」:在「站定」状态下,你想要的 z 分布(多半是「起步走」或「保持站」),和在「跑动中」状态下想要的 z 分布(多半是「继续跑」「跳」「停」)完全不同。让 prior 看状态,等于「这一页翻到动作词典的对应章节」,采样质量大幅提升。论文 Fig.8 显示:标准 prior 下不同技能的 latent 互相打架,state-conditional 下清晰分簇。
📊 结果:MPC + Model-based 双路径都能跑通
| 维度 | 数字(论文实验) |
|---|---|
| 训练数据 | LaFAN 数据集 4 段长动作序列(走、跑、跳、起身等),下采样 20fps + 镜像增广 ≈ 30 分钟 |
| 潜空间 | 64 维;policy 用 6 个 expert 的 MoE,每个 3×512 单元 |
| 训练时间 | 20,000 iter,~50 小时(4 CPU 线程 + 1×RTX 2080Ti) |
| 训练收敛 | ~10,000 iter 后开始稳定收敛 |
| 推理速度 | 快于实时,支持桌面交互控制 |
| 任务覆盖 | 高度控制、朝向控制、steering、skill control(走/跑/跳/单脚跳/跨步跳 5 技能) |
| vs VAE-NC(标准 prior) | NC 版本「频繁摔倒、爬不起来、朝向乱转」;ControlVAE 稳定跟随目标 |
| vs model-free PPO | model-based 在相同 transition 数下表现更好;半小时收敛 vs PPO 数小时 |
🌐 在领域中的位置
ControlVAE 是「motion prior 物理化」的关键节点,与 AMP/ASE(GAIL 路线)同期并行。它的「VAE 编码技能 + 世界模型让梯度穿过仿真」配方,被后续 CALM、Phoenix 等以不同形式借鉴(虽然这些后续工作多用 GAIL 替代 VAE)。它是 motion prior 谱系里「model-based」分支的代表。关联线索:T04 motion prior 谱系。
❓ 常见误区
ControlVAE 和 ASE / AMP 有什么区别?
都是「学一个 motion prior 给下游用」,但路线不同:ControlVAE 用 VAE 显式建模 latent,需要 encoder/decoder 配对;ASE/AMP 用 GAIL 的对抗判别器隐式建模先验,不需要 encoder。VAE 路线 latent 更可解释、能像「词典」一样采样;GAIL 路线更简单、scale 更好。后来社区偏向了 GAIL。
世界模型不会带来 model-bias 吗?
会。论文承认:「large randomness can negatively impact the stableness」,所以实际用世界模型的均值而不是采样做 rollout,并且只用它做训练监督、推理时仍然跑真仿真器。这种「训练用 surrogate,部署用真器」是 model-based RL 的标准纪律。
30 分钟动作数据算多吗?
非常少。这恰恰是 ControlVAE 的卖点——配合 VAE 的泛化能力和数据平衡策略,少量数据 + 多任务共训就能学出多种技能。后续规模化的工作(PHC 等)才把数据扩到 AMASS 整个数据集。
MPC 和 model-based learning 各适合什么场景?
论文说:MPC 适合做实验工具(验证 loss 设计合不合理),但采样数有限、结果不够平滑;model-based learning 适合做产品,能训出稳定可部署的高层策略。两者用同一个世界模型。