刚学 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"]

第一层:必须知道

读完后,可以试着不看资料,画出文本到 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 的零件以后,下一步不是继续背模型名,而是学会判断:这个模型为什么要改这个部件,省下了什么、又增加了什么开销,实验是否支持这样的选择。

先去模型家族地图看阅读方法;想直接比较 block 里哪里变了,可以打开交互式架构图。

面试速查

专题 重点
ML 数学面试主线 Softmax / CE / LSE、L1 / L2、Bias–Variance、MLE / MAP、BLUE
白板手写工具箱 稳定实现、梯度与数值检查
面试基础题 attention、normalization、训练与推理、Egg Drop 与树上 DP

这些章节保留下来,是因为模型出现问题时,真正需要定位的往往正是这些细节:梯度从哪里断了、mask 遮错了谁、训练和生成为什么对不上。

动手实验:把理解跑起来

不调用 PyTorch看清每个数字从哪来

纯 Python 写 BPE;NumPy 写 RNN、LSTM 与 scaled dot-product attention。

查看实验 →
调用 PyTorch用 PyTorch 训练小模型

自行实现 module、使用自动求导、训练 seq2seq,并验证 Transformer 的因果性与 KV cache。

查看实验 →
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,深层学不动