CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

原文来源:BAIR(伯克利人工智能研究院)、雷克世界

作者:Anusha Nagabandi, Gregory Kahn

「雷克世界」编译:嗯~阿童木呀

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学
一般说来,让机器人在现实世界中自主行动是一件很困难的事情。真的很难!即使具有昂贵的机器人和世界一流的研究人员,机器人仍然难以在复杂的非结构化环境中进行自主导航和交互。

 

很多人可能会有这样一个疑问:为什么自主机器人不能像我们一样在这个世界中生活呢?那是因为能够处理我们世界所有复杂问题的工程系统是很难的。从非线性动力学、部分可观测性到不可预知的地形和传感器故障,机器人特别容易受到墨菲定律的影响:一切可能出错的事物都会出错。我们并不是通过对机器人可能遇到的每个情景进行编码以对抗墨菲定律,相反,我们可以选择接受这种失败的可能性,并让我们的机器人能够从中学习。从经验中学习控制策略是有利的,因为与手动控制器不同的是,学习控制器可以通过更多的数据来进行适应和改进。因此,当出现这样一个场景——其中,所有事情都出错了,尽管机器人虽然会失败,但是,当下一次遇到类似的情况时,已学习过的控制器便有可能修正它的错误。为了处理现实世界中任务的复杂性,当前基于学习的方法通常使用深度神经网络,这是一种强大但非数据有效的神经网络;这些基于反复摸索的学习器往往会经历再次失败、第三次失败,甚至是数千到数百万次的失败。当代深度强化学习方法的样本无效性往往是现实世界中利用学习型方法的主要瓶颈之一。

  

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

 图1.一个已学习的神经网络动力学模型使六足机器人学习运行和遵循所需的轨迹,而整个过程只需17分钟的真实经验。

 

