Transformer 核心概念

1. 为什么 Transformer 重要

Transformer 用自注意力替代 RNN 的逐步递归,使模型可以并行处理序列,并直接建模任意 token 之间的依赖关系。它是 BERT、GPT、T5、Qwen、LLaMA、Gemma 等模型的基础。

2. Token、Embedding 与位置编码

文本进入模型前要先转成 token ID:

文本 -> tokenizer -> token ids -> embedding vectors -> transformer blocks

Char01.txt 中的 PositionalEncoding 使用正弦/余弦函数:

position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
div_term = torch.exp(torch.arange(0, d_model, 2).float() * -(np.log(10000.0) / d_model))
encoding[:, 0::2] = torch.sin(position * div_term)
encoding[:, 1::2] = torch.cos(position * div_term)

理解重点:位置编码不是预测目标,而是加到 embedding 上,让模型能区分“同一个词出现在不同位置”的情况。

3. Self-Attention

Self-Attention 的核心是 Query、Key、Value:

Attention(Q, K, V) = softmax(QK^T / sqrt(d_k))V

含义:

4. Multi-Head Attention

多头注意力把 d_model 拆成多个 head,每个 head 学习不同关系:

常见约束:

assert d_model % num_heads == 0
head_dim = d_model // num_heads

Jetson Nano 上建议:

5. Feed Forward Network

Transformer block 中每个 token 还会经过一个前馈网络:

Linear(d_model -> d_ff) -> activation -> Linear(d_ff -> d_model)

一般 d_ffd_model 大,例如原始 Transformer 用 4 倍扩展。Jetson Nano 上建议 d_ff=2*d_model4*d_model,不要一开始就用 2048

6. LayerNorm、Residual 与 Dropout

一个标准 Encoder Layer 通常是:

x -> MultiHeadAttention -> residual add -> LayerNorm -> FFN -> residual add -> LayerNorm

关键作用:

7. Encoder、Decoder 与 Decoder-only

架构 代表模型 适合任务
Encoder-only BERT、RoBERTa 分类、检索、命名实体、embedding
Decoder-only GPT、Qwen、LLaMA 文本生成、对话、代码生成
Encoder-Decoder T5、BART、MarianMT 翻译、摘要、文本到文本任务

8. Mask 的作用

Causal mask 是 GPT 类模型能做自回归生成的关键。

9. 训练目标

训练目标 说明 代表模型
Causal Language Modeling 预测下一个 token GPT、Qwen、LLaMA
Masked Language Modeling 预测被 mask 的 token BERT
Seq2Seq 输入序列映射到输出序列 T5、BART、MarianMT
Classification 输出类别标签 BERT 分类头、DistilBERT

10. 从 Char01.txt 到可运行实验

Char01.txt 里的结构示例很适合学习,但参数偏大。建议先改成:

d_model = 128
num_heads = 4
d_ff = 256
seq_len = 32
batch_size = 1
num_layers = 1

等能稳定运行后,再逐步增大:

  1. 只跑 forward。
  2. 加 loss 和 backward。
  3. 加 optimizer。
  4. 构造 toy dataset。
  5. 训练 tiny character-level language model。

Page Source