大模型优化利器:RLHF之PPO、DPO
与有 SFT 相比,强化学习能够给大语言模型带什么哪些好处呢?
针对这个问题,2023 年 4 月 OpenAI 联合创始人 John Schulman 在 Berkeley EECS 会议上所做的报告《Reinforcement Learning from Human Feedback: Progress and Challenges》,分享了 OpenAI 在 RLHF 的进展,分析了监督学习和强化学习各自存在的挑战。
强化学习在大语言模型上的重要作用可以概括为以下几个方面:
-
强化学习比 SFT 更可以考虑整体影响:SFT 针对单个 token 进行反馈,其目标是要求模型针对给定的输入给出的确切答案。而强化学习是针对整个输出文本进行反馈,并不针对特定的 token。这种反馈粒度的不同,使得强化学习更适合大语言模型,既可以兼顾表达多样性,还可以增强对微小变化的敏感性。自然语言十分灵活,可以用多种不同的方式表达相同的语义。而有监督学习很难支持上述学习方式。
-
强化学习更容易解决幻觉问题:用户在大语言模型时主要有三类输入:(a)文本型:用户输入相关文本和问题,让模型基于所提供的文本生成答案;(b)求知型:用户仅提出问题,模型根据内在知识提供真实回答;(c)创造型(Creative):用户为提供问题或说明,让模型进行创造性输出。SFT 非常容易使得求知型 query 产生幻觉。在模型并不包含或者知道答案的情况下,SFT 仍然会促使模型给出答案。而使用强化学习方法,则可以通过定制奖励函数,将正确答案赋予非常高的分数,放弃回答的答案赋予中低分数,不正确的答案赋予非常高的负分,使得模型学会依赖内部知识选择放弃回答,从而在一定程度上缓解模型幻觉问题。
-
强化学习可以更好的解决多轮对话奖励累积问题:多轮对话能力是大语言模型重要的基础能力之一,多轮对话是否达成最终目标,需要考虑多次交互过程的整体情况,因此很难使用 SFT 方法构建。而使用强化学习方法,可以通过构建奖励函数,将当前输出考虑整个对话的背景和连贯性。
正是因为强化学习具有这些优点,它在大模型方面被广泛应用。本文我们就来介绍一下这一强有力的技术。
1.RLHF
强化学习(Reinforcement Learning,RL)研究的问题是智能体(Agent)与环境(Environment) 交互的问题,其目标是使智能体在复杂且不确定的环境中最大化奖励(Reward)。强化学习基本框架如图 1 所示,主要由两部分组成:智能体和环境。在强化学习过程中,智能体与环境不断交互。
智能体在环境中获取某个状态后,会根据该状态输出一个动作(Action),也称为决策(Decision)。 动作会在环境中执行,环境会根据智能体采取的动作,给出下一个状态以及当前动作所带来的奖励。智能体的目标就是尽可能多地从环境中获取奖励。
RLHF 主要分为奖励模型训练和近端策略优化两个步骤。奖励模型通过由人类反馈标注的偏好数据来学习人类的偏好,判断模型回复的有用性以及保证内容的无害性。奖励模型模拟了人类的偏好信息,能够不断地为模型的训练提供奖励信号。在获得奖励模型后,需要借助强化学习对语言模型继续进行微调。OpenAI 在大多数任务中使用的强化学习算法都是近端策略优化算法(Proximal Policy Optimization, PPO)。近端策略优化可以根据奖励模型获得的反馈优化模型,通过不断的迭代,让模型探索和发现更符合人类偏好的回复策略。PPO 的流程如图 2 所示。
PPO 涉及到四个模型:
-
(1)策略模型(Policy Model),生成模型回复。
-
(2)奖励模型(Reward Model),输出奖励分数来评估回复质量的好坏。
-
(3)评论模型(Critic Model),来预测回复的好坏,可以在训练过程中实时调整模型,选择对未来累积收益最大的行为。
-
(4)参考模型(Reference Model)提供了一个 SFT 模型的备份,帮助模型不会出现过于极端的变化。
PPO 的实施流程如下:
-
(1) 环境采样:Policy Model 基于给定输入生成一系列的回复,Reward Model 则对这些回复进行打分获得奖励。
-
(2) 优势估计:利用 Critic Model,预测生成回复的未来累积奖励,并借助广义优势估计(Generalized Advantage Estimation,GAE)算法来估计优势函数,能够有助于更准确地评估每次行动的好处。
-
(3) 优化调整:使用优势函数来优化和调整 Policy Model,同时利用 Reference Model 确保更新的策略不会有太大的变化,从而维持模型的稳定性。
下图详细展示了 PPO 的整个流程:
2.奖励模型(Reward Model)
基于人类反馈训练的 Reward Model 可以很好的评估人类的偏好。从理论上来说,可以通过强化学习使用人类标注的反馈数据直接对模型进行微调。然而,受限于工作量和时间的限制,针对每次优化迭代,人类很难提供足够的反馈。更为有效的方法是构建 Reward Model,模拟人类的评估过程。Reward Model 在强化学习中起着至关重要的作用,它决定了智能体如何从与环境的交互中学习并优化策略,以实现预定的任务目标。
Reward Model 的输入是包含 chosen 和 rejected 的 pair 对,如下图所示。
Reward Model 通常也采用基于 Transformer 架构的预训练语言模型。在 Reward Model 中,移除最后一个非嵌入层,并在最终的 Transformer 层上叠加了一个额外的线性层。无论输入的是何种文本,Reward Model 都能为文本序列中的最后一个 token 分配一个标量奖励值,样本质量越高,奖励值越大。
Reward Model 的损失定义如下:
3.PPO
近端策略优化(Proximal Policy Optimization, PPO)是对强化学习中策略梯度方法的改进,可以解决传统的策略梯度方法中存在的高方差、低数据效率、易发散等问题,从而提高了强化学习算法的可靠性和适用性。PPO 在各种基准任务中取得了非常好的性能,并且在机器人控制、自动驾驶、游戏玩家等领域中都有广泛的应用。OpenAI 在多个使用强化学习任务中都采用该方法,并将该方法成功应用于微调语言模型使之遵循人类指令和符合人类偏好。
4.策略梯度
策略梯度方法有三个基本组成部分:演员(Actor)、环境和奖励函数,如下图所示,Actor 可以采取各种可能的动作与环境交互,在交互的过程中环境会依据当前环境状态和 Actor 的动作给出相应的奖励(Reward),并修改自身状态。Actor 的目的就在于调整策略(Policy),即根据环境信息决定采取什么动作以最大化奖励。
5.DPO
前面我们详细介绍了 RLHF 的原理,整个过程略显复杂。首先需要训练好 Reward Model,然后在 PPO 阶段需要加载 4 个模型:Actor Model 、Reward Mode、Critic Model 和 Reference Model。对计算资源要求极高,而且训练时间长,对于一般人来说很难玩得起。
好在 2023 年 5 月,斯坦福大学提出了 PPO 的简化版:DPO(Direct Preference Optimization)。只需要加载 2 个模型,而且不需要在线采样数据,极大地节省了训练开销。下图的右边是 DPO 的训练流程:
下面就简单介绍下 DPO 是如何简化 PPO 的。
首先回顾一下前面讲的 RLHF 是怎么训练的: 第一步是训练 Reward Model。训练数据是同一个 prompt 的 2 个回答,让人或 GPT-4o 标注哪个回答更好,Reward Model 会去优化如下目标:
这就是 DPO 的 loss。DPO 通过以上的公式转换把 RLHF 巧妙地转化为了 SFT,在训练的时候不再需要同时跑 4 个模型(Actor Model 、Reward Mode、Critic Model 和 Reference Model),而是只用跑 Actor 和 Reference 2 个模型。
6.DPO变种
DPO 出来之后,由于其简单易用的特点,迅速成为大模型训练的标配,随后也出现了各种变种,比如 SimPO、Step-DPO、MCTS-DPO、SPO、Iterative-DPO。下面就以 Iterative-DPO 为例,介绍一下做了哪些改动。
Iterative-DPO
-
Iterative Reasoning Preference Optimization 是 2024 年 Meta 提出的 DPO 改进版。
思路很简单,下面介绍下具体流程:
-
首先训练一个 Reward Model。
-
然后将训练数据分成 m 等份(比如 3 等份),取第一份数据,用 LLM 对每个 prompt 采样出 k 个答案,使用 Reward Model 对 k 个回答进行打分,选出得分最高的和最低的,构建成 pair 对。使用第一份 pair 对数据训练一轮 DPO,更新 LLM。
-
再取第二份数据,用更新后的 LLM 对第二份数据的每个 prompt 采样出 k 个答案,使用 Reward Model 对 k 个回答进行打分,选出得分最高的和最低的,构建成 pair 对。使用第二份 pair 对数据在更新后的 LLM 上训练一轮 DPO。
-
重复以上过程,直到 m 份数据全部训练完成。
下图是 Iterative-DPO 的具体流程:
由于 Iterative DPO 在每轮训练完成后,都会基于最新模型重新采样数据,构建 pair 对,因此 Iterative DPO 是介于 Online-Policy 和 Offline-Policy 之间。
7.总结
现今,强化学习已成为大型模型的标配技术,特别是随着 OpenAI O1 的发布,该技术作为其核心方法,掌握并熟练运用强化学习已成为不可或缺的技能。本文简要概述了 RLHF 的基础知识,并初步介绍了 PPO 和 DPO,待日后有机会,将进一步深入学习 PPO 的其他变体。
引用链接
[1]
DeepSpeed-Chat: Easy, Fast and Affordable RLHF Training of ChatGPT-like Models at All Scales: https://arxiv.org/pdf/2308.01320
[2]
Secrets of RLHF in Large Language Models Part I: PPO: https://arxiv.org/pdf/2307.04964
[3]
Direct Preference Optimization: Your Language Model is Secretly a Reward Model: https://arxiv.org/pdf/2305.18290
[4]
Proximal Policy Optimization Algorithms: https://arxiv.org/pdf/1707.06347
[5]
朱小霖:DPO 是如何简化 RLHF 的: https://zhuanlan.zhihu.com/p/671780768
[6]
infgrad:DPO: Direct Preference Optimization 论文解读及代码实践: https://zhuanlan.zhihu.com/p/642569664
[7]
RLHF Workflow: From Reward Modeling to Online RLHF: https://arxiv.org/pdf/2405.07863
[8]
书籍:《大规模语言模型——从原理到实践》