M6 · AI 模型如何通过训练获得能力? - Pre-training & Post-training
所属知识库:Agent 全栈技术地图
所属领域:01 · AI
所属章节:02 · AI 模型是如何构建和工作的? - Model Architecture
文档类型:模型训练机制与技术体系研究
版本:v1.0
更新日期:2026 年 10 月 27 日
核心问题:AI 模型为什么需要训练?训练数据、损失函数和优化算法如何共同改变模型参数?预训练与后训练有什么区别?监督微调、LoRA、DPO 和强化学习分别解决什么问题?模型如何形成知识、指令遵循和推理能力?如何设计完整的模型训练流程并判断训练是否有效?
专题导读
M1—M5 已经建立了模型架构的知识基础。M6 将进一步研究:一个最初只有随机参数的神经网络,如何通过数据和训练目标逐渐获得语言理解、知识运用、指令遵循、推理和工具调用等能力?
本篇重点区分预训练、持续预训练、监督微调、参数高效微调、偏好优化和强化学习,解释各阶段的技术机制、目标与相互关系。同时介绍数据工程、训练计算、模型检查点、能力评估和训练风险。
一、研究概述
在前面的研究中,我们已经了解了 AI 模型的基本结构。
M1 解释了模型架构、参数和计算之间的关系;M2 研究了神经网络如何通过前向传播、反向传播和参数更新学习数据规律;M3 解释了 Transformer 的计算结构;M4 和 M5 则分别研究了大语言模型和多模态模型。
这些研究主要回答了一个问题:
模型具有什么样的计算结构?
M6 将进一步回答:
模型如何通过训练,使这些计算结构获得实际能力?
以大语言模型为例,一个刚刚完成架构初始化的 Transformer,即使拥有数十亿个参数,也不意味着它已经能够理解语言、回答问题或编写代码。
模型需要通过训练数据和优化算法不断调整参数,使其计算结果逐渐符合特定训练目标。
但模型训练并不是一个单一过程。
现代基础模型的训练通常包含多个阶段。例如:
- 通过预训练学习大规模数据中的统计规律。
- 通过持续预训练增强特定领域或数据分布上的能力。
- 通过监督微调学习任务格式和指令遵循行为。
- 通过偏好优化调整模型输出的质量与行为倾向。
- 通过强化学习等方法优化具有可评价结果的任务表现。
- 通过持续评估和迭代改善模型能力与可靠性。
这些阶段的目标不同,使用的数据不同,优化方法也可能不同。
因此,需要从完整的模型训练体系出发,理解模型能力的形成过程。
1.1 本篇的研究范围
本篇重点研究五个方面。
第一,训练的基本机制。 训练数据、模型预测、损失函数、梯度和优化器如何共同作用。
第二,训练阶段。 预训练、持续预训练、监督微调、偏好优化和强化学习之间的关系。
第三,训练方法。 全参数微调、参数高效微调、LoRA、DPO、PPO、GRPO 等方法的基本原理与适用场景。
第四,能力形成。 模型如何通过不同训练目标表现出知识运用、指令遵循、复杂推理和工具调用等能力。
第五,训练工程。 数据准备、训练计算、检查点、验证、评估和风险控制。
1.2 本篇与其他研究的边界
本篇不重复展开 M2 中的神经网络基础数学推导,而是将其应用到现代基础模型训练。
同时,本篇重点研究训练过程,不深入讨论模型上线后的推理服务、解码策略和推理加速。这些内容将在 M7 中研究。
二、什么是模型训练?
2.1 模型训练的定义
模型训练(Model Training)是指利用数据、训练目标和优化算法,调整模型参数,使模型在特定任务或数据分布上的表现得到改善的过程。
对于一个参数化模型:
其中:
:模型输入; :模型输出; :模型定义的计算过程; :模型参数。
训练的核心任务是寻找一组适当的参数:
使模型在训练目标下具有较好的表现。
可以表示为:
其中:
是用于衡量模型预测与训练目标之间差异的损失函数。
需要注意,实际训练通常只能通过迭代优化获得一个较好的参数解,并不能保证找到全局最优解。
2.2 模型为什么需要训练?
神经网络架构定义了模型能够执行哪些计算。
但架构本身并不包含训练后获得的具体能力。
例如,一个尚未训练的语言模型可能已经具备:
- Embedding 层;
- Attention;
- FFN;
- 输出层;
- 大量可学习参数。
但这些参数通常尚未形成有效的语言表示。
训练通过不断调整参数,使模型能够利用数据中的统计规律完成任务。
2.3 训练与编程有什么区别?
传统程序通常由开发者明确编写规则。
例如:
if temperature > 30:
result = "炎热"
else:
result = "不炎热"程序的判断逻辑由开发者直接指定。
机器学习模型则通过数据学习参数。
例如,开发者提供大量输入与目标输出,模型通过训练学习相应的映射关系。
因此,训练并不是让模型自动生成一套显式程序规则,而是通过优化参数形成某种计算行为。
2.4 训练与推理有什么区别?
| 维度 | Training | Inference |
|---|---|---|
| 核心目标 | 调整模型参数 | 利用模型生成结果 |
| 参数状态 | 通常持续更新 | 通常保持固定 |
| 是否计算损失 | 通常需要 | 通常不需要 |
| 是否反向传播 | 通常需要 | 常规推理不需要 |
| 计算特点 | 前向计算与梯度计算 | 主要执行前向计算 |
| 典型场景 | 预训练、微调 | 对话、分类、生成 |
训练与推理使用的模型架构可以相同,但运行目的和计算流程不同。
三、模型训练的基本计算过程是什么?
现代神经网络训练通常可以概括为:
数据输入 → 前向传播 → 计算损失 → 反向传播 → 参数更新。
3.1 前向传播
模型接收输入数据并生成预测结果。
例如,在语言模型训练中,输入可能是一段 Token 序列。
模型需要预测序列中的目标 Token。
3.2 计算损失
损失函数衡量模型预测与训练目标之间的差异。
例如:
其中:
:模型预测; :目标结果; :损失函数。
不同训练任务使用不同的损失函数。
例如:
- 分类任务:交叉熵;
- 回归任务:均方误差;
- 语言建模:Token 级负对数似然;
- 对比学习:对比损失;
- 偏好优化:偏好目标函数。
3.3 反向传播
反向传播(Backpropagation)利用链式法则计算损失相对于模型参数的梯度。
梯度反映参数发生变化时,损失函数在局部如何变化。
3.4 参数更新
优化器根据梯度更新模型参数。
以最简单的梯度下降为例:
其中:
:学习率; :训练步骤。
现代模型训练通常使用 Adam、AdamW 等优化器,而不是简单的梯度下降。
3.5 训练循环
训练数据
│
▼
数据采样与 Batch 构建
│
▼
模型前向传播
│
▼
计算 Loss
│
▼
反向传播
│
▼
优化器更新参数
│
▼
进入下一批数据
│
└──────────────► 重复这一循环可能执行大量训练步骤。
3.6 一个简化示例
假设语言模型看到:
人工智能正在改变我们的
训练数据中的下一个 Token 是“生活”。
模型会计算所有候选 Token 的分数,并根据目标 Token 计算损失。
如果模型给“生活”的概率较低,损失通常较高。
优化器通过梯度更新参数,使模型在类似上下文中提高目标 Token 的预测概率。
随着大量训练样本不断参与优化,模型逐渐学习语言中的各种统计关系。
但模型并不是直接将每个训练句子保存为可检索记录。
训练可能同时产生模式学习、抽象表示以及部分训练内容记忆。具体程度取决于数据、架构和训练过程。
四、训练数据如何决定模型能够学习什么?
训练数据是模型能力形成的重要基础。
但数据规模并不是唯一决定因素。
4.1 训练数据的主要类型
不同模型可能使用不同类型的数据。
| 数据类型 | 示例 | 主要用途 |
|---|---|---|
| 无标注文本 | 文章、书籍、代码 | 语言预训练 |
| 标注数据 | 输入与正确类别 | 监督学习 |
| 指令数据 | 指令与示范回答 | 指令微调 |
| 偏好数据 | 同一问题的优劣回答 | 偏好优化 |
| 可验证任务数据 | 数学题、程序测试 | 结果驱动训练 |
| 图文配对数据 | 图片与描述 | 多模态对齐 |
| 音文配对数据 | 音频与转写 | 语音任务 |
| 交互轨迹 | 状态、动作与结果 | Agent 或策略训练 |
4.2 数据质量
训练数据可能存在:
- 错误信息;
- 重复内容;
- 格式异常;
- 噪声;
- 标注错误;
- 数据污染;
- 隐私与版权问题。
这些问题可能影响模型最终表现。
4.3 数据分布
训练数据的分布决定模型主要接触哪些任务和信息。
例如,一个以英文数据为主的模型,可能在某些中文任务上表现较弱。
一个包含大量代码数据的模型,可能在程序生成任务中形成更强能力。
但数据比例与能力之间并不存在简单的一一对应关系。
4.4 数据清洗与去重
训练数据准备通常包括:
- 格式标准化;
- 文本质量过滤;
- 重复数据检测;
- 语言识别;
- 异常样本处理;
- 敏感信息处理;
- 数据来源与授权检查。
4.5 数据混合
大型模型通常使用多种来源的数据。
例如:
通用文本
│
代码数据
│
数学数据
│
科学资料
│
多语言数据
│
▼
数据混合策略
│
▼
训练数据流数据混合策略会影响模型在不同能力之间的表现。
4.6 训练集、验证集与测试集
训练数据通常需要划分为不同用途。
训练集(Training Set) 用于参数优化。
验证集(Validation Set) 用于观察训练过程、选择配置和检查泛化表现。
测试集(Test Set) 用于在相对独立的数据上评估模型。
如果测试数据进入训练过程,就可能造成数据泄漏或评估污染。
五、什么是预训练?
5.1 预训练的定义
预训练(Pre-training)是指模型在大规模数据上进行训练,以获得可迁移到多种任务的基础表示和能力。
现代基础模型通常通过预训练形成主要的通用能力。
例如,大语言模型可以通过大规模文本和代码数据学习语言建模。
5.2 为什么需要预训练?
如果每个任务都从随机参数开始训练,就需要为每个任务准备大量数据和计算资源。
预训练可以先获得较为通用的表示。
之后,模型可以通过提示、微调或其他方法适应不同任务。
5.3 预训练不等于自监督学习
预训练经常使用自监督学习,但两者不是同一个概念。
预训练描述的是模型训练阶段和用途。
自监督学习描述的是训练目标的构建方式。
例如,语言模型可以从文本自身构造预测目标,而不需要人工逐条标注答案。
5.4 自监督学习
自监督学习(Self-supervised Learning)利用数据自身的结构构造训练信号。
例如:
- 根据前文预测下一个 Token;
- 根据上下文预测被遮盖的 Token;
- 根据图像部分区域恢复其他区域;
- 利用不同数据视图学习一致表示。
5.5 预训练的主要目标
不同模型可能使用不同目标。
| 模型类型 | 典型目标 |
|---|---|
| 自回归语言模型 | Next-token Prediction |
| 掩码语言模型 | Masked Language Modeling |
| Encoder–Decoder 模型 | 去噪或序列重建 |
| 视觉模型 | 图像分类、掩码图像建模等 |
| 图文模型 | 对比学习、图文匹配 |
| 扩散模型 | 去噪或相关生成目标 |
预训练不是某一种特定损失函数的名称。
六、大语言模型如何通过预训练获得基础能力?
6.1 自回归语言建模
典型 Decoder-only LLM 采用自回归语言建模。
给定序列:
模型学习:
整体目标通常可以写为:
6.2 模型在学习什么?
模型为了降低预测误差,需要学习有助于预测的数据规律。
例如:
- 语言结构;
- 词语与概念关系;
- 文本组织方式;
- 常见事实关联;
- 代码语法与模式;
- 数学表达形式;
- 问题与答案之间的关系。
模型通过参数形成这些规律的内部表示。
6.3 为什么预训练模型能够完成多种任务?
如果训练数据中包含丰富的任务形式,模型就可能学习到相关的模式。
例如:
问题:什么是机器学习?
回答:机器学习是……模型可能在训练过程中接触类似结构。
因此,即使训练目标是下一 Token 预测,模型也可能学会根据上下文继续生成符合任务形式的内容。
6.4 In-context Learning
In-context Learning(上下文学习)是指模型在不更新参数的情况下,根据输入上下文中的说明或示例调整当前任务表现。
例如:
输入:
苹果 → 水果
胡萝卜 → 蔬菜
香蕉 →
输出:
水果模型根据上下文中的模式生成结果。
这与通过梯度更新参数的训练不同。
上下文学习改变的是当前输入条件下的行为,不等于模型参数发生了持久更新。
6.5 预训练的能力边界
预训练可以形成广泛能力,但不保证模型能够:
- 稳定遵循复杂指令;
- 始终提供准确事实;
- 严格输出指定格式;
- 正确使用工具;
- 可靠完成复杂推理。
因此,现代助手模型通常还需要后训练。
七、什么是持续预训练?
7.1 持续预训练的定义
持续预训练(Continued Pre-training)是指在已有预训练模型基础上,继续使用某类数据和预训练目标进行训练。
它通常用于增强模型在特定领域、语言或数据分布上的表现。
7.2 典型应用
例如,一个通用语言模型可以继续使用大量医学文本训练,以改善相关领域的语言建模表现。
其他场景包括:
- 法律领域;
- 金融领域;
- 科学研究;
- 软件代码;
- 特定语言;
- 企业内部专业语料。
7.3 持续预训练与微调的区别
持续预训练通常继续使用语言建模等基础训练目标。
监督微调通常使用明确的输入与目标输出,使模型学习特定任务行为。
例如:
持续预训练数据:
一段完整的专业领域文章
监督微调数据:
指令:
请解释这段专业术语。
目标回答:
……两者可以结合使用。
7.4 持续预训练的风险
如果训练数据过于狭窄,模型可能在其他任务上表现下降。
这与灾难性遗忘(Catastrophic Forgetting)等现象有关。
因此,需要控制训练数据分布,并持续评估模型的通用能力。
八、什么是后训练?
8.1 后训练的定义
后训练(Post-training)通常指模型完成主要预训练之后,为改善特定能力、任务表现或行为而进行的进一步训练。
后训练并不是单一算法。
它可以包括:
- 监督微调;
- 偏好优化;
- 强化学习;
- 其他行为或任务优化方法。
8.2 为什么需要后训练?
一个基础语言模型主要学习语言数据的统计规律。
但用户通常希望模型:
- 理解指令;
- 直接回答问题;
- 遵守输出格式;
- 减少无关内容;
- 正确使用工具;
- 在复杂任务中保持较好的表现。
这些需求与基础语言建模目标并不完全一致。
后训练可以进一步调整模型行为。
8.3 预训练与后训练的区别
| 维度 | Pre-training | Post-training |
|---|---|---|
| 主要目标 | 获得通用基础能力 | 改善任务能力和行为 |
| 典型数据 | 大规模通用语料 | 指令、偏好、任务数据 |
| 典型方法 | 自监督训练 | SFT、DPO、RL 等 |
| 训练重点 | 表示与知识模式 | 指令遵循、任务表现 |
| 计算规模 | 通常较大 | 依方法和规模而定 |
| 模型结果 | Base Model | Instruct、Chat 等模型 |
这一划分描述的是典型路径。
实际模型研发可能包含多个交替进行的训练阶段。
九、什么是监督微调?
9.1 SFT 的定义
监督微调(Supervised Fine-tuning,SFT)是指利用带有目标输出的训练数据,进一步优化已有模型。
对于语言模型,典型数据形式是:
其中:
:用户输入或任务上下文; :期望模型生成的目标回答。
9.2 指令微调
指令微调(Instruction Tuning)是 SFT 的重要应用形式。
例如:
Instruction:
请将以下内容总结为三个要点。
Input:
一段文章。
Response:
1. ……
2. ……
3. ……模型通过大量类似数据学习任务要求与回答形式之间的关系。
9.3 SFT 的训练目标
对于目标回答 Token 序列:
可以使用:
通常只对需要学习的目标输出位置计算损失。
9.4 为什么需要 Loss Mask?
假设训练样本包含:
System
User
Assistant训练时,开发者可能只希望模型学习 Assistant 的回答,而不是将所有输入 Token 都作为预测目标。
这时可以使用 Loss Mask 指定哪些位置参与损失计算。
但不同训练方案可能采用不同的损失掩码策略。
9.5 SFT 能够改善什么?
SFT 可以改善:
- 指令遵循;
- 回答结构;
- 特定任务格式;
- 领域任务表现;
- 工具调用格式;
- 特定风格与行为。
但 SFT 的效果依赖训练数据质量。
9.6 SFT 的局限
SFT 主要学习示范输出。
如果示范数据存在错误,模型也可能学习到错误模式。
此外,SFT 不一定能够充分优化多个候选回答之间的相对质量。
因此,现代模型训练还可能引入偏好优化。
十、什么是全参数微调与参数高效微调?
微调不仅涉及训练目标,还涉及哪些模型参数被更新。
10.1 Full Fine-tuning
全参数微调(Full Fine-tuning)通常更新模型中的全部或绝大部分可训练参数。
优点是具有较高的参数调整自由度。
但缺点包括:
- 显存需求较高;
- 优化器状态占用较大;
- 训练计算成本较高;
- 不同任务可能需要保存不同模型权重。
10.2 Parameter-Efficient Fine-tuning
参数高效微调(PEFT)通过只训练一小部分参数,降低微调成本。
常见方法包括:
- Adapter;
- LoRA;
- Prefix Tuning;
- Prompt Tuning。
10.3 LoRA 的基本思想
LoRA(Low-Rank Adaptation)是一种具有代表性的参数高效微调方法。[5]
对于原始权重矩阵:
LoRA 不直接训练完整的权重更新矩阵,而是使用低秩分解:
其中:
通常:
最终计算可以表示为:
LoRA 通常冻结原始权重,只训练低秩矩阵。
10.4 LoRA 为什么能够降低训练成本?
如果直接训练一个:
的矩阵,需要更新:
个参数。
如果采用秩为 16 的 LoRA:
需要训练:
个 LoRA 参数。
在这个单矩阵示例中,可训练参数数量明显减少。
但实际模型还包含其他参数和计算,因此不能将这一比例直接理解为完整训练成本的降低比例。
10.5 QLoRA
QLoRA 结合量化基础模型与 LoRA 微调,以降低微调期间的内存需求。[6]
需要注意,QLoRA 并不是简单地将所有训练参数都变成低精度。
其核心设计涉及量化的基础权重和可训练的低秩适配参数。
10.6 Full Fine-tuning 与 LoRA 的比较
| 维度 | Full Fine-tuning | LoRA |
|---|---|---|
| 更新参数 | 全部或大部分 | 少量适配参数 |
| 显存需求 | 通常较高 | 通常较低 |
| 训练灵活性 | 较高 | 受适配结构限制 |
| 模型存储 | 通常保存完整权重 | 可保存 Adapter |
| 典型用途 | 大规模模型调整 | 低成本领域或任务适配 |
LoRA 并不保证在所有任务上都能达到全参数微调的效果。
具体表现取决于任务、数据、模型和适配配置。
十一、什么是偏好优化?
11.1 为什么需要偏好优化?
假设模型针对同一个问题生成两个回答。
回答 A:
直接解释问题,并提供准确示例。
回答 B:
内容冗长,存在事实错误,而且没有回答核心问题。
即使两个回答都符合基本语言结构,用户也可能明显偏好回答 A。
偏好优化(Preference Optimization)研究如何利用这种相对偏好信息改善模型行为。
11.2 偏好数据
典型偏好数据可以表示为:
其中:
:输入; :更受偏好的回答; :较不受偏好的回答。
11.3 偏好数据从哪里来?
偏好数据可能来自:
- 人类标注;
- 专家评审;
- 规则或程序化判断;
- AI 模型评价;
- 其他质量比较机制。
不同来源具有不同的可靠性和偏差。
11.4 偏好优化的目标
偏好优化通常希望模型更倾向于生成高质量回答。
例如:
- 更准确;
- 更符合指令;
- 更清晰;
- 更安全;
- 更符合特定任务要求。
但这些目标之间可能存在冲突。
因此,偏好数据的设计非常重要。
十二、什么是 RLHF?
12.1 RLHF 的定义
RLHF(Reinforcement Learning from Human Feedback)是指利用人类反馈构建训练信号,并通过强化学习等方法优化模型行为的技术路线。
一种经典 RLHF 流程包括三个阶段。[7]
12.2 阶段一:监督微调
首先使用示范数据训练指令模型。
Base Model
│
▼
SFT
│
▼
Instruction Model12.3 阶段二:训练奖励模型
收集人类对不同回答的偏好数据。
例如:
同一个问题
│
├── 回答 A
│
└── 回答 B
│
▼
人类比较
│
▼
偏好数据
│
▼
Reward Model奖励模型(Reward Model)尝试预测回答的相对质量或偏好程度。
12.4 阶段三:强化学习优化
使用奖励模型提供的训练信号优化语言模型。
语言模型
│
▼
生成回答
│
▼
Reward Model
│
▼
奖励信号
│
▼
强化学习更新
│
└────────► 语言模型12.5 RLHF 的主要作用
RLHF 可以用于改善模型的:
- 指令遵循;
- 回答质量;
- 行为偏好;
- 安全相关表现;
- 特定任务能力。
12.6 RLHF 的局限
RLHF 也存在一些挑战。
例如:
- 人类偏好具有主观性;
- 奖励模型可能存在偏差;
- 模型可能利用奖励函数的漏洞;
- 强化学习过程可能不稳定;
- 不同目标之间可能发生冲突。
因此,奖励模型的分数不等于回答的客观正确性。
十三、什么是 PPO、DPO 和 GRPO?
这些方法经常出现在现代语言模型后训练研究中。
但它们并不属于完全相同的算法类别。
13.1 PPO
PPO(Proximal Policy Optimization)是一种强化学习策略优化算法。[8]
它通过限制策略更新幅度等机制,提高训练的稳定性。
在语言模型 RLHF 中,PPO 可以用于根据奖励信号优化模型生成策略。
13.2 DPO
DPO(Direct Preference Optimization)是一种直接利用偏好数据优化语言模型的方法。[9]
它不需要按照经典 RLHF 流程显式训练独立奖励模型,再通过在线强化学习优化策略。
DPO 可以直接利用:
形式的偏好数据训练模型。
13.3 DPO 的核心思想
DPO 通过比较偏好回答和非偏好回答的相对概率,并结合参考模型进行优化。
其常见目标形式为:
其中:
:当前训练策略; :参考策略; :控制偏离参考策略程度的超参数; :Sigmoid 函数。
这一目标鼓励模型相对于参考策略,提高偏好回答的相对概率。
13.4 GRPO
GRPO(Group Relative Policy Optimization)是一种基于组内相对奖励进行策略优化的方法。
该方法在 DeepSeekMath 等研究中得到应用。[10]
其基本思想是:针对同一个问题采样多个回答,并利用组内奖励信息构造相对优势估计。
简化流程:
输入问题
│
▼
生成多个候选回答
│
▼
分别计算奖励
│
▼
组内相对比较
│
▼
计算优化信号
│
▼
更新模型策略GRPO 可以避免某些 PPO 实现中对独立价值模型的依赖,但并不意味着训练不需要奖励信号或其他计算资源。
13.5 三种方法比较
| 方法 | 类型 | 主要训练信号 | 主要特点 |
|---|---|---|---|
| PPO | 强化学习策略优化 | 奖励与优势估计 | 使用受约束的策略更新 |
| DPO | 直接偏好优化 | 偏好回答对 | 可直接使用离线偏好数据 |
| GRPO | 强化学习策略优化 | 组内相对奖励 | 利用同组候选的相对表现 |
需要注意,DPO 与 PPO、GRPO 的训练流程不同。
不能简单地认为三者只是同一算法的不同版本。
十四、什么是结果奖励与过程奖励?
复杂推理任务中的训练信号可以根据评价对象进行区分。
14.1 Outcome Reward
结果奖励(Outcome Reward)主要根据最终结果进行评价。
例如:
数学问题
│
▼
模型生成解答
│
▼
检查最终答案
│
▼
正确 / 错误如果任务具有可验证答案,就可以使用程序化验证提供奖励。
14.2 Process Reward
过程奖励(Process Reward)尝试评价问题求解过程中的中间步骤。[11]
例如:
步骤 1:正确
步骤 2:正确
步骤 3:错误
步骤 4:……过程奖励可以提供更细粒度的训练信号。
14.3 两者的区别
| 维度 | Outcome Reward | Process Reward |
|---|---|---|
| 评价对象 | 最终结果 | 中间步骤 |
| 标注粒度 | 较粗 | 较细 |
| 适用任务 | 答案可验证任务 | 多步骤任务 |
| 主要挑战 | 信号稀疏 | 步骤评价成本 |
14.4 结果正确不等于过程正确
模型可能通过错误推理过程得到正确答案。
也可能采用合理方法,但由于计算错误得到错误结果。
因此,在某些任务中,过程评价与结果评价具有不同价值。
但过程奖励也可能引入步骤标注误差,并不天然比结果奖励可靠。
十五、模型如何形成推理能力?
推理能力是现代语言模型研究中的重要问题。
但需要区分训练方法、推理行为和最终任务表现。
15.1 什么是模型推理能力?
在本篇语境中,推理能力主要指模型处理需要多步骤信息加工、逻辑关系分析或问题求解任务的表现。
例如:
- 数学证明;
- 复杂计算;
- 代码调试;
- 多条件决策;
- 逻辑问题。
15.2 预训练与推理能力
预训练数据可能包含大量数学、代码和推理相关文本。
模型可以从中学习相关模式。
但预训练并不保证模型能够可靠地完成复杂推理任务。
15.3 推理相关监督微调
开发者可以提供包含推理步骤的示范数据。
例如:
问题
│
▼
分析步骤
│
▼
最终答案模型通过监督学习这些输出形式和任务模式。
15.4 强化学习与推理任务
对于具有可验证结果的任务,可以使用奖励信号进一步优化模型。[12]
例如:
数学题
│
▼
模型生成解答
│
▼
程序验证答案
│
▼
奖励信号
│
▼
策略优化这种训练可以改善模型在相应任务分布上的表现。
15.5 推理过程与推理结果
需要注意,模型生成的推理文本不一定完整反映其内部计算机制。
因此:
可见的推理步骤、模型内部计算和最终答案正确性,是三个需要分别评价的对象。
15.6 推理训练不等于推理时计算
训练阶段可以改善模型的推理相关能力。
推理阶段也可以通过增加计算、采样或验证改善任务表现。
这两类方法分别属于:
- Training-time Compute;
- Inference-time Compute。
后者将在 M7 中进一步研究。
十六、模型如何学会工具调用?
工具调用能力是模型后训练的重要应用之一。
16.1 工具调用的基本任务
例如,用户提出:
查询北京今天的天气。
模型需要判断是否调用天气工具,并生成符合工具接口要求的参数。
16.2 工具调用训练数据
一种典型数据形式为:
用户:
查询北京今天的天气。
模型工具调用:
get_weather({"city": "Beijing"})
工具结果:
……
模型回答:
……通过类似数据,模型可以学习工具调用的格式和任务模式。
16.3 工具调用能力包含什么?
工具调用相关训练可能涉及:
- 判断是否需要工具;
- 选择工具;
- 生成参数;
- 处理工具返回结果;
- 根据结果继续回答。
16.4 模型训练与工具执行的区别
模型可以学习生成工具调用请求。
但工具执行通常由外部 Agent Runtime 或应用系统完成。
因此:
模型训练
│
▼
形成工具调用相关能力
│
▼
模型生成工具请求
│
▼
外部运行系统执行工具模型不会因为接受过工具调用训练,就自动获得操作外部系统的权限。
16.5 工具调用训练的局限
模型仍然可能:
- 选择错误工具;
- 生成错误参数;
- 忽略工具结果;
- 在不需要工具时调用工具;
- 对工具结果作出错误解释。
因此,工具调用能力需要结合模型评估和外部执行约束。
十七、多模态模型如何训练?
多模态模型需要同时处理不同模态的数据和训练目标。
17.1 单模态预训练
可以先分别训练:
- 文本编码器;
- 图像编码器;
- 音频编码器。
这些编码器学习各自模态的基础表示。
17.2 跨模态对齐
使用图文、音文等配对数据,建立不同模态之间的对应关系。
例如:
通过对比学习,使匹配样本的表示更接近。
17.3 多模态联合训练
模型可以在联合输入上学习任务。
例如:
图片 + 文字问题
│
▼
多模态模型
│
▼
文字回答17.4 多模态指令微调
通过多模态指令数据,改善模型根据图片、音频或视频完成任务的能力。
17.5 多模态训练的特殊挑战
多模态训练需要考虑:
- 模态数据比例;
- 编码器与语言模型的连接;
- 不同模态的损失设计;
- 模态之间的对齐质量;
- 计算成本;
- 数据标注质量。
因此,多模态训练不是简单地将不同数据文件混合在一起。
十八、训练过程中有哪些重要超参数?
模型训练不仅需要参数,还需要一组控制训练过程的超参数。
18.1 参数与超参数的区别
模型参数通常通过训练学习。
超参数通常由开发者或自动化搜索方法设置,用于控制训练过程。
18.2 常见训练超参数
| 超参数 | 主要作用 |
|---|---|
| Learning Rate | 控制参数更新幅度 |
| Batch Size | 控制每次更新使用的数据量 |
| Epochs | 控制训练数据遍历次数 |
| Training Steps | 控制参数更新次数 |
| Weight Decay | 正则化相关控制 |
| Warmup Steps | 学习率预热 |
| Learning Rate Scheduler | 调整学习率变化 |
| Gradient Accumulation | 累积多个微批次梯度 |
| Gradient Clipping | 限制梯度大小 |
| Sequence Length | 控制训练序列长度 |
| Optimizer | 决定参数更新方法 |
18.3 学习率
学习率过大可能导致训练不稳定。
学习率过小可能导致训练进展缓慢。
因此,学习率通常需要结合模型规模、优化器和训练阶段进行设计。
18.4 Batch Size
Batch Size 影响每次优化更新使用的数据规模。
在分布式训练中,需要区分:
- Micro Batch Size;
- Per-device Batch Size;
- Global Batch Size;
- Gradient Accumulation Steps。
例如:
这一关系适用于各设备批次配置一致的典型数据并行训练场景。
18.5 训练步数与 Epoch
一个 Epoch 通常表示对训练数据完成一次遍历。
但在大规模流式训练中,训练过程可能更常使用 Token 数量和 Training Steps 进行管理。
十九、大规模模型训练需要哪些工程技术?
现代基础模型训练通常需要复杂的计算基础设施。
19.1 分布式训练
当单个设备无法满足训练需求时,可以使用多个设备协同训练。
常见方法包括:
Data Parallelism: 多个设备处理不同数据批次。
Tensor Parallelism: 将部分张量计算分布到多个设备。
Pipeline Parallelism: 将模型不同层分布到多个设备。
Expert Parallelism: 在 MoE 模型中分布专家网络。
19.2 混合精度训练
混合精度训练使用不同数值精度执行计算,以改善性能和资源利用率。
例如:
- FP32;
- FP16;
- BF16。
实际训练还可能使用更低精度的计算或存储方案。
但低精度计算需要考虑数值稳定性。
19.3 Gradient Checkpointing
Gradient Checkpointing 通过减少部分中间激活的保存,并在反向传播时重新计算,降低激活内存需求。
代价通常是增加部分计算量。
19.4 Checkpoint
训练检查点可能保存:
- 模型参数;
- 优化器状态;
- 学习率调度状态;
- 训练进度;
- 随机数状态;
- 其他恢复信息。
训练 Checkpoint 不一定等于最终发布的模型权重。
19.5 训练监控
需要持续观察:
- Training Loss;
- Validation Loss;
- Learning Rate;
- Gradient Norm;
- GPU 利用率;
- 显存占用;
- 训练吞吐量;
- Checkpoint 状态。
19.6 故障恢复
大规模训练可能持续较长时间。
因此,需要设计:
- 定期保存;
- 故障检测;
- 训练恢复;
- 数据状态恢复;
- 分布式任务重启。
这些工程机制直接影响训练任务能否顺利完成。
二十、如何判断模型训练是否有效?
训练 Loss 下降并不意味着模型在所有实际任务上都变得更好。
因此,需要建立独立的评估机制。
20.1 Training Loss
Training Loss 反映模型对训练目标的拟合情况。
但它不能完整代表模型能力。
20.2 Validation Loss
Validation Loss 用于观察模型在独立验证数据上的表现。
如果训练 Loss 持续下降,但验证表现恶化,可能存在过拟合或其他问题。
20.3 任务评估
模型还需要在具体任务上测试。
例如:
- 知识问答;
- 数学推理;
- 代码生成;
- 指令遵循;
- 工具调用;
- 多模态理解。
20.4 行为评估
后训练还需要关注模型行为。
例如:
- 是否遵循指令;
- 是否满足输出格式;
- 是否产生不必要的拒绝;
- 是否存在事实错误;
- 是否具有稳定性。
20.5 回归评估
一次训练可能改善某些能力,同时损害其他能力。
因此,需要对已有能力进行回归测试。
例如:
训练前模型
│
▼
基准测试
│
▼
执行微调
│
▼
训练后模型
│
▼
相同基准测试
│
▼
能力差异分析20.6 数据污染
如果评估题目已经出现在训练数据中,模型可能通过记忆获得较高分数。
这会影响评估的可信度。
因此,训练数据与评估数据之间需要适当隔离。
二十一、模型训练有哪些主要风险?
21.1 过拟合
模型可能过度适应训练数据,导致在新数据上的表现下降。
21.2 灾难性遗忘
模型在学习新任务或新领域时,可能损害原有能力。
21.3 数据偏差
训练数据中的偏差可能影响模型输出。
21.4 奖励黑客
奖励黑客(Reward Hacking)是指模型学会利用奖励机制中的漏洞,而不是真正完成预期任务。
例如,模型可能生成容易获得高奖励、但实际质量不佳的回答。
21.5 训练不稳定
模型可能出现:
- Loss 异常;
- 梯度爆炸;
- 数值溢出;
- 训练发散。
21.6 数据隐私与版权
训练数据可能涉及个人信息、商业秘密或受版权保护的内容。
因此,数据获取、处理和使用需要遵守适用的法律、许可与组织政策。
21.7 评估偏差
如果评估指标与实际应用目标不一致,模型可能在基准测试中表现良好,但实际使用效果较差。
二十二、如何设计一个完整的模型训练流程?
一个完整的模型训练项目,需要同时考虑任务目标、数据、训练方法、计算资源和评估机制。
22.1 阶段一:明确训练目标
首先确定希望改善什么能力。
例如:
- 增强领域知识;
- 改善指令遵循;
- 提升特定任务准确率;
- 学习结构化输出;
- 改善工具调用;
- 提升数学推理能力。
不同目标对应不同训练方法。
22.2 阶段二:选择基础模型
需要考虑:
- 模型架构;
- 参数规模;
- 语言能力;
- 上下文长度;
- 许可证;
- 硬件需求;
- 原有任务表现。
22.3 阶段三:准备数据
根据目标选择数据类型。
例如:
| 目标 | 可能的数据 |
|---|---|
| 领域适配 | 领域语料 |
| 指令遵循 | 指令与示范回答 |
| 输出偏好 | 偏好回答对 |
| 数学推理 | 可验证数学任务 |
| 工具调用 | 工具调用轨迹 |
| 多模态理解 | 图文或音文配对数据 |
22.4 阶段四:选择训练方法
例如:
- Continued Pre-training;
- SFT;
- LoRA;
- DPO;
- PPO;
- GRPO。
训练方法应当根据目标、数据和资源约束选择,而不是单纯追求更复杂的算法。
22.5 阶段五:配置训练环境
需要准备:
- 计算设备;
- 训练框架;
- 数据流水线;
- 模型权重;
- 优化器;
- 超参数;
- 监控系统。
22.6 阶段六:执行训练
通过训练循环更新模型参数。
过程中持续观察训练指标。
22.7 阶段七:评估模型
比较训练前后的能力变化。
重点判断:
- 目标任务是否改善;
- 原有能力是否下降;
- 是否产生新的风险;
- 训练结果是否具有稳定性。
22.8 阶段八:发布与部署
训练完成后,可以:
- 保存完整模型;
- 保存 Adapter;
- 合并 LoRA 权重;
- 导出推理格式;
- 部署模型服务。
22.9 阶段九:持续迭代
根据实际使用结果,继续优化数据、训练方法和模型配置。
22.10 完整流程
确定训练目标
│
▼
选择基础模型
│
▼
准备训练数据
│
▼
选择训练方法
│
▼
配置训练环境
│
▼
执行训练
│
▼
模型评估
│
├── 不满足要求
│ │
│ └──► 调整数据或训练配置
│
▼
模型发布
│
▼
实际应用
│
▼
持续评估与迭代二十三、如何根据实际需求选择训练方法?
不同训练方法适合不同场景。
23.1 场景一:模型缺乏专业领域知识
例如,希望模型更熟悉某个专业领域的术语和文本结构。
可以考虑:
- 持续预训练;
- 领域监督微调;
- 外部知识检索。
需要注意,增加知识不一定必须训练模型。
如果主要需求是访问最新或经常变化的事实,RAG 可能更适合。
23.2 场景二:模型无法稳定遵循输出格式
例如,希望模型按照固定 JSON Schema 生成结果。
可以考虑:
- 改善 Prompt;
- 使用结构化输出约束;
- 使用 SFT;
- 增加输出验证。
如果已有模型支持可靠的结构化输出机制,不一定需要重新训练。
23.3 场景三:模型需要学习特定写作风格
可以考虑:
- Prompt;
- Few-shot Examples;
- SFT;
- LoRA。
23.4 场景四:模型回答质量不符合偏好
如果具有较好的偏好数据,可以考虑:
- DPO;
- RLHF;
- 其他偏好优化方法。
23.5 场景五:模型需要改善可验证推理任务
例如数学题或具有自动测试的代码任务。
可以考虑:
- 推理相关 SFT;
- 基于结果奖励的强化学习;
- 推理时验证机制。
23.6 场景六:希望 Agent 更好地使用工具
可以考虑:
- 工具调用示范数据;
- 工具使用 SFT;
- 基于执行结果的训练;
- 工具调用评估;
- Runtime 层面的工具约束。
23.7 训练方法选择表
| 需求 | 优先考虑 |
|---|---|
| 使用最新知识 | RAG、工具检索 |
| 学习领域语言分布 | 持续预训练 |
| 学习任务格式 | SFT |
| 低成本任务适配 | LoRA、QLoRA |
| 改善回答偏好 | DPO、RLHF |
| 改善可验证任务 | 结果奖励训练 |
| 改善工具调用 | 工具数据 SFT、执行反馈 |
| 降低事实错误 | 检索、验证、训练与评估结合 |
一个重要原则是:
训练不是解决所有模型问题的默认方法。
在实际应用中,Prompt、RAG、工具调用、输出约束和模型选择,可能以更低成本解决部分问题。
二十四、核心结论
AI 模型通过训练数据、损失函数和优化算法调整参数,从而获得完成特定任务的能力。
现代基础模型的训练通常包含多个阶段,每个阶段具有不同目标。
理解模型训练,需要建立以下认识。
第一,模型架构提供计算结构,训练过程形成具体参数与能力。 一个具有大量参数的神经网络,不会仅凭架构设计自动获得语言能力。
第二,训练的基本过程包括前向传播、损失计算、反向传播和参数更新。 这些步骤共同构成神经网络的参数优化机制。
第三,训练数据的质量、规模和分布共同影响模型能力。 更多数据不一定意味着更好的模型。
第四,预训练主要用于形成通用基础能力。 现代语言模型通常通过大规模自监督学习获得语言建模能力。
第五,持续预训练可以改善模型在特定领域或数据分布上的表现。 但也可能损害原有能力。
第六,后训练用于进一步调整模型的任务表现与行为。 SFT、偏好优化和强化学习是其中的重要方法。
第七,SFT 通过示范数据改善模型的指令遵循和任务表现。
第八,LoRA 和 QLoRA 等方法可以降低部分模型微调任务的资源需求。
第九,偏好优化利用回答之间的相对质量信息改善模型行为。 DPO 是具有代表性的直接偏好优化方法。
第十,PPO 和 GRPO 属于强化学习策略优化方法。 它们与 DPO 的训练机制存在差异。
第十一,结果奖励和过程奖励可以为复杂任务提供不同粒度的训练信号。
第十二,推理能力可能受到预训练、监督微调、强化学习和推理时计算等多种因素影响。
第十三,工具调用能力可以通过训练改善,但真正的工具执行依赖外部运行系统。
第十四,多模态训练需要解决不同模态之间的表示、对齐和联合优化问题。
第十五,训练 Loss 下降不等于模型整体能力提升。 需要使用独立任务评估和回归测试判断训练效果。
第十六,训练方法应当根据实际问题选择。 对于知识更新、输出格式和工具执行等需求,外部系统机制可能比重新训练更加适合。
从整个 AI 技术体系看,模型训练是将神经网络的计算潜力转化为实际能力的关键过程。
预训练建立基础,后训练调整行为,评估验证效果,而工程系统保障训练能够稳定执行。
理解这些机制之后,就可以进一步研究模型在训练完成后,如何根据输入生成具体输出。
二十五、参考文献与延伸阅读
25.1 预训练与基础模型
[1] Devlin, J., et al. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.
介绍基于掩码语言建模的预训练方法。
论文:BERT
[2] Brown, T. B., et al. (2020). Language Models Are Few-Shot Learners.
研究大规模自回归语言模型的少样本学习表现。
论文:Language Models Are Few-Shot Learners
[3] Hoffmann, J., et al. (2022). Training Compute-Optimal Large Language Models.
研究模型规模、训练数据和计算预算之间的关系。
论文:Training Compute-Optimal Large Language Models
25.2 监督微调与参数高效微调
[4] Wei, J., et al. (2022). Finetuned Language Models Are Zero-Shot Learners.
研究指令微调对任务泛化能力的影响。
论文:Finetuned Language Models Are Zero-Shot Learners
[5] Hu, E. J., et al. (2021). LoRA: Low-Rank Adaptation of Large Language Models.
提出 LoRA 参数高效微调方法。
论文:LoRA
[6] Dettmers, T., et al. (2023). QLoRA: Efficient Finetuning of Quantized LLMs.
研究结合量化与低秩适配的微调方法。
论文:QLoRA
25.3 RLHF 与偏好优化
[7] Ouyang, L., et al. (2022). Training Language Models to Follow Instructions with Human Feedback.
介绍基于人类反馈的语言模型训练流程。
论文:Training Language Models to Follow Instructions with Human Feedback
[8] Schulman, J., et al. (2017). Proximal Policy Optimization Algorithms.
提出 PPO 强化学习算法。
论文:Proximal Policy Optimization Algorithms
[9] Rafailov, R., et al. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model.
提出 DPO 方法。
论文:Direct Preference Optimization
[10] Shao, Z., et al. (2024). DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models.
介绍数学推理训练以及 GRPO 方法。
论文:DeepSeekMath
25.4 推理训练与奖励机制
[11] Lightman, H., et al. (2023). Let’s Verify Step by Step.
研究过程监督与结果监督在数学推理任务中的表现。
论文:Let’s Verify Step by Step
[12] DeepSeek-AI, et al. (2025). DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning.
研究利用强化学习改善模型推理表现的方法。
论文:DeepSeek-R1
25.5 训练工程与实践
[13] Hugging Face. TRL Documentation.
介绍 SFT、DPO 和强化学习相关训练工具。
官方文档:TRL Documentation
[14] Hugging Face. PEFT Documentation.
介绍 LoRA 等参数高效微调方法。
官方文档:PEFT Documentation
[15] PyTorch. Distributed Overview.
介绍分布式训练的主要技术机制。
官方文档:PyTorch Distributed Overview
[16] NVIDIA. Megatron Core Documentation.
介绍大规模 Transformer 训练中的模型并行等技术。
官方文档:Megatron Core Documentation
二十六、关联研究
| 关联文档 | 研究内容 |
|---|---|
| M1 · AI 模型是什么?它由什么构成? | 模型定义、架构与参数 |
| M2 · 神经网络如何学习和处理信息? | 前向传播、反向传播与优化 |
| M3 · Transformer 如何处理和生成信息? | Transformer 架构 |
| M4 · 大语言模型是如何构建的? | LLM 构建流程 |
| M5 · AI 模型如何理解和处理不同模态? | 多模态模型 |
| M7 · AI 模型如何生成输出? | 模型推理与解码 |
| M8 · 如何评估 AI 模型的能力与局限? | 模型评估 |
| E2 · 如何设计和管理模型输入? | Prompt Engineering |
| E6 · 如何选择和切换不同模型? | Model Routing |
| E7 · 如何部署和运行开源模型? | Model Deployment |
| E8 · 如何优化模型调用的成本与性能? | Inference Optimization |
| K5 · 什么是 RAG?它如何工作? | 检索增强生成 |
| A2 · Agent 如何获得认知与推理能力? | Agent 的模型能力 |
| A7 · Agent 如何调用工具并执行操作? | Agent 工具调用 |