文章目录(Table of Contents)
简介
本文是利用 LLM 来生成强化学习的 Reward,可以只需要少量数据(Few-shot)或是不需要数据(zero-shot)的情况下,来满足人类的偏好。比如同一个任务,但是每个人喜好不一样,人类给几个例子描述喜好,LLM 根据人类的描述来对场景生成奖励(个人感觉就是最早利用 LLM 来作 Reward 的尝试,思路比较好,但是实验简单)。
参考链接
- 原文链接:Reward Design with Language Models
- 语言模型设计奖励函数——Reward Design with Language Models论文速读
- LLM+RL论文阅读笔记4
背景及主要贡献
问题背景
随着计算能力和数据量的增长,自主代理(Autonomous agents)正在变得越来越强大。这就强调了人类用户需要能够控制代理学习的策略,并确保这些策略符合他们的目标的重要性。例如,想象一下训练一个代理来代表用户进行薪资谈判。一个为了可维持生活的工薪母亲可能希望她的代理坚持原则,而一个希望与公司建立良好关系的新员工可能希望他的代理更具灵活性。
传统方法
目前,用户通过下面的两种方式来指定期望的行为:
- 设计奖励函数;
- 提供大量标签数据;
但是,这两种方法都存在挑战,且在不同的情况下都可能不实用。
设计奖励函数并不是一种直观的方式来指定偏好。例如,如何为一个“灵活”的谈判者编写奖励函数并不直观。此外,设计在不同目标之间平衡的奖励函数,也就是所谓的“奖励设计问题”,因为代理容易受到奖励黑客攻击,所以非常困难。
另一方面,可以从标记的例子中学习奖励函数。然而,不能只通过一个例子来实现这一点;我们需要大量的标签数据来捕捉不同用户的偏好和目标的细微差别,这已经被证明是昂贵的。
最后这两种方法都无法很好地推广到具有不同目标的新用户——我们将不得不重新设计我们的奖励函数或重新收集数据。
本文的方法
我们的目标是创建一种用户更容易表达他们的偏好的方式,其中的接口比制作奖励函数更直观,他们可以通过不超过几个例子就能便宜地指定他们的偏好。为此,我们利用了大型语言模型(LLMs),这些模型是在互联网规模的文本数据上训练的,并且已经展示出了从少量或零例子中学习的令人印象深刻的能力。我们的关键洞见是,LLMs 所接受的大规模数据训练使它们成为了出色的上下文学习者,也使它们能够捕捉到有关人类行为的有意义的常识先验。给定几个例子或一个描述用户目标的描述,LLM应该能够在新的测试例子上提供准确的奖励值实例,从而更容易地推广到新的目标。下面是作者说的为什么认为可以将 LLM 来作为 Reward function:
The scale of data that LLMs have been trained on make them great in-context learners and also allows them to capture meaningful commonsense priors about human behavior. Given a few examples or a description demonstrating the user’s objective, an LLM should be able to provide an accurate instantiation of reward values on a new test example, allowing for easier generalization to new objectives.
主要贡献
于是本文的主要贡献如下:
- 提出了使用 LLMs 作为代理奖励函数的想法。
- 提出了一个利用这个代理奖励的通用RL训练框架,该框架对使用的RL算法是不可知的。
- 展示了一个 LLM 可以通过平均35%比基线更准确地训练目标对齐的 RL 代理。使用少量提示(few-shot)进行“Ultimatum Game”和“Deal or no Deal”谈判任务,以及在“Matrix Game”中使用零提示(zero-shot)。
方法
本文的目标是使用大型语言模型(LLM)作为代理奖励函数,根据用户输入来训练与目标对齐的强化学习(RL)代理(这里方法论没啥,主要就是用写了一整个流程)。如下图所示:
我们首先看上图上面左侧部分,其中 prompt(p)是四个部分的连接,分别是:
- 描述任务的字符串
p1
; - 一个用户指定的描述他们的目标的字符串,使用例子或描述,
p2
。 - 描述了 RL 仿真中的状态和动作的文本描述,
p3
。这里p3
可以描述最后的状态,最后的动作,一个轨迹,或者情节的任何其他表示。 - 最后,包括了一个问题
p4
,根据用户给出的p2
的例子,询问 RL 代理的行为,p3
是否满足用户的目标。
这里作者定义了一个额外的解析器将 LLM 的文本输出映射到一个二进制值。我们将这个用作奖励信号。特别的,我们的框架用一个代理奖励,LLM,替代了传统的奖励函数,可以与任何RL训练算法一起使用。
完整流程
在训练前,用户指定 p2
,它可以是描述他们目标的 N 个例子,或者使用自然语言的目标描述。在上图中,用户提供了他们目标的一个例子:灵活的谈判行为。在训练过程中,我们通过连接任务描述、用户指定的例子/描述、一个情节的结果,以及询问结果是否满足目标的问题,构建一个提示 p
。
下面是完整的一轮流程:
- (1)将提示输入到 LLM;
- (2)取出它的输出;
- (3)使用函数 g 将其解析成一个整数;我们将这个整数用作奖励信号;
- (4)RL 代理更新其权重并展开新一轮的仿真。
- (5)我们使用 f 将情节结果解析成一个字符串并继续训练(这里相当于是把 state 转换为文字的描述);
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论