单独的监督微调常常难以完全实现大型语言模型所需的全部行为范围。正是在这种情况下,强化学习(RL)发挥作用,提供了一个框架,可以根据表示人类偏好的学习信号来优化大型语言模型。通常需要对强化学习(RL)有一定了解。此处提供对RLHF最相关的原理的集中回顾,特别是支撑近端策略优化(PPO)的那些原理。
将大型语言模型生成看作强化学习问题
强化学习的根本是关于智能体在一个环境中学习做一系列决策,以最大化累积奖励。我们可以使用标准强化学习形式,特别是马尔可夫决策过程(MDP),来构建大型语言模型生成文本的任务:
- 状态(s):当前的情境,通常包括初始提示和目前已生成的令牌序列。
- 动作(a):大型语言模型要生成的下一个令牌。动作空间是语言模型的词汇表。
- 策略(πθ(a∣s)):大型语言模型本身,由θ参数化。它根据当前状态(提示+之前令牌)定义了下一个可能令牌(动作)的概率分布。
- 奖励(R(s,a)):这是从人类反馈中学习到的重要组成部分。生成一个序列(响应)后,奖励信号会反映该序列与人类偏好的一致程度。这通常只在序列结束时,根据奖励模型(RM)的输出来分配,我们将在第3章详细介绍。
- 转移(P(s′∣s,a)):在文本生成中,转移通常是确定性的。给定当前状态s(例如:“Translate 'hello' to French:”)和选定的动作a(例如令牌“Bonjour”),下一个状态s′简单地是它们的拼接(例如:“Translate 'hello' to French: Bonjour”)。
在这种强化学习设定中,目标是调整大型语言模型的参数θ,以找到一个策略πθ,使生成序列的预期累积奖励(通常称为预期回报)最大化:
J(θ)=Eτ∼πθ[t=0∑TγtR(st,at)]
这里,τ=(s0,a0,s1,a1,...)表示一个完整的轨迹(例如,一个完整的生成响应),πθ决定了生成该轨迹的概率,T是序列的长度,γ是折扣因子(在有限时间范围的文本生成中通常设为1)。
策略梯度与稳定性需求
策略梯度方法通过对目标函数J(θ)进行梯度上升来直接优化策略参数θ。策略梯度定理的常见形式如下:
∇θJ(θ)=Eτ∼πθ[t=0∑T∇θlogπθ(at∣st)A^t]
在此,A^t是时间步t时优势函数的估计。优势A(s,a)=Q(s,a)−V(s)表示在状态s中采取动作a相比于当前策略下的平均动作要好多少,这由价值函数V(s)估算。直观来说,这会增加导致高于预期奖励的动作的概率,并降低导致低于预期奖励的动作的概率。
虽然有效,但基本策略梯度方法可能存在高方差和不稳定性问题,特别是在处理像大型语言模型中那样高维的参数空间时。由特别高或低的奖励样本驱动的单个大梯度更新,可能会剧烈改变策略,可能导致性能急剧下降。这种不稳定性促使了像PPO这样更精巧算法的出现。
近端策略优化 (PPO)
PPO因其相对简单、稳定和良好的实证表现,已成为RLHF流程中微调大型语言模型的标准强化学习算法。它通过限制策略在每个更新步骤中可以改变的程度,解决了香草策略梯度的不稳定性问题。
PPO优化了一个替代目标函数,它包含一种机制来阻止大的策略更新。最常见的变体使用了裁剪目标:
LCLIP(θ)=Et[min(rt(θ)A^t,裁剪(rt(θ),1−ϵ,1+ϵ)A^t)]
我们来分解一下:
- Et[...] 表示对一批收集到的经验(时间步)取平均。
- rt(θ)=πθold(at∣st)πθ(at∣st)是当前策略πθ(正在优化)与旧策略πθold(用于收集数据)之间的概率比。它衡量了策略改变的程度。
- A^t是时间步t的估计优势,通常使用广义优势估计(GAE)计算,这有助于减少方差。这要求在学习策略(“行动者”)的同时学习一个价值函数V(s)(“评论者”)。
- 裁剪(rt(θ),1−ϵ,1+ϵ) 限制比率 rt(θ) 保持在区间 [1−ϵ,1+ϵ] 内。超参数ϵ(例如0.2)定义了裁剪范围。
- min(...) 取以下两项中的最小值:
- 未裁剪目标 rt(θ)A^t。
- 裁剪目标 裁剪(rt(θ),1−ϵ,1+ϵ)A^t。
这种裁剪的作用是限制当策略比率 rt(θ) 超出 [1−ϵ,1+ϵ] 边界时动作的影响力。如果优势A^t为正(表示该动作优于平均水平),那么当策略变化过大(rt>1+ϵ)时,目标会被从上方裁剪,从而防止更新过于激进。如果优势A^t为负(表示该动作差于平均水平),那么当策略变化过大(rt<1−ϵ)时,目标会被从下方裁剪,从而防止该动作的概率过度大幅下降。这使得新策略与旧策略保持接近,保证了更稳定的学习。
RLHF中的KL散度约束
虽然PPO的裁剪目标本身就鼓励较小的更新,但RLHF的实际操作中通常会添加一个显式惩罚项,它基于当前策略πθ和参考策略πref之间的Kullback-Leibler (KL) 散度。通常,πref是初始的SFT模型。
此KL惩罚通常直接纳入PPO训练中使用的奖励信号:
Rtotal(s,a)=RRM(s,a)−βDKL(πθ(⋅∣s)∣∣πref(⋅∣s))
或者,在实践中更常见的是逐令牌奖励:
Rtoken(st,at)=RRM,t−βlogπref(at∣st)πθ(at∣st)
这里:
- RRM是奖励模型获得的奖励。
- β是一个控制KL惩罚项强度的超参数。
- KL项逐令牌地惩罚策略πθ过度偏离参考策略πref。
为何此KL惩罚在RLHF中如此重要?
- 能力保持: 它防止大型语言模型在优化人类偏好奖励RRM时,偏离原始SFT模型中固有的通用语言建模能力和知识。没有它,模型可能会学习生成重复或无意义的文本,这些文本碰巧在RM上得分很高(“奖励作弊”),但实际质量很低。
- 稳定性: 类似于PPO中的裁剪,它作为一个正则化项,确保训练更新更平滑、更稳定。
我们将在第4章讨论PPO算法中此KL惩罚的实际实现和调整。
RLHF的整合要点
本次回顾强调了RLHF中强化的主要组成部分:
- 我们将文本生成构建为MDP问题,其中大型语言模型充当策略。
- 目标是最大化来自人类偏好(通过奖励模型)的奖励信号。
- 采用PPO来稳定更新大型语言模型的策略参数。
- 引入了相对于初始SFT模型的KL散度惩罚,以保持语言质量并防止灾难性遗忘或奖励作弊。
理解强化学习的这些根本原理,特别是PPO和KL约束背后的机制及原理,对于有效实施和解决RLHF流程中的强化学习微调阶段的问题非常重要,我们将在后续章节中详细阐述。