大模型对齐终极指南:RLHF 与DPO

17 阅读3分钟

🏛️ 大模型全链路训练与对齐深度手册

本手册涵盖从 LoRA 微调参数设置到 RLHF/DPO 对齐算法的核心逻辑、数学本质及工程陷阱。


一、 微调基石:LoRA 核心参数解析

在 SFT 或对齐阶段,LoRA 是最常用的“手术刀”。其性能由两个核心参数决定:

1.1 秩 (Rank / r) —— “画板的大小”

  • 定义:低秩矩阵的中间维度。决定了允许模型通过微调学习多少新信息
  • 配置建议
    • r=8/16:适合一般任务、风格转换,显存占用极低。
    • r=32/64:适合复杂逻辑、特定领域知识(如医疗、代码)。

1.2 缩放因子 (Alpha / lora_alpha) —— “颜料的浓度”

  • 定义:控制微调信号在最终输出中的权重,缩放系数为 Scaling=α/r\text{Scaling} = \alpha / r
  • 配置建议
    • 工业标准:通常设置 lora_alpha = 2 * r
    • 调优逻辑:若模型不听指令,调大 Alpha;若模型出现严重遗忘(学傻了),调小 Alpha 或 Rank。

二、 经典对齐:RLHF (基于人类反馈的强化学习)

RLHF 通过“三步走”战略(SFT -> RM -> PPO),将人类审美向量化。

2.1 考官质检:奖励模型 (Reward Model, RM)

  • 训练逻辑:采用 Pairwise Ranking(成对排序)。让标注员选出 ybetteryworsey_{better} \succ y_{worse}
  • 损失函数LRM=log(σ(rθ(x,yw)rθ(x,yl)))L_{RM} = -\log(\sigma(r_{\theta}(x, y_w) - r_{\theta}(x, y_l)))
  • 质量指标排序准确率 (Ranking Accuracy)。优秀的 RM 准确率应在 70%-80% 以上。

2.2 工程架构:PPO 的“四保一”系统

在强化学习阶段,显存需同时承载 4 个模型实体:

模型实体状态职责类比
Policy Model训练 (LoRA)生成回答,最终要交付的本体。考生
Reference Model冻结计算 KL 散度约束,防止模型“学歪”。初心 (锚点)
Reward Model冻结给生成结果打分。考官
Value Model训练 (LoRA)预测预期回报,稳定训练波动。自我评估系统

2.3 数学约束:KL 惩罚

Total_Reward=RewardRMβlogπRLπSFTTotal\_Reward = Reward_{RM} - \beta \log \frac{\pi_{RL}}{\pi_{SFT}}

KL 散度作为“刹车”,防止模型为了骗分而产生“奖励黑客”行为(如通过堆砌礼貌用语刷高分)。


三、 技术革命:DPO (直接偏好优化)

DPO 证明了:不需要独立的 RM 和复杂的 PPO 循环,也能实现同等对齐。

3.1 核心原理:跳过中间商

DPO 将强化学习降维成了二元分类问题。它利用好坏答案在当前模型与参考模型中的概率比值来构造损失:

LDPO=logσ(βlogπθ(ywx)πref(ywx)βlogπθ(ylx)πref(ylx))L_{DPO} = -\log \sigma \left( \beta \log \frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)} \right)

3.2 DPO 相比 RLHF 的劣势(硬伤)

  1. 缺乏在线探索能力:DPO 是离线训练(Off-policy),只能学死数据。RLHF 能自发生成新答案(On-policy),上限往往更高。
  2. 过度依赖 SFT 基座:若 SFT 没练好,DPO 极易失效甚至导致乱码。
  3. 泛化性与模式崩溃:DPO 倾向于极端化概率分布,容易导致模型说话变得单一、死板,即“对齐税”严重。
  4. 噪声敏感:DPO 缺乏 RM 的抽象过滤能力,会直接学习错误的标注偏好。

3.3 深度解读

