专栏名称: 云头条
云计算领域科技媒体:传播观点,传播价值,连接商业与技术;Web:www.yuntoutiao.com ,欢迎互动~~~
目录
51好读  ›  专栏  ›  云头条

OpenAI和DeepMind联合开发根据人类反馈的强化学习算法,机器可后空翻(附视频、论文)

云头条  · 公众号  · 科技媒体  · 2017-06-14 21:11

正文

作者:Dario Amodei、Paul Christiano和Alex Ray


向构建安全的人工智能系统迈出的一步是,人类需要编写目标函数(goal function),因为无论是针对复杂目标使用简单代理,还是复杂目标出现一点偏差,都可能会导致不适宜的行为,甚至危险的行为。我们与DeepMind的安全团队通力合作,开发出了一种算法:只要告诉算法两种提议的行为中哪种行为更合适,它就能推理出人类想要什么。



我们推出的这种学习算法使用少量的人类反馈来解答现代强化学习环境。之前已经探索过拥有人类反馈机制的机器学习系统,不过我们改进了这种方法,以便能够处理复杂得多的任务。我们的算法需要来自人类评估者的信息量为900比特的反馈来学习后空翻――这是个貌似简单的任务。这个动作很容易评判是不是做对了,但是很难详细说明怎么做才可以。


我们的算法使用来自人类评估者大约900比特的反馈,学会了后空翻。


整个训练过程是分为三个步骤的反馈循环,涉及人类、代理对目标的理解以及强化学习训练。



我们的人工智能代理一开始在环境中随机行动。两个显示该代理行为的视频片段定期给某个人看,此人决定两个视频片段中哪一个最接近实现其目标――这里的目标是后空翻。人工智能通过找到最能解释此人评判的奖励函数(reward function),为这项任务的目标逐渐建立起一个模型。然后,它使用强化学习,学习如何实现这个目标。随着行为不断改进,它继续要求轨迹对(trajectory pair)方面的人类反馈(因为它最不确定哪一个更好),进一步完善对目标的理解。


我们的方法显示采样效率非常高――如前所述,后空翻这个视频需要近1000比特的人类反馈。它花了人类评估者不到一小时的时间;而在后台,学习策略积累了大约70个小时的总体体验(以比实时快得多的速度加以模拟)。我们会继续努力减少人类需要提供的反馈量。你可以在下面这个视频中看到训练过程的加速版。


我们已经在模拟的机器人和雅达利(Atari)领域中对许多任务测试了我们采用的方法(未允许访问奖励函数:所以在雅达利游戏中,无法访问游戏得分)。我们的代理可以从人类反馈中学习,从而在我们测试的许多环境中获得出色的、有时胜过人类的表现。在下面这个动画中,你可以看到用我们的技术训练的代理在玩各种各样的雅达利游戏。每一帧右侧的横条表示每个代理的预测,即预测人类评估者对当前行为的认可程度。这些直观的画面表明,用人类反馈训练的代理学会了注重游戏《深海游弋》(Seaquest)中的氧气(左边),预料《打砖块》(Breakout)和《乒乓》(Pong)中的奖励(中间),或者搞清楚如何在《狂野飙车》(Enduro)中撞车后立马恢复过来(右边)。



请注意,反馈不需要与环境的正常奖励函数保持一致:比如说,我们可以训练我们的代理,以便在《狂野飙车》中与其他赛车完全保持齐头并进,而不是超过对方,最大限度地提高游戏分数。我们有时还发现,从反馈中学习比使用平常奖励函数的强化学习来得更胜一筹,因为评估者比编写环境奖励函数的任何人更有资格给予奖励。


面临的挑战


我们算法的性能其好坏完全取决于人类评估者在什么样的行为看起来正确这方面的直觉,所以如果此人并没有深入地了解这个任务,他提供的反馈可能帮助不是很大。相关地,在一些领域,我们的系统可能导致代理采用欺骗评估者的策略。比如说,下面显示了一个机器人:它应该抓物体,而不是将其操纵器放在摄像机和物体之间,以便只是看起来是在抓物体。



我们解决这个特定问题的办法是,添加了视觉线索(上述动画中的那些粗白线),以便人类评估者很容易估计深度。


本文介绍的研究成果是我们与DeepMind的简·莱克(Jan Leike)、米尔简·马蒂克(Miljan Martic)和沙恩·莱格(Shane Legg)合作完成的。我们这两家组织计划继续在涉及长期人工智能安全的主题方面展开合作。我们在竭力打造安全的人工智能系统,能够学习以人类为中心的目标;我们认为,像这样的技术是向这方面迈出的一步,并且可以补充和增强现有的方法(比如强化学习和模仿学习)。本文代表了OpenAI的安全团队所做的工作;如果你有兴趣处理诸如此类的问题,欢迎加入我们的队伍!


补充:


相比之下,我们花了两个小时编写自己的奖励函数(右上角的动画),让机器人后空翻;虽然它成功了,但是比借助人类反馈来训练的那个机器人(左上角)要笨拙得多。我们认为,在许多情况下,相比直接说明具体目标这个传统方法,人类反馈可以让我们更直观、更迅速地指定某个特定的目标。


你可以用下列奖励函数,使用gym(http://github.com/openai/gym),让Hopper同样完成这种后空翻:


def reward_fn(a, ob):  

    backroll = -ob[7]

    height = ob[0]

    vel_act = a[0] * ob[8] + a[1] * ob[9] + a[2] * ob[10]

    backslide = -ob[5]

    return backroll * (1.0 + .3 * height + .1 * vel_act + .05 * backslide)


详细论文点击“阅读原文”下载或在线阅读~~



相关阅读:

中高端IT圈人群,欢迎加入!

赏金制:欢迎来爆料!长期有效!

AI在吞噬软件!


欢迎加入交流,群主微信:aclood