GPT 技术演进与原理

本文基于项目中手动实现的 Transformer,从结构层面出发,系统梳理 GPT 系列(GPT-1 → GPT-2 → GPT-3 → InstructGPT → GPT-4)的技术演进脉络。


前置:从 Transformer 说起

原始论文 Attention Is All You Need 中的 Encoder-Decoder 完整结构,用于序列到序列任务(如机器翻译):

源序列 ──→ Encoder (N层) ──→ enc_output
                                  ↓ (Cross-Attention)
目标序列 ──→ Decoder (N层) ──→ 输出词分布

GPT 的出发点是一个关键的架构裁剪决定:只保留 Decoder,丢弃 Encoder 和 Cross-Attention

这一决定并非简化,而是不同任务假设下的主动选择:

架构 代表模型 任务范式
Encoder-only BERT 理解任务(分类、问答、NER)
Encoder-Decoder 原始 Transformer、T5 序列到序列(翻译、摘要)
Decoder-only GPT 系列 语言生成、自回归预测

一、GPT-1(2018):用无监督预训练重新定义 NLP

论文Improving Language Understanding by Generative Pre-Training(Radford et al., OpenAI 2018)

1.1 核心架构:Decoder-Only Transformer

GPT-1 使用 12 层 Decoder,但做了一处关键修改:移除 Cross-Attention 子层

回顾本项目的 DecoderLayer

def forward(self, x, enc_output, src_mask, tgt_mask):
    # ① Masked Self-Attention
    attn_output = self.self_attn(x, x, x, tgt_mask)
    x = self.norm1(x + self.dropout(attn_output))

    # ② Cross-Attention ← GPT 完全删除这一层
    attn_output = self.cross_attn(x, enc_output, enc_output, src_mask)
    x = self.norm2(x + self.dropout(attn_output))

    # ③ FFN
    ff_output = self.feed_forward(x)
    x = self.norm3(x + self.dropout(ff_output))

GPT 的 Decoder Block 只保留 ① 和 ③:

输入 token 序列
  → Masked Self-Attention(因果掩码)
  → 残差 + LayerNorm
  → FFN
  → 残差 + LayerNorm
  → 输出

没有 Cross-Attention 意味着没有独立的"编码器上下文"——模型的所有知识都必须压缩进自身的权重参数中,通过对大规模文本的预训练来实现。

GPT-1 规模

超参数
层数 num_layers 12
模型维度 d_model 768
注意力头数 num_heads 12(每头 64 维)
FFN 内层 d_ff 3072(4× d_model)
参数量 ~1.17 亿

对比本项目:d_model=256, num_heads=8, num_layers=3,GPT-1 已经是其约 100 倍参数量。

1.2 因果语言模型(CLM)目标

GPT 的预训练任务是自回归语言建模:给定前 k 个 token,预测第 k+1 个。

L=−∑ilog⁡P(ui∣ui−k,…,ui−1;Θ) \mathcal{L} = -\sum_{i} \log P(u_i \mid u_{i-k}, \ldots, u_{i-1}; \Theta) L=ilogP(uiuik,,ui1;Θ)

这与本项目的训练逻辑完全一致:

# train.py
output = transformer(src, tgt[:, :-1])   # 输入:去掉最后一个 token
loss = criterion(output, tgt[:, 1:])     # 标签:去掉第一个 token(即预测下一个词)

训练时,因果掩码(nopeak_mask)保证位置 i 只能看到 0~i 的历史:

# Transformer.py - generate_mask
nopeak_mask = (1 - torch.triu(torch.ones(1, seq_length, seq_length), diagonal=1)).bool()

这个掩码在 GPT 中是永久性的结构约束,而非推理时才加上的——GPT 的本质就是一个因果语言模型。

1.3 两阶段训练范式

GPT-1 提出了影响深远的预训练 + 微调范式:

阶段一:无监督预训练
在大规模无标注文本(BookCorpus,约 8 亿词)上用语言模型目标训练,学习通用语言表示。

