Skip to content

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. 通过预训练学习大规模数据中的统计规律。
  2. 通过持续预训练增强特定领域或数据分布上的能力。
  3. 通过监督微调学习任务格式和指令遵循行为。
  4. 通过偏好优化调整模型输出的质量与行为倾向。
  5. 通过强化学习等方法优化具有可评价结果的任务表现。
  6. 通过持续评估和迭代改善模型能力与可靠性。

这些阶段的目标不同,使用的数据不同,优化方法也可能不同。

因此,需要从完整的模型训练体系出发,理解模型能力的形成过程。

1.1 本篇的研究范围 ​

本篇重点研究五个方面。

第一,训练的基本机制。 训练数据、模型预测、损失函数、梯度和优化器如何共同作用。

第二,训练阶段。 预训练、持续预训练、监督微调、偏好优化和强化学习之间的关系。

第三,训练方法。 全参数微调、参数高效微调、LoRA、DPO、PPO、GRPO 等方法的基本原理与适用场景。

第四,能力形成。 模型如何通过不同训练目标表现出知识运用、指令遵循、复杂推理和工具调用等能力。

第五,训练工程。 数据准备、训练计算、检查点、验证、评估和风险控制。

1.2 本篇与其他研究的边界 ​

本篇不重复展开 M2 中的神经网络基础数学推导,而是将其应用到现代基础模型训练。

同时,本篇重点研究训练过程,不深入讨论模型上线后的推理服务、解码策略和推理加速。这些内容将在 M7 中研究。

二、什么是模型训练? ​

2.1 模型训练的定义 ​

模型训练(Model Training)是指利用数据、训练目标和优化算法,调整模型参数,使模型在特定任务或数据分布上的表现得到改善的过程。

对于一个参数化模型:

y=fθ(x)

其中:

  • x:模型输入;
  • y:模型输出;
  • f:模型定义的计算过程;
  • θ:模型参数。

训练的核心任务是寻找一组适当的参数:

θ∗

使模型在训练目标下具有较好的表现。

可以表示为:

θ∗=arg⁡minθL(θ)

其中:

L(θ)

是用于衡量模型预测与训练目标之间差异的损失函数。

需要注意,实际训练通常只能通过迭代优化获得一个较好的参数解,并不能保证找到全局最优解。

2.2 模型为什么需要训练? ​

神经网络架构定义了模型能够执行哪些计算。

但架构本身并不包含训练后获得的具体能力。

例如,一个尚未训练的语言模型可能已经具备:

  • Embedding 层;
  • Attention;
  • FFN;
  • 输出层;
  • 大量可学习参数。

但这些参数通常尚未形成有效的语言表示。

训练通过不断调整参数,使模型能够利用数据中的统计规律完成任务。

2.3 训练与编程有什么区别? ​

传统程序通常由开发者明确编写规则。

例如:

python
if temperature > 30:
    result = "炎热"
else:
    result = "不炎热"

程序的判断逻辑由开发者直接指定。

机器学习模型则通过数据学习参数。

例如,开发者提供大量输入与目标输出,模型通过训练学习相应的映射关系。

因此,训练并不是让模型自动生成一套显式程序规则,而是通过优化参数形成某种计算行为。

2.4 训练与推理有什么区别? ​

维度TrainingInference
核心目标调整模型参数利用模型生成结果
参数状态通常持续更新通常保持固定
是否计算损失通常需要通常不需要
是否反向传播通常需要常规推理不需要
计算特点前向计算与梯度计算主要执行前向计算
典型场景预训练、微调对话、分类、生成

训练与推理使用的模型架构可以相同,但运行目的和计算流程不同。

三、模型训练的基本计算过程是什么? ​

现代神经网络训练通常可以概括为:

数据输入 → 前向传播 → 计算损失 → 反向传播 → 参数更新。

3.1 前向传播 ​

模型接收输入数据并生成预测结果。

y^=fθ(x)

例如,在语言模型训练中,输入可能是一段 Token 序列。

模型需要预测序列中的目标 Token。

3.2 计算损失 ​

损失函数衡量模型预测与训练目标之间的差异。

例如:

L(θ)=ℓ(y^,y)

