简介:本文系统拆解大语言模型从预训练到对话能力对齐的完整训练链路,重点讲清单向注意力、归一化、位置编码、奖励模型等关键机制的设计动机与运行逻辑,帮助读者建立“为什么这样训练、底层如何协作”的整体认知。
大语言模型(Large Language Model,LLM)的训练并非一次性完成,而是一条分阶段、逐层对齐的训练流水线。它的目标可以概括为:先让模型学会“说话”(生成通顺文本),再让模型学会“好好说话”(按人类偏好回答问题)。
从机制上看,这条流水线通常包含以下几个阶段:
本文重点围绕前三个阶段的底层机制展开,尤其是模型结构、注意力掩码、归一化方式、位置编码和奖励模型的工作原理,回答“为什么这样设计”和“内部如何运行”这两个核心问题。
如果直接用人工标注的对话数据训练一个模型,会遇到两个瓶颈:
因此,业界普遍采用“先无监督预训练、后有监督对齐”的两段式思路:先用海量文本让模型学到词与词之间的概率关系,再用少量高质量数据教它“按指令行事”。
这就引出第一个关键问题:基座模型的结构是如何设计的?为什么它只能看到左侧信息?
基座模型通常以 Transformer 的 解码器(Decoder) 部分作为语言模型框架,并去掉其中用于跨序列交互的多头注意力层,只保留自注意力(Self-Attention)和前馈网络(Feed-Forward Network)。其典型结构可描述为:
输入词序列 → 词嵌入 → [自注意力 + 前馈网络] × N 层 → 输出概率分布
每一层的核心计算过程为:
在解码器的自注意力计算中,会引入 Mask(掩码)机制。具体做法是:在计算每个位置的注意力权重时,将当前位置右侧(未来位置)的权重置为负无穷,使其经过 Softmax 后概率为 0。
这样做的结果是:
这种结构被称为 单向 Transformer。与同时利用左右上下文的其他结构相比,单向设计的优势在于:
一句话总结:掩码不是为了限制模型,而是为了让训练目标与生成任务严格对齐。
在 Transformer 的层结构中,归一化的位置会影响梯度传播。常见做法有两种:
| 方式 | 归一化位置 | 特点 |
|---|---|---|
| Post-Norm | 残差相加之后 | 表达能力强,但深层时易梯度消失 |
| Pre-Norm | 子层输入之前 | 梯度传播更稳定,深层训练更易收敛 |
采用前归一化(Pre-Norm)后,残差路径上的梯度可以更直接地回传,整体上更难出现梯度消失问题,使模型在层数加深时训练更加稳定。这也是当前大模型普遍采用的设计。
位置编码用于让模型感知词序。常见方案包括绝对位置编码和相对位置编码。旋转位置编码(RoPE)通过将位置信息编码为旋转矩阵作用于注意力计算中,具有更好的 外推性。
所谓外推性,是指模型在训练时见过的序列长度与推理时输入的序列长度不一致时,仍能保持较好表现的能力。相比传统相对位置编码,旋转位置编码在长度外推场景下衰减更平缓,因此更适合长文本场景。
第一阶段虽然常被称为“有监督学习阶段”,但在实际操作中通常分为两个步骤:
这一能力对外表现为模型的 generate(生成) 方法:给定一段前缀,模型逐词生成后续内容。
这一能力对外表现为模型的 chat(对话) 方法:模型能够理解指令并给出结构化回答。
对于同一个问题,模型可以生成多个不同答案。这些答案没有绝对分数,但人类很容易判断“哪个更好”。因此,训练目标从“打绝对分”转为“学相对排序”。
奖励模型通常以 SFT 模型为底座,将最后一层替换为一个输出标量的神经元,使其成为一个 回归模型:
输入:问题 + 回答 → 输出:一个实数分数
对同一问题,人工标注员对多个回答进行排序。例如三个回答 A1、A2、A3,标注结果为:
A2 > A1 > A3
将排序拆成两两对比样本:
其中 c 表示排名较高的回答,r 表示排名较低的回答。训练目标是让排名靠前的回答得分更高。
将每一对 (c, r) 输入奖励模型,分别得到分数 score(c) 和 score(r),构造损失函数使 score(c) 尽量大于 score(r)。通过反向传播更新模型参数,最终实现:
score(A2) > score(A1) > score(A3)
这样,奖励模型就学会了用分数表达人类偏好,为后续强化学习阶段提供反馈信号。
假设我们要训练一个能回答“苹果是什么”的对话模型:
优势:
限制:
大语言模型的训练是一条从“会说话”到“说得好”的渐进式流水线:单向 Transformer 解码器通过掩码机制保证生成一致性,前归一化和旋转位置编码提升训练稳定性与长度外推能力;预训练赋予模型续写能力,有监督微调赋予对话能力,奖励模型则将人类偏好转化为可优化的分数信号。理解这条链路中每个模块的设计动机与协作方式,才能真正理解大模型为何能表现出对话与推理能力。