从0训练LLM · 现代大模型体系 导读 5 课 + 1 条岔路 ≈ 3 小时 页内实验 ×8
C0 序章:为什么是 Transformer + 预测下一个词 章导读

序章:为什么是 Transformer + 预测下一个词

终点为什么是「下一个词的概率」,中间为什么是注意力。从数数的 bigram 出发,每一代方法都死在一个能算出来的数字上:0 概率、0.9 的 100 次方、塞进一个向量的整句、N×N 的分数矩阵——一路被逼到今天的 Transformer 与自回归预训练。

主线定位

这门课要从零搭出一条完整的流水线:一句人类文字进去,每个位置出来一个「下一个 token 的概率」。序章还没学任何一个环节,所以整条都是灰的——先看全貌。

累计数据流 · 从文字到下一个 token 的概率 已学本课新增还没学
解码层

点任一已学环节,看这一步的输入 → 输出形状、参数量,以及它解决了什么问题(数字取自 Qwen/Qwen3.8-27B 真实 config)。

贯穿全课的例句是「小明 把 苹果 给了 小王」。对这条流水线来说,它就是一串「下一个词」:读到「小明 把 苹果 给了」,要给「小王」一个尽量高的概率。序章不拆任何一个零件,只回答两个「为什么」:

本章问题链

每一课只回答一个问题;上一代在哪个数字上失败,就逼出下一课的问题。

课这一课的问题朴素方案在哪个真数字上失败一句话
第 1 课下一个词的概率怎么算?数数:「小王 → 喜欢」没见过,P = 0,loss = ∞语言模型只给下一个词一个概率;数数能算,但没见过就是 0
第 2 课怎么记住任意长的历史?加大窗口:锚点词表下看前 4 个词就要 9.44×10²⁶ 格;RNN 的梯度 0.9100 = 2.66×10−5固定状态能记任意长,梯度却每往回一步乘一次
岔路为什么 2026 年「固定状态」又回来了?64 层全用注意力,262,144 个 token 的 KV 要 64 GiBKV 随长度线性涨,固定状态不涨但有容量上限,于是 3:1 混合
第 3 课输入一句、输出一句,长句为什么丢?整句压进一个定长向量:RNNencdec-50 全测试集 BLEU 17.82注意力让解码的每一步都回看所有编码状态(26.75)
第 4 课只留注意力,行不行?RNN + 注意力:循环层串行 O(n),锚点原生长度下要走 262,144 步删掉循环换来并行与一步可达,代价 N×N 的分数矩阵
第 5 课没有标注怎么学?怎么知道学得好不好?逐任务标注:一个英译法模型要 1,200 万句对标签是文本自己的下一个词;开局 loss ≈ ln V = 12.42

演进地图

每一代死在哪个数字上;每一课的开头都会复用这张图,高亮本课所在的那一代。

三层交互

层本章里的组件在哪一课
概念动画演进地图;「错开一位」看标签从哪来;梯度逐格回传(序列条着色)各课开头、第 5 课、第 2 课
算法模拟器(真算法、小数据)bigram 实验台(真计数、平滑、规模面板);标量 RNN 前向 + 梯度连乘 + LSTM 细胞通路;定长向量 vs 保留全部 + 注意力;固定状态的容量上限第 1、2、3 课与岔路
真模型 / 真数据锚点 config 现算的 N² 显存账本、KV cache 与 GDN 固定状态账本;我们自己语料上的 bigram 零概率;我们自己模型的开局 loss、基线阶梯与验证曲线回放(c0-prologue.json,由 04-实践项目/experiments/exp_c0_prologue.py 导出)第 4 课、岔路、第 1 课、第 5 课

项目推进:训练目标与第一块仪表

对应 04-实践项目/MILESTONES.md 的「C0 序章」。分工照旧:代码 AI 来写,决策你来做。取批函数(y = x 右移一位)已经写好,基线已经跑完 400 步;本章组件读取的 c0-prologue.json 直接从基线日志和切好的数据导出,不需要新训练。

🧭

