【NLP】36. 从指令微调到人类偏好:构建更有用的大语言模型

发布于:2025-05-20 ⋅ 阅读:(32) ⋅ 点赞:(0)

从指令微调到人类偏好:构建更有用的大语言模型

大语言模型(LLMs)已经成为现代自然语言处理系统的核心,但单纯依赖传统语言建模目标,往往难以满足实际应用的“人类意图”。从 Instruction Tuning(指令微调)出发,到 Preference Optimization(偏好优化)和 Prompt 工程,本博客将系统梳理这些技术的背景、方法与挑战,帮助你构建更实用、更安全的语言模型。


一、语言建模目标的局限

预训练语言模型通常优化“下一个词预测”目标,但这个目标并不等同于执行实际任务。

  • 输入:“请总结以下文本。”
  • 输出:“这本书是……” —— 并没有完成任务,仅仅模仿语气

这说明:语言建模学的是“如何说话”,而不是“如何完成任务”


二、通用微调的瓶颈

在实际应用中,研究者尝试通过领域微调(Fine-tuning)让模型学会完成任务。但这种方式存在多个问题:

  • 模型学到形式模仿,而非执行逻辑
  • 标签和任务之间缺乏清晰边界
  • 输出“看起来像”答案,但并不实用

这催生了更结构化的训练方式:指令微调(Instruction Tuning)


三、什么是 Instruction Tuning?

Instruction Tuning 是一种使用"输入-任务描述 + 输出-示例结果"对进行训练的方法。目标是让模型:

  • 理解人类自然语言中的指令
  • 输出贴合任务目标的内容

示例:

  • 输入:请判断情感倾向:“演技一般但画面精美。”
  • 输出:正面

相比传统分类器,这种方式更贴近真实对话与任务场景。


四、代表模型:FLAN-T5

由 Google 提出的 FLAN-T5(Chung et al., 2022)是 Instruction Tuning 的代表性成果。

其优势包括:

  • 覆盖多种任务类型(问答、摘要、翻译等)
  • 多语言训练,增强泛化能力
  • Zero-shot 与 Few-shot 表现优异

五、数据是关键:任务对的构建

Instruction Tuning 成败的核心在于数据:

优质任务对胜过庞杂数据量。常用数据来源包括:

  • InstructGPT 人工标注任务
  • FLAN 公开任务集合
  • Super-Natural Instructions 跨领域任务集

此外,还有一种趋势是使用大模型自己生成任务数据,如 Stanford Alpaca 项目。


六、合成任务数据的潜力与风险

通过大模型生成指令-回应对,可以快速扩充训练集:

  • 人工构造任务:“设计20个多样任务”
  • GPT 生成回答
  • 用于微调较小模型

这类方法低成本、高效率,但存在风险:

  • 输出质量不一致
  • 存在语义重复或模糊任务

七、训练任务量:真的越多越好吗?

Zhou 等人提出 LIMA(Less is More for Alignment)方法,发现:

几百条高质量任务对,足以训练出优秀模型。

相比海量低质量任务,更小但更精的指令数据可获得更强泛化能力。

困惑度Perplexity不能完全代表生成质量Quality,后者更早饱和,说明过度训练未必带来更好输出。

此外,该研究还通过多组实验可视化展示:

  • 筛选后的 Stack Exchange 数据质量远高于 wikiHow 与原始数据;
  • 增加训练样本数量(从 2K 到 32K)对生成质量影响极小;
  • 即使 PPL(困惑度)持续下降,生成质量在一定步数后饱和甚至下降。

八、面对模糊任务:唯一答案不再适用

现实任务中,很多任务没有唯一答案:

  • “写封感谢信”
  • “概括一段评论”

这意味着评估方式不能再依赖 token-level 准确率,而应:

  • 使用语义匹配指标(如 BERTScore)
  • 多参考答案评估(multi-reference)
  • 或采用人类偏好打分机制

九、从偏好学习人类意图:RLHF 登场

当任务无法标准化时,我们转向人类偏好:

“哪个回答更好?”

这就是 RLHF(Reinforcement Learning from Human Feedback)的核心:

  1. 指令微调
  2. 构建奖励模型(Reward Model)
  3. 用强化学习优化模型输出

目标不是“给出标准答案”,而是:让模型学会更被人类喜欢的回答方式


十、奖励模型训练流程

人类评审比较模型输出 A 与 B,判断谁更好:

  • 训练一个小型 LLM 学习这种偏好
  • 成为“奖励模型”
  • 用作 RL 优化的评分参考

