刚学 Transformer 时,我看过不少架构图。每个模块的名字都认识,但真要解释一句话怎么变成下一个 token,还是会卡住。
所以这部分按学习顺序来写:先看文本怎么变成数字,再看 RNN 和 LSTM 如何处理序列、Seq2Seq 如何连接输入和输出,然后学 attention 和 Transformer,最后到 decoder-only 大模型。先看例子,再看公式,最后动手写代码。
想先看看整份知识库怎么串起来,可以从学习与复习导读开始。这一页专门补语言模型(language model, LM)的基础,不需要先读完其他板块。
一条主线走到底
flowchart LR
A["文本"] --> B["Token IDs"]
B --> C["RNN / LSTM<br/>递归状态"]
C --> D["Seq2Seq<br/>编码与生成"]
D --> E["Transformer<br/>并行注意力"]
E --> F["Decoder-only<br/>自回归语言模型"]
F --> G["Pre-training · SFT · Preference · RL"]
第一层:必须知道
Tokenization
模型看不见文字。先看看一句话怎样被切分、编号,再变成向量。
阅读 → 02 · StateRNN 与 LSTM
如果只能从左往右读,过去该保存在什么状态里?普通 RNN 又为什么容易遗忘?
阅读 → 03 · MappingSeq2Seq
一段输入怎样变成另一段不同长度的输出,以及 attention 为什么会成为必要机制。
阅读 → 04 · AttentionVanilla Transformer
先从 2017 原版看清三处 attention 的输入来源和作用,再理解现代变体。
阅读 → 05 · GenerationDecoder-only
把 prompt 和答案放进同一条序列后,模型怎么用 next-token loss 学习生成。
阅读 →读完后,可以试着不看资料,画出文本到 logits 的计算过程,解释每一步的输入和输出。哪里画不出来,就回头补哪里。
主线之外:两种进阶读法
如果对“向量相似”或“训练一步”还有点模糊,可以先补向量与相似度和一次训练怎么走。想接着看图片如何加入这套计算,再去 CLIP → 视觉语言模型。
读完主线,可以继续推公式、看梯度和代码,也可以拿不同模型来比较:面对同一个问题,它们为什么选了不同的做法?最后都要回到两个问题——效果怎么样,代价有多大。
1. 深挖机制
| 专题 | 真正要弄懂的东西 | 读完能回答 |
|---|---|---|
| 从线性模型到神经网络 | Sigmoid / Softmax / ReLU / Tanh、特征映射(feature map)、反向传播、XOR | 四个函数为什么不能互换?非线性到底改变了什么? |
| 序列梯度与门控 | BPTT、Jacobian 连乘、梯度消失(vanishing gradient) / 爆炸、LSTM cell state | 为什么“能记住”首先是一个优化问题? |
| 注意力的数学与形状 | $Q/K/V$、mask、多头、RoPE、GQA、RMSNorm、SwiGLU | 一次 attention 到底乘了哪些矩阵? |
| 语言模型目标与生成 | causal loss、teacher forcing、exposure gap、sampling、cache | 训练时一次并行算完,为什么生成时仍要逐 token? |
2. 横向读模型家族
知道 Transformer 的零件以后,下一步不是继续背模型名,而是学会判断:这个模型为什么要改这个部件,省下了什么、又增加了什么开销,实验是否支持这样的选择。
Llama
从常见的 dense decoder 看起,分清架构、数据、训练规模和 post-training 各自带来的影响。
精读 → One family, many modesQwen
看一个家族怎样覆盖 dense / MoE、不同尺寸,以及 thinking / non-thinking 两种推理方式。
精读 → Co-designDeepSeek
分别看 MLA、MoE 和推理训练解决了什么,再看它们怎样配合、需要多少计算。
精读 → Compact & multimodalGemma
从较小模型和部署约束出发,看 local/global attention、distillation 与视觉能力怎样组合。
精读 →先去模型家族地图看阅读方法;想直接比较 block 里哪里变了,可以打开交互式架构图。
面试速查
| 专题 | 重点 |
|---|---|
| ML 数学面试主线 | Softmax / CE / LSE、L1 / L2、Bias–Variance、MLE / MAP、BLUE |
| 白板手写工具箱 | 稳定实现、梯度与数值检查 |
| 面试基础题 | attention、normalization、训练与推理、Egg Drop 与树上 DP |
这些章节保留下来,是因为模型出现问题时,真正需要定位的往往正是这些细节:梯度从哪里断了、mask 遮错了谁、训练和生成为什么对不上。
动手实验:把理解跑起来
cd 00-foundations/code
python tokenizer_from_scratch.py
python sequence_numpy.py
python sequence_torch.py
python test_learning_path.py
怎样使用这套内容
可以先跟着例子读,卡在某一步再看公式或代码。读到新架构时,试着比较:它换掉了哪个部件,为什么换,原来的做法在哪里不够用?
我只想先把主线看懂
按 01 → 05 读主线,折叠的推导和代码可以先跳过。先把各个方法的关系看懂,再回头补细节。
我想把它讲清楚,而不只是“听说过”
每读完主线的一篇,就去读对应的深挖页,并做到三件事:写出核心公式、标出每个张量形状、说出该架构解决了前一代的哪个瓶颈。
我想看懂一篇新的模型报告
先用模型家族精读里的六个问题做骨架,再回到交互图比较 block。不要先抄参数;先判断变化发生在架构、训练、post-training、推理,还是评估。
我想亲手写到它出 bug
先跑无框架版本,再跑 PyTorch 版本。不要一开始就调用高层 API;如果你没亲手处理过一次 hidden state、causal mask 和 cache position,很多 bug 看起来都会像“训练不稳定”。
这条路最终接到哪里
基础模型训练完成后,问题才从“它怎样预测下一个 token”转向“怎样让它更符合任务、偏好和真实反馈”。下一站是 Post-Training;如果关心模型怎样寻找外部证据,则继续读 Search。
本页术语 3
- 语言模型 language model, LM
- 对文本序列建模,用上下文预测或生成后续内容
- 特征映射 feature map
- 把原始输入换到另一个坐标系的函数 φ
- 梯度消失 vanishing gradient
- 激活饱和导致梯度趋近 0,深层学不动