GPT系列模型演进与原理
--- title: "GPT系列模型演进与原理" description: "回顾GPT-1到GPT-4的发展历程,理解生成式预训练的核心思想" tags: ["GPT", "OpenAI", "生成模型", "预训练"] category: "llm" icon: "🧠"
GPT系列模型演进与原理
GPT系列概述
GPT(Generative Pre-trained Transformer)系列是 OpenAI 开发的一系列大语言模型。从 GPT-1 到 GPT-4,每一代模型都在规模、能力和应用范围上实现了显著突破。
GPT-1:生成式预训练的开端
核心思想
GPT-1 的核心创新是将无监督预训练与有监督微调相结合:
- 预训练阶段:在大规模无标注文本上学习语言模型
- 微调阶段:在特定任务的标注数据上进行有监督学习
模型架构
输入 → Token Embedding + Position Embedding → 12层 Transformer Decoder → 输出
GPT-1 的关键参数:
- 参数量:1.17 亿
- 层数:12 层
- 隐藏维度:768
- 注意力头数:12
- 上下文长度:512
from transformers import GPT2LMHeadModel, GPT2Tokenizer
# 加载预训练的 GPT-2 模型(GPT-1 架构类似)
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2')
# 文本生成
input_text = "The future of AI is"
input_ids = tokenizer.encode(input_text, return_tensors='pt')
output = model.generate(
input_ids,
max_length=50,
num_return_sequences=1,
no_repeat_ngram_size=2,
temperature=0.7
)
print(tokenizer.decode(output[0], skip_special_tokens=True))
GPT-2:零样本学习
关键改进
GPT-2 证明了语言模型可以通过零样本学习(Zero-shot Learning)完成各种任务,无需任何标注数据。
模型规模
| 配置 | 参数量 | 层数 | 隐藏维度 |
|---|---|---|---|
| Small | 1.17亿 | 12 | 768 |
| Medium | 3.45亿 | 24 | 1024 |
| Large | 7.62亿 | 36 | 1280 |
| XL | 15.42亿 | 48 | 1600 |
零样本任务示例
# 翻译任务(零样本)
prompt = "Translate English to French: cheese =>"
# 模型输出: "fromage"
# 问答任务(零样本)
prompt = "Q: What is the capital of France?\nA:"
# 模型输出: "Paris"
# 摘要任务(零样本)
prompt = "Article: [长文本]...\n\nTL;DR:"
# 模型输出: "摘要内容"
GPT-3:少样本学习的突破
涌现能力
GPT-3(1750亿参数)展示了强大的少样本学习能力,只需在提示中提供几个示例,就能完成新任务。
# 少样本学习示例
prompt = """Translate English to Chinese:
hello => 你好
good morning => 早上好
thank you => 谢谢
How are you? => """
# 模型会生成: "你好吗?"
In-Context Learning
GPT-3 的核心能力是 In-Context Learning(上下文学习):
- Zero-shot:只给出任务描述
- One-shot:给出任务描述 + 1个示例
- Few-shot:给出任务描述 + 几个示例
from openai import OpenAI
client = OpenAI()
def few_shot_classification(text, examples):
messages = [
{"role": "system", "content": "你是一个文本分类器。"},
]
for ex in examples:
messages.append({"role": "user", "content": ex["input"]})
messages.append({"role": "assistant", "content": ex["output"]})
messages.append({"role": "user", "content": text})
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages
)
return response.choices[0].message.content
# 使用示例
examples = [
{"input": "这部电影太棒了!", "output": "正面"},
{"input": "服务态度很差", "output": "负面"},
]
result = few_shot_classification("产品质量不错,但价格偏高", examples)
print(result) # 输出: "中性" 或类似分类
GPT-4:多模态与推理能力
关键特性
- 多模态输入:支持文本和图像输入
- 更强的推理能力:在各种基准测试中表现更优
- 更好的安全性:内置安全对齐机制
- 更长的上下文:支持 8K 或 128K 的上下文窗口
性能对比
| 基准测试 | GPT-3.5 | GPT-4 |
|---|---|---|
| GRE考试 | 213分 | 163分(top 10%) |
| BAR法律考试 | ~10% | ~90% |
| SAT数学 | 590分 | 700分 |
GPT系列的核心设计思想
1. 自回归生成
GPT 模型采用自回归方式生成文本:
def autoregressive_generate(model, start_token, max_length):
"""自回归生成过程示意"""
generated = [start_token]
for _ in range(max_length):
input_tensor = torch.tensor([generated])
logits = model(input_tensor)
next_token = torch.argmax(logits[:, -1, :])
generated.append(next_token.item())
return generated
2. 指令遵循
通过 RLHF(人类反馈强化学习)和指令微调,GPT 模型学会了更好地遵循人类指令。
3. 规模定律
OpenAI 发现了重要的规模定律(Scaling Laws):
Loss ∝ N^(-α) + D^(-β) + E^(-γ)
其中 N 是参数量,D 是数据量,E 是计算量。这指导了模型规模的扩展。
GPT系列的开源生态
尽管 GPT 系列本身不开源,但催生了大量开源替代方案:
- LLaMA 系列(Meta):高效且强大的开源模型
- Mistral:性能接近 GPT-3.5 的开源模型
- Qwen(阿里巴巴):中文能力优秀的开源模型
- ChatGLM(智谱AI):中文对话优化的开源模型
总结
GPT 系列的发展展示了规模、数据和算法协同进化的力量。从 GPT-1 的预训练+微调范式,到 GPT-4 的多模态推理能力,每一代模型都推动了 AI 技术的边界。理解 GPT 系列的演进历程,对于把握大语言模型的发展方向具有重要意义。