其中:

  • y^:模型预测;
  • y:目标结果;
  • ℓ:损失函数。

不同训练任务使用不同的损失函数。

例如:

  • 分类任务:交叉熵;
  • 回归任务:均方误差;
  • 语言建模:Token 级负对数似然;
  • 对比学习:对比损失;
  • 偏好优化:偏好目标函数。

3.3 反向传播 ​

反向传播(Backpropagation)利用链式法则计算损失相对于模型参数的梯度。

∇θL

梯度反映参数发生变化时,损失函数在局部如何变化。

3.4 参数更新 ​

优化器根据梯度更新模型参数。

以最简单的梯度下降为例:

θt+1=θt−η∇θL(θt)

其中:

  • η:学习率;
  • t:训练步骤。

现代模型训练通常使用 Adam、AdamW 等优化器,而不是简单的梯度下降。

3.5 训练循环 ​

text
训练数据
   │
   ▼
数据采样与 Batch 构建
   │
   ▼
模型前向传播
   │
   ▼
计算 Loss
   │
   ▼
反向传播
   │
   ▼
优化器更新参数
   │
   ▼
进入下一批数据
   │
   └──────────────► 重复

这一循环可能执行大量训练步骤。

3.6 一个简化示例 ​

假设语言模型看到:

人工智能正在改变我们的

训练数据中的下一个 Token 是“生活”。

模型会计算所有候选 Token 的分数,并根据目标 Token 计算损失。

如果模型给“生活”的概率较低,损失通常较高。

优化器通过梯度更新参数,使模型在类似上下文中提高目标 Token 的预测概率。

随着大量训练样本不断参与优化,模型逐渐学习语言中的各种统计关系。

但模型并不是直接将每个训练句子保存为可检索记录。

训练可能同时产生模式学习、抽象表示以及部分训练内容记忆。具体程度取决于数据、架构和训练过程。

四、训练数据如何决定模型能够学习什么? ​

训练数据是模型能力形成的重要基础。

但数据规模并不是唯一决定因素。

4.1 训练数据的主要类型 ​

不同模型可能使用不同类型的数据。

数据类型示例主要用途
无标注文本文章、书籍、代码语言预训练
标注数据输入与正确类别监督学习
指令数据指令与示范回答指令微调
偏好数据同一问题的优劣回答偏好优化
可验证任务数据数学题、程序测试结果驱动训练
图文配对数据图片与描述多模态对齐
音文配对数据音频与转写语音任务
交互轨迹状态、动作与结果Agent 或策略训练

4.2 数据质量 ​

训练数据可能存在:

  • 错误信息;
  • 重复内容;
  • 格式异常;
  • 噪声;
  • 标注错误;
  • 数据污染;
  • 隐私与版权问题。

这些问题可能影响模型最终表现。

4.3 数据分布 ​

训练数据的分布决定模型主要接触哪些任务和信息。

例如,一个以英文数据为主的模型,可能在某些中文任务上表现较弱。

一个包含大量代码数据的模型,可能在程序生成任务中形成更强能力。

但数据比例与能力之间并不存在简单的一一对应关系。

4.4 数据清洗与去重 ​

训练数据准备通常包括:

  • 格式标准化;
  • 文本质量过滤;
  • 重复数据检测;
  • 语言识别;
  • 异常样本处理;
  • 敏感信息处理;
  • 数据来源与授权检查。

4.5 数据混合 ​

大型模型通常使用多种来源的数据。

例如:

text
通用文本
    │
代码数据
    │
数学数据
    │
科学资料
    │
多语言数据
    │
    ▼
数据混合策略
    │
    ▼
训练数据流

数据混合策略会影响模型在不同能力之间的表现。

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 采用自回归语言建模。

给定序列:

x1,x2,…,xT

模型学习:

Pθ(xt∣x<t)

整体目标通常可以写为:

LLM=−∑t=1Tlog⁡Pθ(xt∣x<t)

6.2 模型在学习什么? ​

模型为了降低预测误差,需要学习有助于预测的数据规律。

