强化学习在角色动画中的应用

强化学习适用于在给定极少且不确定的未来信息的情况做出当前的最优决策。
在角色动画领域中,强化学习有两种使用场景:

  1. 高层控制:根据任务目标规划任务的执行方案。执行方案可能是明确的动画轨迹,也可能是latent code,或者是其它控制信号。
  2. 中层控制:根据角色当前的状态,规划自己的动作,保证能完成高层给的执行方案且保证较好的动作质量。在动力学方法中,『较好的动作质量』即不摔倒,走得稳。在运动学方法中,『较好的动作质量』指动作转移合理。

高层控制和中层控制都适合用强化学习解决,但也可以通过其它方法解决。通过梳理相关工作,分为以下几类:

  1. 把高层控制和中层控制看作是一个端到端的任务,用一个强化学习同时解决『执行方案』和『执行细节』两个问题。
  2. 分别解决高层控制和中层控制,各自使用一个强化学习。
  3. 高层控制使用强化学习来解决,中层控制使用其它方法。例如运动学方法使用运动转移先验模型。动力学方法可以使用轨迹优化(如果高层输出的是轨迹)方法或者直接使用前向推理方向。
  4. 中层使用强化学习来解决『走得好』的问题,高层则通过其它方法生成执行方案。例如生成类的方法、Motion Matching或者直接使用动捕数据。
  5. 也可以完成不用强化学习。直接端到端地生成动作,或者分别用不同的方法解决两个level的控制问题。这一类方法不在本页的讨论范围中。

关于参考动作,有没有参考动作对结果影响非常大。参考动作主要有三个作用:

  1. 加速训练收敛
  2. 让动作更『人』
  3. 定义动作的风格

参考动作发挥作用的方法主要有三种:

  1. GT,直接作为模型的模仿目标
  2. 鉴定,用于判断生成动作与参考动作是否相似
  3. 提取数据的关节特征,构造模型的目标函数

除了参考动作,还有其它构造数据的方式:

  1. 对参考动作做增强
  2. 用传统算法构造数据
  3. 从生成的动作中挑一些好的
mindmap
强化学习在角色动画中的应用
    端到端方案
        端到端 RL
            在线 RL
            离线 RL
    分层控制方案
        DL + DL
        DL + 非 DL
        非 DL + DL
        非 DL + 非 DL

端到端的强化学习方案

在线RL

方法状态空间 S动作空间 A奖励函数 R核心贡献
Feature-Based2010物理特征(角动量等)关节力矩手工设计多目标高层特征控制器
Nerve Net2015关节 + 根节点状态关节力矩任务奖励通用多角色控制器
Predict-and-Simulate2019状态 + 目标PD 目标任务奖励从无组织数据学习
Gait-Conditioned Reinforcement Learning with Multi-Phase Curriculum for Humanoid Locomotion2025关节 +IMU+ 命令PD 目标轨迹步态条件奖励 (独热路由)PPO+RNN

离线RL

由于RL模型只能针对特定任务训练,所以有些方法会离线训练多个RL模型,再用非RL蒸馏出一个同样功能的非RL模型供在线使用。

方法状态空间 S动作空间 A训练范式蒸馏源
DiffuseLoco2024关节 + 根节点 + 技能标签31D PD 目标纯离线多专家 RL
PDP2024物理状态 + 任务标签多帧 PD 目标离线 BC多任务 RL 专家
维度DiffuseLocoPDP
数据源闭环离线 RL 数据RL 专家轨迹
模型类型扩散扩散
输出单帧 PD 目标多帧序列
物理稳定✅ RL 专家保证✅ RL 专家保证

DL + DL

方法状态空间 S动作空间 A奖励函数 R价值函数 V算法
DeepLoco (2017)LLC: 110D (关节 + 根节点 + 相位)LLC: 22D 关节 PD 目标LLC: 姿势风格 + 末端位置 + 速度 + 平衡CACLA CriticActor-Critic+CACLA
HLC: 1129D (+32×32 地形图)HLC: 5D 步法计划HLC: 朝目标方向移动CACLA CriticActor-Critic+CACLA
ASE (2022)120D 身体配置
+ 技能 z
低级: 31D PD 目标对抗奖励 + 技能多样性奖励PPO CriticPPO +
互信息最大化
120D 身体配置
+ 任务目标
高级: z̄→z (球面)任务奖励 + 风格奖励PPO CriticPPO +
互信息最大化

