从一个失败的强化学习训练说起:OpenAI 探讨应该如何设计奖励函数?

首页 > 网络 > 数码 > 本文
2018年09月14日 15:54 | 凤凰科技 小孟

在当下,强化学习算法以一种惊奇、不可思议的方式进入到了我们的视野中。雷锋网此前也做过不少相关的覆盖和报道,而在 OpenAI 的这篇文章中,Dario Amodei 与 Jack Clark 将会探讨一个失败的强化学习模型。这个模型为何失败?原因就在于你没有指明你的奖励函数。雷锋网编译,未经许可不得转载。

我们最近在 OpenAI 上使用 Universe 来进行强化学习的实验。Universe是我们使用的一款软件,可以用它来测试和训练AI代理。实验显示,有时候我们在使用强化学习进行训练时,会出现一些问题。在接下来的例子当中,我们将针对这种情况进行说明:我们将一个模糊的奖励函数应用于一个强化学习的代理,而这导致了我们的代理对优先级的处理是错误的,这也就违反了背景的设定。

要想设计安全的AI系统,我们的算法就不能容忍这种情况的发生。我们必须确定目标,不能使我们的AI代理误解目标。

我们正在 CoastRunners 上训练我们的 AI 代理。正如大多数人类所理解的那样,游戏的目标是快速并且完美的在其他玩家之前完成游戏。在比赛过程中,CoastRunners 并不会对玩家的游戏进程进行奖励。相反,玩家会因为不断地完成目标而获得更高的分数。

我们假设玩家所获得的分数并不是玩家完成比赛的关键,对此我们在这个游戏当中设置一个内部基准,使用这个基准来衡量强化学习系统在这个竞赛中的表现。然而结果表明,强化学习代理为了获得更高分数,而不去完成游戏。这表明,在我们使用强化学习来训练代理玩这个游戏的时候,导致了意想不到的情况。

这个强化学习代理找到了一个孤立的咸水湖,它可以不断地绕圈并不断地完成三个任务来获得分数,当这个三个任务被重现之后,该代理就再次重复它的行动来完成这三个任务。不在乎一味的着火、冲撞其他的船只、进入错误的航道,我们所训练的代理通过使用这种方式来获得更高的分数,而不是使用正常的策略来完成比赛。我们的AI代理获得的分数,平均下来比其他的人类玩家高20%。

尽管在电子游戏的环境中,这种行为是无害并且有意思的,然而这种行为表明广泛存在于强化学习当中的一个问题:精准地使代理按照我们人类的意愿来做事,是很困难或者说是不可能的。我们得到的结果往往是,我们所训练出的是一个不完美而又易受影响的代理。在更广范围来说,它违背了基本的工程学原理,即系统必须是可信并且可以预测的。我们也在我们的实验论文《聚焦AI系统安全问题》中,进行了更深入的探讨。

我们该如何避免这些问题?除了谨慎地设计奖励函数之外,OpenAI 对一些研究方向的探索,可能会有助于减少使用那些错误的奖励函数。

示范训练将会帮助我们避免使用直接指定奖励,相反它会帮助我们训练的代理学习如何模仿一个人来完成任务。在本例中,由于大部分的人类玩家都在试图完成游戏,因此我们的强化学习算法也会这样做。

除此之外,或者说除了人类的示范作用之外,我们可以通过估计游戏进行的环节,或者以一种交互的方式来控制我们的代理,并将其视为人的反馈。非常小的评价反馈可能会帮助代理避免进入死循环。

使用迁移学习的方式来训练众多相似的游戏,并推断对于这种游戏有一个共同的奖励函数,是有可能的。一个典型的游戏更多的是为了完成比赛,而不是为了获得游戏当中的特殊奖励,在基于这个事实的基础之上,我们的奖励函数会将完成游戏列为最高优先级。这看上去和人类玩游戏的方式一样。

但是这种方法可能存有弊端。例如,假如许多相似的环境拥有类似的奖励函数,我们也许能够将这种奖励函数应用到到一个新的环境。但是。这种应用有可能会引发错误。例如,我们使用许多竞赛类的游戏(这些游戏对于开出跑道的惩罚很小)来训练我们的代理,这将会使我们的代理错误的认为在一个全新的、代价更高的背景下,开出跑道也没什么大不了的。更微妙的是,假如应用这种奖励函数的过程涉及到了神经网络,在该网络中那些互斥的例子,有可能导致奖励函数在非正常的区域内来获得高额的奖励,这种现象并不是我们乐意见到的。

解决这类问题是复杂的。我们希望 Universe可以帮助我们快速地发现并解决这些新的错误,最终使我们的系统可信。雷锋网也将持续关注强化学习领域的相关内容。

viaopenai