AGI围城
首页
基础知识
工程实践
所见所思
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

AGI围城

是的,这个世界还是很有趣的。
首页
基础知识
工程实践
所见所思
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 提示词工程

  • 大模型API调用

  • OpenAI工具

  • 嵌入向量

  • 检索增强生成(RAG)

  • LlamaIndex

  • LangChain

  • Agent

  • Workflow

  • Transformer

  • 微调

    • 1.微调概述
    • 2.数据准备
    • 3.全量微调
    • 4.LoRA微调
    • 5.指令微调与对齐
      • 5.1 指令微调(Instruction Tuning)
        • 5.1.1 什么是指令微调
        • 5.1.2 指令数据格式
        • 5.1.3 指令数据的多样性
        • 5.1.4 SFT 的训练目标
      • 5.2 人类反馈强化学习(RLHF)
        • 5.2.1 为什么需要 RLHF
        • 5.2.2 RLHF 的三个阶段
        • 5.2.3 RLHF 的挑战
      • 5.3 直接偏好优化(DPO)
        • 5.3.1 DPO 的动机
        • 5.3.2 DPO 原理
        • 5.3.3 DPO 数据格式
        • 5.3.4 DPO vs RLHF
      • 5.4 其他对齐方法
        • 5.4.1 ORPO
        • 5.4.2 SimPO
        • 5.4.3 KTO
      • 5.5 对齐的评估
        • 5.5.1 评估维度
        • 5.5.2 常用基准
      • 5.6 最佳实践
        • 5.6.1 训练流程
        • 5.6.2 数据质量要点
        • 5.6.3 常见问题
    • 6.微调实战
  • MCP

  • A2A

  • 基础知识
  • 微调
xiao_sl
2025-04-19
目录

5.指令微调与对齐

指令微调和对齐是让大语言模型从"续写文本"转变为"遵循指令"的关键技术。本章介绍如何让模型学会理解和执行人类指令,并输出符合人类偏好的回答。

# 5.1 指令微调(Instruction Tuning)

# 5.1.1 什么是指令微调

预训练模型的目标是预测下一个词,它擅长续写文本,但不擅长回答问题:

用户输入:中国的首都是哪里?
预训练模型:中国的首都是哪里?这是一个常见的地理问题...(继续续写)
指令微调后:北京是中国的首都。
1
2
3

指令微调通过在指令-响应格式的数据上训练,让模型学会:

  • 理解用户意图
  • 按照指令执行任务
  • 生成有用的回答

# 5.1.2 指令数据格式

基础格式

{
  "instruction": "将以下句子翻译成英文",
  "input": "今天天气很好",
  "output": "The weather is nice today."
}
1
2
3
4
5

对话格式

{
  "messages": [
    {"role": "system", "content": "你是一个有帮助的助手。"},
    {"role": "user", "content": "什么是机器学习?"},
    {"role": "assistant", "content": "机器学习是人工智能的一个分支..."}
  ]
}
1
2
3
4
5
6
7

# 5.1.3 指令数据的多样性

高质量的指令数据应该覆盖多种任务类型:

任务类型 示例
问答 回答关于事实、概念的问题
生成 写文章、故事、代码
改写 翻译、摘要、风格转换
分析 情感分析、分类、提取信息
推理 数学计算、逻辑推理
对话 多轮交互、角色扮演

# 5.1.4 SFT 的训练目标

监督微调(Supervised Fine-Tuning, SFT)的目标是最大化正确输出的概率:

L_SFT = -∑ log P(y_i | x, y_<i)
1

通常只对输出部分计算损失,忽略指令部分,让模型只学习"如何回答"。

# 5.2 人类反馈强化学习(RLHF)

# 5.2.1 为什么需要 RLHF

SFT 让模型学会遵循指令,但可能存在问题:

  • 输出不够有帮助
  • 包含有害或偏见内容
  • 风格不符合预期

RLHF 通过人类反馈进一步优化模型,使其输出更符合人类偏好。

# 5.2.2 RLHF 的三个阶段

阶段一:监督微调(SFT)

在指令数据上进行监督微调,得到初始策略模型。

阶段二:训练奖励模型(RM)

  1. 收集人类偏好数据:对同一问题的多个回答进行排序
  2. 训练奖励模型:学习预测人类偏好