非DL + DL

方法上层方法及输出状态空间 S动作空间 A奖励函数 R价值函数 V算法
DeepMimic (2018)固定轨迹
(Mocap 时间序列)
关节 [p,v,q,ω] + 相位 φPD 目标模仿奖励 + 任务奖励
模仿奖励=姿势 + 速度 + 末端 + 质心
PPO Critic
GAE(λ)
PPO
DReCon2019MM动态生成轨迹角色状态 + 辅助信息 +MM 参考PD 目标跟踪奖励 + 稳定性奖励PPO CriticPPO+MM
AMP (2021)Mocap轨迹~120D 躯干 + 关节 + 末端~31D 关节目标旋转任务奖励 + 风格奖励
风格奖励由判别器给出
PPO CriticPPO+LS-GAN
ControlVAE2023CVAE输出z120D 身体配置31D PD 目标任务奖励 + VAE 重建奖励PPO CriticVAE+PPO
CLOSD2025扩散规划输出轨迹角色状态 + 辅助信息PD 控制器目标文本 + 目标双条件PPO Critic扩散规划 + RL 跟踪
DARTControl2025Latent Diffusion输出z动作历史 + 文本 + 空间目标Latent noise optimization空间目标达成度 + 动作质量PPO CriticPPO
A-MDM2024自回归扩散模型输出动作关节 + 根节点 + 任务目标残差扰动信号(各去噪步骤)任务奖励 + 扩散引导PPO Critic自回归扩散 + RL

数据增强

方法上层方法及输出状态空间 S动作空间 A奖励函数 R价值函数 V算法
PARC2025扩散模型输出轨迹角色状态 + 地形信息PD 控制器目标物理约束 + 模仿奖励PPO CriticPPO

DL + 非DL

方法状态空间 S动作空间 A奖励函数 R价值函数 V算法中层控制方法
UHMP关节 + 根节点 + 任务目标z (隐变量)
Decoder出 a (PD 目标)
任务奖励PPO CriticCVAE +
蒸馏 +PPO
从mocap学CVAE,再通过轨迹优化+蒸馏保证物理合理

核心设计

  • 阶段 1:CVAE 从 MoCap 学习动作先验
  • 阶段 2:轨迹优化器蒸馏,保证物理稳定
  • 阶段 3:高层 RL 学习选择隐变量 z

📚 深入学习 RL 算法DeepLearningNotes - RL - 包含 REINFORCE、Q-Learning、A3C、PPO 等算法的详细推导

📚 轨迹优化对比方法对比与分类


方法分类总览

强化学习在角色动画中的应用
│
├── 端到端 RL 方案
│   ├── 在线 RL
│   │   ├── Feature-Based (2010) — 关节力矩控制
│   │   ├── Nerve Net (2015) — 多角色控制器
│   │   ├── Predict-and-Simulate (2019) — 无组织数据学习
│   │   └── Gait-Conditioned RL (2025) — 步态条件 + 课程学习
│   │
│   └── 离线 RL
│       ├── DiffuseLoco (2024) — 扩散模型离线蒸馏多专家 RL
│       └── PDP (2024) — 扩散模型离线 BC 多任务 RL
│
├── 分层控制:DL + DL
│   ├── DeepLoco (2017) — 分层 Actor-Critic
│   └── ASE (2022) — 技能多样性 + 互信息最大化
│
├── 分层控制:非 DL + DL
│   ├── DeepMimic (2018) — 固定 MoCap 轨迹 + RL
│   ├── DReCon (2019) — Motion Matching 动态生成轨迹 + RL
│   ├── AMP (2021) — MoCap 轨迹 + 对抗判别
│   ├── ControlVAE (2023) — CVAE 隐变量 + RL
│   ├── CLOSD (2025) — 扩散规划 + RL 跟踪
│   ├── DARTControl (2025) — Latent Diffusion + RL
│   ├── A-MDM (2024) — 自回归扩散 + RL
│   └── PARC (2025) — 扩散数据增强 + RL
│
└── 分层控制:DL + 非 DL
    └── UHMP — CVAE 高层 + 轨迹优化/蒸馏保证物理合理

