基于物理的运动控制-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.01, 0.01],并将初始化分布的偏差bias初始化为0;分布的方差同样通过均匀初始化进行初始化,并将初始化分布的偏差bias初始化为0.05),并将均值的偏差的初始值设为 0 。从代码的实现来看,DeepMimic将策略网络的隐藏层作为主干(backbone)网络,将策略分布的均值(mean)和方差(std)分别作为两个具有单层网络的策略头(multi-heads)的输出,来进行学习。在这里插入图片描述

DeepMimic中的一个参数配置的例子:

ct_agent_dog_ppo.txt
{
	"AgentType": "PPO",

	"ActorNet": "fc_2layers_1024units",
	"ActorStepsize": 0.000001,
	"ActorMomentum": 0.9,
	"ActorWeightDecay": 0.0005,
	"ActorInitOutputScale": 0.01,

	"CriticNet": "fc_2layers_1024units",
	"CriticStepsize": 0.0005,
	"CriticMomentum": 0.9,
	"CriticWeightDecay": 0,

	"ItersPerUpdate": 1,
	"Discount": 0.95,
	"BatchSize": 4096,
	"MiniBatchSize": 256,
	"Epochs": 1,
	"ReplayBufferSize": 1000000,
	"InitSamples": 1,
	"NormalizerSamples": 1000000,

	"RatioClip": 0.2,
	"NormAdvClip": 4,
	"TDLambda": 0.95,
	
	"OutputIters": 10,
	"IntOutputIters": 200,
	"TestEpisodes": 32,

	"ExpAnnealSamples": 64000000,
	
	"ExpParamsBeg":
	{
		"Rate": 1,
		"Noise": 0.05
	},

	"ExpParamsEnd":
	{
		"Rate": 0.2,
		"Noise": 0.05
	}
}

参数分析:
ExpParamsBeg是初始的参数,ExpParamsEnd是训练结束时的参数,在训练过程中,选择从高斯分布进行采样的概率从1下降到0.2,期间高斯分布的噪声始终为0.2
ActorWeightDecayactor网络权重bias损失的系数,在训练的过程中会减小网络权重的bias
ActorInitOutputScale是对actor网络和critic网络初始网络权重的限制,通过这个参数,网络权重的初始化范围变为[ActorInitOutputScale, -ActorInitOutputScale]
ActorStepsizeCriticStepsize分别是actor网络和critic网络的学习率
RatioClip, ItersPerUpdate, BatchSize, MiniBatchSizeEpochs是PPO算法如何更新网络权重的参数, 在上面给定的参数中,在训练的每一步都会更新,但每次只在同一批采样上更新一次

代码结构图
在这里插入图片描述

在训练过程中,逐渐增大episode的长度。能够避免避免智能体在学习过程中“安于现状”(即智能体会尽可能地提升每个episode开始时的奖励,而不去努力探索未知的状态来得到更多的奖励)的情况,从而提升策略在整个max_episode上的性能。

链接:

[1] Reimplementation of DeepMimic in Isaac Gym - dung defender的文章 - 知乎

[2] DeepMimic: example-guided deep reinforcement learning of physics-based character skills

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值