Transformer于2017年提出,彻底改变NLP领域。核心创新在于:
Attention(Q, K, V) = softmax(QK^T / √d_k)V
MultiHead(Q, K, V) = Concat(head_1, ..., head_h)W^O head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)
不同头关注不同子空间:
GPT-1(2018)
GPT-2(2019)
GPT-3(2020)
GPT-3.5/GPT-4(2022-2023)
BERT Base:110M参数,12层
BERT Large:340M参数,24层
双向上下文理解,适合:
Text-to-Text框架,所有任务转为文本生成:
翻译:translate English to German: That is good. 分类:sentence: That was good. Label: Positive
Sinusoidal编码(原始)
PE(pos, 2i+1) = cos(pos/10000^(2i/d))
RoPE(当前主流)
旋转位置编码,外推能力更强。
Pre-LN(现代标准)
x = x + FFN(LN(x))
训练更稳定,梯度消失问题缓解。
ReLU → GeLU → SwiGLU
SwiGLU性能最佳:
1. 监督微调(SFT)
2. 奖励模型(RM)
3. PPO强化学习
无需奖励模型,直接优化:
更简单、更稳定、效果相当。
from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("gpt2") tokenizer = AutoTokenizer.from_pretrained("gpt2") input_ids = tokenizer.encode("Hello, world", return_tensors="pt") output = model.generate(input_ids, max_length=50)
from transformers import pipeline classifier = pipeline("text-classification", model="bert-base-uncased") result = classifier("Transformers changed NLP forever.") # [{'label': 'POSITIVE', 'score': 0.99}]
注意力计算优化: