跳转到内容

Transformer 系统学习路径:第1章 · 基础知识

分类machine-learning/transformer · 风格:专业 + 科普 · 少公式 · 重直觉

风格:专业 + 科普 · 少公式 · 重直觉(为什么 / 怎么调 / 效果是什么)
前置总览
本章目标:能手画一个 Block、能讲清注意力、能区分三大架构
配图:本目录 figures/ 下 8 张教学 SVG(可直接放大查看)


  1. Transformer = 序列加工流水线,核心不是「更深」,而是「任意位置可以直接对话」。
  2. 注意力 = 动态路由:每个位置自己决定「该听谁、听多少」。
  3. 一层 Block 不改形状[条数, 长度, 维度] 进,同样形状出——变的是每个位置「懂不懂上下文」。

1. 为什么需要 Transformer?(接力赛 vs 圆桌会)

Section titled “1. 为什么需要 Transformer?(接力赛 vs 圆桌会)”

一句话、一段 DNA、一条蛋白,本质都是:

一串有顺序的符号 → 你想预测下一个、填空、分类、生成……

领域序列例子典型输出
文本词 / 子词下一词、翻译、摘要
DNAA/C/G/T 或 k-mer启动子、剪接、变异效应
蛋白氨基酸结构、功能、结合
方法优点缺点(人话)
词袋 / 统计快、稳没顺序、没结构
CNN擅长局部 motif(像找基序)要够着远处得堆很多层
RNN / LSTM天然有顺序传话游戏:一站站传,远了就糊;还难并行

RNN 接力赛 vs Transformer 圆桌会议

不靠一站站传,而是每个位置直接问所有位置:你和我有多相关?再按相关度混合信息。

效果直觉
长程依赖第 1 位和第 1000 位可以「一步对话」(代价:长度一长,算力涨得快 → 第2章)
可并行训练时整句一起算,不像 RNN 必须按时间步串
可粗看注意力权重能提示「模型在看哪里」(别过度神化)
示意图

2. Tokenization:切成模型能吃的「积木」

Section titled “2. Tokenization:切成模型能吃的「积木」”

模型不吃字符串,吃的是 整数 ID 列表
Tokenization = 切分规则 + 词表

Tokenization:切积木 + 编号

粒度直觉序列变长?典型场景
字符 / 单碱基 / 单氨基酸词表小、最忠实很长DNA 单碱基、蛋白氨基酸
子词 BPE常见片段压缩,罕见的拆开中等自然语言、部分基因组模型
k-mer固定窗口滑,生信老传统仍较长早期基因组 DL

调参手感:

  • 切得太碎 → token 串爆长 → 算力和上下文都紧
  • 切得太粗 → 词表爆炸,罕见片段泛化差
  • 记得留特殊符号:[CLS][MASK][SEP][PAD]、物种标签等

生物向细节(步长、反向互补、多物种词表)→ 第3章。这里只要记住:tokenization 是第一道「信息瓶颈 + 长度预算」闸门。

批处理时长度不同 → 补 PAD,并 mask 掉:别让模型去「听」填充位。


3. Embedding + 位置:内容名片 + 座位号

Section titled “3. Embedding + 位置:内容名片 + 座位号”

Embedding 查表 + 位置座位号

每个 token ID → 查一张可学习的表 → 得到一个向量(如 512/768 维)。

[长度 L 的 ID] → [L, d_model] 的矩阵

每个 token 领到一张「内容名片」;后面所有计算都在这个空间里做。

相似用法的 token,训完后向量会靠近——这就是「语义几何」的直觉。

标准自注意力对换位置不敏感(它主要看内容像不像)。
但「ATG」≠「GTA」,基因组和语言都有顺序。

所以要注入位置:

内容名片 + 座位号名片 → 既知道是谁,也知道坐哪。

类型(第1章够用)直觉
正弦固定编码用不同频率的「波」标记位置
可学习位置向量每个座位一个可训向量(常卡死最大长度)

更现代的 RoPE / ALiBi → 第2章。


4. Self-Attention:圆桌上的 Q / K / V

Section titled “4. Self-Attention:圆桌上的 Q / K / V”

这是心脏。先建立画面,再记流程。

Q/K/V 注意力圆桌

角色类比在算什么
Q Query「我在找什么?」当前位提出的问题
K Key「我的名牌 / 广告牌」对外展示的检索键
V Value「我背包里的货」真正被加权拿走的内容