我们一直在研究用于机器人控制的神经网络的基于学习的样本高效方法。对于复杂的、接触点丰富的模拟机器人以及实际应用中的机器人(图1),我们的方法能够学习轨迹跟踪的运动技能,而这一过程仅使用收集自机器人在环境中的随机行为的数分钟数据。在本文中,我们将对该方法和结果进行简要概述。更多细节查阅论文(http://arxiv.org/pdf/1708.02596.pdf)和相关代码(http://github.com/nagaban2/nn_dynamics)

 

样本效率:无模型的VS基于模型的

 

从经验中学习机器人技能通常属于强化学习的范畴。强化学习算法一般可以分为两类:无模型,即学习策略或值函数;以及基于模型的,即学习动力学模型。虽然无模型深度强化学习算法能够学习广泛的机器人技能,但它们往往会受到高昂的样本复杂性的限制,通常需要数百万个样本才能获得良好的性能表现,而且一次只能学习一项任务。尽管之前的一些研究已经将这些无模型算法应用于现实世界的操作任务中,但这些算法的高度复杂性和不灵活性已经阻碍了它们在现实世界中用于学习运动技能的应用。

 

基于模型的强化学习算法通常被认为是更有效的样本。然而,为了获得良好的采样效率,这些基于模型的算法通常使用相对简单的函数逼近器,其不能很好地推广到复杂的任务,或者使用高斯过程这样的概率动力学模型,其概括性好,但复杂和高三维的领域,如摩擦接触,会导致不连续的动力学系统。相反,我们使用中等大小的神经网络作为函数逼近器,可以实现出色的样本效率,同时仍然具有足够的表现力,可以用于各种复杂和高维运动任务的推广和应用。

 

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

 

在我们的研究中,我们的目标是将深度神经网络模型在其他领域中的成功扩展到基于模型的强化学习中。近年来,先前那些将神经网络与基于模型的强化学习相结合的努力还没有实现能够与较简单的模型(例如高斯过程)相媲美的结果。例如,Gu等人观察到,即使是线性模型在合成经验生成方面也能够获得较好的性能表现,而Heess等人则在将涵盖神经网络在内的模型纳入到无模型学习系统中看到了相对适度的益处。我们的方法依赖于一些关键的决策:首先,我们在一个模型预测控制框架内使用已学习的神经网络模型,其中系统可以迭代地重新规划并修正错误;其次,我们使用相对较短的范围预测,以便我们不必依靠这个模型对未来做出非常准确的预测。这两个相对简单的设计决策使得我们的方法能够执行各种各样的运动任务,其中,这些运动任务之前没有使用通用的基于模型的强化学习方法进行演示,即可以直接在原始状态观察中操作。

 

我们的基于模型的强化学习方法如图2所示。我们保持一个迭代增加的轨迹数据集,并使用该数据集对动态模型进行训练。这个数据集是用随机轨迹进行初始化的。然后,我们通过在使用数据集对神经网络动态模型进行训练、使用模型预测控制器(MPC)和已学习的动态模型收集附加的轨迹以聚合到数据集上之间交替,从而执行强化学习。我们在下面将对这两个组成部分进行讨论。

 

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

图2.基于模型的强化学习算法概述

 

动力学模型

 

我们将已学习的动力学函数参数化为一个深度神经网络,可以通过一些需要学习的权重进行参数化。我们的动力学函数以当前状态st和动作at作为输入,然后输出预测的状态差st + 1-st。动力学模型本身可以在监督学习环境中进行训练,其中收集的训练数据以成对的输入(st,at)和相应的输出标注(st + 1,st)。

 

需要注意的是,我们上面所提到的“状态”可以随着智能体的变化而变化,并且可以包括诸如质心位置、质心速度、关节位置以及其他任何我们想选择的可测量数值。

 

控制器

 

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

 

使用已学习的动力学模型和任务奖励函数,我们建立了一个基于模型的控制器。在每个时间步骤中,智能体通过随机生成K个候选动作序列,使用已学习的动力学模型预测那些动作序列的结果,并选择对应于最高累积奖励的序列(图3),做出到达未来所需H步的规划。然后,我们只执行动作序列中的第一个动作,继而在下一个时间步骤中重复规划过程。这种重新规划使得该方法在学习动力学模型中能够对抗不准确性。

 

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

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

 

结果

 

我们首先在各种MuJoCo智能体上评估了我们的方法,包括游泳者、half-cheetah和蚂蚁。图4显示,使用我们的已学习动力学模型和MPC控制器,智能体能够遵循一组稀疏的路标所定义的路径。此外,我们的方法只用了几分钟的随机数据对已学习的动力学模型进行训练,显示了它的样本效率。

 

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

 

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

图4:蚂蚁、游泳者和猎豹的移动轨迹结果。每个智能体为了执行这些不同的轨迹而使用的动力学模型仅经过一次训练,且仅使用随机收集的训练数据。

 

我们方法中的哪些方面对取得良好的性能表现至关重要?我们首先考察了MPC规划范围H的变化。图5表明,如果范围太短的话性能会受到影响,可能是由于不可恢复的贪婪行为。对于half-cheetah而言,如果范围太长的话性能也会受到影响,主要是因为已学习动力学模型中的不准确性。图6显示了一个用于单一100步预测的已学习动力学模型,显示某些状态元素的开环预测最终偏离了基本事实。因此,一个中等的规划范围最好避免贪婪行为,同时最小化不准确模型所带来的不利影响。

 

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

图5:由控制器使用不同的范围值进行规划的任务性能图。范围太低或太高都是不太合适的

 

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

图6:动力学模型的100步前向模拟(开环),表明对某些状态元素的开环预测最终会偏离基本事实。

 

我们还改变了用来训练动力学模型的初始随机轨迹的数量。图7显示,虽然较多数量的初始训练数据能够导致较高的初始性能,但是数据聚合能够使得即使是低数据初始化实验也能运行以至达到较高的最终性能水平。这突出显示了强化学习的策略数据是如何提高采样效率的。

 

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

图7:通过使用不同数量的初始随机数据进行训练的动力学模型所获得的任务性能表现曲线图。

 

值得注意的是,基于模型的控制器的最终性能仍然远低于无模型学习器(当无模型学习器经过数千次的经验训练时)。这种次优的性能表现有时被称为“模型偏差(model bias)”,并且是基于模型的强化学习中的一个已知问题。为了解决这个问题,我们还提出了一种混合的方法,结合了基于模型和无模型的学习,以消除收敛的渐近偏差(asymptotic bias),尽管这是要以附加的经验为代价的。这种混合的方法,以及其他分析,论文中皆有详述。

 

学习在现实世界中运行

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

图8:VelociRoACH的长度为10厘米,重量约为30克,每秒可以移动27个身体长度,并使用两个电机来控制所具有的六条腿。

 

由于我们的基于模型的强化学习算法可以使用比无模型算法更少的经验来学习运动步态,因此可以直接在真实世界中的机器人平台上对其进行评估。在其他研究中,我们研究了这种方法是如何完全从现实世界的经验中进行学习的,从而完全从零开始获取一个millirobots(图8)的运动步态的。

 

对于许多应用来说,Millirobots由于其体积小和制造成本低而成为十分具有前途的机器人平台。然而,控制这些millirobots是非常困难的,主要是由于它们的动力不足、功率限制和大小等局限性。虽然手动控制器有时可以控制这些millirobots,但是它们往往在动力学机动和复杂的地形上遇到困难。因此,我们利用上面的基于模型的学习技术来使VelociRoach millirobot进行轨迹追踪。图9显示,我们的基于模型的控制器在经过17分钟的随机数据训练后,可以精确地遵循高速轨迹。

 

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

图9:使用我们的基于模型的学习方法,VelociRoACH能够遵循各种期望轨迹。

 

为了分析模型的泛化能力,我们收集了地毯和聚苯乙烯泡沫塑料地形上的数据,继而对该方法进行了评估,如表1所示。正如预期的那样,当基于模型的控制器在与训练期间相同的地形上执行时表现得非常好,表明模型将地形的知识结合在内。然而,当模型在来自两个地形的数据中进行训练时,性能会下降,这可能表明,我们需要进行更多的研究从而开发出能够用于学习适用于多种任务环境的模型的算法。表2显示,随着越来越多的数据被用于训练动力学模型,性能将会不断提高,这是一个令人鼓舞的迹象,表明我们的方法将会随着时间的推移而不断改进(与手动解决方案不同)。

 

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

表1:用不同类型的数据进行训练以及在不同表面上执行轨迹追踪的模型的成本

 

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

表2:使用经过不同数据量(腿)训练的动力学模型轨迹追踪过程中产生的成本。

 

我们希望这些结果展示了基于模型的方法在采样效率机器人学习领域的未来前景,并鼓励在这一方面进行更多的研究。

长按下方二维码    免费订阅!

C2

如何加入学会

注册学会会员:

个人会员:

关注学会微信:中国指挥与控制学会(c2_china),回复“个人会员”获取入会申请表,按要求填写申请表即可,如有问题,可在公众号内进行留言。通过学会审核后方可在线进行支付宝缴纳会费。

单位会员:

关注学会微信:中国指挥与控制学会(c2_china),回复“单位会员”获取入会申请表,按要求填写申请表即可,如有问题,可在公众号内进行留言。通过学会审核后方可缴纳会费。



学会近期活动

1.中国指挥与控制学会第二次全国会员代表大会

2017年12月21日



长按下方学会二维码,关注学会微信

CICC科普栏目|如何让机器人自主行动?伯克利利用神经网络动力学

感谢关注