Decoder 怎样预测下一个 token
Transformer Block 输出的仍是一组 C 维表示。要预测 token,必须再把每个位置投影到整个词表,使每个候选得到一个 logit。
完整前向路径
动画聚焦上下文 <BOS> 我 喜欢,正确标签是 猫。候选格中的 logits 可以直接修改;观察概率、贪心结果与交叉熵是否同时按预期变化。
从隐藏维到词表维
设 Decoder 最终表示为 V,输出矩阵为
logits[b,t,v] 表示样本 b 的位置 t 对词表 token v 的未归一化分数。矩阵乘法消去隐藏维 C,把最后一维换成词表维 V。
Logit 不是概率
Logit 可以为负,不要求位于 0 到 1,也不要求总和为 1。Softmax 才产生条件概率:
实现时先减去最大 logit 再计算指数,避免溢出。所有 logits 同时加上相同常数不会改变概率。
交叉熵只读取正确标签
若正确标签是 猫:
模型不是被直接要求“让其他概率为 0”,而是通过提高正确标签概率降低损失。完整训练损失通常对所有有效位置求和或平均:
padding 或被忽略的位置不应进入 valid。
为什么一条序列产生多个训练信号
一次前向得到 [B,T,V],每个有效位置都有一份 next-token 分类问题。长度为 4 的输入通常产生 4 个位置损失,而不是只训练最后一个位置。
这就是自监督信号的来源:原文本中的每个后继 token 都可以成为其前缀的训练答案。
参数怎样被更新
text
loss → logits → W_vocab 与 H
→ Decoder Blocks
→ QKV、FFN、Norm、Embedding 等参数1
2
3
2
3
“模型学会下一个 token”不是把答案写进一个静态表;梯度会共同调整整条前向路径,使相似上下文逐渐产生更合适的条件分布。
常见误解
- 概率最高就等于概率 1:错误,贪心只选择最大项。
- loss 下降证明事实正确:错误,它只证明指定数据上的训练目标改善。
- Softmax 会被训练:Softmax 本身没有可学习参数,梯度通过它流向 logits 来源。
- 只看 argmax 就能检查训练:argmax 不变时,概率和 loss 仍可能明显变化。
本节自测
静态答案与检查点
[2,5,20]。2. 错误。3. loss 一定下降,argmax 是否变化取决于其他候选。
小结与下一步
Decoder 输出经词表头得到 logits,Softmax 得到条件概率,正确标签概率的负对数形成训练损失。下一步把它放进语言模型的一次训练 step。