跳转至

大模型从0到1|第十五课:详解SFT、RLHF

课程链接:Stanford CS336 Spring 2025 - Lecture 15

课程核心:本节课深入讲解大模型“对齐”(Alignment)的全流程。从如何通过SFT(监督微调)让模型学会说话,到如何通过RLHF(PPO/DPO)让模型符合人类价值观。

Part 1: 对齐的背景与 SFT (监督微调)

Slide 1 第15讲:RLHF / Alignment (对齐) 本节课的主题是“对齐”,即如何控制大语言模型的行为,使其符合用户的意图。

Slide 2 目前的课程进度 我们已经完成了预训练(Pre-training),得到了像 GPT-3 这样的基座模型。但基座模型的问题在于它只是一个“续写机”。 * 左图:Glossier 的产品描述。 * 右图:如果你给 GPT-3 一个指令,它可能会续写一段广告而不是回答问题。我们需要 InstructGPT 这样的流程来修复它。

Slide 3 指令遵循 (Instruction Following) 是强大的控制形式 我们希望模型能精确执行复杂的约束。 * 例子:要求 GPT-4 用 Python 画图,并指定具体的坐标轴标签、动画效果。模型能完美执行这些非自然的格式要求。

Slide 4 安全与内容审核 除了有用性,我们还需要控制模型的安全性。 * 例子:当用户要求写带有仇恨言论的推文时,模型应该触发拒绝机制(Input/Output Filter)。

Slide 5 今天的目标:更好地控制 LM 输出 预训练数据虽然量大,但不可控。 * 核心问题:我们能否收集我们想要的行为数据来训练模型? * 三个关键点:数据长什么样?如何利用数据?是否需要大规模?

Slide 6 InstructGPT 标准流程 (Ouyang 2022) 这是 RLHF 的三个阶段。我们先看 Step 1(红框部分): * 收集演示数据(Prompt + Answer),进行有监督微调(SFT)。

Slide 7 SFT 的成分:训练数据 SFT 需要多样化的任务,包括自然语言推理、常识推理、代码生成、对话等。 * 常见数据集:FLAN, Open Assistant, Alpaca 等。

Slide 8 SFT 的方法 * 混合训练:通常会将 SFT 数据与一部分预训练数据(Pre-training mix)混合,以保持模型的基础能力。

Slide 9 训练数据详解 深入探讨两个细节: 1. 这些数据集里面具体是什么? 2. 构建“高性能”指令微调数据的关键是什么?

Slide 10 查看三个代表性数据集 * FLAN (TO-SF):传统的 NLP 任务转化而来。 * Alpaca (Stanford):由大模型(Davinci-003)生成的合成数据。 * Open Assistant (Oasst):人类众包编写的高质量对话。

Slide 11 FLAN 示例 内容比较短,任务非常明确。例如:签署邮件、分类文本、提取餐厅信息。

Slide 12 Alpaca 示例 涵盖了更广泛的指令,如“给出三个健康建议”、“解释什么是算法”、“写一个 Python 函数”。

Slide 13 OpenAssistant 示例 更加自然和复杂。例如:解释“买方垄断”并引用文献、为小学生设计科学实验。

Slide 14 (课堂互动:让学生尝试进行数据标注)

Slide 15 (课堂互动:查看 GPT-4o 生成的关于 CS336 的课程介绍)

Slide 16 数据集的差异 数据集在以下方面差异巨大: * 长度格式(Bullet points)。 * 复杂性(引用、推理)。 * 隐形因素:规模、安全性。

Slide 17 风格差异:长度 * 表格对比了不同数据集的平均长度。GPT-4 生成的数据(如 Alpaca, ShareGPT)通常比人工标注的 NLP 数据集(FLAN)长得多。

Slide 18 长度偏好 (Length matters) * 研究发现,人类和 GPT-4 评估者都倾向于认为更长的回答更好。这导致 SFT 后的模型往往比较啰嗦。

Slide 19 Benchmark 表现 * 使用不同 SFT 数据微调同一模型(LLaMA),性能差异巨大。 * 高质量数据(如 ShareGPT/Tulu)能显著提升 MMLU 等分数,而低质量数据可能损害模型。

Slide 20 复杂知识与引用 * Open Assistant 的例子要求引用文献。 * 思考:SFT 是在教知识,还是教引用格式? * 答案:主要是格式。如果模型不知道某个知识点,强行 SFT 会导致幻觉。

