GPT架构
生成式预训练Transformer架构详解
架构概述
GPT(Generative Pre-trained Transformer)是一种基于Transformer解码器的生成式语言模型。 与BERT的双向编码器不同,GPT采用单向(从左到右)的自回归方式生成文本,使其特别适合文本生成任务。
# GPT核心组件
Input → Token Embedding + Position Embedding
→ N × Transformer Decoder Block
→ Layer Norm → Linear → Softmax
→ Output Probabilities
核心组件
1. Token嵌入与位置编码
GPT将输入文本转换为token序列,然后添加位置编码以保留序列顺序信息。
x = TokenEmbedding(tokens) + PositionEmbedding(positions)
# GPT使用学习的位置编码
# 而非Transformer原始的正弦位置编码
2. Transformer解码器块
每个解码器块包含掩码自注意力层和前馈网络,使用残差连接和层归一化。
# 单个解码器块
x = x + MaskedSelfAttention(LayerNorm(x))
x = x + FFN(LayerNorm(x))
3. 掩码自注意力(Masked Self-Attention)
使用上三角掩码确保每个位置只能关注之前的位置,保证自回归生成的因果性。
# 因果掩码矩阵
Mask[i,j] = 0 if j ≤ i
Mask[i,j] = -∞ if j > i
Attention = softmax((QK^T + Mask) / √d) × V
4. 前馈网络(FFN)
两层全连接网络,中间使用GELU激活函数,扩展比通常为4倍。
FFN(x) = GELU(xW₁ + b₁)W₂ + b₂
# d_model → 4×d_model → d_model
GPT系列演进
| 模型 | 参数量 | 层数 | 隐藏维度 | 注意力头 |
|---|---|---|---|---|
| GPT-1 | 117M | 12 | 768 | 12 |
| GPT-2 | 1.5B | 48 | 1600 | 25 |
| GPT-3 | 175B | 96 | 12288 | 96 |
与BERT的区别
GPT(解码器)
- • 单向自回归
- • 因果掩码注意力
- • 适合文本生成
- • 从左到右预测
BERT(编码器)
- • 双向编码
- • 全注意力
- • 适合文本理解
- • 掩码语言模型
关键技术点
•
Pre-LN vs Post-LN
GPT-2/3采用Pre-LN(先归一化再计算),训练更稳定
•
激活函数
使用GELU而非ReLU,梯度更平滑
•
词表大小
GPT-2使用50257,GPT-3使用50257的BPE词表
----