人类标注:回答A > 回答B > 回答C
奖励模型学习:score(A) > score(B) > score(C)
1
2

阶段三:强化学习优化(PPO)

使用 PPO 算法,根据奖励模型的反馈优化策略模型:

目标:最大化奖励,同时不偏离 SFT 模型太远

L = E[R(x, y)] - β · KL(π || π_SFT)
1
2
3

# 5.2.3 RLHF 的挑战

挑战 描述
标注成本高 需要大量人类标注偏好数据
训练不稳定 强化学习训练容易不稳定
奖励黑客 模型可能找到欺骗奖励模型的方式
实现复杂 需要同时维护多个模型

# 5.3 直接偏好优化(DPO)

# 5.3.1 DPO 的动机

DPO(Direct Preference Optimization)简化了 RLHF 流程,无需训练奖励模型和使用强化学习。

RLHF:SFT → 训练 RM → PPO 优化
DPO: SFT → 直接优化
1
2

# 5.3.2 DPO 原理

DPO 将奖励函数重参数化,直接用策略模型表示,将偏好优化转化为一个简单的分类问题:

L_DPO = -E[log σ(β · log(π(y_w|x)/π_ref(y_w|x)) - β · log(π(y_l|x)/π_ref(y_l|x)))]
1

其中:

  • y_w:偏好的回答(chosen)
  • y_l:不偏好的回答(rejected)
  • π_ref:参考模型(通常是 SFT 模型)

# 5.3.3 DPO 数据格式

DPO 需要成对的偏好数据:

{
  "prompt": "如何学习编程?",
  "chosen": "学习编程可以从以下几个步骤开始:1. 选择一门语言...",
  "rejected": "编程很难学,你可能学不会。"
}
1
2
3
4
5

# 5.3.4 DPO vs RLHF

特性 RLHF DPO
训练流程 复杂(需要 RM + PPO) 简单(直接优化)
稳定性 较差 较好
计算成本 高 低
实现难度 高 低

# 5.4 其他对齐方法

# 5.4.1 ORPO

ORPO(Odds Ratio Preference Optimization)将 SFT 和偏好优化合并为一个阶段,无需单独的 SFT 步骤。

# 5.4.2 SimPO

SimPO(Simple Preference Optimization)进一步简化 DPO,不需要参考模型。

# 5.4.3 KTO

KTO(Kahneman-Tversky Optimization)基于前景理论,只需要二元反馈(好/坏),不需要成对比较:

{"prompt": "...", "completion": "...", "label": true}   // 好的回答
{"prompt": "...", "completion": "...", "label": false}  // 坏的回答
1
2

# 5.5 对齐的评估

# 5.5.1 评估维度

维度 说明
有帮助性 回答是否解决了用户问题
真实性 信息是否准确
无害性 是否包含有害内容
流畅性 语言是否自然流畅

# 5.5.2 常用基准

  • MT-Bench:多轮对话能力评估
  • AlpacaEval:指令遵循能力评估
  • TruthfulQA:真实性评估

# 5.6 最佳实践

# 5.6.1 训练流程

预训练模型 → SFT(指令微调) → 偏好对齐(DPO/RLHF) → 评估与迭代
1

# 5.6.2 数据质量要点

SFT 数据:

  • 指令清晰、多样
  • 回答准确、完整
  • 覆盖目标任务场景

偏好数据:

  • chosen 和 rejected 差异明显
  • 标注一致性高
  • 覆盖常见的偏好维度

# 5.6.3 常见问题

问题 可能原因 解决方案
模型不遵循指令 SFT 数据不足 增加高质量指令数据
回答过于冗长 训练数据偏长 加入简洁回答的样本
输出有害内容 缺少安全对齐 加入安全相关的偏好数据
编辑 (opens new window)
#微调#指令微调#RLHF#DPO
上次更新: 2025/12/19, 15:17:48
4.LoRA微调
6.微调实战

← 4.LoRA微调 6.微调实战→

最近更新
01
我是如何发现临时邮箱的?一个真实的故事
06-12
02
4.核心实现
05-26
03
3.A2A开发实践
05-22
更多文章>
Theme by Vdoing | Copyright © 2019-2025 AGI围城 | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式