强化学习概念扫盲

对齐阶段

对齐阶段(Alignment Stage)是指在大语言模型(LLM)或多模态大模型(MLLM)的完整训练管线(Training Pipeline)中,紧随预训练(Pre-training)和监督微调(SFT)之后,旨在引导模型行为、使其输出符合人类意图、社会价值观、偏好及事实真实性(Factuality)的特定网络微调阶段。

对齐阶段在模型生命周期中的位置

1
2
1. 预训练阶段 (Pre-training) ──> 2. 监督微调阶段 (SFT) ──> 3. 对齐阶段 (Alignment)
(海量数据, 学会语言规律) (高质量问答, 学会听懂指令) (偏好数据, 学会安全与诚实)

预训练(Pre-training): 模型通过无监督学习,在数万亿 Token 上最大化下一个词的预测概率。此时模型是一个功能强大的“续写机器”,但其输出不可控,极易产生幻觉、脏话或危险言论。

监督微调(SFT, Supervised Fine-Tuning): 通过成千上万条高质量的“人工标准指令-回答”对,训练模型学会以“AI 助手”的身份规范回答问题。

对齐(Alignment): 在 SFT 之后,模型虽然会说人话了,但依然存在顽固的“肌肉记忆”(例如前面提到的语言先验偏置,导致闭眼瞎编)。对齐阶段则是通过引入“好”与“坏”的对比信号,进一步修剪模型的概率空间,约束其行为。

对齐阶段的核心对齐指标

在学术定义中(由 Anthropic 等机构确立),对齐阶段主要围绕以下三个维度(3Hs)进行行为约束:

  • Helpfulness(有用性): 模型的回答是否切中用户意图,不废话,具备实质性帮助。
  • Harmlessness(无害性): 模型是否拒绝回答涉及暴力、偏见、违法等敏感或危险的指令。
  • Honesty(诚实性/事实性): 这正是你目前阅读的抗幻觉论文的核心靶点。 诚实性要求模型“知之为知之,不知为不知”,在多模态场景下,必须严格忠实于输入的视觉上下文,不编造不存在的物体。

对齐阶段的数学与工程实现技术

对齐阶段的核心不是通过传统的“给正确答案(SFT)”来实现的,而是通过“偏好学习(Preference Learning)”。其主流技术路径有两条:

❶ 强化学习路径(基于奖励模型的在线对齐)

  • 代表技术: RLHF(基于人类反馈的强化学习)。
  • 机制: 训练一个独立的“奖励模型(Reward Model)”充当裁判,只要模型吐出的词包含幻觉或不安全信息,奖励模型就扣分;反之给高分。模型通过 PPO 算法更新参数,在奖惩中自适应地调整输出策略。

❷ 监督偏好优化路径(基于对比损失的离线对齐)

  • 代表技术: DPO(直接偏好优化)、DenseDPO。
  • 机制: 放弃强化学习环境,直接给模型喂入偏好对数据 𝒟 = {(x, ychosen, yrejected)}。通过最大化优选回答 ychosen 的条件概率、同时最小化弃选回答 yrejected 的条件概率,直接一步到位地调整模型权重。

PPO (Proximal Policy Optimization,近端策略优化)

【PPO算法】强化学习头牌,学大模型必懂_哔哩哔哩_bilibili

image-20260529125515081

PPO 是 OpenAI 在 2017 年提出的一种强化学习(RL)算法。在大模型火爆之前,它就已经在让 AI 玩 Dota 2、控制机械臂等领域名声大噪。在大模型对齐中,它的核心任务是:如何在保证大模型不“学崩”的前提下,尽可能地迎合裁判(奖励模型)的口味?

1. 为什么叫“近端”?它解决了什么痛点?

在 PPO 之前,强化学习最经典的算法是策略梯度(Policy Gradient)。它的逻辑很简单:AI 做出一个行为,如果得到好评,就通过梯度上升调高这个行为的概率。

