大模型是怎样学会预测下一个 Token 的?

从训练样本、交叉熵到反向传播,看懂一次完整训练

目录

  前两课里,我们看到了生成过程:模型根据已有文字,预测下一个 Token,再把它追加到末尾。

  但模型一开始并不知道什么词应该接在后面。它是怎样学会的?答案并不神秘:给它大量文本,遮住每个位置的正确答案,让它不断预测、对答案、改参数。

输入:小猫 趴在 窗边
目标:趴在 窗边 因为

训练的核心不是背下一整句话,而是在许多上下文中反复练习“下一个 Token 是什么”。

下一个 Token 训练流程

一次完整训练流程,点击查看原始 SVG

1、训练目标其实很朴素

  假设训练文本是:

小猫趴在窗边

  经过 Tokenizer 后,模型看到一串 Token。每个位置的任务都是:根据左侧内容,预测紧随其后的 Token。

已知上下文 正确的下一个 Token
小猫 趴在
小猫 趴在 窗边
小猫 趴在 窗边 <结束>

  这就是 Next Token Prediction,也叫自回归语言建模。

2、一句话如何变成训练样本

  实现时不需要把一句话手工拆成许多条数据。只要把同一个序列错开一位:

Token IDs: [小猫, 趴在, 窗边, 因为, 它]
输入 X:    [小猫, 趴在, 窗边, 因为]
标签 Y:    [趴在, 窗边, 因为, 它]

  输入和标签长度相同,标签只是整体向左移动一位。若批次形状为 $[B,T]$,模型最后会输出 $[B,T,V]$:每个位置都有一份覆盖整个词表的预测分数。

3、Teacher Forcing:一次并行预测

  生成时,模型必须先生成第一个 Token,才能继续生成第二个,因此是串行的。

  训练时,完整正确文本已经存在。模型在每个位置都使用真实的前文作为输入,这叫 Teacher Forcing。配合 Causal Mask,它可以同时计算所有位置的预测:

位置 模型能看到 要预测
1 小猫 趴在
2 小猫、趴在 窗边
3 小猫、趴在、窗边 因为

  “同时计算”不等于偷看答案。Causal Mask 仍然遮住未来位置,只是 GPU 可以把各位置的计算并行完成。

4、用交叉熵衡量错得多远

  模型输出 Logits,Softmax 把它们变成概率。假设正确答案是“窗边”:

候选 Token 模型概率
窗边 0.10
沙发 0.45
门口 0.25
其他 0.20

  模型给正确答案的概率只有 0.10,损失就会比较大。单个位置常用的交叉熵可以写成:

\[L=-\log p(y)\]

  $p(y)$ 是模型给正确 Token 的概率。概率越接近 1,损失越小;概率越接近 0,损失越大。训练时会对有效位置的损失取平均,Padding 位置通常不参与计算。

5、反向传播:模型如何改正

  算出 Loss 后,训练进入“改参数”阶段:

  1. 反向传播计算每个参数对 Loss 的影响,也就是梯度。
  2. 优化器根据梯度更新参数。
  3. 下一批文本再做一次前向计算。
  4. 重复许多次,让正确 Token 的概率逐渐升高。

  被更新的不只是 LM Head,也包括 Embedding、Attention、FFN 等可训练参数。可以把一次更新简化为:

\[\theta \leftarrow \theta-\eta\nabla_{\theta}L\]

  其中 $\theta$ 表示模型参数,$\eta$ 是学习率。梯度告诉模型往哪个方向改,学习率决定每次改多少。

6、训练与生成有什么不同

对比项 训练 生成
前文来源 数据中的正确 Token 模型刚生成的 Token
计算方式 多个位置并行 一次生成一个 Token
是否有标签 有 没有
是否计算 Loss 是 否
是否更新参数 是 否

  训练是在“有答案的练习册”上改参数;生成是在“没有答案的新问题”上使用已经学到的参数。

一次完整训练

阶段 发生了什么 典型形状
Tokenize 文本变成 Token ID $[B,T]$
Forward Transformer 计算上下文表示 $[B,T,d_{model}]$
LM Head 映射到词表 Logits $[B,T,V]$
Cross Entropy 与右移一位的标签比较 标量 Loss
Backward 计算参数梯度 与参数同形状
Optimizer Step 更新参数 新的 $\theta$

容易混淆的三件事

  1. 训练目标简单,不代表模型学到的能力简单。 大量数据和参数让预测任务迫使模型学习语法、事实和上下文关系。
  2. Loss 下降不等于模型真正“理解”了世界。 它只说明模型在训练目标上做得更好。
  3. 一次训练不是记住一次答案。 参数更新来自大量样本的共同作用。

第三课复习总图

大模型第三课复习总图

第三课复习总图,点击查看原始 SVG

  下一课,我们可以继续看:模型训练时,数据究竟是怎样被整理、拼接并送进 GPU 的?