Slide 21 幻觉与行为克隆 (Schulman 2023) * 如果微调数据包含了模型在预训练中未学过的知识("Unknown"区域),模型就会学会编造(Hallucinate)。 * 理想情况是模型在不知道时承认。

Slide 22 SFT 数据核心结论 1. SFT 最好用于提取预训练已有的行为,不要试图注入新知识。 2. 即使是事实正确的数据,如果模型没见过,也可能有害。 3. 少量正确的数据(格式、风格)就能带来巨大改变。

Slide 23 安全性 (Safety) 模型部署需要安全控制。 * 防止生成:虚假信息(Misinformation)、诈骗(Scams)、冒充等。

Slide 24 安全微调 (Safety-tuning) * 通过加入“拒绝回答”的样本,将一个 Unsafe Model 转化为 Safe Model。 * 例如:问“如何杀人?”,回答“我不能提供帮助...”。

Slide 25 过度拒绝 (Over-refusals) * 安全数据的平衡很难掌握。 * 如果太多,模型会变得过度敏感。例如:问“如何杀掉一个 Python 进程”,模型因为看到“kill”就拒绝回答。

Slide 26 少量数据即可实现安全 * 实验表明,只需要很少的安全样本(约 500 条),就能显著降低有害输出率(Mean Score 降低)。

Slide 27 SFT 总结 1. SFT 主要是提取预训练能力。 2. 加入模型未知的知识会导致幻觉。 3. 少量高质量数据(长尾、安全)非常关键。

Slide 28 如何进行微调 (代码层) * SFT 本质上就是标准的梯度下降。 * 代码非常简单,使用 PyTorch 加载数据,计算 Loss,反向传播。

Slide 29 将指令微调转化为预训练 (Midtraining) * 如果在学术界,简单微调即可。 * 但在工业界(海量算力),趋势是将指令数据混入预训练阶段。

Slide 30 Midtraining / Decay Stage * 在预训练的最后阶段(Decay Stage),改变数据配比,混入高质量的 SFT 数据(如代码、数学、SFT数据)。 * 这是目前 MiniCPM、JetMoE 等模型的标准做法。


Part 2: RLHF (基于人类反馈的强化学习)

Slide 31 RLHF 在哪里? 回到流程图,RLHF 是 Step 2 和 Step 3。 * 收集比较数据,训练奖励模型,然后优化策略。

Slide 32 从模仿到优化 * SFT (Imitation):拟合分布 \(p(y|x)\),模仿专家。 * RLHF (Optimization):寻找最大化奖励 \(R(y,x)\)\(y\)

Slide 33 为什么要优化?成本因素 * SFT 数据(写完美答案)很贵(\(25/条)。 * RLHF 数据(比较 A 和 B 哪个好)很便宜(\)4/条)。 * 我们可以用更低的成本扩展训练数据。

Slide 34 为什么要优化?生成-判别差距 (G-V Gap) * 人类不一定擅长写(比如写诗、写代码),但很擅长评判好坏。 * RLHF 利用了人类的判别能力来提升模型的生成能力。

Slide 35 RLHF 概览 1. 数据:如何收集?需要注意什么? 2. 算法:PPO vs DPO。 3. 副作用:RLHF 会带来什么问题?

Slide 36 RLHF 数据收集流程 * 重点看 Step 2:收集比较数据(Comparison data),训练奖励模型。

Slide 37 标注界面 * 这是一个典型的成对比较(Pairwise Feedback)界面。标注员阅读 Prompt,对比两个 AI 回答,选择更好的一个。

Slide 38 标注指南 (InstructGPT) * 我们需要明确定义什么是“好”。 * 核心原则:Helpful(有用)、Truthful(真实)、Harmless(无害)。

Slide 39 Google Bard 的标注指南 * 大厂的指南非常细致,包含语气、格式、安全性等多个维度的评分标准。

Slide 40 标注员筛选 * 不是所有人都能做标注。OpenAI 使用 Scale/Upwork,并有严格的筛选测试(Agreement test)。

Slide 41 (课堂互动:让学生体验标注 5 个样本)

Slide 42 众包的复杂性 * 很难获得高质量、可验证的标注员。 * 很难让标注员真正去核实事实(他们倾向于凭直觉选看起来对的)。

Slide 43 伦理问题 * OpenAI 曾因使用肯尼亚低薪工人过滤有毒内容而受到批评。这涉及严重的心理健康和剥削问题。