三步走:

  1. 我的 Q所有人的 K 比相似度 → 打分
  2. Softmax 变成权重(一行加起来 = 100% 注意力预算
  3. 按权重混合所有人的 V → 我的新向量
示意图
输入 X: [L, d]
打分矩阵: [L, L] ← 每个位置对每个位置打一枪
输出: [L, d] ← 每个位置一个「更懂上下文」的向量

[L,L] 是福也是祸:全局可见;长度一长,内存和算力涨得很快(第2章管效率)。

  • 分数差很大 → 权重很尖(几乎只听一个人)
  • 分数差不多 → 权重很平(平均听)

缩放(scale)要点:维度高时点积容易爆大,Softmax 过尖、难训,所以实践上会除以一个与维度相关的数——为了好训练,不是玄学。

句子:[CLS] 促 转 录
对「转」:可能高权重看「促」「录」;更深的层才可能抓更远调控语境。
浅层偏局部共现,深层才更抽象——和 CNN 感受野变大有点像,但注意力是内容决定的,不是固定窗口。


多头注意力:多副眼镜

单头容易学成一种「平均看世界」的方式。
多头 = 多套独立的 Q/K/V,每套偏一种模式,最后拼接再压回原来的宽度。

头(概念示意)可能关注
头1相邻 / 局部
头2长程搭配
头3特殊符号、边界
头4motif 式局部模式

生物直觉:有的头偏局部基序,有的偏长程关系——单头解释别过度神化。

旋钮手感: 头数 ↑ → 模式种类多,但每头维度可能变碎;d_model 通常能被头数整除(如 768/12=64)。


6. 一个 Block:高速公路 + 两个服务区

Section titled “6. 一个 Block:高速公路 + 两个服务区”

Transformer Block 高速公路隐喻

注意力解决 「和谁混合」
混合完还要 「每个位置自己再加工」FFN / MLP

示意图
组件人话
残差应急车道:可不加工直通,信号不易洗没,深层好训
LayerNorm把每个位置的数值校准到稳定范围,优化器好干活
FFN通常放大到约 4× 再压回;逐位置加工(纵向)
注意力位置之间换信息(横向)

现代大模型更常 Pre-Norm(Norm 在子层前),更好堆深层。第1章记住:有 Norm + 残差,深层才稳。

形状口令(肌肉记忆):

进: [B, L, d] 出: [B, L, d]
变的是含义,不是形状
任务常见读出
句分类[CLS] 或平均池化 → 线性层
token 分类每个位置一个分类头
生成每个位置投影到词表 → Softmax

7. 三大架构:谁能看谁、适合干什么

Section titled “7. 三大架构:谁能看谁、适合干什么”

Encoder / Decoder / Enc-Dec 三列对比

架构可见范围经典预训练擅长生物影子
Encoder-only双向全句MLM 填空分类、表征、检索特征蛋白 LM 取 embedding
Decoder-only因果(只看过去)下一 token续写、对话、生成基因组自回归 FM
Encoder-Decoder编码双向 + 解码因果 + 交叉注意力seq2seq翻译、A→B 转换序列→注释/设计

交叉注意力要点: 解码器用自己的 Q,去读编码器的 K/V——生成时「盯着源序列的哪些位置」。

第1章 决策树:

输出是「整段标签 / 向量」? → 偏 Encoder
输出是「往后写 / 自由生成」? → 偏 Decoder
输入一种、输出另一种结构? → 考虑 Enc-Dec

很多现代系统用 Decoder-only + 提示词 包打天下;生物 foundation model 两边都有,第3章再对实例。


8. 掩码与生成:考试不能偷看答案

Section titled “8. 掩码与生成:考试不能偷看答案”

因果掩码 + 自回归生成循环

掩码作用场景
Padding mask别看 PAD所有架构 batch
Causal mask别看未来Decoder 训练/生成
MLM mask输入挖空,预测空位BERT 式预训练

自回归生成循环:

  1. 输入已有 token
  2. 预测「下一个」的概率分布
  3. 采样或取最大(温度、top-p → 第2章)
  4. 拼到后面,重复直到结束

Teacher Forcing: 训练时常常喂标准答案前缀,而不是模型自己刚写错的字——训得快,但和真实推理有落差。知道有这回事即可。

KV Cache(缓存已算过的 K/V)是推理加速关键 → 第2章。


实验做什么你要体会到什么
A 热图画某层某头的 [L,L] 注意力行和≈1;有的头很局部
B 打乱位置去掉/打乱位置编码内容+位置缺一不可
C 掩码作弊概念上:无因果掩码训 LM验证集虚高,一生成就废

能口头答上,即可进第2章:

  • RNN 为何难并行、难抓超长依赖?Transformer 靠什么缓解?
  • Token、Embedding、位置编码各解决什么?
  • Q/K/V 是什么?输出为何是 V 的加权和?
  • 多头的「多」换来什么?代价?
  • Block 里:注意力、FFN、残差、Norm 的分工?
  • 三大架构怎么选?
  • Padding mask 与 Causal mask 各防什么?
  • 为何一层后仍是 [B,L,d]
术语要点
Self-Attention按相关度混合全序列信息
Multi-Head多套注意力,多种模式
FFN逐位置非线性加工
Residual高速公路,好训保信号
LayerNorm校准尺度,稳训练
Causal Mask不许看未来
d_model每个位置向量有多宽

11. 核心参数一览 · 怎么调 · 一点点公式

Section titled “11. 核心参数一览 · 怎么调 · 一点点公式”

前面讲了「塔长什么样」;这一节把旋钮摊开:有哪些 / 常见值 / 怎么调 / 为什么 / 预期效果。公式只留最少但最关键的几条,重直觉。

11.1 结构参数(决定「塔的形状与容量」)

Section titled “11.1 结构参数(决定「塔的形状与容量」)”
参数含义(人话)常见量级怎么调为什么调大/调小的效果
d_model每个位置向量有多宽256 / 512 / 768 / 1024 / 4096+起步 256~512,逐步放大太窄装不下模式,太宽算力爆↑:容量强、参数近似 ∝ ;↓:省但可能欠拟合
num_heads多头个数4 / 8 / 12 / 16 / 32必须满足 d_model % num_heads == 0每头独立学一种模式↑:模式多;单头维度会变碎
head_dim单头维度 = d_model / num_heads32 / 64 / 128常见甜点 64太小 softmax 分不清,太大冗余<32 常见崩坏
num_layersBlock 堆叠层数6 / 12 / 24 / 48 / 96+从 6~12 起层数 = 抽象层级↑:更抽象、更难训、需 warmup
d_ffFFN 中间维度4 × d_model常 4×,可 2~8×逐位置非线性容量↑:参数/算力↑,能力↑
max_seq_len上下文最大长度 L512 / 2k / 8k / 32k+按任务实际长度调注意力显存 ∝ L²↑↑:算力显存爆炸
vocab_size词表大小数千 ~ 数万由 tokenizer 决定太大嵌入表爆,太小 token 变长权衡 tokenization ↔ 参数
dropout随机丢弃比例0.0 ~ 0.3大数据 00.1,小数据 0.10.3缓解过拟合↑:抗过拟合、收敛慢

手感 · 头数与宽度的联动:
d_model = num_heads × head_dim。想加头数常常要一起加 d_model,否则每头维度会碎(<32 就危险)。

11.2 训练参数(决定「怎么爬坡」)

Section titled “11.2 训练参数(决定「怎么爬坡」)”
参数含义常见值怎么调为什么预期效果
learning_rate学习率预训练 1e-4 ~ 5e-4;微调 1e-5 ~ 5e-5;LoRA 可 1e-4数量级太大震荡/NaN,太小爬不动最关键旋钮
warmup_steps学习率热身总步数 1%~10%大模型/大 batch 多热身初期梯度乱减少 loss spike
batch_size批大小(按 token 计更准)数万~数百万 tokens显存不够 → 梯度累积大 batch 稳但要配大 LR↑:稳、每步慢
weight_decay权重衰减0.01 ~ 0.1轻度正则抑制权重无界增大轻微抗过拟合
grad_clip梯度裁剪阈值1.0Loss 抖大就打开防偶发爆炸一步毁模型稳训练救命稻草
optimizer优化器AdamW 是默认特殊场景用 Lion/AdafactorAdamW 自适应 + 解耦衰减90% 场景选 AdamW
lr_scheduler学习率曲线cosine + warmup长训用 cosine后期慢慢降有助收敛更稳的收尾

11.3 生成参数(决定「输出多花哨」)

Section titled “11.3 生成参数(决定「输出多花哨」)”
参数含义常见值效果
temperature采样温度 T0(贪心)~ 1.5↑:随机、创意、易胡言;↓:稳、死板
top_k从概率最高 k 个采样20 ~ 100k=1 ≈ 贪心
top_p (nucleus)累计概率 ≤ p 的集合内采样0.9 ~ 0.95动态词表大小,比 top_k 更自适应
repetition_penalty复读惩罚1.0 ~ 1.3减少「XXX XXX XXX」
max_new_tokens最多生成长度按任务与 KV Cache 显存正相关

11.4 少而精的公式(记直觉,不背式子)

Section titled “11.4 少而精的公式(记直觉,不背式子)”

① 注意力打分(scaled dot-product) — 第1章的心脏:

score = Q · Kᵀ / √d_k
Attention(Q,K,V) = softmax(score) · V

为什么除以 √d_k? 维度高时点积容易变很大,softmax 输出会变得极尖(几乎 one-hot),梯度趋近 0 难训。除以 √d_k 让打分方差稳定在 O(1),softmax 才有可学习的梯度。

② 残差 + LayerNorm(一层子模块的骨架):

Post-Norm (原论文): x = LayerNorm(x + Sublayer(x))
Pre-Norm (现代主流):x = x + Sublayer(LayerNorm(x))

人话: 应急车道 + 校准尺度。Pre-Norm 深层更好训(GPT/LLaMA 都用它),Post-Norm 则表达力更强但需要仔细 warmup。

③ Softmax(把分数变成注意力预算):

softmax(x_i) = exp(x_i) / Σ_j exp(x_j) ← 每行加起来 = 1

人话: 每个位置有 100% 的「注意力预算」,按 softmax 分配给全场。

④ 位置正弦编码(第1章 够用的位置版本):

PE(pos, 2i) = sin( pos / 10000^(2i / d_model) )
PE(pos, 2i+1) = cos( pos / 10000^(2i / d_model) )

人话:多种频率的波同时给每个位置画一张「座位号名片」,加到 embedding 上。别背式子,记住「多频率波」即可。RoPE/ALiBi 在第2章。

⑤ 参数量粗算(心里有账本):

参数 ≈ 12 × num_layers × d_model² (只看主体,忽略 embedding 与 bias)

人话: 一层 Block 大约有 12 d² 的参数(4 组 QKVO + 2 层 FFN 大约 8 d²)。想快速估「这个模型多大」,用这条即可。

11.5 参数联动表(哪里改动会波及哪里)

Section titled “11.5 参数联动表(哪里改动会波及哪里)”
你改动会波及
d_model ↑ 一倍主体参数 ×4(∝ d²),显存和算力同涨
num_headshead_dim 自动变小,头太多要一起加 d_model
num_layers ↑ 一倍参数、算力线性翻倍
max_seq_len ↑ 一倍注意力显存/算力 ×4(∝ L²);KV Cache ×2
batch_size显存↑;LR 常按 √ 或线性同步↑
LoRA rank额外可训参数↑,欠拟合缓解但过拟合风险↑

11.6 一份「起手式」配方(小型 Transformer,~50M 参数)

Section titled “11.6 一份「起手式」配方(小型 Transformer,~50M 参数)”
# 结构
d_model = 512
num_heads = 8 (head_dim = 64)
num_layers = 6~8
d_ff = 2048 (4 × d_model)
max_seq_len = 1024
dropout = 0.1
# 训练
optimizer = AdamW (β1=0.9, β2=0.95, weight_decay=0.01)
learning_rate = 3e-4
lr_scheduler = cosine + warmup 4000 steps
batch_size = ~256k tokens/step (显存不够就梯度累积)
grad_clip = 1.0
precision = bf16 或 fp16 混合精度
# 生成(推理)
temperature = 0.8
top_p = 0.9

注意: 这是「通用起手式」。生物向的推荐值(词表大小、上下文长度、GC/motif 相关调整)→ 第3章

11.7 参数决策速查(3 秒决定要不要动它)

Section titled “11.7 参数决策速查(3 秒决定要不要动它)”
loss 一步 NaN → 先查 LR、grad_clip、混合精度、脏数据
训练降验证升 → 加数据 / dropout / 早停;不是加参数
显存爆 → batch↓、L↓、梯度累积、FlashAttn (第2章)
效果卡住不涨 → 先怀疑数据和评估,再想模型
生成复读、太保守/太乱 → 调 temperature/top_p/repetition_penalty

文件内容
/figures/transformer-tutorial-chapter1/tf1-01-rnn-vs-transformer.svg接力赛 vs 圆桌会
/figures/transformer-tutorial-chapter1/tf1-02-tokenization.svg切积木三种粒度
/figures/transformer-tutorial-chapter1/tf1-03-qkv-attention.svgQ/K/V 圆桌
/figures/transformer-tutorial-chapter1/tf1-04-embedding-position.svg名片 + 座位号
/figures/transformer-tutorial-chapter1/tf1-05-multihead.svg多副眼镜
/figures/transformer-tutorial-chapter1/tf1-06-block-highway.svgBlock 高速公路
/figures/transformer-tutorial-chapter1/tf1-07-three-architectures.svg三大架构
/figures/transformer-tutorial-chapter1/tf1-08-mask-generate.svg掩码与生成循环

第1章 = 单塔结构是什么
第2章 = 预训练目标、长上下文、效率、LoRA、稳训练、与 CPT/对齐的接口。

第2章 · 进阶


第1章 完 · Transformer 系统学习路径(形象图解版)