Paper-8 泛读 DeepMimic (2018 ACL)

概述

这是一篇在动画人物上的强化应用文章,非常震撼,主要集中在Multi-skilled agents的学习上,以及提出一种该问题下的Exploration问题。

目标是imitation + task objective的结合,通过RL学习一个多技能的agent,强调在动画上的generalization的问题。

因为是具体动画制作的应用领域,所以focus on 算法,大体怎么做,不像之前的写那么多公式,并考虑计算细节。

这一篇文章其实技术细节写得十分详细,甚至是state的设计、action在实际应用中再接个PD从控制器,以及在Vision-based的时候怎么做,如果细节不太清楚的可以看看这篇文章技术细节。

一、High-level的做法

  1. 数据上有一堆专家数据,Paper中为kinematic reference motions
  2. 要学习的robust policy为 π ( a t ∣ s t , g t ) \pi(a_t|s_t,g_t) π(atst,gt),其中 g t g_t gt为task-specified的
  3. 最终希望学得的Agent能以专家的motion去完成指定的task(比如用专家展示的正常跑步姿态去触碰一个球;用专家展示的后空翻姿态去完成这个动作)
  4. 所以最核心的就是一个为task-specified的objective,一个是imitation objective,将一个任务拆解为以某种方式完成某种目标

所以要关注的就是

  • 如何从专家数据中提取中对应的监督信息(Imitation Objective)
  • 学习multi-skills的时候,怎么平衡?(Multi-Skill Objective)
    • 如何设计task-specified的goal(Task Objective)
  • 如何将Task Objective与Imitation objective混合在一起?

至于怎么设计state、goal、action以及target pose的具体细节忽略。

二、主要逻辑

2.1 Single Imitation Objective

首先是解决第一个关注点,怎么从expert reference motion中提取到监督信息?
1

r t I r_t^I rtI为一个姿态动作的Imitation Objective, r t p r_t^p rtp为关节姿态或者关键方向(joint orientation)的目标, r t v r_t^v rtv关节角速度(angular velocity)的木目标, r t e r_t^e rte为描述end-effector在3D world position的目标, r t c r_t^c rtc为物体质心位置的目标。

这些目标分别为:(q是reference motion pose描述方向,p是3D world position描述位置)
2
3
4
5

所以一个Imitation Objective由四部分小目标组成,这些目标相当于说,你这policy输出的motion(joint orientation/position/velocity/point)得与reference motion非常接近,优化的目标就是这个exponentiated Sum Square Error,这个Imitation Objective还是很直观的。
(越符合,给出的reward越大,越不符合,给出的reward越小,相当于是一个Objective的定义)

2.2 Multi-Skill Imitation Objective

刚才介绍的是对一种Skill的Imitation Objective,现在看看怎么学习一个多技能的Agent。

  1. 定义一个Multi-clip reward来表示多种Skill的组合
  2. 一个skill selector policy采样one-hot编码,便于user手动选择
  3. 组成一个composite policy,以结合多种技能来形成一个complex behavior

其实就是说,训练时单独train多个policies,在测试时利用其value function进行选出合适的policy,这个整体称为composite policy,至于skill selector是方便user即我们进行操作的。

假如有k个独立训练好的policy的 { V i ( s ) , π i ( a ∣ s ) } i = 1 k \{V^i(s),\pi^i(a|s)\}_{i=1}^k {Vi(s),πi(as)}i=1k,一个值函数判断状态价值,一个策略函数是怎么做。那一个composite policy就是把这些独立的合起来:

Π ( a ∣ s ) = ∑ i = 1 k p i ( s ) π i ( a ∣ s ) p i ( s ) = exp ⁡ [ V i ( s ) / T ] ∑ j = 1 k exp ⁡ [ V j ( s ) / T ] \Pi(a|s)=\sum_{i=1}^kp^i(s)\pi^i(a|s)\\ p^i(s)=\frac{\exp[V^i(s)/T]}{\sum_{j=1}^k\exp[V^j(s)/T]} Π(as)=i=1kpi(s)πi(as)pi(s)=j=1kexp[Vj(s)/T]exp[Vi(s)/T]