但它有一个致命缺陷:步子迈得太大,容易扯到蛋。 强化学习是“边收集数据边学习”的(On-policy)。如果某一次参数更新幅度过大,导致模型的策略发生了剧烈变形(比如从“温和的助手”变成了“满嘴脏话的喷子”),那么它接下来收集到的交互数据就会全部变成垃圾。模型一旦掉进这个“毒化”的悬崖,就再也爬不回来了。

为了解决这个问题,PPO 强调 “Proximal(近端/邻近)”限制每次参数更新的幅度,确保新策略(更新后的模型)和旧策略(更新前的模型)拉开的距离不要太大。

2. PPO 的核心武器:截断目标函数 (Clipped Surrogate Objective)

PPO 实现“步子不迈太大”的方式非常简单粗暴且优雅,它在损失函数中引入了截断(Clipping)机制

首先,我们定义一个重要性采样比率(Probability Ratio)rt(θ),它表示新策略和旧策略输出某个动作的概率比值

$$r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$$

  • 如果 rt>1,说明新策略中这个动作的出现概率变大了。
  • 如果 rt<1,说明新策略中这个动作的出现概率变小了。

PPO 的目标损失函数如下:

$$L^{CLIP}(\theta) = \hat{\mathbb{E}}_t \left[ \min\left(r_t(\theta)\hat{A}_t, \, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t\right) \right]$$

这里的 A^t 是优势函数(Advantage Function),用来衡量当前的动作是比平均表现更好(A>0)还是更差(A<0)。ϵ 是一个超参数(通常设为 0.1 或 0.2)。

我们可以通过下面的经典原理图来直观理解这个公式的运作逻辑:

image-20260529130338112

结合上图,这个公式的妙处在于“悲观主义剪裁”:

  • 当动作是好动作时 (A^t>0):模型想继续增大 rt。但只要 rt 超过了 1+ϵ(比如 1.2),clip 函数就会把好评给“卡死”在 1+ϵ。这意味着就算你再怎么讨好裁判,梯度也不会再更新了,防止模型用力过猛。
  • 当动作是坏动作时 (A^t<0):模型想减小 rt。如果 rt 跌破了 1−ϵ(比如 0.8),说明模型已经充分吸取了教训,大幅度降低了该动作的概率。此时通过 min 取值,允许继续惩罚那些比旧策略还要糟糕极多的行为(如左侧深跌区域),但在常规区间内限制波动。

RLHF (Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)

在基础的预训练(Pre-training)阶段,模型的核心任务只是预测下一个词。这导致它虽然博古通今,但非常“毒舌”、喜欢胡说八道(幻觉),或者给出无法直接执行的废话。

RLHF 的核心目的就是“驯服”大模型,通过引入人类的真实反馈,建立一套奖惩机制,让模型的回答符合人类的价值观和使用习惯,即满足 3H 原则

  • Helpful(有用性)
  • Honest(诚实性)
  • Harmless(无害性)

RLHF 的三大核心步骤

经典的 RLHF 流程由 OpenAI 确立,是一个环环相扣的三阶段流水线

image-20260529130627194

1.步骤 1:监督微调 (SFT):基础建设。

挑选高质量的“提示词-标准回答”对(通常由专业人类写手撰写),让预训练模型进行模仿训练。这一步是为了让模型脱离“续写模式”,学会像一个AI助手一样去组织语言和回答问题。此时的模型被称为 SFT 模型

2.步骤 2:训练奖励模型 (RM):培养裁判。

让 SFT 模型针对同一个提示词生成多个不同的回答(比如 A 和 B)。然后让人类标注员对这些回答进行排序或打分(例如:A 比 B 更好)。

利用这些偏好数据,训练一个奖励模型(Reward Model)。这个模型的目标是像一个裁判一样,输入任意一个回答,就能自动输出一个质量得分。

3.步骤 3:强化学习优化 (PPO):闭环演练。

这是最核心、也是最复杂的阶段。让初始模型作为一个“演员”(Actor 策略模型),不断接收新的提示词并生成回答。

