输入查几行,输出算整表:从 Token ID 到下一 Token
Tokenizer 交出一串 ID 之后,模型怎样继续?用同一个五 Token 小模型,查两张向量表、走完一个 Transformer Block、展开 lm_head 的每个候选分数,再手算训练损失、概率抽取、温度、top-k 与 top-p。附三张双语图解、两个交互演示和可复算的完整代码。
Tokenizer 交出一串 ID 之后,模型怎样继续?用同一个五 Token 小模型,查两张向量表、走完一个 Transformer Block、展开 lm_head 的每个候选分数,再手算训练损失、概率抽取、温度、top-k 与 top-p。附三张双语图解、两个交互演示和可复算的完整代码。
softmax(QKᵀ/√dₖ)V —— 这一篇把它的每个符号一个一个挣出来。从最笨的「求平均」开始,经过「下三角矩阵乘就是加权求和」「softmax 配 −∞ 屏蔽未来」,再到「分数由 q·k 算出来」:从求平均到注意力,代码只改了一行。encoder 和 decoder 也只差一行。最后那个 √dₖ,是第十五篇那条方差公式换了个地方用。
上一篇把张量求导的判据推完了,这一篇把它用满八次 —— 从 loss 一路倒推回 logits。真正带得走的不是那八个式子,是一套给自己判卷的方法、三条操作规则,以及一个「梯度必须恰好是 0」的性质:它反过来能当调试手段用。
先不用神经网络,只靠数频次做出完整语言模型(loss 2.4544),再用 one-hot + 矩阵乘法 + softmax 重做一遍(2.46)。两条路殊途同归,这回答了「神经网络到底在学什么」。
猫狗二分类和「预测下一个字符」是同一件事,只是类别数从 2 变成 27。为此要补的三个零件:one-hot、softmax、交叉熵 —— 以及交叉熵为什么不是「更高级的平方误差」。