阶段二:有监督微调(SFT)
在具体下游任务的标注数据上继续训练,仅需少量样本:

分类任务:[START] 文本 [EXTRACT] → Linear → 类别概率
蕴含任务:[START] 前提 [DELIM] 假设 [EXTRACT] → Linear → 标签

微调时在预训练目标上加一个辅助 LM loss,防止遗忘:

Ltotal=Ltask+λ⋅LLM \mathcal{L}_{\text{total}} = \mathcal{L}_{\text{task}} + \lambda \cdot \mathcal{L}_{\text{LM}} Ltotal=Ltask+λLLM

GPT-1 在 12 个 NLP 任务中的 9 个超越了当时的 SOTA,验证了"大规模预训练 + 轻量微调"路线的有效性。


二、GPT-2(2019):规模即能力,零样本学习

论文Language Models are Unsupervised Multitask Learners(Radford et al., OpenAI 2019)

2.1 规模爆炸

GPT-2 将参数量推到了 15 亿,是 GPT-1 的 10 倍以上:

版本 层数 d_model num_heads 参数量
GPT-2 Small 12 768 12 1.17 亿
GPT-2 Medium 24 1024 16 3.45 亿
GPT-2 Large 36 1280 20 7.74 亿
GPT-2 XL 48 1600 25 15.42 亿

训练数据从 8 亿词扩展到 WebText(从 Reddit 高质量链接爬取,约 40 GB)。

2.2 架构改进:Pre-Norm

GPT-1 沿用原始 Transformer 的 Post-Norm(子层后归一化):

# 本项目的 Post-Norm(同 GPT-1)
x = self.norm1(x + self.dropout(attn_output))

GPT-2 改为 Pre-Norm(子层前归一化):

# GPT-2 的 Pre-Norm
attn_output = self.attention(self.norm1(x), ...)
x = x + self.dropout(attn_output)

ff_output = self.feed_forward(self.norm2(x))
x = x + self.dropout(ff_output)

以及在最后一层 Decoder 后额外加一个 LayerNorm。

为什么 Pre-Norm 更稳定?

Post-Norm 中,残差连接的信号在经过 LayerNorm 后可能被压缩,导致深层网络梯度传播困难。Pre-Norm 先归一化再做子层计算,残差路径上的梯度可以直接反传,训练更稳定,允许堆叠更多层。

2.3 零样本(Zero-Shot)泛化

GPT-2 最重要的发现是:足够大的语言模型,无需任何微调,仅通过提示词(prompt)就能完成多种任务

其理论依据在于,所有 NLP 任务本质上都可以用语言描述:

翻译:  "将英文翻译为法文:cheese => fromage;cat =>"
摘要:  "文章:...(长文本)...;TL;DR:"
问答:  "问题:巴黎是哪个国家的首都?答案:"

语言模型被重新定义为:

P(output∣input)≈P(output∣task description,input) P(\text{output} \mid \text{input}) \approx P(\text{output} \mid \text{task description}, \text{input}) P(outputinput)P(outputtask description,input)

这意味着:只要预训练数据足够丰富多样,模型在学习预测下一个 token 的过程中,隐式地学会了执行各种任务的能力。这是后来 In-Context Learning 的思想萌芽。

GPT-2 的 WebText 数据规模仍不够大,零样本效果并不稳定,但方向已经确立。


三、GPT-3(2020):涌现能力与上下文学习

论文Language Models are Few-Shot Learners(Brown et al., OpenAI 2020)

3.1 参数量的质变:1750 亿

超参数 GPT-3
层数 96
d_model 12288
注意力头数 96(每头 128 维)
d_ff 49152(4× d_model)
参数量 1750 亿
训练数据 ~570 GB(Common Crawl + WebText2 + Books + Wikipedia)

3.2 稀疏注意力(Sparse Attention)

