强化学习可能会出错,OpenAI解读错误奖励函数问题和应对方法

By 吴攀2016年12月22日 13:21

强化学习算法可能会出问题,而且有时候出问题的方式惊人又反直觉。在这篇文章中,我们探索了一种失败的模式——即当你错误指定了你的奖励函数(reward function)时会出现的情况。

OpenAI 最近开始使用 Universe 来进行新的强化学习实验了——Universe 是我们用于测试和训练人工智能代理的软件。正如近期的实践中出现的情况一样,有时候这些实验会揭示出强化学习的一些问题。在下面的例子中,我们给出了当错误指定了奖励函数时会发生的情况——即错误指定的奖励函数(mis-specified reward function)通过优先获取奖励信号而非其它的成功度量来破坏其环境。


要设计出安全的人工智能系统,需要我们设计出不会试图这样做的算法,并且我们需要学会如何指定和塑造目标从而使这些目标不会被我们的人工智能代理错误解读。


CoastRunners 是我们一直用于训练的一款游戏。这个游戏目标是(就像大多数人类理解的一样)尽快结束船只比赛并且领先其他玩家。CoastRunners 不会在路线上直接奖励玩家的进度,玩家需要到达路线上的指定目标点才能获得更高分数的奖励。


我们假设玩家获得的分数反映了完成该比赛的非正式目标,所以我们在这个游戏中包含了一个内部基准,用来测量强化学习系统在比赛游戏上的表现。但是,事实证明这种目标的排布方式让强化学习代理无需完全跑完赛道也能获得高分。这就导致了一些我们训练强化学习代理玩这个游戏时所没有预料到的问题。

该强化学习代理找到了一个孤立的环礁湖,它在那里可以不停地转圈,一次又一次地经过三个目标,它计算好了时间,这样就能在目标点重新生成的时候总是击中目标而获得分数。尽管会重复地着火、撞到其它船,但我们的代理还是成功通过这一策略得到了比以正常的方式完成比赛所可能得到的最高分还高的分数。我们的代理得到的分数平均超过人类玩家 20%。


尽管在视频游戏这一场景中这是无害的而且可能还很有意思,但这种情况表明了强化学习代理所具备的一个更为一般化的问题:它很难或不能确切地理解我们想要它做的事,因此我们常常最后会使用不完美但易于测量的代表。通常这么做的表现还算不错,但有时候这也会带来意料之外甚至危险的动作(action)。总的来说,它违反了基本的工程原理——即系统应该是可靠的和可预测的。我们也在我们研究论文《Concrete AI safety problems》中更详细地探索了这一问题。(参见机器之心的文章《研究人工智能安全不再抽象:谷歌、OpenAI 合著论文,提出更加实用的五大研究课题》。)


我们可以怎样避免这样的问题呢?除了小心设计奖励函数之外,OpenAI 也正在探索其它有助于减少错误指定奖励的情况的研究方向:



这些方法可能都有自己的缺点。比如说,迁移学习需要基于许多相似环境的奖励函数来推导新环境的奖励函数。这种推导本身可能就是有缺陷的——比如说,如果一个代理在一些赛车游戏上进行了训练并且在这些游戏中脱离道路得到惩罚很小,那么它就可能错误地总结认为:脱离道路是一种有更高赌注的新方法,没什么大不了的。更微妙的是,如果这个奖励推导的过程涉及到神经网络,那么该网络中的对抗样本(adversarial examples)就可能会导致奖励函数有「不自然的」高奖励区域但却不对应于任何合理的真实世界目标。


这些问题的解决是很复杂的。我们希望 Universe 能让我们可以快速地发现和解决新的失败模式,并帮助我们最终开发出我们可以对其行为真正有信心的系统。


原文链接:https://openai.com/blog/faulty-reward-functions/


声明:本文由机器之心编译出品,原文来自OpenAI,作者ARIO AMODEI、JACK CLARK,转载请查看要求,机器之心对于违规侵权者保有法律追诉权。