例如:

  • 语言结构;
  • 词语与概念关系;
  • 文本组织方式;
  • 常见事实关联;
  • 代码语法与模式;
  • 数学表达形式;
  • 问题与答案之间的关系。

模型通过参数形成这些规律的内部表示。

6.3 为什么预训练模型能够完成多种任务? ​

如果训练数据中包含丰富的任务形式,模型就可能学习到相关的模式。

例如:

text
问题:什么是机器学习?
回答:机器学习是……

模型可能在训练过程中接触类似结构。

因此,即使训练目标是下一 Token 预测,模型也可能学会根据上下文继续生成符合任务形式的内容。

6.4 In-context Learning ​

In-context Learning(上下文学习)是指模型在不更新参数的情况下,根据输入上下文中的说明或示例调整当前任务表现。

例如:

text
输入:
苹果 → 水果
胡萝卜 → 蔬菜
香蕉 →

输出:
水果

模型根据上下文中的模式生成结果。

这与通过梯度更新参数的训练不同。

上下文学习改变的是当前输入条件下的行为,不等于模型参数发生了持久更新。

6.5 预训练的能力边界 ​

预训练可以形成广泛能力,但不保证模型能够:

  • 稳定遵循复杂指令;
  • 始终提供准确事实;
  • 严格输出指定格式;
  • 正确使用工具;
  • 可靠完成复杂推理。

因此,现代助手模型通常还需要后训练。

七、什么是持续预训练? ​

7.1 持续预训练的定义 ​

持续预训练(Continued Pre-training)是指在已有预训练模型基础上,继续使用某类数据和预训练目标进行训练。

它通常用于增强模型在特定领域、语言或数据分布上的表现。

7.2 典型应用 ​

例如,一个通用语言模型可以继续使用大量医学文本训练,以改善相关领域的语言建模表现。

其他场景包括:

  • 法律领域;
  • 金融领域;
  • 科学研究;
  • 软件代码;
  • 特定语言;
  • 企业内部专业语料。

7.3 持续预训练与微调的区别 ​

持续预训练通常继续使用语言建模等基础训练目标。

监督微调通常使用明确的输入与目标输出,使模型学习特定任务行为。

例如:

text
持续预训练数据:

一段完整的专业领域文章

监督微调数据:

指令:
请解释这段专业术语。
目标回答:
……

两者可以结合使用。

7.4 持续预训练的风险 ​

如果训练数据过于狭窄,模型可能在其他任务上表现下降。

这与灾难性遗忘(Catastrophic Forgetting)等现象有关。

因此,需要控制训练数据分布,并持续评估模型的通用能力。

八、什么是后训练? ​

8.1 后训练的定义 ​

后训练(Post-training)通常指模型完成主要预训练之后,为改善特定能力、任务表现或行为而进行的进一步训练。

后训练并不是单一算法。

它可以包括:

  • 监督微调;
  • 偏好优化;
  • 强化学习;
  • 其他行为或任务优化方法。

8.2 为什么需要后训练? ​

一个基础语言模型主要学习语言数据的统计规律。

但用户通常希望模型:

  • 理解指令;
  • 直接回答问题;
  • 遵守输出格式;
  • 减少无关内容;
  • 正确使用工具;
  • 在复杂任务中保持较好的表现。

这些需求与基础语言建模目标并不完全一致。

后训练可以进一步调整模型行为。

8.3 预训练与后训练的区别 ​

维度Pre-trainingPost-training
主要目标获得通用基础能力改善任务能力和行为
典型数据大规模通用语料指令、偏好、任务数据
典型方法自监督训练SFT、DPO、RL 等
训练重点表示与知识模式指令遵循、任务表现
计算规模通常较大依方法和规模而定
模型结果Base ModelInstruct、Chat 等模型

这一划分描述的是典型路径。

实际模型研发可能包含多个交替进行的训练阶段。

九、什么是监督微调? ​

9.1 SFT 的定义 ​

监督微调(Supervised Fine-tuning,SFT)是指利用带有目标输出的训练数据,进一步优化已有模型。

对于语言模型,典型数据形式是:

(x,y)

其中:

  • x:用户输入或任务上下文;
  • y:期望模型生成的目标回答。

9.2 指令微调 ​

