查看全课大纲(第 57 / 69 节)
- 1.NLP 的研究领域、应用与学习路径
- 2.自然语言的基本术语
- 3.信息论基础:信息熵与交叉熵
- 4.语言的进化与语义变迁
- 5.主观概率、客观概率与条件概率
- 6.贝叶斯原理与推理
- 7.随机变量:二项式、期望方差与联合概率
- 8.常见概率分布
- 9.辛普森悖论与贝叶斯解题实例
- 10.语言模型:语言概率与词袋模型
- 11.n-gram 语言模型(二元 / 三元 / N-Gram)
- 12.语言模型评价:交叉熵、困惑度与插值
- 13.朴素贝叶斯文本分类:垃圾邮件
- 14.拼写检查
- 15.中文分词:构词法、最大匹配、最优路径与 Jieba
- 16.词表示问题与语义相似度
- 17.TF-IDF 权重处理
- 18.One-Hot 表达与词表示的局限
- 19.Word2Vec 核心思想
- 20.Word2Vec 训练过程
- 21.Skip-gram 模型详解
- 22.词性标注任务与标注方法(规则 + N-Gram)
- 23.EM 算法与混合模型
- 24.高斯混合模型 GMM
- 25.从混合模型到隐马尔可夫模型
- 26.隐马尔可夫模型(HMM)推导与维特比解码
- 27.线性链条件随机场 CRF
- 28.贝叶斯网络与图模型
- 29.隐马尔可夫链与 HMM 推导
- 30.PLSA 主题模型
- 31.LSI 与 SVD 向量表达
- 32.LDA 与狄利克雷分布
- 33.主题模型实验复现(困惑度 / 分类 / 相似度 / 延展)
- 34.上下文无关文法(CFG)与句法分析
- 35.概率上下文无关文法 PCFG
- 36.统计机器翻译:词对齐与翻译模型
- 37.统计机器翻译中的对齐模型与参数估计
- 38.从统计机器翻译到神经机器翻译
- 39.神经元与反向传播速览(指向深度学习课)
- 40.CNN 原理及其在 NLP 中的应用
- 41.循环神经网络的基本原理与 Elman / Jordan 网络
- 42.LSTM:长短期记忆网络的核心思想与分步实现
- 43.Encoder-Decoder 框架
- 44.Seq2Seq 与早期注意力机制
- 45.注意力机制的背景与动机
- 46.注意力模型实现原理与匹配函数
- 47.记忆网络:组成与计算
- 48.注意力机制的应用与历史延展
- 49.Transformer 结构:Encoder-Decoder 栈与 Self-Attention
- 50.Multi-Head Attention、FFNN 与位置编码
- 51.层归一化、损失函数与 Universal Transformer 延展
- 52.预训练范式:从 ELMo 到 BERT
- 53.BERT 与掩码语言模型
- 54.BERT 下游任务微调与 GLUE 口径
- 55.GPT 与自回归语言建模
- 56.GPT-1 到 GPT-4 的演进
- 57.指令微调与 RLHF
- 58.分词器:BPE、WordPiece 与中文词表
- 59.上下文窗口与长文本处理
- 60.能力边界、成本与适用场景
- 61.文本分类实战:从朴素贝叶斯到逻辑回归
- 62.命名实体识别实战
- 63.文本生成与摘要实战
- 64.语义检索与向量库实战
- 65.RAG 知识库问答
- 66.NLP 评估指标:BLEU / ROUGE / BERTScore 与人工评估
- 67.幻觉与事实性问题
- 68.文本与知识结合(知识图谱压缩)
- 69.跨媒体信息检索与未来展望
指令微调与 RLHF
小象实战讲义 · 自然语言处理
在掌握了预训练模型的基础能力后,我们面临一个关键问题:如何让模型更好地理解和遵循人类的意图?传统的预训练模型(如 GPT-3)虽然能生成流畅的文本,但其输出是“续写”式的,未必能精准地“回答问题”或“执行指令”。本节将系统讲解解决此问题的核心技术——指令微调(Instruction Tuning)与基于人类反馈的强化学习(RLHF)。它们是实现大语言模型与人类意图对齐(Alignment)的关键路径,也是当前主流大模型(如 ChatGPT)能力跃升的核心步骤。学习本节,你将理解从“能力强大”到“听话好用”的工程化实现原理。
💡 核心导读
- 指令微调:通过监督学习,使用“指令-回答”对数据微调模型,教会模型按指令格式输出。
- RLHF 三步曲:监督微调(SFT)→ 奖励模型(RM)→ 强化学习(PPO),层层递进地优化模型输出,使其更符合人类偏好。
- 核心区别:指令微调是 RLHF 的第一步,两者是串联而非同义关系;RLHF 优化的是“人类偏好”,而非绝对“正确性”。
- 历史脉络:RLHF 方法源于通用强化学习中的偏好学习,后被迁移至语言模型任务,最终由 InstructGPT 工作系统化。
- 关键结论:对齐与能力是两条不同的轴,经过 RLHF 的小模型(如 1.3B)在“遵循指令”上可以超越未对齐的巨模型(如 175B GPT-3)。
从指令微调到人类反馈
指令微调:教会模型“按指令办事”
预训练语言模型通过海量文本学习了丰富的语言知识和世界知识,但其训练目标(如自回归语言建模)并未明确包含“遵循指令”这一意图。这导致直接使用预训练模型时,用户需要精心设计提示(Prompt)来“引导”模型输出期望的内容,效果不稳定。
指令微调(Instruction Tuning) 旨在解决这个问题。其核心思想是:收集大量格式为 (指令, 期望回答) 的数据对,在这些数据上对预训练模型进行有监督的微调(Supervised Fine-Tuning, SFT)。经过微调后,模型学会了将“指令”映射到“符合指令格式和意图的回答”。
一个早期且具有代表性的工作是 FLAN(Finetuned Language Net, Wei et al., 2021, arXiv:2109.01652)。FLAN 将超过 60 个不同的 NLP 任务(如文本分类、摘要、翻译、问答)都重新表述为统一的“指令-回答”格式。例如,将情感分类任务表述为:
- 指令:判断以下影评的情感是正面还是负面。
- 输入:这部电影的剧情扣人心弦,演员表演出色。
- 回答:正面
通过在如此大规模、多样化的指令任务上进行多任务微调,模型不仅学会了执行这些具体任务,更重要的是泛化出了遵循未见指令的能力。指令微调让模型从“续写者”转变为“执行者”,是解锁大模型通用能力的关键一步。
RLHF 的起源:从强化学习中的偏好学习而来
指令微调之后,模型已经能“听懂”指令并给出回答,但回答的质量(如是否 helpful, honest, harmless)仍需进一步提升。直接让人工为每个回答打分(如 1-10 分)来训练模型是困难的,因为人类对绝对分数的判断往往不一致且带有主观偏差。
一个更稳健的思路是让人类进行偏好比较。这套方法并非为语言模型而生,而是源于深度强化学习。在 《Deep reinforcement learning from human preferences》(Christiano et al., 2017, arXiv:1706.03741)这篇工作中,研究者提出:当定义复杂任务(如让机器人完成后空翻)的奖励函数非常困难时,可以转而让人类观察智能体的两段行为视频,并指出哪一段更好。利用这些偏好比较数据,可以训练一个奖励模型(Reward Model) 来预测人类偏好。随后,智能体通过强化学习(如 PPO)来最大化这个奖励模型给出的分数,从而学会完成符合人类偏好的复杂动作。
这套“收集人类偏好 → 训练奖励模型 → 强化学习优化策略”的范式,为后来将人类价值观对齐到语言模型提供了直接的方法论基础。
真正把它搬到语言模型上的是 Ziegler 等(Fine-Tuning Language Models from Human Preferences,2019,arXiv:1909.08593):同样用一个奖励模型加 PPO 去优化生成策略,先在摘要、续写这类任务上验证。InstructGPT 的三步骨架与之基本一致,差别在规模、数据量和标注流程被做成了体系。
InstructGPT:RLHF 在语言模型上的系统化实践
将偏好学习范式系统性地应用于大语言模型,并产生深远影响的工作是 OpenAI 的 InstructGPT(Training language models to follow instructions with human feedback, Ouyang et al., 2022, arXiv:2203.02155)。其方法清晰地分为三步,构成了标准的 RLHF 流水线。
第一步:监督微调(SFT)
这一步即我们前面所述的指令微调。论文中,标注人员根据给定的提示(prompt)撰写高质量的示范回答,构建了一个包含约 1.3 万条提示-回答对的数据集(论文报告值)。使用这个数据集对预训练的 GPT-3 基础模型进行监督微调,得到 SFT 模型。这一步主要解决模型“会答但答不到点子上”的问题,让其输出格式和基本内容符合指令要求。
第二步:训练奖励模型(RM)
SFT 模型能给出合规的回答,但哪个回答“更好”呢?这一步的目标是训练一个能量化回答“好”程度的模型。
- 数据收集:从数据集中采样一个提示,让 SFT 模型生成 K 个(通常 K=4 到 9)不同的回答。
- 人工排序:标注人员对这 K 个回答从好到坏进行排序。排序比对每个回答单独打分更可靠,因为人类更擅长做相对比较。
- 模型训练:利用这些排序数据训练一个奖励模型。具体地,将提示和一个回答输入奖励模型,输出一个标量分数。训练时,使用排序损失(如 pairwise ranking loss),使得对于同一提示下的一对回答
(y_w, y_l)(y_w被排序为优于y_l),奖励模型r_θ满足:r_θ(x, y_w) > r_θ(x, y_l)。
论文中,奖励模型是在 SFT 模型的基础上,去掉最后的语言模型输出层,替换为一个标量输出层进行训练的。训练使用了约 3.3 万条 提示的比较数据(论文报告值)。模型规模为 6B 参数。
关键理解:奖励模型学习的是人类标注者的偏好分布,而不是客观事实的正确性。它优化的是“人觉得好”,这为后续的“幻觉”(生成看似合理但不真实的内容)问题埋下了伏笔。
第三步:基于强化学习微调(RL, 使用 PPO)
有了奖励模型作为“评判官”,接下来就可以用强化学习来优化语言模型(策略)了。
- 设定:将初始的语言模型(即 SFT 模型)作为待优化的策略 π。环境是:给定提示
x,策略生成一个回答y。 - 奖励函数:奖励模型
r_θ(x, y)给出主要奖励。但直接最大化它会导致模型“走捷径”或“钻空子”(reward hacking),例如生成一些迎合奖励模型但不通顺或无意义的文本。为此,需要引入一个KL 散度惩罚项,约束新策略π不要偏离原始的 SFT 策略π_SFT太远。最终的奖励函数为:R(x, y) = r_θ(x, y) - β * log(π(y | x) / π_SFT(y | x))其中β是控制惩罚强度的系数(论文中报告了具体值,需引用原文)。 - 优化算法:使用近端策略优化(PPO)算法来更新策略
π,以最大化期望奖励E_(x~D, y~π)[R(x, y)]。PPO 通过限制每次策略更新的幅度,保证了训练的稳定性。
这一步在约 3.1 万条 提示的数据集上进行(论文报告值)。经过 PPO 训练后得到的模型,就是最终的 InstructGPT 模型。
RLHF 三步流水线示意图:
+-------------------+ +-------------------+ +-------------------+
| 预训练模型 | | SFT 模型 | | 奖励模型 |
| (如 GPT-3) |---->| (指令微调) |---->| (学习人类偏好) |
+-------------------+ +-------------------+ +-------------------+
| | |
| v v
| [人工写示范回答] [人工对回答排序]
| | |
v v v
+---------------------------------------------------+ +-------------------+
| RL (PPO) 训练循环 |<----| 奖励分数 r(x,y) |
| 策略 π (初始为SFT) 生成回答 y ~ π(.|x) | +-------------------+
| 奖励 R = r(x,y) - β*KL(π||π_SFT) |
| 使用 PPO 更新 π 以最大化 E[R] |
+---------------------------------------------------+
|
v
+-------------------+
| 最终 InstructGPT |
| 模型 (PPO-pt) |
+-------------------+核心结论、辨析与影响
InstructGPT 的关键发现
根据论文报告的核心结论(Ouyang et al., 2022, §4.2 Results):
- 对齐优于规模:在标注者的盲评中,参数量仅为 1.3B 的 InstructGPT 的输出,比 175B 的原始 GPT-3 更受人类偏好。这清晰地表明,模型的“对齐”程度(Alignment,即符合人类意图)与其“能力”规模(Capability)是两条不同的发展轴线。通过 RLHF 进行对齐优化,可以显著提升模型的有效性。
- 改善但未解决幻觉:论文报告指出,InstructGPT 在生成内容的“真实性”上相比 GPT-3 有所改善(幻觉率下降),但并未消除幻觉问题。这再次印证了 RLHF 优化的是“偏好”而非“事实”。
术语辨析:指令微调 vs. RLHF
这是最容易混淆的一对概念,必须厘清:
- 指令微调(Instruction Tuning):特指使用
(指令, 回答)数据进行监督微调这一步。许多模型(如 FLAN、T0)只做了这一步,也可被称为指令微调模型。 - RLHF(Reinforcement Learning from Human Feedback):特指包含 SFT + RM + RL(PPO) 的完整三步流水线。InstructGPT 是典型代表。
- 关系:指令微调是 RLHF 流水线的第一步(SFT)。两者是串联关系,而非同义词。一个完整的 RLHF 过程必然包含指令微调,但只做指令微调不等于做了 RLHF。
后续发展与替代方案
RLHF 效果显著,但其流程复杂、成本高昂(需要大量人工标注和多次模型训练)。后续研究提出了更高效的替代方案:
- DPO(Direct Preference Optimization):Rafailov et al., 2023, arXiv:2305.18290。DPO 绕过了训练奖励模型和运行 PPO 的步骤,直接从偏好数据中优化策略,大大简化了流程。
- 宪法式 AI(Constitutional AI):Bai et al., 2022, arXiv:2212.08073。尝试用一套原则(宪法)来自动生成批评和修正,减少对人工标注的依赖,让 AI 根据原则进行自我改进。
这些方法都是 RLHF 思想在不同方向上的演进,核心目标一致:让模型的行为更安全、更有用、更符合人类价值观。
📝 动手练一练
概念辨析:判断下列说法是否正确,并简述理由。 a) “RLHF 就是指令微调。” b) “奖励模型训练的目标是让模型学会判断一个回答的事实正确性。” c) “PPO 训练中的 KL 惩罚项是为了防止模型生成过于重复的内容。”
排序损失理解:假设对于同一个提示
x,人工排序认为回答y_A优于y_B,y_B优于y_C。在训练奖励模型r_θ时,我们通常使用 pairwise 损失。请写出为了满足这个排序,模型需要满足的不等式关系。如果使用 Bradley-Terry 模型,损失函数可以表示为-log(σ(r_θ(x, y_A) - r_θ(x, y_B))) - log(σ(r_θ(x, y_B) - r_θ(x, y_C))),其中σ是 sigmoid 函数。请用 Python 计算当r_θ(x, y_A)=2.0, r_θ(x, y_B)=1.0, r_θ(x, y_C)=0.5时,这一项的损失值(保留4位小数)。
👉 点击查看参考答案
概念辨析: a) 错误。RLHF 包含指令微调(SFT)、奖励模型训练(RM)和强化学习微调(RL/PPO)三个步骤。指令微调仅是第一步。 b) 错误。奖励模型学习的是人类偏好排序,即“人更喜欢哪个回答”,而不是客观的事实正确性。人类可能更喜欢流畅、详尽但包含不准确信息的回答,这会导致奖励模型也偏好这类回答。 c) 错误。KL 惩罚项约束的是当前策略
π与监督微调得到的初始策略π_SFT之间的分布差异,目的是防止强化学习阶段为了获得高奖励而过度优化到一些不自然或“钻空子”的文本模式,保持生成文本的基本质量和多样性。防止重复通常通过采样温度(temperature)或重复惩罚(repetition penalty)等技术实现。排序损失计算:
import math
def sigmoid(x):
return 1 / (1 + math.exp(-x))
r_A, r_B, r_C = 2.0, 1.0, 0.5
loss_AB = -math.log(sigmoid(r_A - r_B))
loss_BC = -math.log(sigmoid(r_B - r_C))
total_loss = loss_AB + loss_BC
print(round(total_loss, 4))0.7873计算过程:两对比较,损失是两项之和。
σ(2.0 - 1.0) = σ(1.0) ≈ 0.7310586,对应-ln(0.7310586) ≈ 0.3132617σ(1.0 - 0.5) = σ(0.5) ≈ 0.6224593,对应-ln(0.6224593) ≈ 0.4740769- 合计
0.3132617 + 0.4740769 = 0.7873386,保留四位得 0.7873
一个容易被坑的细节:如果把两项先各自四舍五入成 0.3133 和 0.4741 再相加,会得到 0.7874,与程序输出的 0.7873 差 0.0001。所以这类指标要拿未舍入的中间值相加,最后一步才舍入。
本章小结
本节深入剖析了让大语言模型从“能力强”变得“听话好用”的两大关键技术:指令微调与 RLHF。指令微调通过监督学习让模型学会遵循指令格式;RLHF 则通过引入人类偏好反馈和强化学习,进一步优化模型输出的质量,使其更符合人类价值观。InstructGPT 的工作系统化地展示了 RLHF 三步流水线的强大效力,并揭示了模型对齐与模型规模是两条不同的能力轴线。
📋 行动清单
- 理清概念:能够清晰地向他人解释“指令微调”和“RLHF”的区别与联系。
- 复现流程:在白板上画出 RLHF(SFT → RM → PPO)三步的完整数据流与模型交互图。
- 思考局限:基于“奖励模型学习的是人类偏好而非事实”这一点,分析 RLHF 可能无法解决哪些问题(如幻觉),并思考可能的改进方向。
延伸阅读
- InstructGPT 核心论文:Ouyang, L., Wu, J., Jiang, X., et al. (2022). Training language models to follow instructions with human feedback. NeurIPS 2022. arXiv:2203.02155. (重点关注 §3 Methods)
- RLHF 前身(语言模型):Ziegler, D. M., Stiennon, N., Wu, J., et al. (2020). Fine-Tuning Language Models from Human Preferences. arXiv:1909.08593v2. (把偏好学习应用到语言模型的早期工作)
- 偏好学习起源(强化学习):Christiano, P. F., Leike, J., Brown, T., et al. (2017). Deep reinforcement learning from human preferences. NeurIPS 2017. arXiv:1706.03741.
- 指令微调代表工作:Wei, J., Bosma, M., Zhao, V. Y., et al. (2022). Finetuned Language Models Are Zero-Shot Learners. ICLR 2022. arXiv:2109.01652. (FLAN)
- RLHF 高效替代方案:Rafailov, R., Sharma, A., Mitchell, E., et al. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. NeurIPS 2023. arXiv:2305.18290. (DPO)
—— 小象教研组