这种方式已经广泛用于 ChatGPT、Claude 等系统中。


RLHF 三阶段训练流程

第一阶段:Instruction Tuning(指令微调)

🌟 目标:让模型初步学会“听懂指令”和“执行任务”

  1. 抽取 prompt,例如:Explain the moon landing to a 6 year old
  2. 人工示范回答:Some people went to the moon…
  3. 用监督学习微调模型(SFT)

第二阶段:Reward Model 构建(奖励模型)

🌟 目标:学会判断“哪个输出更好”

  1. 给定指令生成多个回答(A, B, C, D)
  2. 人类排序偏好,例如 D > C > A = B
  3. 训练小型 LLM 学习排序分值(Reward Predictor)

第三阶段:使用奖励模型进行强化学习(PPO)

🌟 目标:强化高偏好输出,抑制差回答

  1. 模型生成新回答
  2. 奖励模型打分
  3. 使用 PPO 更新模型策略

📝 注:RLHF 中的 PPO 与传统强化学习不同,不涉及环境交互,而是单步奖励优化。


数据从哪里来?——OpenAI 的三类数据采集方式

1. Plain(自由构造)

标注者自主编写任务与回答,强调任务多样性。

2. Few-shot 模式

标注者为每条任务设计多个示例输入-输出对。

3. User-based(用户用例驱动)

提取 API 用户真实需求,请标注者设计对应 prompt。


十一、Direct Preference Optimization(DPO)

DPO 是一种更简单的偏好优化方式:

  • 无需训练奖励模型
  • 直接通过“好 vs 差”的样本对优化模型
  • 适合高效迭代

其核心思想是最大化:优质响应被采样的概率 > 劣质响应被采样的概率

具体形式如下:

  • 输入:一组包含正负偏好样本的对比样本((x, y+), (x, y-))
  • 损失函数优化目标为对比概率比 log σ(f(y+) - f(y−)),提升正例被选概率。

该方法在多个任务中展现出与 RLHF 相当甚至更优的性能,同时大大简化了训练流程。


十二、对齐是否可靠?模型仍可能脆弱

Lee 等人(2024)发现,RLHF 虽提升了人类偏好得分,但对齐结果具有脆弱性:

  • 对输入微小变动敏感
  • 面对未见指令时表现不稳
  • 模型容易被攻击性 prompt 引导走偏

这意味着,RLHF 更多是在表面行为上控制模型,而非改变其内在知识结构与推理方式。


十三、有毒表示潜藏在模型内部

尽管 RLHF 能使输出更安全,但并不代表模型内部已移除这些内容:

  • 模型隐藏层仍保留“毒性向量”——与敏感内容(如攻击性语言、偏见)相关的方向
  • 在特定上下文或攻击性 prompt 下仍可能被激活

研究者尝试通过“表示空间干预”抑制这类方向,但如何彻底净化仍属开放问题。


十四、Prompt 优化:模型质量的决定性变量

优化 Prompt 是提升输出质量的重要手段:

  1. 向量化 Prompt(Prefix Tuning):训练前缀向量,无需微调主模型参数
  2. 使用 RL 搜索 Prompt:在大空间中通过奖励信号搜索最优指令形式
  3. 系统级 Prompt 编排:通过 LangChain 等框架构建多步任务流程

十五、LangChain 与 Prompt 系统化

LangChain 让模型以链式方式完成复杂任务,例如:

  • 步骤1:获取产品信息
  • 步骤2:命名公司
  • 步骤3:撰写口号

LangChain 还支持与检索模块、工具 API 等连接,构建 agent 系统。


十六、ChainForge:Prompt 批量实验工具

ChainForge 支持:

  • 快速测试 Prompt 变体
  • 自动记录输出结果
  • 分析一致性与偏好性

研究者可通过该平台系统比较不同 prompt 的有效性与稳定性,提升 Prompt 工程科学性。


十七、总结:微调之外,我们学到了什么?

✅ Instruction Tuning:强化任务意识
✅ RLHF:融入人类偏好
✅ DPO:简化偏好优化流程
✅ Prompt 工程:提升交互体验与系统控制力

⚠️ 持续挑战:对齐脆弱性、毒性表示残留、Prompt 敏感性与泛化能力不足

🎯 未来方向:

  • 更稳健的价值对齐方法
  • 多模态偏好优化(图文、语音)
  • 自动化 Prompt 构建与验证体系
  • 更高层次的自主推理与意图理解

网站公告

今日签到

点亮在社区的每一天
去签到