指令微调(Instruction Tuning)是 SFT 的重要应用形式。

例如:

text
Instruction:
请将以下内容总结为三个要点。
Input:
一段文章。
Response:
1. ……
2. ……
3. ……

模型通过大量类似数据学习任务要求与回答形式之间的关系。

9.3 SFT 的训练目标 ​

对于目标回答 Token 序列:

y1,…,yT

可以使用:

LSFT=−∑t=1Tlog⁡Pθ(yt∣x,y<t)

通常只对需要学习的目标输出位置计算损失。

9.4 为什么需要 Loss Mask? ​

假设训练样本包含:

text
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]

对于原始权重矩阵:

W∈Rd×k

LoRA 不直接训练完整的权重更新矩阵,而是使用低秩分解:

ΔW=BA

其中:

B∈Rd×rA∈Rr×k

通常:

r≪min(d,k)

最终计算可以表示为:

W′=W+ΔW

LoRA 通常冻结原始权重,只训练低秩矩阵。

10.4 LoRA 为什么能够降低训练成本? ​

如果直接训练一个:

4096×4096

的矩阵,需要更新:

16,777,216

个参数。

如果采用秩为 16 的 LoRA:

4096×16+16×4096

需要训练:

131,072

个 LoRA 参数。

在这个单矩阵示例中,可训练参数数量明显减少。

但实际模型还包含其他参数和计算,因此不能将这一比例直接理解为完整训练成本的降低比例。

10.5 QLoRA ​

QLoRA 结合量化基础模型与 LoRA 微调,以降低微调期间的内存需求。[6]

需要注意,QLoRA 并不是简单地将所有训练参数都变成低精度。

其核心设计涉及量化的基础权重和可训练的低秩适配参数。

10.6 Full Fine-tuning 与 LoRA 的比较 ​

维度Full Fine-tuningLoRA
更新参数全部或大部分少量适配参数
显存需求通常较高通常较低
训练灵活性较高受适配结构限制
模型存储通常保存完整权重可保存 Adapter
典型用途大规模模型调整低成本领域或任务适配

LoRA 并不保证在所有任务上都能达到全参数微调的效果。

具体表现取决于任务、数据、模型和适配配置。

十一、什么是偏好优化? ​

11.1 为什么需要偏好优化? ​

假设模型针对同一个问题生成两个回答。

回答 A:

直接解释问题,并提供准确示例。

回答 B:

内容冗长,存在事实错误,而且没有回答核心问题。

即使两个回答都符合基本语言结构,用户也可能明显偏好回答 A。

偏好优化(Preference Optimization)研究如何利用这种相对偏好信息改善模型行为。

11.2 偏好数据 ​

典型偏好数据可以表示为:

(x,yw,yl)

其中:

  • x:输入;
  • yw:更受偏好的回答;
  • yl:较不受偏好的回答。

11.3 偏好数据从哪里来? ​

偏好数据可能来自:

  • 人类标注;
  • 专家评审;
  • 规则或程序化判断;
  • AI 模型评价;
  • 其他质量比较机制。

不同来源具有不同的可靠性和偏差。

11.4 偏好优化的目标 ​

偏好优化通常希望模型更倾向于生成高质量回答。

例如:

  • 更准确;
  • 更符合指令;
  • 更清晰;
  • 更安全;
  • 更符合特定任务要求。

但这些目标之间可能存在冲突。

因此,偏好数据的设计非常重要。

十二、什么是 RLHF? ​

12.1 RLHF 的定义 ​

RLHF(Reinforcement Learning from Human Feedback)是指利用人类反馈构建训练信号,并通过强化学习等方法优化模型行为的技术路线。

一种经典 RLHF 流程包括三个阶段。[7]

12.2 阶段一:监督微调 ​

首先使用示范数据训练指令模型。

text
Base Model
    │
    ▼
SFT
    │
    ▼
Instruction Model

12.3 阶段二:训练奖励模型 ​

收集人类对不同回答的偏好数据。

例如:

text
同一个问题
    │
    ├── 回答 A
    │
    └── 回答 B
          │
          ▼
       人类比较
          │
          ▼
       偏好数据
          │
          ▼
       Reward Model