GPT-3 引入了交替使用的注意力模式,解决长序列下 O(L²) 注意力的计算瓶颈:

  • 局部密集注意力层:每个 token 关注相邻的固定窗口(如前 128 个 token)
  • 全局步进注意力层:每个 token 关注固定步长间隔的 token(如每隔 128 个采样一个)

两种模式交替堆叠,兼顾局部精细信息和全局长程依赖,计算复杂度降至 O(L√L)。

回顾本项目的 scaled_dot_product_attention,它是标准的全注意力:

attn_scores = torch.matmul(Q, K.transpose(-1, -2)) / math.sqrt(self.d_k)
# 形状:(B, num_heads, L, L)   ← L² 的注意力矩阵

L 从 50(本项目)增长到 GPT-3 的 2048,再到后来模型的 128K+,L² 的内存/计算开销成为核心瓶颈,稀疏注意力、线性注意力、Flash Attention 等技术相继出现。

3.3 上下文学习(In-Context Learning,ICL)

GPT-3 最具颠覆性的发现:在推理时,通过在 prompt 中提供少量示例(few-shot),模型无需更新任何参数就能学会新任务

示例(few-shot prompt):

英文:sea otter    法文:loutre de mer
英文:peppermint   法文:menthe poivrée
英文:cheese       法文:

模型会续写出正确答案 fromage,但权重没有发生任何更新

三种学习模式对比:

模式 示例数 参数更新
Zero-Shot 0
One-Shot 1
Few-Shot 多个
Fine-Tuning 大量

ICL 的工作机制至今仍是研究热点。主流假设是:Transformer 的前向传播在 activation 空间中实现了某种隐式的梯度下降——即模型的注意力机制在推理时对 few-shot 示例进行了"即时拟合"。

3.4 涌现能力(Emergent Abilities)

随着规模增大,某些能力突然从不具备跳跃到具备,而非平滑增长:

  • 算术运算(3 位数加减法):在约 130 亿参数时突然出现
  • 多步推理:在千亿规模时突然出现
  • 代码生成能力
  • 语言理解的多语言迁移

这种涌现现象颠覆了"性能随规模平滑提升"的直觉,也催生了后续的**Scaling Laws(缩放定律)**研究。

Chinchilla Scaling Law(DeepMind, 2022)发现:最优训练应满足:

训练 token 数≈20×参数量 \text{训练 token 数} \approx 20 \times \text{参数量} 训练 token 20×参数量

即 GPT-3 的 1750 亿参数模型,理想训练 token 数约为 3.5 万亿——这一发现直接影响了后续模型的数据/算力分配策略。


四、InstructGPT / GPT-3.5(2022):对齐与 RLHF

论文Training language models to follow instructions with human feedback(Ouyang et al., OpenAI 2022)

4.1 原始 GPT-3 的对齐问题

尽管 GPT-3 能力强大,但它本质上只是一个"文本续写机器",存在明显缺陷:

  • 不遵循指令:提问"写一首诗",它可能续写"……另一个要求是……"
  • 有害内容:会生成歧视性、误导性文本
  • 虚构事实(幻觉):自信地生成错误信息

根本原因:预训练目标(预测下一个 token)与用户期望(有帮助、无害、诚实)存在偏差——即对齐问题(Alignment Problem)。

4.2 RLHF 三阶段流程

InstructGPT 引入基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF):

阶段一:监督微调(SFT)

收集人工编写的理想回答数据(约 13K 条),对 GPT-3 做有监督微调,得到一个初步"听话"的模型 πSFT\pi^{\text{SFT}}πSFT

阶段二:训练奖励模型(Reward Model,RM)

对同一个 prompt,用 πSFT\pi^{\text{SFT}}πSFT 生成多个不同答案,人工标注答案的优劣排序:

prompt: "如何学好编程?"
答案 A > 答案 C > 答案 B   ← 人工排序

用这些排序数据训练一个奖励模型,使其能对任意(prompt, response)对打分:

