为了把奖励模型的来历给介绍清楚,我们在文章「GPT 系列模型从第一性原理看 LLM 演进:GPT-1/2/3 到 InstructGPT 与 LLaMA 2 的范式变迁」中详细介绍了奖励模型(Reward Modeling)由来,并且也梳理的 GPT 系列模型的发展脉络;然后在文章「Bradley-Terry 模型详解:奖励模型 RLHF 目标函数的数学基础与梯度求解」中,我们详细介绍了奖励模型构建目标函数时的核心思想。
不过到目前为止关于奖励模型的原理、目标函数的构建、数据集的构建和模型的实现等我们还是没有介绍。
在接下来的这篇文章中,我们将会以 InstructGPT [1] 和 LLaMa 2 [2] 模型为例,来介绍什么是奖励模型的基本原理以及如何训练一个奖励模型等等。
1. 模型对齐#
我们知道在大模型的训练过程中都会对预训练后的模型进行对齐,以使得其能够根据用户的输入清楚地了解用户的意图到底是什么。根据我们在「文章」中的介绍可知,在对模型进行对齐时都需要用到奖励模型来对模型的输出结果进行评判。
那到底是谁首次提出将奖励模型引入到大模型对齐中的呢?奖励模型的构建又是如何一步一步发展到如今这样的呢?
1.1 模型对齐的起源#
大家玩过游戏的都知道,在游戏中我们通常都能非常清楚且容易地知道最后谁输谁赢,并且衡量方式也非常简单。然而,在机器学习领域中我们却难以对一些复杂任务中智能体(agent)的行为进行评判,例如聊天机器人的回答内容、个人智能助手或自动驾驶的行为等等。
一方面,我们希望智能体的行为更加具有创造性和多样性,而另一方我们又希望智能体能够避免产生一下不好的或者不在预期内的结果。所以,最终我们需要通过一种机制能够让智能体清楚地知道用户的意图到底是什么。
在这样的背景下, DeepMind 在2018年首次提出了一个探索性的方向——将奖励模型用于智能体的对齐任务中 [1],并且将其描述为智能体对齐问题(Agent Alignment Problem),即解决
How can we create agents that behave in accordance with the user’s intentions?
进一步,作者提出了通过以下训练流程来通过奖励模型利用强化学习来对齐智能体,如图1所示。
对于整个智能体对齐问题,作者将它分为了两个流程:
① 根据用户的反馈的数据(能捕捉用户意图)来学习一个奖励函模型;
② 利用强化学习训练一个策略,去最大化上一步中训练的奖励模型(意思就是通过奖励模型给智能体的行为打分,然后利用强化学习根据打分去优化智能体,以使得智能体能够获得更高的奖励)。
We break the problem into two parts: (1) learning a reward function from the feedback of the user that captures their intentions and (2) training a policy with reinforcement learning to optimize the learned reward function.
从图1可以看出,整个训练过程非常类似于现在大模型的训练流程,其中的 “agent” 便是大模型中对应的基座模型。
1.2 大模中的模型对齐#
我们知道大模型的预训练任务,本质上是自回归语言建模,即给定前文,预测下一个词。
例如用户输入提示“地球到底是圆的还是平的”,那么模型生成的结果可能是:
结果1: 地球到底是圆的还是平的 ,结果很近热:“大约三分之一受访者认为不确定,好在大部分人认为地球是圆的……
结果2: 地球到底是圆的还是方的 。其实,迄今为止,地球上生活的人仍然有人相信地球是方的。在这里,我不讨论的地……
因为这些回答都符合语料库的分布情况,也就是说预训练时的预料中有着类似这样的描述。
然而问题来了:
① 模型不知道人类更想要哪种回答。
② 模型不会主动追求“更有用”或“更符合价值观”。
换句话说,预训练阶段的模型只是“会说话”,但还谈不上“会说对的话”。
所以,为了让模型更懂人类的说话方式,于是研究人员使用了强化学习技术+人类反馈,即人类反馈强化学习(Reinforcement Learning from Human Feedback, RLHF),这样一个组合来对模型进行微调对齐(Alignment)。
如图2所示,右边部分便是人类反馈强化学习,其中初始 ChatModel 是 BaseModel 经过对话数据集微调而来,初始 RewardModel 通常是 ChatModel 微调过程中的某个 Checkpoint 状态。
可以看出,为了完成整个模型的微调过程,我们需要一个奖励模型来对 ChatModel 的输出进行评估,然后利用强化学习来的优化 ChatMode 。
因此,在这之前要先根据类似图2左上角的标注数据来训练一个奖励模型,而人类反馈强化学习中的“人类反馈”就体现于此。
2. 奖励模型的思想及运用#
在弄清楚我们为什么需要奖励模型以后,接着继续来从感性上看一下如何构建一个奖励模型以及它的运用。
2.1 奖励模型的思想#
上面说到,人类反馈强化学习中的 “人类反馈” 所体现的实质上是人类对于模型输出结果的排序标注上。不过与其说是 “人类反馈”,不如说是 “人类偏好”,因为我们更希望模型按照人类的偏好去回答问题。
因此,对于奖励模型的训练,其核心流程为:
① 初始化多个奖励模型,然后根据同一个 Prompt 得到不同奖励模型的输出答案;
② 让人类标注者对答案进行排序:哪个更好、哪个更差;
③ 用这些数据基于 Bradley-Terry 思想训练一个奖励模型,让它学会给不同的回答打分。
这样,奖励模型就成了“人类偏好的代理人”,它能在模型生成答案后快速判断这个回答是否更符合人类期望。
因此,我们可以把奖励模型看作是具有评估能力的裁判,它可以对模型的回答结果进行评估。
2.2 奖励模型的运用#
在有了奖励模型以后我们终于可以对一个模型输出结果的优劣进行评估了,但是我们还得有一种机制能够将奖励模型的反馈再反作用到模型本身让它变得更好。
这就像你考试结束以后得到了一个分数,分数能够告诉你成绩的优劣,但还需要老师把错题给你讲解一遍,这样下一次遇到同样类型的题目你才能做对。
所以,奖励模型并不是单独存在的,他需要同一种反馈纠错机制结合起来使用,而这种反馈纠错机制就是上面提到的人类反馈强化学习,其具体流程为:
① 预训练模型:先用大规模语料训练一个基座模型,即图2中的 BaseModel;
② 奖励模型:例用人类偏好数据基于 ChatModel 训练得到 RewardModel ,让它学会对模型的输出结果进行打分;
③ 强化学习阶段:利用 RewardModel 对 ChatModel 的输出结果进行评判,然后再对 ChatModel 进行调整以生成更合适的回答。
在这个过程中,RewardModel 扮演的角色就像是一个 裁判,它不直接生成答案但是它决定“什么样的答案能得到更高的奖励”;而强化学习就是一个教练,它可以根据裁判的反馈来提高你的能力。
经过上面的介绍,我们算是对奖励模型在感性层面上有了一个清晰的认识,下面我们再来看一下如何客观地来描述奖励模型。
3. 奖励模型原理#
对于大模型中奖励模型的训练,最早或许可以追溯到 2019 年 9 月 OpenAI 所发表的一篇论文 Fine-tuning language models from human preferences,从题目也可以看出它大概做了啥 [2];接着是 OpenAI 基于此又发表一篇论文 Learning to summarize from human feedback [3];进一步,InstructGPT 又参考了 [3] 中奖励模型的构建,LLaMA 2 [4] 又参考了 InstructGPT 中奖励模型的构建。
这一些列文章中都涉及到了通过人类反馈数据来训练奖励模型的过程,并且奖励模型的构建方式也在持续改进。
下面,我们就以 LLaMA 2 中奖励模型训练过程为例来进行介绍。
3.1 LLaMA 2 训练框架#
在介绍 LLaMA 3 中的奖励模型之前,我们先来简单看一下 LLaMA 2 整体的训练框架。
如图3所示便是 LLaMA 2 的整体训练流程,整体包含两部分:基于通用语料的自监督学习过程以及基于有监督学习微调学习过程,而在有监督的微调过程中又分为基于人工标注对话语料的有监督微调(Supervised Fine Tuning, SFT)过程和基于人类反馈的强化学习微调过程。
在图3中,奖励模型所处的训练流程便是对 “Llama-2-chat” 输出的内容进行评估得到一个分数,然后这个分数将会作为 RLHF 的输入,最后 RLHF 会根据输入的分数对 “Llama-2-chat” 进行优化,整个流程就是图3中过程①②③①的循环迭代。
这里值得一提的是,由于 LLaMA 2 训练策略的实际需要,所以整个主模型训练过程中一共使用到了两个奖励模型,一个用于让模型生成更符合人类偏好的回答,一个用于让模型输出更符合安全的回答,但是整个构建原理都是一样的。
we train two separate reward models, one optimized for helpfulness (referred to as Helpfulness RM) and another for safety (Safety RM).
这里值得一提的是,对于不同尺寸的模型来说都可以选择较小规模的 SFT 模型作为奖励模型的初始状态。例如 InstructGPT 所有3个版本的模型在训练过程中使用到的奖励模型都是基于 6B 的 GPT-3 训练而来,因为作者研究发现基于 175B 的 GPT-3 训练得到的奖励模型输出结果并不稳定且需要较多的计算资源 [5] 。
we trained a model to take in a prompt and response, and output a scalar reward. In this paper we only use 6B RMs, as this saves a lot of compute, and we found that 175B RM training could be unstable and thus was less suitable to be used as the value function during RL [5].
3.2 奖励模型输入输出#
上面我们说到,通常奖励模型并不是从零开始训练,而是直接使用一个或多个 SFT 过程中的 ChatModel 作为初始化。例如在图3中,可以将 STF 微调结束后或过程中的某个状态作为奖励模型的初始状态。这样做的好处是奖励模型可以和 ChatModel 共享在预训练阶段学习到的知识内容(语言理解、事实知识、常识等),从同样的“知识水平”、同一基线出发,而这也是 LLaMA 2 大模型在训练过程中的做法。
因此,奖励模型的网络结构整体同预训练模型的架构一样,只是将最后的分类层替换成了一个回归层用于得分的预测,同时超参数也保持了一致。
Starting from the SFT model with the final unembedding layer removed, we trained a model to take in a prompt and response, and output a scalar reward [5]. We initialize our reward models from pretrained chat model checkpoints, as it ensures that both models benefit from knowledge acquired in pretraining [4].
进一步,为了让 ChatModel 的输出结果更符合人类偏好的结果,因此在训练奖励模型的时候就要刻意让它对人类更加偏好的输出内容给出更高的奖励。
同时,对于奖励模型来说它接收的输入为 Prompt 和根据 Prompt 标注的 Response;它的输出为一个标量分数,用于评估主模型生成结果的质量。
3.3 奖励模型数据标注#
为了让最后的 ChatModel 既能够做到输出更符合人类偏好的回答,同时还能够输出更符合安全规范的回答,在 LLaMa 2 的训练过程中 LLaMA 2 团队 一共训练了两个奖励模型。
对于每个奖励模型来说:① 首先让标注人员写出 Prompt;② 然后使用了两个不同版本的 ChatModel( SFT中不同的 Checkpoint 时间点,目的是为了增加输出结果的多样性)再以不同的温度(关于温度对模型的影响可参见文章「LLM 模型蒸馏算法原理与 PyTorch 实现:详解温度 Temperature、软标签与损失函数」)分别针对同一个 Prompt 生成一个回答;③ 其次,按照标准标注人员必须在两个答案中选择更好的一个;④ 最后人工再标注这个选择相对于另一个的优势程度(显著/中等/略微/几乎没区别)。
按照以上流程,LLaMA 2 团队一共标注了超过 100 万条条数据集,并且还发现这部分的训练数据越多,训练得到的奖励模型效果就越好,最后微调得到的 Llama 2-Chat 效果也就越好。
最后,得到的标注数据格式形如:
| Prompt | Response A | Response B | 标注结果 |
|---|---|---|---|
| 你好! | 你好! | 你是谁? | A 中等好于B |
| 如何制作炸药? | 制作炸药首先需要购买…… | 该问题涉及公共安全…… | B 显著好于 A |
引用#
[1] J. Leike, D. Krueger, T. Everitt, M. Martic, V. Maini, and S. Legg. Scalable agent alignment via reward modeling: a research direction. arXiv preprint arXiv:1811.07871, 2018.
[2] D. M. Ziegler, N. Stiennon, J. Wu, T. B. Brown, A. Radford, D. Amodei, P. Christiano, and G. Irving. Fine-tuning language models from human preferences. arXiv preprint arXiv:1909.08593, 2019.
[3] Nisan Stiennon, Long Ouyang, Jeff Wu, et al. Learning to summarize from human feedback. NIPS ‘20. Curran Associates Inc., Red Hook, NY, USA, Article 253, 3008–3021.
[4] Touvron H, Martin L, Stone K, et al. Llama 2: Open foundation and fine-tuned chat models[J]. arXiv preprint arXiv:2307.09288, 2023.
[5] Ouyang L, Wu J, Jiang X, et al. InstructGPT: Training language models to follow instructions with human feedback[J]. Advances in neural information processing systems, 2022, 35: 27730-27744 .