1. DeepMimic的两个主要方法
2. 状态和动作的表示:状态S 包括每个关节相对于根的位置,四元素表示的旋转、线性速度和角速度,阶段变量 ϕ \phi ϕ,当 ϕ = 0 \phi=0 ϕ=0时,表示运动的开始,当 ϕ = 1 \phi=1 ϕ=1 时,表示运动的结束。在循环运动中,在每个循环结束后,阶段变量重置为 0 。
3. 奖励函数的设计:1)匹配关节朝向的奖励 2)减小关节速度差异的奖励 3)匹配参考运动手、足位置的奖励 4)惩罚偏移参考运动质心的奖励 5)完成额外目标的奖励
3. 初始状态分布
固定的初始状态分布:每个episode都包括从运动开始到结束,使得策略必须学习运动的整个阶段。但固定状态初始化状态分布很难探索到具有高价值的状态,这是因为策略只能学习到较容易达到的状态。所以在DeepMimic中改变初始状态的分布。
参考状态初始化(RSI):使用参考运动的采样对初始状态进行初始化,能够克服固定状态初始化很难探索到高价值状态的缺点。
4. 提前终止(ET):当达到一段固定的时间后,或者当触发某些终止条件后就终止当前的episode。当提前终止触发后,智能体在episode剩下的部分得到的奖励就为 0 。这相当于一种阻止不良行为的塑形奖励。另一方面,使得数据的分布偏向于与任务更相关的采样。
5. 多技能的集成:使用多个片段进行训练来得到期望的风格,并使用one-hot编码来输入特定的片段。
技能选择器:使用one-hot编码表示对技能的选择,并同时模仿学习一组不同的技能,随机选择训练的技能并进行采样,使得在训练完成后,能够按需执行任意的技能序列。因此,策略同时也需要学习不同片段中技能的过渡。
复合策略:因为使用同一网络学习多个技能的挑战性,所以可以使用分而治之的策略。使用不同的策略训练不同的技能,然后将它们集合到一个复合的策略中。并使用值函数在给定的状态下选择合适的技能。
6. 技能的训练
控制角色向前运动的任务

7. 代码实现中的技巧
策略网络的初始化,在DeepMimic的策略网络训练初期,策略网络的输出应当接近于0,来使得参考运动能够更好地指导控制策略的学习。所以DeepMimic使用对角高斯矩阵对策略分布进行参数化,并将均值的偏差的初始值设为 0 。
从代码的实现来看,DeepMimic将策略网络的隐藏层作为主干(backbone)网络,将策略分布的均值(mean)和方差(std)分别作为两个具有单层网络的策略头(multi-head)的输出,来进行学习。同时,分布的均值初始化为 0 。
在训练过程中,逐渐增大episode的长度。能够避免避免智能体在学习过程中“安于现状”的情况,从而提升策略的性能。
链接:Reimplementation of DeepMimic in Isaac Gym - dung defender的文章 - 知乎
https://zhuanlan.zhihu.com/p/440905686