DeepMimic Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills
DeepMimic Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills
研究动机
- 依赖手动设计控制器的方法已经产生了令人信服的结果,但它们推广到新技能和新情况的能力受到限制。尽管人类擅长自己执行各种技能,但要将支撑这种熟练度的内部策略明确表达并编码至控制器中仍面临极大困难。
- 基于DRL的方法生成的运动质量远远落后于最先进的运动学方法或手动设计的控制器。
解决方案
提出了结合目标导向强化学习与数据驱动的物理角色动画框架,数据形式可以是动作捕捉片段或关键帧动画。虽然框架中的独立组件均属已知,但在数据驱动和物理角色动画背景下组合这些组件具有创新性。实验证明,该方法生成的技能在动作质量和鲁棒性上显著超越先前工作。通过将动作捕捉数据融入相位感知策略,系统在无扰动时生成的物理行为与参考动作几乎无法区分,避免了先前深度强化学习算法常见的异常现象。在存在扰动或修改时,动作仍保持自然,恢复策略展现出高度鲁棒性且无需人工干预。
系统由一个角色模型、一组运动学参考动作和一个由奖励函数定义的任务作为输入,然后设计一个控制器,使角色能够模拟参考动作,同时满足任务目标。每个参考轨迹表示为目标姿势序列 q ^ t \hat{q}_t q^t,控制策略 π ( a t ∣ s t , g t ) \pi(a_t|s_t, g_t) π(at∣st,gt)将特定于任务目标 g t g_t gt和角色状态 s t s_t st映射为动作 a t a_t at,该动作随后被用于计算施加于各关节的力矩。动作为PD控制器指定目标关节位置。参考动作用于定义模仿奖励 r I ( s t , a t ) r^I(s_t,a_t) rI(st,at),目标由任务奖励 r G ( s t , a t , g t ) r^G(s_t,a_t,g_t) rG(st,at,gt)定义。系统的最终输出是一个策略,使模拟角色既能模仿参考动作的行为,又能完成指定的任务目标。这些策略通过神经网络建模,并采用PPO进行训练。
技术路线
策略表示
给定一个参考轨迹片段,该片段由一系列目标姿势 q ^ t \hat{q}_t q^t表示,策略目标是在物理仿真环境中再现参考运动,并满足其它任务目标。由于参考轨迹仅以目标姿势的形式提供运动学信息,因此该策略负责确定在每个时间步长应应用哪些作以实现所需的轨迹。
状态和动作
状态 s s s描述角色身体构型,包括:各连杆相对于根节点(骨盆)的相对位置(四元数表示旋转)、线速度和角速度。所有特征均以角色局部坐标系计算,根节点位于原点,x轴沿根节点朝向方向。状态特征还包含相位变量 ϕ ∈ [ 0 , 1 ] \phi\in [0,1] ϕ∈[0,1],用于指示从动作起始到动作结束,以表示参考动作的目标姿态随时间变化。
对于周期性动作,每周期结束时 ϕ = 0 \phi=0 ϕ=0。针对附加任务目标训练的策略,还需接受目标 g g g作为输入。策略输出动作 a a a为各关节PD控制器指定关节位置。
网络
每个策略 π \pi π由神经网络实现,将状态 s s s和目标 g g g映射到动作分布 π ( a ∣ s , g ) \pi(a|s,g) π(a∣s,g)。动作分布建模为高斯分布,其均值 μ ( s ) \mu(s) μ(s)由网络输出,固定对角协方差矩阵 Σ \Sigma Σ作为算法超参:
π ( a ∣ s ) = N ( μ ( s ) , Σ ) \pi(a|s)=\mathcal{N}(\mu(s),\Sigma) π(a∣s)=N(μ(s),Σ)
输入经两个全连接层(1024和512个单元)处理,后接线性输出层。所有隐藏单元使用ReLU激活。
奖励
每一步的奖励 r t r_t rt由两项组成,分别用于激励角色在满足额外任务目标的同时匹配参考动作:
r t = ω I r t I + ω G r t G r_t=\omega^Ir^I_t+\omega^Gr_t^G rt=ωIrtI+ωGrtG
分别表示模仿目标和任务目标, ω I \omega^I ωI和 ω G \omega^G ωG为对应权重系数。模仿目标可进一步分解为奖励角色匹配参考动作特定特征的多个项,包括关节朝向和速度等:
r t I = ω p r t p + ω v r t v + ω e r t e + ω c r t c r_t^I=\omega^pr_t^p+\omega^vr_t^v+\omega^er_t^e+\omega_cr^c_t rtI=ωprtp+ωvrtv+ωerte+ωcrtc
姿态奖励 r t p r_t^p rtp通过计算模拟角色关节朝向四元数和参考动作对应值的差来激励角色匹配参考动作的关节朝向。
r t p = e x p [ − 2 ( ∑ j ∣ ∣ q ^ t j ⊖ q t j ∣ ∣ 2 ) ] r_t^p=exp[-2(\sum_j||\hat{q}_t^j\ominus q_t^j||^2)] rtp=exp[−2(j∑∣∣q^tj⊖qtj∣∣2)]
其中 q t j q_t^j qtj和 q ^ t j \hat{q}_t^j q^tj分别表示模拟角色和参考动作第 j j j个关节的朝向, q 1 ⊖ q 2 q1\ominus q2 q1⊖q2表示四元数差, ∣ ∣ q ∣ ∣ ||q|| ∣∣q∣∣计算四元数绕其轴的弧度标量旋转。
r t v = e x p [ − 0.1 ( ∑ j ∣ ∣ q ˙ ^ t j − q ˙ t j ∣ ∣ 2 ) ] r_t^v=exp[-0.1(\sum_j||\hat{\dot{q}}_t^j-\dot{q}_t^j||^2)] rtv=exp[−0.1(j∑∣∣q˙^tj−q˙tj∣∣2)]
速度奖励通过计算局部关节角速度的差异获得,其中 q ˙ t j \dot{q}_t^j q˙tj表示第 j j j个关节的角速度,目标速度 q ˙ ^ t j \hat{\dot{q}}_t^j q˙^tj通过有限差分法从数据计算得出。
r t e = e x p [ − 40 ( ∑ e ∣ ∣ p ^ t e − p t e ∣ ∣ 2 ) ] r_t^e=exp[-40(\sum_e||\hat{p}_t^e-p_t^e||^2)] rte=exp[−40(e∑∣∣p^te−pte∣∣2)]
末端执行器奖励 r t e r_t^e rte激励角色的手脚位置匹配参考动作,其中 p t e p_t^e pte表示末端执行器的三维世界坐标。
r t c = e x p [ − 10 ( ∣ ∣ p ^ t c − p t c ∣ ∣ 2 ) ] r_t^c=exp[-10(||\hat{p}_t^c-p_t^c||^2)] rtc=exp[−10(∣∣p^tc−ptc∣∣2)]
r t c r_t^c rtc惩罚角色质心 p t c p_t^c ptc和参考动作之心 p ^ t c \hat{p}_t^c p^tc的偏差。
训练
初始状态分布
在每轮训练开始时,从参考动作中采样一个状态,并将其用于初始化智能体的状态。此策略成为参考状态初始化(RSI)。通过从参考动作中采样初始状态,智能体在策略尚未掌握到达这些状态所需的熟练度之前,就能接触到动作轨迹上的理想状态。通过RSI,智能体在训练早期阶段即可立即接触具有难度的状态。与仅通过奖励函数获取参考动作信息不同,RSI可被理解为额外的信息通道——通过更具信息量的初始状态分布形式,使智能体能够获取参考动作中的信息。
提前终止
对于周期性技能,任务可以被建模为无限时域的马尔可夫决策过程(MDP)。然而在训练过程中,每个回合的模拟仅持续有限时间范围。一个回合会在固定时间段后终止,或在触发特定终止条件时提前结束。当躯干或头部等特定身体部位接触地面时立即终止回合。触发早期终止后,角色在回合剩余时间内不再获得任何奖励。这种早期终止的实现方式通过重塑奖励函数来抑制不良行为。早期终止的另一个优势在于它可以作为数据筛选机制,使数据分布偏向与任务更相关的样本。对于行走和后空翻等技能,一旦角色跌倒后,要恢复正常运动轨迹将极具挑战性。若不采用早期终止,训练初期收集的数据将主要包含角色在地面无效挣扎的样本,网络的大部分容量将被用于建模这些无效状态。这种现象类似于监督学习中遇到的类别不平衡问题。通过在遭遇失败状态时立即终止回合,可以有效缓解这种数据不平衡问题。
多技能整合
组合和排序多个片段的能力对于执行更复杂的任务至关重要。本节中,提出了几种适用于不同应用场景的实现方法。首先,无需局限于单一参考片段来定义期望的运动风格,而是可以选择使用更丰富、更灵活的多片段奖励函数。其次,通过训练一个接收用户指定的独热编码片段选择输入的技能选择策略,能够进一步赋予用户控制触发特定行为的能力。最后,可以通过从现有的单片段策略构建复合策略,避免为每种片段组合训练新策略。在此框架下,多个策略被独立学习,并在运行时利用其价值函数决定应激活哪个策略。
多片段奖励
为在训练中利用多个参考动作片段,我们定义了一个复合模仿目标,其计算方式为取先前介绍的模仿目标在各 k k k个动作片段上的最大值:
r t I = max j = 1 , . . . , k r t j r_t^I=\max_{j=1,...,k}r_t^j rtI=j=1,...,kmaxrtj
该方法赋予策略灵活选择最适配当前情境的片段,并能随时切换片段,而无需设计运动规划器。
技能选择器
除为策略提供多个片段以按需完成任务外,还可以让用户实时控制使用哪个片段。通过该方法,训练的策略能同时学习模仿一组多样化技能,并在训练后按需执行任意技能排列。策略接收由独热向量表示的 g t g_t gt目标,其中每个目标 g t , i g_{t,i} gt,i对应应执行的动作。角色目标即执行与 g t g_t gt非零条目对应的动作。此时无额外任务目标 r t G r_t^G rtG,角色仅优化基于当前选中动作的模仿目标 r t I = r t i r_t^I=r_t^i rtI=rti,当( g t , i = 1 g_{t,i}=1 gt,i=1且 g t , j = 0 g_{t,j}=0 gt,j=0)。训练时,每个周期开始随机采样 g t g_t gt,因此策略需要学习在片段集合内所有技能间的过渡。
复合策略
前述方法均需为片段集合学习单一策略。但随着技能数量增加,要求网络联合学习多项技能会面临挑战,可能导致策略无法充分掌握任何技能。替代方案是采用分而治之策略:先独立训练不同技能的子策略,再整合为复合策略。由于值函数可估计策略在特定状态的预期表现,可利用值函数确定当前状态下最适配的技能。给定策略集及其值函数 ( V i ( s ) , π i ( a ∣ s ) ) i = 1 k (V^i(s),\pi^i(a|s))_{i=1}^k (Vi(s),πi(a∣s))i=1k,通过玻尔兹曼分布构建复合策略
∏ ( a ∣ s ) = ∑ i = 1 k p i ( s ) π i ( a ∣ s ) , p i ( s ) = e x p [ V i ( s ) / T ] ∑ j = 1 k e x p [ V j ( s ) / T ] \prod (a|s)=\sum_{i=1}^k p^i(s)\pi^i(a|s), p^i(s)=\frac{exp[V^i(s)/\mathcal{T}]}{\sum_{j=1}^kexp[V^j(s)/\mathcal{T}]} ∏(a∣s)=i=1∑kpi(s)πi(a∣s),pi(s)=∑j=1kexp[Vj(s)/T]exp[Vi(s)/T]
其中 T \mathcal{T} T为温度系数。因此,在给定状态下具有较大期望值的策略更可能被选中。
方法限制
- 策略需要与参考动作同步的相位变量,其随时间线性推进。这限制了策略调整动作时序的能力,而消除这一限制可能产生更自然、更灵活的扰动恢复
- 多片段整合方法在小规模片段集上表现良好,但尚未在大型动作库中验证。
- 角色底层伺服的PD控制器仍需针对每个角色形态进行手动调参。
- 尽管在所有动作中使用了相同的模仿奖励函数,但其仍基于手动定义的状态相似性度量。奖励项的权重分配也需要谨慎定义。
实验结果
请阅读原文。