如何设计奖励函数

作者Hal Daumé III是美国马里兰大学计算机科学院CLIP lab副教授,博士毕业于南加州大学,致力于研究自然语言处理和机器学习等方向。


我上学期参加了一个强化学习毕业研讨会,它带给我很多乐趣并让我学习到之前想学却无机会学习的一些东西或已经忘记的旧知识。很难相信,我的第一篇强化学习论文发表于 11 年前,我与 Daniel Marcu、John Langford 在 NIPS 研讨会上发表了第一篇关于减少强化学习的结构化预测的文章(Search-Based Structured Prediction as Classification. Machine Learning, 2009),该论文的基本思想为使用保守策略迭代(Conservative Policy Iteration)。(这项工作最终产生了 SEARN 算法。)我在强化学习领域的大部分工作都集中在模仿学习(imitation learning)/ 样例学习(learning from demonstrations),但我与我的学生最近已经致力于更多与强化学习直接相关的算法、应用以及延伸(同时可以参见 Tao Lei 在类似的解释静脉中的工作和 Tim Vieira 的精彩 TACL 论文)。


强化学习最近又经历了一点复兴,这主要是其通过深度神经网络与良好的函数近似相结合的结果。更可信的说法是这次复兴是由于以视频游戏和以 Atari 游戏集合为代表的趣味性模拟环境增加了人们研究强化学习的兴趣和可能性。与 ImageNet 使神经网络真正应用于计算机视觉相似(通过增加层数和利用 GPU 性能),这些模拟环境为强化学习提供了相同的大数据资源,使得强化学习可结合 GPU 的性能为许多游戏打造令人印象深刻的解决方案。


实际上,强化学习社区很多人在全面考虑这一观点:学习玩游戏是通向更通用的人工智能的一条道路。我听到的通常反对强化学习的理由是数据量过大。这个论点大致是:如果你真的想要构建一个在真实世界中行动的机器人,你无法模拟 1000 万帧场景(来自 Deepmind 论文,论文数据基于 8 天之内的实时体验)。


虽然这是一个问题,但我并不认为是最本质的。最本质的问题是:游戏实际上构建了一个模拟环境,通常其中的奖励函数(reward function)是为了让人们找到游戏乐趣,这意味着,时不时出现的小奖励可以帮你找到正确的方向。这正是强化学习擅长的,但我不确定在现实世界中这个假设是否合理。


延迟奖励(delayed reward)是强化学习最困难的问题之一,因为(a)这需要做很多探索性工作,(b)你面临一个困难的信度赋值(credit assignment)问题。例如,如果你想象一个变体,比如你最喜欢的视频游戏的一个变体,其中你只在游戏结束时获得 -1/+1 的奖励来判断输赢,这使得你的学习变得异常困难,特别是游戏如果有 1000 万帧或 10 亿帧的时候。


这就是说:对强化学习来说,游戏是一个非常好的设定,因为其中有明确的奖励函数,并且一般情况下你会经常获得奖励。但是现实中这不可能实现,不管你有多少数据。


在一天结束时玩视频游戏,尽管很震撼,但是这与对合成数据分类并没有太大的不同。不管怎样,游戏的体验更好,毕竟研究者发明的不是合成数据,而是游戏——即使是你玩的最新的游戏,仍然需要经过重度开发——以这样的方式构建,使得游戏能够激起玩家的兴趣,这通常意味着增加难度/复杂性并且相对频繁的奖励函数。


当我们向期望可以在现实中运行的系统努力时(我不一定是指物理机器人的困难,即使没有被包含),我们越来越无法确定奖励函数的依据是什么。


一个选择是设计奖励函数。对于复杂的行为,我不认为我们有办法可以做到。在 R+N 人工智能教程中有一个笑话例子:你给吸尘器一个奖励函数,拾起的垃圾数量越多奖励越多;吸尘器学会了拾起垃圾,然后放下,然后再次拾起,无限循环。这是一个愚蠢的例子,但我并不认为我们能理解如何设计真正复杂的行为的奖励函数而没有「非故意后果」的显著风险。(以我为例,不久前我们发明了一种称为 Latency-Bleu 的同声传译的奖励函数,六个月后,我们意识到有一个非常简单的方法来衡量游戏奖励。我对模型从来没有学会利用感到很失望。)


这是我把强化学习方面的努力花在了模仿学习(imitation learning /IL)这类事情上的一个原因,其中通常你可以模拟一个 oracle。我很少看到我觉得无法只用模仿学习解决的自然语言处理问题,能够被强化学习很好解决的(通常模仿学习更好更容易)。当然模仿学习有它自己的问题:它不是万灵药。


我最近一直在想的一件事是隐式反馈(implicit feedback)的形式。在这个领域,我学到了几个星期前访问 GATech 的一篇很酷的论文,这篇论文是:《从解释中学习情感使用和强化学习建议》,作者是 Samantha Krening 和她的同事。具体工作中,他们有一个 coach 从强化学习算法的角度给予建议,并用它来调整我认为是更直接的奖励的东西。一般我认为这有点像一个婴儿。模型中有一些内置的奖励信号(它不能一直是海龟),但是,能让我们认为是一个奖励信号(像一个朋友说「我真的不喜欢你这样做」)的东西,必须是能通过一个学习模型转化成真正的奖励,比如告诉我这是负反馈。我希望看到领域中更多的研究,能试图解决如何将稀疏和不完美的「真实」奖励信号转化成我们可以实际学习优化的东西。

入门强化学习理论奖励函数
返回顶部