LRM=−E(x,yw,yl)∼D[log⁡σ(rθ(x,yw)−rθ(x,yl))] \mathcal{L}_{\text{RM}} = -\mathbb{E}_{(x, y_w, y_l) \sim D}\left[\log \sigma\left(r_\theta(x, y_w) - r_\theta(x, y_l)\right)\right] LRM=E(x,yw,yl)D[logσ(rθ(x,yw)rθ(x,yl))]

其中 ywy_wyw 是更好的答案,yly_lyl 是更差的答案,rθr_\thetarθ 是奖励分数。

阶段三:PPO 强化学习

以奖励模型为环境信号,用 PPO(Proximal Policy Optimization)算法优化语言模型策略 πϕ\pi_\phiπϕ

最大化:Ex∼D,y∼πϕ[rθ(x,y)]−β⋅DKL[πϕ(y∣x)∥πSFT(y∣x)] \text{最大化:} \mathbb{E}_{x \sim D, y \sim \pi_\phi}\left[r_\theta(x, y)\right] - \beta \cdot D_{\text{KL}}\left[\pi_\phi(y|x) \| \pi^{\text{SFT}}(y|x)\right] 最大化:ExD,yπϕ[rθ(x,y)]βDKL[πϕ(yx)πSFT(yx)]

  • rθ(x,y)r_\theta(x, y)rθ(x,y):奖励模型的打分(越高越好)
  • DKLD_{\text{KL}}DKL:KL 散度惩罚项,防止模型偏离 SFT 初始化太远(避免"奖励欺骗"——模型学会讨好奖励模型而非真正提升质量)

RLHF 的作用

维度 GPT-3 InstructGPT
遵循指令
有害内容 频繁 大幅减少
诚实性 差(常编造) 有改善
人类偏好 基准 1.3B 版本即超越 175B GPT-3

关键发现:仅 13 亿参数的 InstructGPT 在人类偏好评测中胜过 175 亿参数的 GPT-3——对齐的价值甚至超过了规模的价值

4.3 ChatGPT 的技术基础

ChatGPT(2022 年 11 月发布)本质上是在 GPT-3.5(即代码能力增强版的 InstructGPT)基础上,针对对话场景进一步 RLHF 训练的产物:

  • 多轮对话的上下文拼接(将对话历史作为 prompt 输入)
  • 对拒绝有害请求做专门的偏好标注
  • 系统提示词(System Prompt)机制的引入

五、GPT-4(2023):多模态与能力边界

技术报告GPT-4 Technical Report(OpenAI 2023)

OpenAI 对 GPT-4 的架构细节几乎未公开,但从公开信息和推断中可以梳理出关键技术方向。

5.1 多模态输入

GPT-4 是第一个原生支持图像+文本混合输入的 GPT 版本(Vision 能力)。

实现原理:将图像通过视觉编码器(类似 ViT,将图像切分为 patch,每个 patch 线性映射为 token 向量)转化为与文本 token 同维度的向量序列,拼接后统一输入 Transformer。

这实际上让 GPT-4 从"纯 Decoder"重新回到了"有编码器"的形式——只是编码器是视觉编码器,而非文本编码器。

图像 → Vision Encoder(ViT)→ 图像 token 序列
文本 → Text Embedding        → 文本 token 序列
                     ↓ 拼接
            统一的 Transformer Decoder

5.2 Mixture of Experts(MoE)

业界普遍认为 GPT-4 采用了专家混合架构(MoE),总参数约 1.8 万亿,但每次推理只激活约 2200 亿参数。

MoE 的核心思想是将 FFN 层替换为多个并行的"专家网络",加上一个"路由器"(Router):

输入 x
  → Router:softmax(W_r · x)  → 选择 top-k 个专家
  → 被选中的 Expert_i(x)
  → 加权求和输出

以本项目的 PositionWiseFeedForward 为基础类比:

# 原始 FFN(本项目)
def forward(self, x):
    return self.fc2(self.relu(self.fc1(x)))