奖励模型(Reward Model)尝试预测回答的相对质量或偏好程度。

12.4 阶段三:强化学习优化 ​

使用奖励模型提供的训练信号优化语言模型。

text
语言模型
   │
   ▼
生成回答
   │
   ▼
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 可以直接利用:

(x,yw,yl)

形式的偏好数据训练模型。

13.3 DPO 的核心思想 ​

DPO 通过比较偏好回答和非偏好回答的相对概率,并结合参考模型进行优化。

其常见目标形式为:

LDPO=−E[log⁡σ(βlog⁡πθ(yw|x)πref(yw|x)−βlog⁡πθ(yl|x)πref(yl|x))]

其中:

  • πθ:当前训练策略;
  • πref:参考策略;
  • β:控制偏离参考策略程度的超参数;
  • σ:Sigmoid 函数。

这一目标鼓励模型相对于参考策略,提高偏好回答的相对概率。

13.4 GRPO ​

GRPO(Group Relative Policy Optimization)是一种基于组内相对奖励进行策略优化的方法。

该方法在 DeepSeekMath 等研究中得到应用。[10]

其基本思想是:针对同一个问题采样多个回答,并利用组内奖励信息构造相对优势估计。

简化流程:

text
输入问题
   │
   ▼
生成多个候选回答
   │
   ▼
分别计算奖励
   │
   ▼
组内相对比较
   │
   ▼
计算优化信号
   │
   ▼
更新模型策略

GRPO 可以避免某些 PPO 实现中对独立价值模型的依赖,但并不意味着训练不需要奖励信号或其他计算资源。

13.5 三种方法比较 ​

方法类型主要训练信号主要特点
PPO强化学习策略优化奖励与优势估计使用受约束的策略更新
DPO直接偏好优化偏好回答对可直接使用离线偏好数据
GRPO强化学习策略优化组内相对奖励利用同组候选的相对表现

需要注意,DPO 与 PPO、GRPO 的训练流程不同。

不能简单地认为三者只是同一算法的不同版本。

十四、什么是结果奖励与过程奖励? ​

复杂推理任务中的训练信号可以根据评价对象进行区分。

14.1 Outcome Reward ​

结果奖励(Outcome Reward)主要根据最终结果进行评价。

例如:

text
数学问题
   │
   ▼
模型生成解答
   │
   ▼
检查最终答案
   │
   ▼
正确 / 错误

如果任务具有可验证答案,就可以使用程序化验证提供奖励。

14.2 Process Reward ​

过程奖励(Process Reward)尝试评价问题求解过程中的中间步骤。[11]

例如:

text
步骤 1:正确
步骤 2:正确
步骤 3:错误
步骤 4:……

过程奖励可以提供更细粒度的训练信号。

14.3 两者的区别 ​

维度Outcome RewardProcess Reward
评价对象最终结果中间步骤
标注粒度较粗较细
适用任务答案可验证任务多步骤任务
主要挑战信号稀疏步骤评价成本

14.4 结果正确不等于过程正确 ​

模型可能通过错误推理过程得到正确答案。

也可能采用合理方法,但由于计算错误得到错误结果。

因此,在某些任务中,过程评价与结果评价具有不同价值。

但过程奖励也可能引入步骤标注误差,并不天然比结果奖励可靠。

十五、模型如何形成推理能力? ​

推理能力是现代语言模型研究中的重要问题。

但需要区分训练方法、推理行为和最终任务表现。

15.1 什么是模型推理能力? ​

在本篇语境中,推理能力主要指模型处理需要多步骤信息加工、逻辑关系分析或问题求解任务的表现。

例如:

  • 数学证明;
  • 复杂计算;
  • 代码调试;
  • 多条件决策;
  • 逻辑问题。

15.2 预训练与推理能力 ​

预训练数据可能包含大量数学、代码和推理相关文本。

模型可以从中学习相关模式。

但预训练并不保证模型能够可靠地完成复杂推理任务。

15.3 推理相关监督微调 ​

开发者可以提供包含推理步骤的示范数据。

例如:

text
问题
   │
   ▼
分析步骤
   │
   ▼
最终答案

