第9章 “对齐”的艺术:指令微调与人类反馈强化学习
1. 引言
经过前面章节的艰苦跋涉,我们终于铸造出了一头“巨兽”——一个经过海量数据预训练、参数规模庞大、具备涌现能力的基础模型(Base Model)。这个模型是语言的天才,是知识的巨人,但它也是一个行为不可预测、价值观混乱的“野孩子”。
如果你直接与一个未经“对齐”的基础模型对话,会发生什么?
- 你问:“如何高效地学习AI?” 它可能会续写一段关于“AI学习的未来展望”的散文,而不是给你具体的步骤。
- 你让它:“写一首赞美太阳的诗。” 它可能会生成一段关于太阳核聚变原理的科学说明。
- 你甚至可能诱导它生成一些有害的、带有偏见的、或不真实的内容,而它会毫无保留地“一本正经胡说八道”。
这是因为基础模型的目标是在预训练时预测下一个词,它并不真正“理解”人类的指令(Instruction),也分不清什么是“好”的回答,什么是“坏”的回答。它就像一匹拥有千里马潜力的宝马,但无人为它套上缰绳指明方向。
“对齐(Alignment)”这门艺术,就是为这匹宝马配上鞍座和缰绳,让它的强大能力能够与人类的意图、价值观和偏好对齐。我们希望模型能成为一个乐于助人(Helpful)、诚实无害(Honest and Harmless)的AI助手。本章,我们将学习实现这一目标的两大核心技术:指令微调(Instruction Fine-Tuning)和基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)。
本章学习目标:
- 理解“对齐”问题的重要性:明白为什么一个强大的基础模型不等于一个好用的AI助手。
- 掌握指令微调(SFT):学习如何通过构建高质量的“指令-回答”数据集,来教会模型听懂并遵循人类的指令。
- 彻底解构RLHF流程:这是本章的重点。我们将分步学习RLHF的三个核心阶段:监督微调(SFT)、奖励模型训练(RM)和强化学习优化(PPO)。
- 认识“奖励模型”:理解如何训练一个模型,让它来模仿人类的偏好,为AI生成的答案进行“打分”。
本章核心问题:
- 指令微调和我们之前谈到的“微调”有什么区别?它的关键点在哪里?
- 我们不可能人工去评价模型生成的所有答案,RLHF是如何巧妙地解决这个问题的?(奖励模型)
- 强化学习(RL)是如何被应用到训练语言模型中的?这里的“智能体”、“环境”、“动作”和“奖励”分别是什么?
- PPO算法在RLHF中扮演了什么角色?为什么我们需要它?
本章是连接技术与人文的桥梁。我们将看到,人类的智慧和价值观是如何通过精巧的算法,被“注入”到冰冷的模型参数之中的。理解了对齐,你才能真正理解为什么ChatGPT如此强大且“懂你”。
2. 正文
2.1 第一步驯化:指令微调 (Instruction Fine-Tuning / SFT)
这是对齐的第一步,也是最直观的一步:教模型听懂人话。
核心思想
基础模型虽然见多识广,但它见到的主要是陈述性的语料(如维基百科)。它很少见到“指令-回答”这种对话形式。指令微调(Supervised Fine-Tuning, SFT)的目的,就是让模型学会这种交互模式。
做法
- 构建高质量数据集:我们需要收集或人工构建一个包含成千上万条“指令(Prompt)- 回答(Response)”对的数据集。这些指令需要尽可能地多样化,覆盖各种各样的任务,如问答、写作、头脑风暴、代码生成、闲聊等。
- 进行监督微调:我们使用这个数据集,以标准的监督学习方式,来微调我们的基础模型。模型的任务就是,给定一个指令,学会生成与之对应的那个高质量的回答。
直观比喻:新手员工岗前培训
一个刚毕业的天才大学生(基础模型)加入了你的公司。他虽然基础知识扎实,但完全不懂公司的业务流程和沟通方式。
- 指令微调:你作为他的导师,给了他一本《新员工指南》,里面包含了大量“当客户问X时,你应该这样回答Y”的案例。通过学习这本指南,他迅速学会了公司的“话术”和处理基本任务的流程,能够像一个合格的员工那样与人沟通和工作了。
graph TD
subgraph SFT Stage
A[高质量指令数据集<br/>{"prompt": "写一首关于月亮的诗", "response": "床前明月光..."}<br/>{"prompt": "解释什么是黑洞", "response": "黑洞是..."}] --> B{基础大模型};
B -- "进行监督微-调" --> C[SFT模型<br/>(已学会遵循指令)];
end
经过SFT后,模型已经从一个“文本续写机”变为了一个“指令遵循机”。它现在能够理解你的命令,并生成格式正确、内容相关的回答。但我们如何让它知道,在众多可能的回答中,哪一种是更受人类喜欢的呢?
2.2 第二步精调:基于人类反馈的强化学习 (RLHF)
SFT教会了模型“能做什么”,而RLHF则要教会模型“应该做什么”。RLHF是一个更复杂、更精细的调教过程,它引入了人类的偏好,来进一步优化模型的输出。
整个RLHF流程分为三步:
2.2.1 阶段一:监督微调 (SFT)
这一步与我们2.1节讲的完全一样。我们需要先有一个经过SFT的模型,作为后续优化(打磨)的“毛坯房”。
2.2.2 阶段二:训练奖励模型 (Reward Model, RM)
这是RLHF最核心、最巧妙的一步。我们深知,让模型生成“好”的回答是我们的目标,但“好”是一个非常主观的概念。我们无法穷尽所有可能,为每个回答都打上一个绝对的分数。于是,研究者们想出了一个绝妙的办法:我们不直接教模型什么是好的,而是训练另一个模型,让它来替我们判断什么是好的。这个“裁判”模型,就是奖励模型(Reward Model, RM)。
做法
- 收集人类偏好数据:
- 我们从SFT模型中,针对同一个指令,采样生成多个不同的回答(例如4个或7个)。
- 然后,我们请人类标注员来对这些回答进行排序。他们不需要给每个回答打分,只需要指出哪个最好,哪个次之,哪个最差(
回答A > 回答C > 回答B...)。这种“比较”比“打分”要容易得多,也更符合人类的直觉。
- 训练奖励模型:
- 奖励模型的架构,通常是一个与我们主模型类似规模的语言模型,但它的最后输出不再是词语的概率,而是一个单一的标量值(分数),这个分数就代表了“奖励”。
- 我们用刚刚收集到的人类偏好排序数据来训练这个RM。训练的目标是:对于任意一对回答,如果人类更偏爱回答A而不是B,那么RM给A打出的分数
RM(A)应该要高于RM(B)。
直观比喻:培养一位AI艺术评论家
你是一位画廊老板(我们),想提升旗下AI画家(主模型)的作品质量。
- 收集偏好:你让AI画家针对同一个主题(指令),画出好几幅不同的画。然后你请来许多艺术爱好者(人类标注员),让他们对这些画进行排序,选出他们最喜欢的。
- 培养评论家:你雇佣了一位有潜力的实习生(奖励模型),让他专门学习这些爱好者的排序数据。他的工作不是画画,而是学会预测哪幅画会更受爱好者欢迎。经过训练,这位实习生变成了一位眼光毒辣的“AI艺术评论家”,他能为任何一幅画打出一个“受欢迎潜力分”。
现在,我们拥有了一个可以自动评估模型输出质量的“代理裁判”。
2.2.3 阶段三:使用强化学习进行优化
有了“裁判”,我们就可以开始正式“训练”我们的AI画家了。这里,我们引入了**强化学习(Reinforcement Learning, RL)**的框架。
强化学习四要素在RLHF中的对应:
- 智能体 (Agent):我们的SFT模型。它需要学习如何做出更好的“动作”。
- 动作 (Action):对于一个给定的指令,模型生成一个回答。
- 环境 (Environment):用户输入的指令。
- 奖励 (Reward):模型生成一个回答后,我们用**奖励模型(RM)**来给这个回答打分。这个分数,就是RL中的“奖励信号”。
做法(使用PPO算法)
- 我们从指令数据集中随机抽取一个指令,输入给SFT模型。
- SFT模型生成一个回答(Action)。
- **奖励模型(RM)**立刻对这个回答进行评估,并给出一个奖励分数(Reward)。
- 这个奖励分数被反馈给SFT模型,用于更新其参数。这个更新过程,通常使用一种叫做**近端策略优化(Proximal Policy Optimization, PPO)**的强化学习算法。
PPO算法的核心思想
PPO的目标,是让SFT模型(我们称之为策略 (\pi))的参数,朝着能够最大化奖励模型RM打分的方向进行更新。但是,它有一个非常重要的约束:更新后的模型,不能与原始的SFT模型偏离太远。
- 为什么要加这个约束?
想象一下,如果AI画家为了迎合“评论家”的口味,开始画一些虽然得分高但四不像的、完全丧失了艺术基本功的怪异作品,那就得不其反了。我们希望它在“提升风格”的同时,不要忘记“如何画画”。 - KL散度惩罚:PPO通过在奖励函数中加入一个**KL散度(KL Divergence)**惩罚项来实现这一约束。KL散度用来衡量两个概率分布的差异。在这里,它用来惩罚优化后的模型输出的词语概率分布与原始SFT模型偏离过大的情况。
[
\text{Final Reward} = \text{RM}(y|x) - \beta \cdot \log(\frac{\pi_{\text{RL}}(y|x)}{\pi_{\text{SFT}}(y|x)})
]
这里的第二项,就是KL散度惩罚。它像一根“缰绳”,防止模型为了追求高分而“放飞自我”,产生一些虽然RM喜欢但语言上不通顺或内容上乱来的回答。
通过PPO算法的不断迭代,模型学会在“获得高奖励”和“保持语言模型的本真”之间,取得一个精妙的平衡。
完整流程图
graph TD
subgraph Step 1: SFT
A[Prompt-Response Pairs] --> B[Base LLM];
B -- "Supervised Fine-tuning" --> C[SFT Model];
end
subgraph Step 2: Reward Modeling
C -- "Generate multiple responses" --> D{Prompt};
D -- "Multiple Responses" --> E[Human Rankers];
E -- "Ranked Responses (A>C>B...)" --> F[Reward Model (RM)];
end
subgraph Step 3: RL Optimization (PPO)
G[Unseen Prompts] --> H(SFT Model);
H -- "Generate Response (Action)" --> I{Response};
I -- "Get Score (Reward)" --> F;
F -- Reward Signal --> J[PPO Algorithm];
J -- "Update Policy" --> H;
C -- "KL Penalty" --> J;
end
H --> K[Final Aligned Model];
3. 总结与预告
在本章,我们为强大的基础模型注入了“灵魂”,学习了如何通过“对齐”技术,将其从一个纯粹的语言预测机器,转变为一个符合人类意图和价值观的AI助手。
本章核心要点:
- 对齐的必要性:基础模型需要经过“驯化”,才能理解并遵循人类指令,并生成有用、无害的回答。
- 指令微调 (SFT):对齐的第一步,通过学习“指令-回答”数据对,教会模型听懂指令,完成从“续写”到“回答”的模式转变。
- RLHF:对齐的关键一步,通过一个三阶段流程,将人类的偏好注入模型。
- 训练奖励模型 (RM):核心思想是训练一个“代理裁判”,让它学会模仿人类的排序偏好,为答案打分。
- 强化学习优化 (PPO):使用RM作为奖励来源,通过RL算法来优化SFT模型,使其在不偏离语言模型基本功的前提下(KL散度惩罚),生成更受欢迎的回答。
至此,我们已经完整地学习了构建一个类ChatGPT模型所需的全套核心技术:从底层架构(Transformer),到训练范式(预训练),到规模化法则,再到最终的对齐。
理论学习已经达到了一个高峰。在接下来的章节中,我们将把目光转向实战。我们将亲手搭建一个属于自己的对话机器人,并学习如何利用开源生态和工具(如LangChain),来进一步扩展大模型的能力,让它能够与外部世界进行交互。准备好,我们将从理论的殿堂,走向应用的广阔天地。
4. 课后练习
- SFT vs. Fine-tuning:我们在第七章提到了BERT的微调,本章提到了SFT。请问,SFT和之前我们为BERT做的任务微调(如文本分类),在目的和数据集格式上有什么本质的区别?
- 奖励模型的泛化:我们只用人类对少量样本的排序来训练奖励模型。但它为什么能够泛化,并对它从未见过的、模型生成的全新回答进行合理的打分?(提示:可以从神经网络自身的学习和泛化能力来思考。)
- RLHF的必要性:既然SFT已经教会了模型如何回答问题,我们为什么还需要如此复杂的RLHF流程?我们不能直接用更多、更高质量的SFT数据,来达到同样的目的吗?请思考一下RLHF相比于纯SFT,可能有哪些优势?(提示:可以从探索空间、数据成本、偏好的精细度等角度考虑。)
691

被折叠的 条评论
为什么被折叠?



