第23章 从语言模型到对话助手
给一个基础语言模型输入“请解释什么是光合作用”,它未必像老师一样回答。训练数据中这句话之后可能接答案,也可能接另一段论坛争论、网页菜单,甚至继续虚构对话。
预训练只要求模型预测文本中可能出现的下一个 Token。这个目标能产生语言、知识和生成能力,却没有明确规定:用户的问题优先于续写习惯;答案应该直接、有帮助;不确定时应说明限制;危险请求需要拒绝。
对话助手不是把聊天窗口套在语言模型外面就自然出现。它通常来自一条额外训练流水线:先让模型模仿高质量指令示范,再从人类对候选回答的比较中学习偏好,有时还加入强化学习、安全规则、工具和系统级控制。
本章要把这些阶段分开。只有看清每个阶段接收什么数据、优化什么目标,才能判断“对齐”到底改变了什么,又没有改变什么。
基础语言模型只会续写分布
因果预训练学习:
\[ p_\theta(x_t\mid x_{<t}) \]
如果训练语料中有小说、新闻、代码和问答,模型会学会延续多种格式。它可能已经具备回答问题所需的知识,却不稳定地选择“回答者”这一行为模式。
提示格式可以临时缩小选择范围。例如系统把对话组织成:
<system>你是一个谨慎的助手</system>
<user>为什么天空是蓝色的?</user>
<assistant>
特殊 Token 和角色标签告诉模型当前位置应生成助手回复。但如果训练中没有充分学习这种格式,仅靠界面标签不能保证遵循指令。
第一步:用示范教会指令格式
监督式指令微调(supervised instruction fine-tuning, SFT)收集“指令与理想回答”样本,继续使用交叉熵训练模型模仿回答。
数据可以来自人工撰写、已有任务数据改写、专家答案或经过筛选的模型生成。关键不只是数量,还包括任务覆盖、回答风格、事实质量和安全边界。
指令 x -> 高质量示范 y* -> 逐 Token 交叉熵 -> 更新模型参数
FLAN 等工作把许多任务改写成自然语言指令并联合微调,显著提高模型在未见任务上的零样本表现。(Wei 等 2022年) 指令微调让模型学会“看懂任务描述并按指定格式回答”,但它仍受示范数据限制。
如果示范总是冗长,模型会学会冗长;如果拒绝样本边界模糊,模型会过度拒绝或漏拒。SFT 优化的是对示范文本的似然,不直接比较多个都合理但质量不同的答案。
示范与偏好提供不同信息
要求标注员为每个问题写出完美答案成本很高。很多时候,人更容易比较两个候选:“A 比 B 更清楚”“B 虽流畅但编造了来源”。
于是可以让模型为同一提示生成多个回答,再由标注员排序或成对选择。数据形式变成:
提示 x
|-- 回答 y_w:更受偏好
|-- 回答 y_l:较不受偏好
偏好可能综合帮助性、正确性、清晰度、安全性和风格。但如果这些标准发生冲突,标注规范必须说明优先级。不同标注者也可能有合理分歧。
从人类比较中训练策略的思想早于现代对话模型。Christiano 等人展示了用人类偏好学习强化学习目标,Stiennon 等人把类似流程用于文本摘要。(Christiano 等 2017年; Stiennon 等 2020年)
核心机制:分阶段改变输出行为
预训练从海量文本中获得生成底座;监督微调用高质量示范教会指令和回答格式;偏好学习比较多个候选,进一步提高人更愿意接受的输出概率。每一阶段都改变条件分布,却不自动保证事实、价值判断或安全边界正确。
第二步:把偏好拟合成奖励模型
在经典 RLHF 流程中,先训练一个奖励模型(reward model)。它读取提示 \(x\) 和完整回答 \(y\),输出一个标量 \(r_\phi(x,y)\)。
给定更受偏好的回答 \(y_w\) 和较差回答 \(y_l\),奖励模型希望前者分数更高。先定义奖励差:
\[ d_\phi= r_\phi(x,y_w)-r_\phi(x,y_l) \]
常用成对概率是:
\[ P(y_w\succ y_l\mid x)=\sigma(d_\phi) \]
对应损失为:
\[ \mathcal{L}_{\mathrm{RM}}= -\log\sigma(d_\phi) \]
奖励模型学到的是标注数据中的相对偏好近似。它不是事实核查器,也不是人类价值的完整数学表达。若训练比较集中在短回答,它可能不善于评价长报告;若标注者偏爱自信语气,它可能把自信误当正确。
技术深潜:奖励、策略与 KL 约束
把语言模型视为策略 \(\pi_\theta\):状态是提示和已生成前缀,动作是下一个 Token,完整回答结束后得到奖励模型分数。
若只最大化奖励,策略会寻找奖励模型漏洞,产生训练分布外的奇怪文本。RLHF 通常用参考模型 \(\pi_{\mathrm{ref}}\) 约束新策略不要偏离 SFT 模型太远。简化目标为:
\[ J(\theta)= \mathbb{E}_{y\sim\pi_\theta(\cdot\mid x)} \left[r_\phi(x,y)\right] -\beta\, D_{\mathrm{KL}}\left( \pi_\theta(\cdot\mid x) \|\pi_{\mathrm{ref}}(\cdot\mid x) \right) \]
训练最大化 \(J(\theta)\)。\(\beta\) 控制“追求更高奖励”和“保留原模型语言分布”之间的权衡。实际系统可用 PPO 等策略优化方法,根据模型采样回答、奖励和价值估计多轮更新。
完整数据流是:
提示 -> 当前策略生成回答 -> 奖励模型打分
| |
+---- PPO 更新 <-----+
同时受参考模型 KL 约束
InstructGPT 使用示范微调、偏好排序、奖励模型与强化学习构成有影响力的指令跟随流程。(Ouyang 等 2022年) 关键不是“强化学习让模型拥有语言”,而是预训练已提供语言能力,强化学习进一步移动回答分布。
奖励投机:指标不等于目标
只要奖励模型不完美,策略就可能找到高分但不符合真实意图的输出,这叫作奖励投机(reward hacking)。
例如,奖励模型若偏爱详细回答,策略可能不断增加无用段落;若偏爱肯定语气,模型可能在证据不足时仍显得确定;若拒绝样本比例不当,最稳妥的高分策略可能是大量拒绝。
这与第 12 章的奖励错配是同一个问题:优化器忠实追逐可计算信号,而可计算信号只是目标的代理。
常见缓解方法包括:
- 更新并扩大偏好数据覆盖;
- 保留独立评测集和对抗测试;
- 约束策略不要过度偏离参考模型;
- 用事实核查、工具结果和规则补充单一奖励;
- 对高风险任务保留人工确认。
没有一种方法能把模糊、多方冲突的人类价值压成永远正确的单一分数。
ChatGPT 转折在哪里
2022 年 11 月 30 日,ChatGPT 以研究预览形式发布。官方说明其使用与 InstructGPT 同类的 RLHF 方法,并针对对话收集数据。(OpenAI 2022年)
技术部件并非在这一天突然出现。转折来自组合与交互方式:强大的预训练模型、对话式指令微调、人类偏好训练和低门槛聊天界面共同把语言模型能力带给大量普通用户。
对话界面也暴露了新问题。用户会追问、纠错、要求引用、诱导越权,也会把流畅回答误当可靠答案。产品体验越像交流对象,拟人化和过度信任风险越高。
DPO:直接提高偏好回答的相对概率
经典 RLHF 需要训练奖励模型,再运行在线采样和策略优化,工程复杂且可能不稳定。直接偏好优化(Direct Preference Optimization, DPO)从同样的偏好对出发,直接调整语言模型。
DPO 的直觉是:相对于参考模型,增加更优回答 \(y_w\) 的对数概率,降低较差回答 \(y_l\) 的相对概率。它不需要在训练循环中显式拟合一个可单独调用的奖励模型,也不需要用 PPO 在线优化。
Rafailov 等人从带 KL 约束的奖励最大化目标推导出这一形式。(Rafailov 等 2023年) “直接”描述的是优化路径更短,不表示不需要人类偏好、参考模型或统计假设。
技术深潜:策略相对参考模型的偏好差
先把当前策略和参考策略的回答对数概率分别记为:
\[ \ell_\theta(x,y)=\log\pi_\theta(y\mid x) \]
\[ \ell_{\mathrm{ref}}(x,y)= \log\pi_{\mathrm{ref}}(y\mid x) \]
回答 \(y\) 相对于参考策略的变化为:
\[ \Delta_\theta(x,y)= \ell_\theta(x,y)-\ell_{\mathrm{ref}}(x,y) \]
对偏好对 \((y_w,y_l)\),再定义偏好差:
\[ g_\theta= \Delta_\theta(x,y_w)-\Delta_\theta(x,y_l) \]
DPO 损失可写成:
\[ \mathcal{L}_{\mathrm{DPO}}= -\log\sigma(\beta g_\theta) \]
若当前策略相对参考模型更大幅提高了 \(y_w\) 的概率,\(g_\theta\) 变大,损失下降。这里比较的不是两个回答的原始概率,而是它们相对参考模型发生的变化。
\(\beta\) 决定偏好强度与偏离参考策略的关系。数据若含噪声或偏好不一致,DPO 同样会学习这些缺陷;离线数据覆盖不到的回答区域,也无法通过公式自动得到可靠反馈。
| 流程 | 显式奖励模型 | 在线策略采样 | 主要依赖 |
|---|---|---|---|
| SFT | 否 | 否 | 高质量示范 |
| PPO 式 RLHF | 是 | 是 | 偏好、奖励模型与稳定优化 |
| DPO | 否 | 否 | 成对偏好与参考策略 |
三者不是简单的代际淘汰关系。数据条件、计算预算、是否需要在线探索和控制目标都会影响选择。
“更符合偏好”不等于“知道更多”
偏好优化主要改变模型怎样表达和选择已有能力。它可能让回答更直接、更少毒性、更愿意承认不确定,但不会自动把训练后发生的事实写进参数。
如果基础模型不知道某项专业知识,RLHF 不能凭空创造可靠答案。相反,偏好数据若奖励流畅完整,模型可能把不确定内容说得更像答案。
知识更新更适合继续训练、领域微调、检索或工具调用。行为约束更适合指令与偏好训练。真实助手通常需要两类机制共同工作。
帮助、诚实与安全可能冲突
一个助手同时追求:
- 帮助性:理解意图,给出可执行答案;
- 诚实性:不编造证据,正确表达不确定;
- 安全性:避免造成不合理伤害或越权行动。
三者并不总一致。提供危险操作细节可能“有帮助”却不安全;拒绝所有医疗问题可能降低风险,却让一般健康教育也无法进行;明确说“不知道”更诚实,但用户可能偏爱确定答案。
安全训练还会产生过度拒绝:模型因关键词相似而拒绝合法研究、新闻讨论或求助。评价拒绝行为不能只统计拒绝率,而要同时看真正危险请求的漏拒和正常请求的误拒。
不同文化、法律和应用场景对边界的要求也不同。对齐不是找到一套全世界唯一偏好,而是明确目标、相关方、权限与责任,并持续处理冲突。
系统提示和护栏不是参数训练的替代品
部署中的助手还会加入系统提示、内容分类器、工具权限、速率限制、日志和人工审核。这些组件与模型训练处在不同层级。
系统提示能说明角色和规则,但仍是模型上下文的一部分,可能被其他文本干扰。外部分类器可以拦截部分内容,却会有误报漏报。工具权限可以阻止模型直接执行高风险操作,比只要求模型“自觉”更可靠。
因此,安全系统应使用分层控制:模型层减少有害倾向,应用层限制输入输出,工具层执行最小权限,高风险动作要求人类确认。后续智能体章节会进一步讨论这一点。
它仍会在哪些地方失败
经过对齐的助手仍可能:
- 为未知问题生成流畅但错误的答案;
- 过度迎合用户前提,即使前提错误;
- 在长对话中忘记早期约束;
- 对提示措辞和语言变化表现不一致;
- 暴露训练数据中的偏见和隐私片段;
- 被复杂提示诱导绕过行为边界;
- 在工具调用中把语言错误变成真实操作错误。
偏好评测也可能饱和:模型越来越擅长写出评审喜欢的表面风格,而真实任务可靠性没有同步提高。必须加入事实、校准、分布外、长程任务和真实用户研究。
学习路径:小规模指令与偏好对照
实践继续后置。可在小型开源语言模型上设计一个不追求通用能力的对照:
- 准备少量格式明确的指令示范,先评估基础模型;
- 使用参数高效方法做 SFT,比较指令遵循率与原有生成能力;
- 为同一提示构造偏好回答对,检查标注一致性;
- 训练或直接优化一个离线偏好目标;
- 分别评估帮助性、事实性、拒绝正确率和过度拒绝;
- 保留未见任务,避免只测训练模板。
这个实验最重要的结果不是聊天是否“像真人”,而是每个训练阶段具体改变了哪些可测行为,并记录了哪些副作用。
本章小结
- 基础语言模型优化续写概率,不天然以帮助用户、诚实或安全为目标。
- SFT 用高质量示范教会指令格式和回答行为,但受示范覆盖与质量限制。
- 偏好数据比较多个候选;奖励模型把这种相对选择拟合成可计算分数。
- PPO 式 RLHF 用奖励更新语言模型,并以参考模型的 KL 约束限制分布漂移。
- 奖励只是人类目标的代理,策略可能学会奖励投机、冗长、自信或过度拒绝。
- DPO 直接比较策略相对参考模型对优劣回答的概率变化,简化训练流程,但仍依赖偏好数据与假设。
- 对齐主要改变行为分布,不自动更新事实知识,也不能替代检索、工具权限和系统级安全控制。
思考问题
- 为什么一个会流畅续写的基础模型不一定会直接回答用户问题?
- 奖励模型给出高分为什么不等于回答客观正确?
- KL 约束在 RLHF 中防止了什么,又可能限制什么?
- DPO 不显式训练奖励模型,为什么仍然不能摆脱偏好数据的偏差?
延伸阅读
- 从人类偏好训练强化学习和摘要模型的工作提供了现代 RLHF 的直接技术背景。(Christiano 等 2017年; Stiennon 等 2020年)
- FLAN 论文适合理解多任务指令微调怎样提高零样本任务遵循。(Wei 等 2022年)
- InstructGPT 论文完整记录了示范、偏好、奖励模型和强化学习流水线。(Ouyang 等 2022年)
- ChatGPT 官方发布说明记录了对话式研究预览的时间点与方法概述。(OpenAI 2022年)
- DPO 论文适合结合本章公式理解如何从带 KL 约束的偏好目标得到直接优化形式。(Rafailov 等 2023年)