# MoE FFN(概念示意)
def forward(self, x):
    scores = self.router(x)                          # (B, L, num_experts)
    top_k_indices = scores.topk(k=2, dim=-1).indices # 每个 token 选 2 个专家
    output = sum(scores[i] * self.experts[i](x) for i in top_k_indices)
    return output

MoE 的优势:参数量大但计算量可控——1.8 万亿参数提供了巨大的知识存储容量,但每次前向传播只激活约 1/8 的参数,计算代价接近 2000 亿参数的密集模型。

5.3 能力跃升

GPT-4 相对 GPT-3.5 的提升体现在:

  • 推理能力:在司法考试(Bar Exam)中达到前 10% 水平,GPT-3.5 仅约 10% 分位
  • 长上下文:支持 8K/32K token 上下文窗口,后扩展到 128K(GPT-4 Turbo)
  • 鲁棒性:对模糊、歧义性问题的处理能力大幅提升
  • 遵循复杂指令:能准确执行多步骤、带约束的复杂任务

5.4 可预测的缩放

GPT-4 技术报告披露了一个关键方法:用小模型预测大模型的性能

在训练完成之前,通过在不同规模的检查点上观察 loss 曲线,利用幂律外推(power-law extrapolation)预测全尺寸模型的最终性能。这意味着 OpenAI 在投入大量算力之前,就能对结果有较高置信度的预测。


六、技术演进全景图

Transformer (2017)
  Encoder-Decoder,seq2seq,机器翻译
        ↓
  [去掉 Encoder 和 Cross-Attention,只保留 Decoder]
        ↓
GPT-1 (2018)
  12层,117M,预训练+微调,BookCorpus
  → 首次证明大规模预训练对 NLP 任务的通用价值
        ↓
  [10x 规模,Pre-Norm,WebText 数据]
        ↓
GPT-2 (2019)
  48层,1.5B,零样本学习
  → 首次展示不微调也能做任务,语言模型即多任务学习器
        ↓
  [100x 规模,稀疏注意力,更大数据集]
        ↓
GPT-3 (2020)
  96层,175B,少样本上下文学习
  → 涌现能力,ICL 范式,重新定义 AI 能力边界
        ↓
  [RLHF 对齐,人类偏好优化]
        ↓
InstructGPT / ChatGPT (2022)
  SFT + RM + PPO,指令遵循
  → 对齐的价值,1.3B 胜 175B,AI 助手时代开始
        ↓
  [多模态,MoE,长上下文,可预测缩放]
        ↓
GPT-4 (2023)
  ~1.8T(MoE,激活~220B),图像+文本输入
  → 专业级推理能力,接近人类专家水平

七、核心技术主题横向对比

7.1 位置编码的演进

版本 位置编码方式
原始 Transformer / GPT-1 固定正余弦编码(本项目实现)
GPT-2 / GPT-3 可学习的绝对位置编码(Learned PE)
GPT-4 / LLaMA 2 RoPE(旋转位置编码)或 ALiBi

RoPE(Rotary Position Embedding)将位置信息编码进 Q/K 的旋转变换中,使得注意力分数天然携带相对位置信息,且对超出训练长度的序列有更好的外推性。

回顾本项目的固定正余弦编码:

# PositionalEncoding.py
pe[:, 0::2] = torch.sin(position * div_term)
pe[:, 1::2] = torch.cos(position * div_term)
return x + self.pe[:, :x.size(1)]   # 加法注入

RoPE 则是把位置信息通过旋转矩阵乘入 Q/K 向量,而非加到输入 embedding 上,在内积计算时自然呈现相对位置关系。

7.2 Attention 的计算效率演进

技术 核心思想 复杂度
标准注意力(本项目) 全 Q/K 矩阵乘法 O(L²) 时间与空间
稀疏注意力(GPT-3) 局部窗口 + 步进全局 O(L√L)
Flash Attention(2022) IO-aware 分块计算,避免显存瓶颈 O(L²) 时间,O(L) 显存
Multi-Query / GQA(2023) 多个 Q 头共享 K/V 减少 K/V 缓存,加速推理