将回答送入上一步训练好的奖励模型打分。强化学习算法(通常是 PPO)根据分数的高低来更新 Actor 模型的参数——拿高分的行为被强化,拿低分的行为被抑制。

繁华背后的代价:RLHF 的痛点

虽然 RLHF 效果惊人,但它在工程上是一场“灾难”:

  • 资源无底洞:在步骤 3 训练时,显存里要同时挂载 4 个模型:Actor 模型(正在训练的)、Reference 模型(冻结的,用来算 KL 散度约束,防止模型彻底放飞自我)、Reward 模型(打分的裁判)和 Critic 模型(强化学习估算价值的)。
  • 奖励作弊(Reward Hacking):模型在强化学习过程中极其狡猾。它如果发现某种特定的句式(比如句尾多说谢谢,或者故意迎合人类的偏见)能让裁判模型打高分,它就会疯狂刷这种句式,导致回答的真实质量反而下降。

正是因为步骤 3 的 PPO 框架过于臃肿、极其难调(超参数极度敏感),业界才迫切需要一种更简洁的方案。这就直接催生了上一轮为你介绍的 DPO(直接偏好优化)——直接把步骤 2 和步骤 3 合二为一,用纯数学推导干掉了显式的强化学习循环。

DPO (Direct Preference Optimization, 直接偏好优化)

【DPO 算法】大模型主流训练方法,大部分人可能并没有真正弄懂…_哔哩哔哩_bilibili

1. 为什么需要 DPO?(痛点所在)

在 DPO 出现之前,主流的对齐方法是 OpenAI 走通的经典 RLHF(基于人类反馈的强化学习),通常采用 PPO (Proximal Policy Optimization) 算法。

PPO 的致命缺点就是:太难调了。 它同时需要维护 4 个模型(Actor, Critic, Reference, Reward),显存开销巨大;而且强化学习在离散的文本空间中极不稳定,超参数稍有变动就会导致训练崩溃。

2. DPO 的核心思路:数学上的“降维打击”

DPO 的伟大之处在于,它通过严谨的数学推导,证明了奖励模型(Reward Model)可以被策略模型(Policy Model)本身的条件概率完全表示出来

既然奖励函数可以隐式地包含在策略模型里,那为什么还要单独训练一个裁判模型呢?DPO 直接绕过了“训练奖励模型”和“强化学习”这两个最痛苦的步骤,将整个管线缩短:

DPO 的训练管线(对比传统 RLHF 移除了显式的奖励模型和 PPO 循环)

如上图所示,在经过基础的 SFT 得到参考模型πref 后,DPO 直接输入三元组偏好数据 (x, yw, yl) 进行优化:

  • x:提示词(Prompt)
  • yw:人类更偏好的回答(Chosen / Winner)
  • yl:人类不喜欢的回答(Rejected / Loser)

DPO 的优缺点对比

目前,Llama 3、Mistral 等绝大多数开源顶尖大模型的对齐阶段,都有 DPO 或其变体(如 IPO、KTO)的身影。

特性 优势 局限性
工程实现 极度简单。不需要复杂的强化学习框架,直接写个标准的监督训练 Loss 就能跑。 容易过拟合。由于缺少 PPO 的在线探索,DPO 极度依赖离线数据的质量,容易把偏好数据榨得太干导致泛化性变差。
资源消耗 省显存。训练时只需要常驻当前模型 πθ 和参考模型 πref(甚至可以用合并或冻结技术进一步压缩),不需要多余的 Reward 和 Critic 模型。 对噪声敏感。如果标注数据里有混淆(比如把坏回答误标成好回答),DPO 强行拉大差距会导致模型概率分布扭曲。
训练稳定性 极其稳定。本质是凸优化,不会出现 PPO 那种训练到一半指标突然崩塌、无法收敛的情况。 缺乏分布外探索。它只能在给定的数据范围内做选择,无法像在线 RL 那样通过“探索新文本”发现更好的生成策略。