首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于神经网络动力学模型的强化学习

选文|丁建峰翻译| 张一 许峰 金明

校对| 李韩超 编辑| 李韩超

素材来源:robohub & BAIR

泡泡机器人推广内容组编译作品

01

让机器人在现实生活中自主行动是很困难的, 即使是拥有昂贵的机器人和世界级研究人员的团队,在复杂的、非结构化的环境中机器人自主导航和交互还是非常困难的。

Fig 1.一个学习的神经网络动力学模型,仅仅只用了17分钟的真实场景的经验学习,让一个六足机器人能够学会沿着理想的轨迹运动

能够应对这个世界所有复杂情况的工程系统是很难达到的。由于在真实环境中机器人的运动非线性、部分观察性问题(当前的观察结果可能无法反应目前的所有状态)、不可预测的地形和传感器故障等因素,机器人特别容易受到墨菲定律的影响:所有可能出错的地方都会出错。想比于通过编程每个可能出现的场景来对抗墨菲定律,我们可以选择接受这种失败的可能性,并让我们的机器人从它身上学习。从经验中学习控制策略是有优势的,因为和基于手动设计的控制器不同,基于学习的控制器可以通过更多的数据来适应新环境并改进自身的策略。因此,即使当场景中的所有事情都出错时,尽管机器人仍然会失败,但基于学习的控制器能够从此次失败中学习改进,并当下次遇到类似的情况时,不再出现这种错误。为了处理现实世界中复杂的任务,目前基于学习的方法通常会使用深度神经网络(很强大但是样本利用效率不高),这些基于测试和错误的学习者通常会第二次失败,第三次,通常是几千到数百万次。目前样本低效是在现实世界中利用学习型方法的主要瓶颈之一。

加州大学伯克利分校的研究者们就正致力于研究一种基于神经网络的高效样本学习的机器人控制方法。对于复杂环境中的模拟机器人,如Fig1中的真实世界中的机器人,这种方法可以仅使用少量采集的数据让各类机器人学习跟随轨迹的运动技能。这篇文章概括性地介绍了一些方法思路和结果,更多详细的技术细节可以查阅原论文[1][2]和开源代码[3]。

02

样本效率:model-free VS model-based

从经验中学习技能通常属于强化学习的范畴。强化学习算法一般可分为:无模型(model-free,学习策略或值函数),基于模型(model-based,学习动态模型)。虽然无模型的深度强化学习算法能够学习广泛的机器人技能,但它们通常都有很高的样本复杂性,通常需要数百万个样本才能达到良好的性能,且通常只能一次学习一项任务。尽管先前的一些工作已经为现实世界的操作任务部署了这些无模型算法,但这些算法的高样本复杂性和灵活性阻碍了其被广泛用于移动技能的学习中。

基于模型的强化学习算法通常被认为能更有效地利用样本。然而,为了实现样本的高效利用,传统基于模型的算法通常使用相对简单的函数作为真实环境模型的近似(不能很好的描述复杂的任务),或者利用概率动力学模型(高维性能较差)。与之不同,我们使用中等大小的神经网络作为函数逼近器,可以达到出色的样本利用效率,同时仍具有足够的表达能力来应用于各种复杂和高维的运动任务。

基于神经网络动力学模型的深度增强学习

这里,我们希望将深度神经网络模型在其他领域已经取得的成果扩展到基于模型的强化学习中。近年来,将神经网络与基于模型的强化学习相结合的研究还没有达到与简单模型相竞争的结果,例如高斯过程等。我们提出的方法依赖于一些关键的决策。首先,在模型预测控制框架内使用学习的神经网络模型,系统可以迭代地重新规划和纠正错误。其次,使用相对较短的预测,以便于不必依靠这个模型在未来做出非常准确的预测。这两个相对简单的设计决策使得的方法能够执行各种各样的运动任务,这些运动任务之前并没有在使用通用的基于模型,直接对原始状态观测数据训练学习的强化学习方法中提及。

图2显示了基于模型的强化学习方法的框图。首先维护了一个迭代增加的轨迹数据集,使用这个数据集来训练动力学模型。数据集被随机轨迹初始化。然后,使用数据集训练神经网络动力学模型,使用模型预测控制器(MPC)和学习的动力学模型来收集额外的轨迹以聚合到数据集上,从而实现强化学习。下面主要讨论这两个部分。

Fig 2.基于模型的强化学习算法总览

动力学模型

我们将基于学习的动力学函数(learned dynamics function)参数化为一个深度神经网络,通过一些需要学习的权重进行参数化。动力学函数将当前状态s_t和行为a_t作为输入,并输出预测的状态差异s_ -s_t。动态模型本身可以在监督学习设置中训练,其中收集的训练数据以成对的输入(s_t,a_t)和相应的输出标签(s_ ,s_t)进行。

请注意,这里提到的“状态”可以随代理而变化,它可以包括诸如质心位置、质心速度、关节位置以及可选择包含的其他可测量的元素。

控制器

为了使用学习的动力学模型来完成任务,需要定义一个对任务进行编码的奖励函数。例如,标准的“x_vel”奖励函数可以编码前进的任务。对于轨迹跟踪的任务,我们制定了奖励功能,靠近轨迹时激励,并沿着轨迹前进。