核心设计详解

各方法状态空间设计对比

典型的角色状态表示

$$ s_t = (q _{root}, \dot{q} _{root}, q _{local}, \dot{q} _{local}, q _{ref}, \dot{q} _{ref}) $$

分量说明
\(q _{root}\)根节点位置和旋转
\(\dot{q} _{root}\)根节点速度
\(q _{local}\)局部关节角度
\(\dot{q} _{local}\)局部关节角速度
\(q _{ref}\)参考姿势
\(\dot{q} _{ref}\)参考速度

各方法的状态设计特点

方法状态设计特点
AMP~120D 完整状态,判别器只看状态转换 (s_t, s_{t+1})
ControlVAE120D 身体配置 + 技能 z,世界模型预测未来状态
ASE120D 身体配置 + 潜在技能 z,球形空间均匀采样
UHMP关节 + 根节点 s^p + 隐变量 z,Prior 设计 R(z|s^p)=N(z|μ^p_t,σ^p_t)
纯 RL关节状态 +IMU+ 命令,RNN 记忆周期步态

各方法动作空间设计对比

类型说明适用场景代表方法
关节位置目标输出目标关节角度,用 PD 控制跟踪最常用,平滑稳定DeepLoco, DeepMimic, AMP, ASE
关节力矩直接输出关节力矩精确控制,但难训练-
肌肉激活输出肌肉激活信号生物力学仿真-
潜在变量 z输出隐变量,由 Decoder 转动作统一表示、技能复用ASE, UHMP

各方法的动作设计特点

方法动作设计特点
DeepLoco分层设计:LLC 输出 22D 关节 PD 目标,HLC 输出 5D 步法计划
DeepMimicPD 目标 (q^target, ω^target),直接跟踪参考动作
DReConPD 目标,从 MM 动态生成
AMP~31D 关节目标旋转,通过 PD 控制器执行
ControlVAE31D PD 目标,VAE 解码器输出
ASE低级策略输出 31D PD 目标,高级策略输出球面潜在变量 z̄
UHMP高层策略输出隐变量 z,Decoder 解码为 PD 目标
纯 RL直接输出 PD 目标轨迹,RNN 编码时序信息

强化学习 vs. 轨迹优化

核心对比

维度轨迹优化强化学习
输出一条轨迹 \((\mathbf{x}, \mathbf{u})\)一个策略 \(\pi(\mathbf{s})\)
泛化能力❌ 仅适用于该轨迹✅ 可处理新状态
训练时间秒级 ~ 分钟级小时级 ~ 天级
推理速度N/A毫秒级
模型需求✅ 需要精确模型⚠️ 可有可无
样本效率✅ 高❌ 低

实践建议

训练技巧

技巧说明
课程学习从简单任务开始,逐步增加难度
奖励塑形设计稠密奖励,加速学习
域随机化随机化物理参数,提高泛化性
并行采样多环境并行采样,提高样本效率

常见陷阱

陷阱症状解决方案
奖励黑客智能体找到奖励漏洞仔细设计奖励函数
欠训练策略不稳定、易摔倒增加训练步数
过拟合只在特定场景有效域随机化、增加多样性
稀疏奖励学习缓慢或不收敛奖励塑形、课程学习

关键要点总结

核心设计趋势

  • 状态表示:从手工设计 → 学习隐变量表示
  • 动作表示:从直接关节控制 → 潜在空间控制
  • 训练范式:从零训练 → 预训练 + 微调
  • 技能复用:从每任务重新训练 → 低级策略固定

本文出自 CaterpillarStudyGroup,转载请注明出处。 https://caterpillarstudygroup.github.io/GAMES105_mdbook/