模型通过监督学习这些输出形式和任务模式。

15.4 强化学习与推理任务 ​

对于具有可验证结果的任务,可以使用奖励信号进一步优化模型。[12]

例如:

text
数学题
   │
   ▼
模型生成解答
   │
   ▼
程序验证答案
   │
   ▼
奖励信号
   │
   ▼
策略优化

这种训练可以改善模型在相应任务分布上的表现。

15.5 推理过程与推理结果 ​

需要注意,模型生成的推理文本不一定完整反映其内部计算机制。

因此:

可见的推理步骤、模型内部计算和最终答案正确性,是三个需要分别评价的对象。

15.6 推理训练不等于推理时计算 ​

训练阶段可以改善模型的推理相关能力。

推理阶段也可以通过增加计算、采样或验证改善任务表现。

这两类方法分别属于:

  • Training-time Compute;
  • Inference-time Compute。

后者将在 M7 中进一步研究。

十六、模型如何学会工具调用? ​

工具调用能力是模型后训练的重要应用之一。

16.1 工具调用的基本任务 ​

例如,用户提出:

查询北京今天的天气。

模型需要判断是否调用天气工具,并生成符合工具接口要求的参数。

16.2 工具调用训练数据 ​

一种典型数据形式为:

text
用户:
查询北京今天的天气。
模型工具调用:
get_weather({"city": "Beijing"})
工具结果:
……
模型回答:
……

通过类似数据,模型可以学习工具调用的格式和任务模式。

16.3 工具调用能力包含什么? ​

工具调用相关训练可能涉及:

  • 判断是否需要工具;
  • 选择工具;
  • 生成参数;
  • 处理工具返回结果;
  • 根据结果继续回答。

16.4 模型训练与工具执行的区别 ​

模型可以学习生成工具调用请求。

但工具执行通常由外部 Agent Runtime 或应用系统完成。

因此:

text
模型训练
    │
    ▼
形成工具调用相关能力
    │
    ▼
模型生成工具请求
    │
    ▼
外部运行系统执行工具

模型不会因为接受过工具调用训练,就自动获得操作外部系统的权限。

16.5 工具调用训练的局限 ​

模型仍然可能:

  • 选择错误工具;
  • 生成错误参数;
  • 忽略工具结果;
  • 在不需要工具时调用工具;
  • 对工具结果作出错误解释。

因此,工具调用能力需要结合模型评估和外部执行约束。

十七、多模态模型如何训练? ​

多模态模型需要同时处理不同模态的数据和训练目标。

17.1 单模态预训练 ​

可以先分别训练:

  • 文本编码器;
  • 图像编码器;
  • 音频编码器。

这些编码器学习各自模态的基础表示。

17.2 跨模态对齐 ​

使用图文、音文等配对数据,建立不同模态之间的对应关系。

例如:

zimage=fimage(x)ztext=ftext(y)

通过对比学习,使匹配样本的表示更接近。

17.3 多模态联合训练 ​

模型可以在联合输入上学习任务。

例如:

text
图片 + 文字问题
       │
       ▼
多模态模型
       │
       ▼
文字回答

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。

例如:

Bglobal=Bdevice×Ndevices×Naccumulation

这一关系适用于各设备批次配置一致的典型数据并行训练场景。

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 回归评估 ​

一次训练可能改善某些能力,同时损害其他能力。

因此,需要对已有能力进行回归测试。

例如:

text
训练前模型
    │
    ▼
基准测试
    │
    ▼
执行微调
    │
    ▼
训练后模型
    │
    ▼
相同基准测试
    │
    ▼
能力差异分析

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 完整流程 ​

text
确定训练目标
      │
      ▼
选择基础模型
      │
      ▼
准备训练数据
      │
      ▼
选择训练方法
      │
      ▼
配置训练环境
      │
      ▼
执行训练
      │
      ▼
模型评估
      │
      ├── 不满足要求
      │       │
      │       └──► 调整数据或训练配置
      │
      ▼
模型发布
      │
      ▼
实际应用
      │
      ▼
持续评估与迭代

二十三、如何根据实际需求选择训练方法? ​

不同训练方法适合不同场景。

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 工具调用