同一套 GPT,两条完整路线:训练更新与逐 Token 生成
沿 Hi 你! 串起 GPT 的完整计算:位置向量、LN 与 QKV、两次残差、MLP、全词表 logits、交叉熵和 AdamW,再看固定参数怎样逐 Token 生成与增量解码。用三张双语图解、两份分步动画区分参数、激活、梯度与生成上下文。
沿 Hi 你! 串起 GPT 的完整计算:位置向量、LN 与 QKV、两次残差、MLP、全词表 logits、交叉熵和 AdamW,再看固定参数怎样逐 Token 生成与增量解码。用三张双语图解、两份分步动画区分参数、激活、梯度与生成上下文。
前三篇把 loss 到每个参数的二十六步全推了一遍,但那是打开黑盒逐步走。这一篇把黑盒合回去:交叉熵的八步压成一行、BatchNorm 的十步压成一行,用的是同一个方法 —— 数一数变量在前向里出现几次,反向就有几项。压完撤掉 backward() 训 20 万步,val loss 2.1105,而 PyTorch 训的是 2.1106。
上一篇把张量求导的判据推完了,这一篇把它用满八次 —— 从 loss 一路倒推回 logits。真正带得走的不是那八个式子,是一套给自己判卷的方法、三条操作规则,以及一个「梯度必须恰好是 0」的性质:它反过来能当调试手段用。
隐藏层就是 3B1B 那个加权求和,只是一次算完 22 万个样本。张量是一条内存加一份说明书,view 零成本、转置之后就不能 view;手写 loss 和 F.cross_entropy 数值相同,却会算出 nan。
猫狗二分类和「预测下一个字符」是同一件事,只是类别数从 2 变成 27。为此要补的三个零件:one-hot、softmax、交叉熵 —— 以及交叉熵为什么不是「更高级的平方误差」。