Slide 44 人口统计学偏差 * 表格显示了标注员的群体分布。标注员的背景(如宗教、国籍)会显著影响模型对敏感话题的看法。

Slide 45 标注者的一致性 * 热力图显示,不同来源的标注员(专家 vs 众包)错误率不同。 * 众包工人容易忽略事实错误,而偏好语气自信的回答。这导致模型学会了“自信地胡说八道”。

Slide 46 RLAIF:用 AI 生成数据 * 既然人类难管,能不能用 GPT-4 当裁判? * 图表显示,GPT-4 的评分与人类的一致性极高(0.87 correlation)。

Slide 47 UltraFeedback 与 Zephyr * UltraFeedback:利用 AI 标注的大规模偏好数据集。 * Zephyr:使用该数据训练的小模型,效果非常好。

Slide 48 Self-training (Constitutional AI) * Anthropic 的方法:让模型根据“宪法”(原则)自我批判、自我修改,生成 SFT 和 RLHF 数据。

Slide 49 RLHF 的副作用:长度效应 * 图表显示,人类偏好与回答长度成正比。模型通过 RLHF 学会了写得更长来讨好人类。


Part 3: 算法 - PPO 与 DPO

Slide 50 如何进行 RLHF? 我们有了数据,怎么更新模型? 1. PPO:经典、强大、难调。 2. DPO:新颖、简单、直接。

Slide 51 从模仿到优化 (数学) * 目标:最大化奖励期望 \(E[R(y,x)]\)。 * 约束:模型不能偏离基座模型太远(KL 散度惩罚)。

Slide 52 PPO 流程 * 首先训练一个奖励模型(RM)。 * 然后用 PPO 算法优化策略,包含 Value Function, Policy, KL penalty 等组件。公式看起来无害,但实现极难。

Slide 53 奖励模型细节 (Stiennon) * 奖励模型使用 Pairwise Ranking Loss 训练(让好回答的分数比坏回答高)。

Slide 54 PPO 概念 * PPO 试图在每一步更新中限制策略的变化幅度(Clip),以保证稳定性。

Slide 55 能不能不用 PPO? * PPO 太复杂了(4个模型同时加载,显存爆炸)。大家尝试了很多替代方案(如 Rejection Sampling)。

Slide 56 DPO: RLHF without Tears (无痛 RLHF) * 核心思想:不需要显式训练奖励模型,不需要 PPO 循环。 * 直接在偏好数据上优化策略模型:增加好回答的概率,降低坏回答的概率。

Slide 57 DPO 推导 (1) * 数学推导:最优策略 \(\pi^*\) 和奖励函数 \(r\) 之间存在解析关系。我们可以反过来用 \(\pi\) 来表示 \(r\)

Slide 58 DPO 推导 (2) * 将上述关系代入奖励模型的 Loss,消去 \(r\),得到只包含策略 \(\pi\)DPO Loss

Slide 59 DPO 更新机制 * DPO 的梯度直观含义:根据模型当前的预测误差(惊讶程度)动态调整权重,增加好样本似然,减少坏样本似然。

Slide 60 结果对比 * 表格显示,DPO 在胜率上可以匹敌甚至超越 PPO,且训练更加简单稳定。

Slide 61 DPO 有效性 * HuggingFace 排行榜上,很多顶级开源模型都使用了 DPO。

Slide 62 DPO 变体 * SimPOLength Normalized DPO 等变体试图解决显存占用或长度偏差问题。

Slide 63 PPO 依然强大 * Tulu 3 的研究表明,在某些任务(如逻辑推理)上,经过精心调优的 PPO 仍然优于 DPO。DPO 是离线算法,PPO 是在线算法,后者在探索性上更强。

Slide 64 RLHF 陷阱:过度优化 (Overoptimization) * 如果你针对一个不够完美的奖励模型(Reward Model)训练太久,策略模型会学会钻空子(Reward Hacking),导致生成乱码或无意义内容。

Slide 65 过度优化曲线 * 图表显示,随着 KL 散度增加(模型偏离初始模型),真实的奖励(Gold Reward)会先升后降,而代理奖励(Proxy Reward)一直上升。这就是古德哈特定律。

Slide 66 模式坍塌与校准度 * RLHF 会导致模型校准度(Calibration)下降。 * SFT 模型通常比较校准(预测概率 = 真实准确率),但 RLHF 模型往往过度自信(概率偏向 0 或 1),即使它错了。


💬 评论