RLHF
Section 1 RLHF基础
RLHF (是一种利用人类偏好来优化模型输出的技术,旨在让模型的回答更“有用、诚实且无害”。 它的成功应用是 InstructGPT 和 ChatGPT 等模型能力大幅提升的关键。
RLHF 的过程通常非常复杂,分为三个核心步骤:
预训练/监督微调(SFT): 先训练一个“有基本能力”的模型。它虽然懂知识,但可能说话不礼貌,或者不知道如何按指令办事。
奖励建模(Reward Modeling):
- 给模型两个输出(A 和 B),让人类选出哪一个更好。
- 利用这些选择数据训练一个奖励模型(RM)。这个 RM 的目标是:模拟人类的口味。
强化学习优化(Policy Optimization):
- 让原始模型去生成内容,由训练好的 RM 来打分。
- 根据得分,利用 RL 算法(如 PPO)不断调整模型的参数,让它生成的每一句话都能拿到 RM 的高分
强化学习的动机
Note
对于复杂的任务,我们通常没有一个清晰的目标,或者说我们不希望模型在某一个目标上优化到极致,而是希望这个复杂任务总体看起来很好。所以没有一个好的公式或者说精确的奖励函数来定义他,只能通过人类(或者其他模型)给出“哪一个更好”来给模型提供指导
目标函数的“不可言传性”
对于大模型(LLM)来说,我们对它的期望往往是多维度的:
- 有用性(Helpfulness):回答必须解决了问题。
- 诚实性(Honesty):不能一本正经地胡说八道。
- 无害性(Harmlessness):不能教唆犯罪或产生歧视。 这些目标之间往往是冲突的(比如一个完全诚实的模型可能会说出伤人的话)。由于我们无法给这些维度分配合理的“权重系数”(例如:有用性占 0.4,无害性占 0.6),所以没法写出一个精确的 Reward 函数。人类的“直觉选择”本质上是在大脑中自动完成了一次复杂的加权评分。
避免“奖励黑客”(Reward Hacking)
在强化学习中,如果奖励函数定义得太片面(比如只看回复的长度或逻辑词的密度),模型就会学会“钻空子”。它会生成又长又废话的内容来骗取高分,这就是 Reward Hacking。 通过人类的成对比较(Pairwise Comparison),人类可以敏锐地察觉到这种“钻空子”的行为,并给这种看起来很厉害但实际很烂的回答打低分,从而矫正模型的行为。
从“绝对值”到“相对值”的降维打击
这部分是综述中 Section 2.3 讨论的核心:
- 绝对评分很难:如果让你给一个回答打 0 到 100 分,不同人的标准差异极大(有人手松,有人手严),甚至同一个人在不同心情下的标准也不同。
- 相对选择很简单:但如果给你两个回答 A 和 B,让你选出哪个更好,人类的判断通常非常稳定且一致。 RLHF 的巧妙之处在于: 它利用简单的“相对偏好”数据,通过数学手段(如 Bradley-Terry 模型)反推出背后的“绝对奖励值”。
Section 2 从RL到RLHF
2.1 标准RL
核心框架:马尔可夫决策过程 (MDP)
标准 RL 的一切都发生在 MDP 之下。你可以把它想象成一个循环:
- 状态 (State, \(s_t\)):环境当前的样貌(例如:棋盘的布局)。
- 动作 (Action, \(a_t\)):模型做出的决策(例如:下哪一颗子)。
- 奖励 (Reward, \(r_t\)):这是标准 RL 的灵魂。环境根据动作立刻给出的反馈标量值(例如:吃掉对方一子加 10 分)。
- 状态转移 (Transition, \(P\)):执行动作后,环境如何变成下一个状态 \(s_{t+1}\)(例如:你走完棋,轮到对手走)。
- 策略 (Policy, \(\pi\)):这是我们要训练的模型,本质是一个概率分布 \(\pi(a|s)\),即:在状态 \(s\) 下,选择动作 \(a\) 的概率。
优化目标:累积折扣回报 (Return)
在标准 RL 中,我们不只是想拿当下的高分,而是想拿一辈子的总分。这个总分叫 Return (\(G_t\)):
- \(\gamma\) (Discount Factor):为什么未来的奖励要打折?因为未来的不确定性大,或者我们更希望尽早拿到奖励。
- 优化目标:找到一个最优策略 \(\pi^*\),使得从任何状态出发,期望的总分 \(E[G_t]\) 最大。
Note
正如之前所说,现在的问题是在复杂的任务下没有一个合适的奖励函数,也就是没有现成的R
标准 RL 告诉我们:只要有一个能给分(Reward)的东西,模型就能通过不断试错学会如何拿到高分。
RLHF 接着说:既然写不出给分的公式,那我们就训练一个“裁判模型”(Reward Model)来模拟人的标准给分。
这就是为什么这篇综述把标准 RL 放在开头——它是 RLHF 的“动力系统”,而人类反馈解决了它的“燃料(奖励信号)来源”问题。
如果你对 MDP 的五元组和这个循环逻辑没有疑问了,我们就可以进入 Section 3,看看除了“二选一”,人类还能通过哪些方式给模型提供这种“燃料”。
2.2 奖励学习
这是这章的绝对核心。作者解释了如何把人类模糊的“我觉得 A 比 B 好”转化成机器能优化的 Loss 函数。
核心公式:Bradley-Terry 模型 (Eq. 2)
- 直观解释:如果 \(\tau_1\) 的奖励分 \(R(\tau_1)\) 比 \(\tau_2\) 的奖励分 \(R(\tau_2)\) 高很多,那么人类选择 \(\tau_1\) 的概率就趋近于 1。
- 训练目标:通过最大化这个概率(Max Likelihood),我们就能训练出一个神经网络 \(R_\psi\) 来给每个句子打分。
这个公式的形式和逻辑回归很相似,因为本质上就是用逻辑回归做二分类。
这其实是一个巧妙的“降维打击”: 我们无法直接做回归(Regression),因为人类给不出“这句话值 83.5 分”这种绝对数值(方差太大,没法训练)。 但是,人类能给出分类(Classification)标签:“A 比 B 好”。
为了利用这个分类标签,我们假设存在一个潜在的评分函数 (Reward Function) \(R(x)\)。
如果 \(R(A)\) 比 \(R(B)\) 大很多,那么“A 胜过 B”的概率就应该接近 1。
Bradley-Terry 模型就把这个逻辑数学化了:
- 这和你熟悉的二分类完全一样:
- 在逻辑回归中:\(P(y=1) = \sigma(w \cdot x + b) = \sigma(\text{logit})\)。
- 在 RLHF 中:我们将两个回答的分数差 \((R(A) - R(B))\) 看作 Logit。
- 训练目标:最大化人类选择结果的似然概率(Maximum Likelihood Estimation, MLE)。也就是让模型预测的“A 胜过 B”的概率越大越好。
一句话总结:我们是在用分类的 Loss(交叉熵),去训练一个回归模型(Reward Model)。
2.3 训练过程
第一阶段:训练裁判(Reward Learning)
目的:得到一个能打分的模型 \(R_\phi\)。
-
数据:收集人类的偏好数据对 \((x, y_w, y_l)\),其中 \(y_w\) 是胜者,\(y_l\) 是败者。
-
前向传播:把 \(y_w\) 和 \(y_l\) 分别喂给奖励模型(通常是一个改了输出层的 BERT 或 LLM),得到两个分数 \(r_w\) 和 \(r_l\)。
-
计算 Loss:用刚才提到的 Sigmoid 公式计算二分类 Loss:
$\(\mathcal{L} = - \log \sigma(r_w - r_l)\)$
(意思是:优化参数,使得胜者的分数 \(r_w\) 尽可能比败者的分数 \(r_l\) 高)。
- 反向传播:更新奖励模型的参数。
结果:训练结束后,你就拥有了一个数字打分器 \(R_\phi(x)\)。给它一句话,它能吐出一个标量分数。
第二阶段:训练运动员(Policy Optimization / RL)
目的:让生成模型(LLM)\(\pi_\theta\) 学会拿高分。
-
生成:让当前的 LLM \(\pi_\theta\) 针对一个 Prompt 生成一个回复 \(\hat{y}\)。
-
打分:把 \(\hat{y}\) 喂给第一阶段训练好的 \(R_\phi\),得到一个奖励分 \(r = R_\phi(\hat{y})\)。
(注意:此时 \(R_\phi\) 的参数是冻结的,它只负责打分,不参与更新)。
- RL 更新:把这个分数 \(r\) 作为信号,传给 PPO(或其它 RL 算法)。
PPO 会计算:为了下次生成类似 \(\hat{y}\) 的概率更高(如果分高)或更低(如果分低),我应该怎么微调 LLM 的参数 \(\theta\)?
- 迭代:重复上述过程。
Section 5 奖励建模
奖励模型的架构(Architecture)
奖励模型(RM)本质上是一个回归模型。
- 模型选择:通常会使用一个预训练好的语言模型(如 Llama, Mistral 或 BERT)作为骨干(Backbone)。
- 结构改造:去掉原模型的分类头(LM Head),换成一个输出维度为 1 的线性层(Scalar Head)。
- 输入输出:输入是一段对话(Prompt + Response),输出是一个标量值(Scalar Value),代表这段对话有多符合人类偏好。
核心损失函数(Loss Function)
这一部分是之前提到的 Sigmoid 逻辑的具体实现。为了训练这个 RM,我们使用成对排序损失(Pairwise Ranking Loss)。
假设我们有一对数据 \((y_w, y_l)\),其中 \(y_w\) 是人类更喜欢的回答。
- 直观理解:我们要通过梯度下降调整参数 \(\phi\),使得胜者 \(y_w\) 的分数尽可能高于败者 \(y_l\) 的分数。
- 防止过拟合:综述中提到,为了防止 RM 过于极端地给某些回复打超高分,有时会加入正则化项,确保分数分布相对稳定。
RM 训练中的Trick
A. 泛化与过拟合 (Generalization & Overfitting)
- 问题:RM 很容易“记住”标注数据的特征(比如回复越长分数越高),而不是真正理解逻辑。
- 对策:使用更大规模的预训练模型作为 RM 的起点,或者进行数据增强。
B. 奖励黑客预防 (Preventing Reward Hacking)
- RM 只是人类意图的一个近似(Proxy)。如果 RM 训练得不好,生成模型(LLM)会学会生成一些“骗分”的回复(如堆砌礼貌用语)。
- 结论:RM 的质量直接决定了最终 RL 阶段的上限。
C. 在线 vs. 离线 (Online vs. Offline)
- 离线:先存一大堆标注数据,训好 RM 后再也不动它。
- 在线:在 RL 过程中,不断发现模型生成的坏例子,拿去让人类标注,再回来更新 RM。在线 RM 效果更好但成本极高。
Section 6 策略优化
第六章将优化方法分成了三大类,这是你笔记的重点:
在线强化学习(Online RL - 以 PPO 为代表)
这是目前最主流的方法(如 OpenAI 的 GPT-4 早期方案)。
- 做法:模型生成一段话,RM 打分,PPO 算法根据分数更新模型参数。
- 重点(KL 散度约束):为了防止模型为了拿高分而变得语无伦次(即前面说的 Reward Hacking),PPO 会加入一个 KL Penalty。
- 直观理解:要求新模型在进化的同时,不要偏离原始模型(SFT 模型)太远。如果偏离太远,即便分高也要扣分。
离线强化学习(Offline RL)
- 做法:不让模型在训练时实时生成,而是直接从已有的数据集中学习。
- 优点:省去了模型实时生成的计算资源。
直接策略优化(Direct Policy Optimization, DPO)
这是你研究“后训练”必须重点关注的黑科技(Section 6.3)。
- 核心颠覆:DPO 证明了我们甚至不需要显式训练一个 Reward Model。
- 做法:通过数学变换,直接在偏好数据对 \((y_w, y_l)\) 上进行微调。如果模型对 \(y_w\) 的概率提升比 \(y_l\) 快,它就自动学会了人类的偏好。
- 现状:目前很多开源大模型(如 Llama-3, Qwen)的后训练首选都是 DPO,因为它极其稳定且节省显存。