T是温度,通过每个policy的值函数来决定当前状态s来决定composite policy应该选择哪个policy执行,这样一个组合后的policy就能利用多个独立的policy来形成复杂动作。(Boltzman Distribution来决定single policy的概率

2.2 Task Objective

这是一个往某一方向按某一速度跑的任务的reward,为了完成某个task而设计的reward:
r t G = exp ⁡ [ − 2.5 max ⁡ ( 0 , v ∗ − v t T d t ∗ ) ] r_t^G=\exp[-2.5\max(0,v^*-v^T_td^*_t)] rtG=exp[2.5max(0,vvtTdt)]

d t ∗ d^*_t dt为target direction, v t T v^T_t vtT为agent的center-of-mass velocity, v ∗ v^* v为desired speed

就是说,如果agent质心的速度 v t T v_t^T vtT与方向 d t ∗ d_t^* dt,与我们设置的desired speed即 v ∗ v^* v,差距很大的话,reward即 r t G r_t^G rtG就很小。只有两者相等时,reward最大。

(至于target direction由goal来提供,即 g t = d t ∗ g_t=d_t^* gt=dt,训练时,goal是随机的,测试时可人为设定)

下面还有很多具体任务设计的reward,对于reward design中的范围、奖励设置、归一化等有很多具体的例子进行学习,具体参考Paper,再贴个出来。
7

网络结构:(H是如果用vision-based policy的话,就像2016 JMLR那个Visuomotor policy做,不用就直接state,goal输入)
10

输出是一个policy:在这里插入图片描述

三、实验

这篇文章在算法层面上不难,DRL上用的算法是PPO包括了GAE计算优势函数,计算值函数用了 T D ( λ ) TD(\lambda) TD(λ),更偏向于amazing、exciting的应用。感觉实验性文章的工程难度超大= =,从中窥探一些经验吧:

  1. 先熟悉这四个Agent的一些小细节,如关节数、质量、高度、自由度,状态与动作的维度

6

  1. 然后Ablation Study是必看的,RSI是reference state Initialization,ET是Early Termination,是Imitation Objective中的做法。(通俗来说,RSI是随机选取专家数据的初始状态进行探索,相当于在高价值状态附近探索,效率会高些;ET是为了避免过拟合环境中的dynamics 噪声)
    8

  2. 看看Imitation与Goal Objective的结合效果(都是把Objective做到了reward里去的
    11
    Imitation单独来看非常一般,因为问题实在是太高维了,数据量不足
    基于State与Goal的Rl单独看来比Imitation好出一大截,但稀疏reward的情况下,性能的好坏取决于能否探索到High-Reward Region,探索到了,性能肯定ok,毕竟监督信息reward传递到位了。
    因此,利用Imitation的Objective来指导RL中对High-Reward状态的探索,就是这篇Paper在算法层面的一个点,还探究了RSI以及ET两种Trick的对比实验。

  3. 看看需要多少仿真数据量(Walk那一列表示motion,可以理解成姿态,是Imitation Objective,Target Heading那一列表示goal,可以理解成任务,是Task Objective/Goal Objective)(NR是Normalized Return)
    12
    嗯,需要的虚拟数据是千万级别的,那估计Train一个就得三四天了= =

总结

代码有开源:https://github.com/xbpeng/DeepMimic
文章:https://arxiv.org/abs/1804.02717

大佬的博客:https://xbpeng.github.io

一句话总结:专家数据的Imitation形成一个Objective与Task Objective相关的Goal都做进了Reward里面,然后建模成一个RL目标就是优化,最后将多种Policy用Boltzman Distribution组合起来,比较重要的是RSI与ET两个Tricks。

简略点:核心是RL中的Reward Design,分为Imitation Reward与Goal Reward两部分。

不足:

  1. 一个Episode的长度问题,训练的时候使用了一个phase variable对Episode分阶段训练(实际上就是分层强化学习,分阶段探索潜在的High-Reward Region)
  2. 多个Policy集成为一个Composite Policy肯定对可集成Skilled的个数有所限制,感觉并不是真正学到了Skill背后的能力,Meta-Learning就很适合搞一下了

最后贴个图感受一下训练过程的跌宕起伏:
13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值