1. RLHF (Reinforcement Learning from Human Feedback)
RLHF 是一种通过人类反馈来强化学习的训练方法,它能够让语言模型更好地理解和执行人类指令。
RLHF 的三个阶段
RLHF 的训练过程一般分为三个阶段:
-
监督微调(Supervised Fine-Tuning, SFT):
- 目的:让模型初步具备按照人类指令生成文本的能力。
- 数据:使用大量的人工标注数据,包含输入的 prompt 和对应的期望输出。
- 训练:将这些数据作为监督学习任务,对预训练的大语言模型进行微调。
- 结果:得到一个初步具有指令跟随能力的模型。
-
奖励模型训练(Reward Model Training):
- 目的:训练一个模型来评估模型生成的文本质量。
- 数据:收集模型在 SFT 阶段生成的多个不同回复,由人类标注人员对这些回复进行排序,以表示它们相对于给定 prompt 的优劣。
- 训练:将这些排序数据作为训练数据,训练一个奖励模型。奖励模型的输出是一个标量值,表示生成的文本的质量。
- 结果:得到一个能够对文本质量进行打分的奖励模型。
-
强化学习微调(Reinforcement Learning Fine-Tuning):
- 目的:使用奖励模型的反馈来进一步优化模型的生成能力。
- 方法:采用强化学习算法(如 PPO),将语言模型作为策略,奖励模型作为价值函数。
- 过程:
- 模型生成文本。
- 奖励模型对生成的文本打分。
- 根据奖励信号,更新模型的参数,使其生成更高质量的文本。
- 结果:得到一个在人类反馈下表现更优的语言模型。
技术细节
- 奖励模型:奖励模型通常是一个分类模型,它学习将不同的文本输出映射到一个连续的奖励值。常用的模型架构包括:
- 基于 Transformer 的模型:与语言模型类似,具有强大的序列处理能力。
- 对比学习模型:通过比较不同文本输出的相似性来学习奖励函数。
- 强化学习算法:PPO(Proximal Policy Optimization)是一种常用的强化学习算法,它能够在保证策略稳定性的同时,高效地更新策略。
- 数据收集:在 RLHF 的过程中,需要不断地收集新的数据来训练奖励模型和更新策略。这些数据可以来自以下几个方面:
- 人工标注:由人类标注人员对模型生成的文本进行评估。
- 用户反馈:收集用户在实际使用中的反馈。
- 模型自生成:模型通过自生成的方式产生大量数据。
2. PPO在RLHF中的应用
PPO算法概述
PPO(Proximal Policy Optimization)是一种常用的强化学习算法,在RLHF中,它被用来优化语言模型,使其生成的文本能最大化人类反馈的奖励。
核心思想:
- 策略更新: 通过不断调整模型的参数,使得模型生成的文本能获得更高的奖励。
- 近端策略更新: 为了保证策略的稳定性,PPO限制了新旧策略之间的差异,避免模型发生剧烈变化。
PPO在RLHF中的具体步骤
-
采样数据:
- 使用当前的语言模型生成多个文本样本。
- 将这些样本输入到奖励模型中,获得对应的奖励分数。
-
计算优势函数:
- 优势函数表示一个动作的好坏程度相对于平均动作的偏离程度。
- 在RLHF中,优势函数可以表示为:
- 优势函数 = 奖励 - 基线
- 基线通常是所有样本奖励的平均值或一个估计值。
-
更新策略:
- 概率比: 计算新旧策略下,生成相同文本的概率比。
- 裁剪概率比: 为了防止策略更新过大,将概率比裁剪到一个合理范围内。
- 计算损失函数:
- 损失函数通常包含两项:
- 策略损失: 鼓励模型生成高奖励的文本。
- KL散度: 限制新旧策略之间的差异。
- 损失函数通常包含两项:
- 更新模型参数: 使用梯度下降法来最小化损失函数,从而更新模型的参数。
损失函数的具体形式
PPO的损失函数可以写成如下形式:
L(θ) = 𝔼[min(r_t(θ) * A_t, clip(r_t(θ), 1 - ε, 1 + ε) * A_t)] - β * KL[π_θ, π_θ_old]
- r_t(θ): 概率比,表示新旧策略下生成相同动作的概率比。
- A_t: 优势函数。
- clip: 裁剪操作,将概率比裁剪到[1-ε, 1+ε]的范围内。
- β: KL散度的系数,用于控制新旧策略之间的差异。
- KL[π_θ, π_θ_old]: 新旧策略之间的KL散度。
- 第一项: 鼓励模型生成高奖励的文本。当优势函数为正时,希望概率比越大越好;当优势函数为负时,希望概率比越小越好。
- 第二项: 限制新旧策略之间的差异,保证策略的稳定性。
3. DPO (Direct Preference Optimization)
DPO的工作原理
DPO的核心思想是:通过比较不同文本生成的优劣,直接优化模型参数。具体来说,DPO会收集大量的文本对,其中每一对文本代表着人类对两个文本的偏好。然后,DPO会训练模型,使得模型能够对新的文本对进行排序,并尽可能地与人类的偏好一致。
DPO与RLHF的区别
特点 | RLHF | DPO |
---|---|---|
奖励模型 | 需要训练奖励模型 | 无需训练奖励模型 |
优化目标 | 最大化奖励信号 | 直接优化人类偏好 |
训练过程 | 两阶段训练(预训练+强化学习) | 单阶段训练 |
- 与RLHF相比,DPO旨在简化过程,直接针对用户偏好优化模型,而不需要复杂的奖励建模和策略优化
- 换句话说,DPO专注于直接优化模型的输出,以符合人类的偏好或特定目标
- 如下所示是DPO如何工作的概述
DPO没有再去训练一个奖励模型,使用奖励模型更新大模型,而是直接对LLM进行微调。
实现DPO损失的具体公式如下所示:
- “期望值” E \mathbb{E} E是统计学术语,表示随机变量的平均值或平均值(括号内的表达式);优化 − E -\mathbb{E} −E使模型更好地与用户偏好保持一致
- π θ \pi_{\theta} πθ变量是所谓的策略(从强化学习借用的一个术语),表示我们想要优化的LLM; π r e f \pi_{ref} πref是一个参考LLM,这通常是优化前的原始LLM(在训练开始时, π θ \pi_{\theta} πθ和 π r e f \pi_{ref} πref通常是相同的)
-
β
\beta
β是一个超参数,用于控制
π
θ
\pi_{\theta}
πθ和参考模型之间的分歧;增加
β
\beta
β增加差异的影响
π θ \pi_{\theta} πθ和 π r e f \pi_{ref} πref在整体损失函数上的对数概率,从而增加了两个模型之间的分歧 - logistic sigmoid函数 σ ( ⋅ ) \sigma(\centerdot) σ(⋅)将首选和拒绝响应的对数优势比(logistic sigmoid函数中的项)转换为概率分数
DPO需要两个LLMs,一个策略(policy)模型(我们想要优化的模型)还有一个参考(reference)模型(原始的模型,保持不变)。
我们得到两个模型的输出后,对其输出的结果计算softmax并取log,然后通过target取出预测目标对应的数值。(其实就是做了一个交叉熵,和交叉熵的计算过程一模一样)。通过这个过程我们可以得到每个模型在每个回答上的
π
\pi
π,于是代入公式计算结果。