Skip to content

Decoder 怎样预测下一个 token ​

Transformer Block 输出的仍是一组 C 维表示。要预测 token,必须再把每个位置投影到整个词表,使每个候选得到一个 logit。

完整前向路径 ​

动画聚焦上下文 <BOS> 我 喜欢,正确标签是 猫。候选格中的 logits 可以直接修改;观察概率、贪心结果与交叉熵是否同时按预期变化。

从隐藏维到词表维 ​

设 Decoder 最终表示为 H∈RB×T×C,词表大小为 V,输出矩阵为 Wvocab∈RC×V:

logits=HWvocab∈RB×T×V

logits[b,t,v] 表示样本 b 的位置 t 对词表 token v 的未归一化分数。矩阵乘法消去隐藏维 C,把最后一维换成词表维 V。

Logit 不是概率 ​

Logit 可以为负,不要求位于 0 到 1,也不要求总和为 1。Softmax 才产生条件概率:

pv=ezv∑jezj

实现时先减去最大 logit 再计算指数,避免溢出。所有 logits 同时加上相同常数不会改变概率。

交叉熵只读取正确标签 ​

若正确标签是 猫:

Lt=−log⁡p(猫∣<BOS>,我,喜欢)

模型不是被直接要求“让其他概率为 0”,而是通过提高正确标签概率降低损失。完整训练损失通常对所有有效位置求和或平均:

L=1N∑t∈valid−log⁡p(yt∣x≤t)

padding 或被忽略的位置不应进入 valid。

为什么一条序列产生多个训练信号 ​

一次前向得到 [B,T,V],每个有效位置都有一份 next-token 分类问题。长度为 4 的输入通常产生 4 个位置损失,而不是只训练最后一个位置。

这就是自监督信号的来源:原文本中的每个后继 token 都可以成为其前缀的训练答案。

参数怎样被更新 ​

text
loss → logits → W_vocab 与 H
→ Decoder Blocks
→ QKV、FFN、Norm、Embedding 等参数

“模型学会下一个 token”不是把答案写进一个静态表;梯度会共同调整整条前向路径,使相似上下文逐渐产生更合适的条件分布。

常见误解 ​

  • 概率最高就等于概率 1:错误,贪心只选择最大项。
  • loss 下降证明事实正确:错误,它只证明指定数据上的训练目标改善。
  • Softmax 会被训练:Softmax 本身没有可学习参数,梯度通过它流向 logits 来源。
  • 只看 argmax 就能检查训练:argmax 不变时,概率和 loss 仍可能明显变化。

本节自测 ​

静态答案与检查点
  1. [2,5,20]。2. 错误。3. loss 一定下降,argmax 是否变化取决于其他候选。

小结与下一步 ​

Decoder 输出经词表头得到 logits,Softmax 得到条件概率,正确标签概率的负对数形成训练损失。下一步把它放进语言模型的一次训练 step。

最近更新