• 基于物理的运动控制-DeepMimic


    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

  • 相关阅读:
    K8s部署SpringBoot项目简单例子
    Linux进程概念详解
    记录一次Flink安装记录
    英文伪原创工具-免费批量英文伪原创软件
    C++指针的使用
    攻防世界 web篇(二)
    RabbitMQ配置、底层、使用一套打通,由繁到简(慕课网)
    c++|内联函数
    图文看懂JavaScritpt引擎V8与JS执行过程
    [毕业设计源码】PHP计算机信息管理学院网站
  • 原文地址:https://blog.csdn.net/weixin_40679158/article/details/126145075