你要拍板的三件事

  1. 训练目标选什么?「下一个 token 的交叉熵」:标签免费、开局有标准值、一次前向并行算完所有位置(第 5 课)。对照方案 BERT 式的「遮住中间的词」不能直接从左到右生成。
  2. 验证集怎么切?按段落切出语料末尾的一段、不打乱(项目 minillm/data.py 的做法)。理由:验证集应该是「没见过的后文」;打乱会让验证集与训练集共享相邻段落,loss 偏乐观。
  3. 拿什么判断「学到了」?一条基线阶梯:均匀瞎猜(ln V)→ 只看词频的 unigram → 第 1 课的 bigram 加 k 平滑。单看 loss 往下走说明不了什么。

验收标准(全部可测):

坑与带走

坑症状后果怎么办
以为语料够大就不会有零概率验证集上计数模型的 loss = ∞计数模型在真实文本上不可用平滑只能止血;锚点词表下 trigram 有 1.53×10¹⁶ 格,连 36T token 也只能填 0.235%(第 1 课)
以为平滑之后问题就解决了没见过的组合拿到完全相同的概率「小王 喜欢」和「小王 学习」分不出高下让相似的词共享统计:词向量(C1 兑现)
以为 RNN 能记住任意长的历史长距离依赖怎么训都学不会早期的词拿不到训练信号看梯度连乘:0.9100 = 2.66×10−5(第 2 课)
以为循环权重大于 1 就一定爆炸调大权重后梯度照样消失误判原因、调错方向状态进入 tanh 饱和区时,真实因子小于 1(第 2 课实验台)
以为 LSTM 解决了长依赖很长的序列上仍学不好,训练仍慢高估 LSTM细胞通路仍是遗忘门连乘,仍然串行;遗忘门是 2000 年加的(第 2 课)
以为固定状态层省了参数、等于旧 RNN读不懂 Qwen3.8 的 48 层 GDN误读架构它省的是随长度增长的记忆,训练能沿序列并行(岔路)
以为固定状态什么都记得住长文里精确找回某个细节失败高估线性注意力d×d 的状态最多无干扰地装 d 对,所以保留 1/4 的注意力层(岔路)
以为 seq2seq 一遇长句就崩,或定长向量加大就行把倒序、大状态的效果当反例或当解药两头都错瓶颈是猜想 + 实验;容量随 d 线性,注意力让记忆随输入增长(第 3 课)
把注意力、自注意力归给 Transformer报告里出处写错「对我新」当成「对领域新」注意力出自 Bahdanau 2014;Transformer 的新意是完全不用循环与卷积(第 3、4 课)
以为 Transformer 是被证明的最优结构把每个设计当定理不会评估新架构每条结论标证据等级(第 4 课)
以为 N² 的开销来自 head_dim以为缩小 head_dim 就能省显存优化方向错分数矩阵 N×N 与 head_dim 无关(第 4 课计算器)
以为预训练 + 微调是 GPT-1 首创出处写错误读历史首见 Dai & Le 2015(第 5 课)
不看开局 loss初始化太大、标签没错开、掩码写错,很晚才发现白跑一次训练第 0 步核对 ln V,差值小于 0.1(第 5 课、项目 M0)
只拿困惑度选模型困惑度低的模型生成反而不好选错模型困惑度只量平均把握(第 5 课);C14 第 3 课给证据

这一章你应该带走的(各课「一句话」):

深入这一章

每条都实际打开核对过(2026-09-26):写清它讲清了什么、对应哪一课、为什么推荐。

🎮 想更直观 10–30 分钟

先玩本章的组件;下面四条是外部最好的可视化入口
8 min官方双语需联网 2024-11 · 官方中文账号
一个视频讲完「预测下一个词 → Transformer → 预训练与后训练」的大轮廓。
对应全章与第 5 课:先有整张图,再逐课拆开。不讲 n-gram、RNN 与 seq2seq 这段历史。
15 min英文需联网
逐帧动画:编码器把整句压成一个上下文向量;再换成注意力,每一步回看全部编码状态。
对应第 3 课:两种方案的动画版,看完再玩第 3 课的模拟器。
20 min英文需联网 Olah & Carter 2016 · 同行评审
把注意力画成连线粗细的交互文章,从增强的 RNN 讲到注意力。
对应第 3、4 课:从 RNN 走到注意力的那座桥。
15 min英文需联网 浏览器里跑真 GPT-2 small
输入一句话,逐层看到注意力矩阵,以及最后那一行下一个 token 的概率。
对应第 4、5 课:N×N 的分数矩阵和「下一个 token 的概率」都能在真模型上点开看。

🔬 想吃透原理 1–3 小时