Flash Attention 不改变数学结果,而是重新安排计算顺序(分块 softmax),将 L² 大小的注意力矩阵完全留在 SRAM 中而不写回 HBM,在硬件层面大幅减少内存带宽瓶颈。

7.3 归一化位置的演进

Post-Norm(本项目 / GPT-1):x = LayerNorm(x + SubLayer(x))
Pre-Norm(GPT-2+):          x = x + SubLayer(LayerNorm(x))
RMS Norm(LLaMA):           用 RMSNorm 替代 LayerNorm,去掉均值归一化,计算更快

7.4 激活函数的演进

# 本项目 PositionWiseFeedForward.py
self.relu = nn.ReLU()
return self.fc2(self.relu(self.fc1(x)))
版本 激活函数 特点
原始 Transformer / GPT-1/2/3 ReLU 简单,但存在"死亡神经元"问题
GPT-3.5+ / PaLM GeLU 平滑,梯度更稳定
LLaMA 2 / Mistral SwiGLU 门控机制,实践效果最优

GeLU(Gaussian Error Linear Unit):x⋅Φ(x)x \cdot \Phi(x)xΦ(x),其中 Φ\PhiΦ 是标准正态分布 CDF,近似为平滑版 ReLU。

SwiGLU:引入门控机制,FFN 扩展为三个矩阵:

# SwiGLU 结构
def forward(self, x):
    return self.fc2(F.silu(self.fc1(x)) * self.fc3(x))

SwiGLU(x)=Swish(W1x)⊗(W3x)\text{SwiGLU}(x) = \text{Swish}(W_1 x) \otimes (W_3 x)SwiGLU(x)=Swish(W1x)(W3x),逐元素乘法形成门控,实践中比 GeLU 更优。


八、为什么 Decoder-Only 架构获胜?

这是个值得深思的问题。BERT(Encoder-Only)在理解任务上曾全面领先,为何最终 GPT 路线主导了大语言模型?

1. 统一性

Decoder-Only 的语言建模目标极其简单——预测下一个 token,这一目标可以无缝应用于所有文本,无需设计特殊的 Masked LM 或 NSP 目标。

2. 生成能力原生

因果语言模型天然支持生成,而 BERT 类模型生成文本需要额外设计(如 BERT 做 MLM,不能直接生成连贯文本)。

3. 上下文学习(ICL)

ICL 天然契合自回归模式——把示例和问题都放进一段文本,让模型续写答案。

4. 规模的一致性

扩展 Decoder-Only 模型只需增加层数、增大维度,架构极简,工程上更易于规模化。

从本项目的代码视角看:Decoder-Only 模型就是把 Transformer.forward 中的 Encoder 去掉,只保留 decoder_layers 的堆叠,且每个 DecoderLayer 只有 Self-Attention 和 FFN(本项目的 ①③)。


九、知识密度总结

预训练数据规模(词/token)
  GPT-1:  ~8 亿(BookCorpus)
  GPT-2:  ~40 亿(WebText)
  GPT-3:  ~3000 亿(混合语料)
  GPT-4:  >10 万亿(估计)

参数量
  GPT-1:  117M
  GPT-2:  1.5B    (13× GPT-1)
  GPT-3:  175B    (117× GPT-2)
  GPT-4:  ~1.8T   (估计,MoE)

关键技术跃升
  GPT-1:  预训练+微调范式
  GPT-2:  零样本学习,Pre-Norm
  GPT-3:  In-Context Learning,涌现能力,稀疏注意力
  InstructGPT: RLHF,人类对齐
  GPT-4:  多模态,MoE,可预测缩放

从本项目的 3 层、256 维、1.17 亿参数不到的小型 Transformer,到 GPT-4 的 96 层、12288 维、1.8 万亿参数——架构的核心单元(Multi-Head Attention + FFN + 残差 + LayerNorm)从未改变,变化的是规模、对齐方式与工程实现。这正是 Transformer 架构最深刻的特质:极简的核心结构,极强的可扩展性

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