使用学习的动力学模型和任务奖励函数,我们提出了一个基于模型的控制器。在每个时间步长中,智能体(agent)通过随机产生K个候选动作序列来计划第H步,使用所学习的动态模型来预测动作序列的结果,并且选择对应于最高累积奖励的序列(如图3)。只执行动作序列中的第一个动作,并在下一个时间段重复计划过程。这种重新规划使得该方法对于学习动力学模型中的一些误差也保持有较好的鲁棒。

Fig 3.使用学习动力学模型模拟多个候选动作序列的过程示意图,预测其结果,并根据奖励函数选择最佳动作序列。

03

结果

我们首先在各种MuJoCo智能体下对提出的方法进行评估,包括游泳者(swimmer),半猎豹(half-cheetah)和蚂蚁(ant)模型。如图4,使用这种学习动力学模型和MPC控制器,智能体能够遵循由一组稀疏的航点定义的路径。此外,这种方法只用了几分钟的随机数据来训练学习的动力学模型,显示了它的高样本利用效率。

请注意,使用这种方法,只需预先对模型进行一次训练,之后只需改变奖励函数,就可以在运行时将模型应用于各种不同的期望轨迹,而不需要再对特定的任务单独训练。

Fig 4.蚂蚁、游泳者和半猎豹的轨迹跟随结果

在这种方法中,哪些方面对于取得好的结果至关重要?关于这个问题,首先我们通过改变用来规划H范围的MPC值来观察它的影响。图5显示对于半猎豹来说,如果线程太短,可能会对性能造成影响;但如果线程过长,同样会由于动力学模型的不准确对性能造成影响。图6展示了用于100步预测的动力学模型,从结果来看某些状态元素的开环预测最终偏离了地面。因此,为了尽量减少不精确模型的有害影响,最好选取一个合理的中间规划线程。

Fig 5.不同线程规划控制器任务实现性能图。这里线程既不能太高,也不能太低。

Fig 6.动力学模型的100步前向开环仿真表明,对某些状态元素的开环预测最终偏离了地面。

我们还改变了用于训练动力学模型的初始随机轨迹的数目观察对性能的影响。图7显示,虽然较高的初始训练数据量有助于形成更好的初始性能,但数据聚合的存在,使得即使在低数据初始化实验中也能达到较高的性能水平。这一点就强调了如何从强化学习的政策数据来提高样本效率的问题。

Fig 7.用不同初始随机数据训练的动力学模型实现的任务性能图。

值得一提的是,基于模型的控制器的最终性能仍然大大低于一个非常好的无模型学习者(当无模型学习者接受数千倍的经验训练时)。这种次优性能有时被称为“模型偏差”,是基于模型的RL中一个固有的问题,为了解决这个问题,我们提出了一种混合方法,它结合了有模型和无模型的学习,并以最小的经验为代价消除收敛时的渐近偏差。这种混合方法和额外的分析,在理论上是可行的。

04

学习在真实环境中移动

Fig 8.Velociroach的车身长度是10厘米,体重约30克,速度可以高达每秒2.7米,在结构上具有双电机控制的六条腿。

由于使用基于模型的强化学习算法运动步态比使用经验模型的算法运动步态要小,所以可以直接评估它在现实世界中的自动化水平和机器水准。在其他工作中,我们还研究了该方法完全从现实经验中学习的流程,得到了一个millirobot从头开始获取运动步态规划(图8)。

millirobots是一款体积小、制造成本低、应用前途较大的的机器人平台。然而,由于其有限的驱动、功率和尺寸约束,控制millirobots这个平台还是有些困难的。有时手动控制器可以控制这些millirobots,但它们往往有困难的动作动态和复杂的地形带。因此我们利用提出的模型学习方法,从上位机使velociroach millirobot做轨迹跟踪。图9表明,只需要经过17分钟的训练学习,这种控制器可以准确地跟踪高速运动轨迹。

为了分析模型的泛化能力,我们还收集了地毯和泡沫塑料地形的数据,评估的结果如表1所示。正如预期的那样,基于模型的控制器在同一地形上进行训练时表现最好,这表明该模型也包含了地形的知识。然而,当模型在两个地形收集到的数据上进行训练时,性能会降低,这可能意味着需要更多的工作来开发适用于不同任务设置的学习模型算法。幸运的是,表2显示用来训练的数据越多性能越强,这是一个令人鼓舞的现象,这也表示这种方法能随着时间的推移不断改善自身性能(不同于手动编程的解决方案)。

表 1.用不同类型的数据训练的模型和不同表面上运行轨迹产生的跟踪成本。

表 2.在使用不同数量的数据训练的动力学模型时,所产生的轨迹跟踪成本。

我们希望这些成果能够说明基于模型的方法对样本有效的机器人学习的促进作用,并鼓励今后在这方面的研究。

参考文献

[1]

https://arxiv.org/abs/1711.05253v1

[2]

https://arxiv.org/pdf/1708.02596.pdf

[3] Code:https://github.com/nagaban2/nn_dynamics

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171211A0233900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券