唯一必看:Karpathy 的 makemore 第 1 集。其余按课挑
1 小时 58 分英文需联网 B 站三方中英字幕 BV11yHXeuE9d 第 2P(授权未标注)
从零写一个字符级 bigram:计数 → 归一化成概率 → 平均负对数似然当 loss;遇到没见过的组合 loss 变成无穷大,用假计数平滑修好;最后把计数换成一层神经网络,用梯度下降学出同一张表。
对应第 1 课与第 5 课:本章的第一课和最后一课在一段代码里连起来——数数的模型和训练出来的模型,优化的是同一个 loss。
60 min英文需联网 2018-06
从 seq2seq 的定长向量、Bahdanau 注意力,写到自注意力与 Transformer,公式与出处完整。
对应第 3、4 课:本章后半段的连续长文版。
30 min英文需联网 2015-08
一步一步画出 LSTM 的每个门,标准教学图的出处。
对应第 2 课:盯住细胞状态那条横线——它就是「加法通路」,梯度沿它走时每步乘遗忘门。
32 + 34 min官方双语需联网 Part 1:BV1yVNU6xERx
从「编码一个符号要几个比特」讲到熵与交叉熵,说明语言模型为什么用交叉熵当 loss。
对应第 1、5 课:本章一直在用的「平均 −ln P」从哪来。

📄 想读原文 按需

有本地 PDF 的直接打开;其余链 arXiv 或原始出处
Sutskever, Vinyals, Le 2014需联网
§3.3 倒序原文(PPL 5.8 → 4.7、BLEU 25.9 → 30.6);§3.4「用 8000 个实数表示一个句子」;§3.7 长句表现。
第 3 课定长向量方案的出处,也是「它在长句上其实不差」这个反例的出处。本地论文库暂无 PDF。
Bahdanau, Cho, Bengio 2014需联网
§1 的瓶颈猜想;加性注意力;Table 1 与图 2 的句长实验。
第 3 课:注意力的诞生。读 §1 与 Table 1 就够。本地论文库暂无 PDF。
Vaswani et al. 2017
§2 自述新意;§4 与 Table 1 的串行步数、路径长度与每层复杂度;Table 3 的消融。
第 4 课:删掉循环换来什么、付出什么,原文自己算过。
Radford et al. 2018需联网
§2 把 Dai et al. 列为最接近的工作;§4.1 BooksCorpus(7,000 多本书)与 12 层 decoder-only 的配置,token 级困惑度 18.4。
第 5 课:decoder-only 自回归预训练的起点;顺带核对「预训练 + 微调不始于 GPT-1」。
🔍 各课引用的其他原文 第 1 课:Shannon 1948 原文 PDF(§3 词级近似);Kneser & Ney 1995 DOI。
第 2 课:Bengio, Simard, Frasconi 1994 DOI(付费墙);Hochreiter & Schmidhuber 1997 PDF;Gers, Schmidhuber, Cummins 2000 DOI(付费墙);Mikolov et al. 2010 PDF;Pascanu et al. 2012 arXiv 1211.5063。
第 3 课:Cho et al. 2014b arXiv 1409.1259。
第 5 课:Dai & Le 2015 arXiv 1511.01432;GPT-2 本地 PDF;GPT-3 本地 PDF。
岔路:Katharopoulos et al. 2020 arXiv 2006.16236;Gated DeltaNet arXiv 2412.06464;Kimi Linear arXiv 2510.26692;Mamba arXiv 2312.00752。
🚫

排除了什么(也是筛选标准):① 只给「Transformer 能并行,所以取代了 RNN」一句结论的科普文与对比速查表——没有机制,也不提 N² 的代价,第 4 课把两面都算了出来;② B 站「保姆级 / 全 N 集 / 2026 最新」类无授权合集(可视化调研 V2 §8 列过具体编号)——授权不明、标题党,本章优先原作者官方账号,第三方字幕搬运在条目里写明;③ exploRNN、LSTMVis、rnnExplainer——调研核实时不可达或只剩空壳页面;④ 各种「梯度消失可视化器」小工具——同质化、没有作者背书,第 2 课的实验台用真前向计算覆盖了它们;⑤ 把 Transformer 说成「被证明最优」、把注意力归给 Transformer、把「预训练 + 微调」归给 GPT-1 的文章——出处错,会把本章纠正的误解重新种回去。