在学习 DPO (直接偏好优化) 时,最容易产生的一个核心疑惑是:“如果模型在训练时根本不开口说话(生成),它是如何变强的?” 以下从底层逻辑到数学实现对这一疑惑进行系统梳理。

1. DPO 的核心动作:从“创作者”转向“评论家”

在 SFT 或推理阶段,模型是生成式的(逐字蹦词);但在 DPO 训练阶段,模型是判别式的。

  • 训练状态:模型并不会真正从零“输出”一段文本。
  • 执行逻辑:系统将偏好数据集里预先标好的“好答案” (ywy_w) 和“坏答案” (yly_l) 直接喂给模型。模型顺着这些 Token 走一遍前向传播(Forward Pass),计算它对这些既有 Token 的“认同程度”。
2. 数学底层:如何计算“认同感”(以“你好”为例)

假设 Prompt xx 是:“请打个招呼”,数据集中:

  • 好答案 (ywy_w):“您好”
  • 坏答案 (yly_l):“你好”

模型对一段话的认同程度是通过 对数概率累加 (Log-Probability Sum) 来量化的:

计算过程分解:
  1. 拆解 Token:将“您好”拆解为
  2. 计算单步概率
    • 输入“请打个招呼”,模型预测第一个字是 的概率 P()=0.8P(\text{您}) = 0.8
    • 输入“请打个招呼,您”,模型预测下一个字是 的概率 P()=0.9P(\text{好}) = 0.9
  3. 对数累加
    • logP(您好)=log(0.8)+log(0.9)(0.22)+(0.10)=0.32\log P(\text{您好}) = \log(0.8) + \log(0.9) \approx (-0.22) + (-0.10) = -0.32
    • 同理,计算出“你好”的认同分,假设为 logP(你好)=1.5\log P(\text{你好}) = -1.5(分值越小,代表概率越低)。
3. DPO 的“拉踩”机制(对比学习)

DPO 并不追求绝对的高分,它追求的是相对进步。它会同时对比两组关系:

  1. 好答案的进步:当前模型对“您好”的认同度相对于原始模型(Ref)提升了多少。
  2. 坏答案的退步:当前模型对“你好”的认同度相对于原始模型(Ref)下降了多少。
  • 训练目标:通过 Loss 函数强制拉大这两者的差距,从而让模型“内化”人类的偏好,学会“您好”比“你好”更得体。
4. 深度疑惑解答:Training-Inference Gap

问:模型输出的答案和数据集里的不一样,怎么办?

  • :DPO 根本不在乎模型“想写什么”。它只在乎:“如果我强迫你写出‘您好’,你愿不愿意?”。DPO 训练的是模型的“偏好分布”,而不是“生成行为”。

问:DPO 这种“评分”做法的局限性?

  • 盲区(Exploration Gap):由于模型在训练时从不“开口说话”,它只能在给定的“你好”和“您好”之间学拉踩。如果模型此时自发产生了一个更高级的词汇(如“阁下安好”),DPO 是无法捕获这种自发进化的。
📌 总结:DPO 的本质

DPO 是将复杂的强化学习过程伪装成了一场关于概率的选择题考试。它通过计算模型对既有文本的“认同概率比值”,实现了低成本、高效率的对齐。


四、 工业界选型对比总结

特性RLHF (PPO)DPO
模型数量4 个2 个
训练稳定性极低(超参地狱)极高(简单分类)
探索能力强(在线进化)无(离线重排)
适用场景复杂多步推理、极致性能冲刺快速价值观对齐、算力受限场景

🏆 专家工程建议

  1. 参数选择:微调时务必关注 ralpha 的比例。
  2. 对齐路径:初学者或快速迭代建议用 DPO;追求推理天花板建议用 RLHF(或其变体如 GRPO)。
  3. 数据为王:无论是 RM 还是 DPO,成对偏好数据的质量(一致性)直接决定了最终模型的“情商”。