GPT(Generative Pre-trained Transformer)模型
GPT(生成式预训练 Transformer,Generative Pre-trained Transformer)是 OpenAI 提出的一个 自回归语言模型,用于 自然语言生成(NLG) 任务,如 文本生成、对话系统、代码生成 等。
GPT 采用 Transformer 解码器(Decoder)架构,通过 自回归方式逐步预测下一个单词 来生成文本。
论文:
GPT-1:Improving Language Understanding by Generative Pre-Training
GPT-2:Language Models are Unsupervised Multitask Learners
GPT-3:Language Models are Few-Shot Learners
GPT-4:GPT-4 Technical Report
1. GPT 的发展历史
模型版本 | 发布时间 | 参数规模 | 主要特点 |
---|---|---|---|
GPT-1 | 2018 | 1.17 亿 | 仅支持文本生成,首次引入 Transformer 预训练 |
GPT-2 | 2019 | 15 亿(最大 175 亿) | 更大规模,支持更长文本生成 |
GPT-3 | 2020 | 1750 亿 | 具备 强大的零样本(Zero-shot)学习能力 |
GPT-4 | 2023 | 未公开 | 多模态(支持图像、文本等),更强推理能力 |
GPT-3 和 GPT-4 具备 强大的通用 NLP 能力,可用于 问答、写作、翻译、代码生成 等任务。
2. GPT 的核心思想
GPT 主要采用 自回归(Autoregressive)文本生成:
- 给定一段文本
X = {w1, w2, ..., wt}
,模型学习 预测下一个单词wt+1
。 - 通过 Transformer 解码器 结构,基于 已有文本 逐步生成完整的句子。
GPT 训练时使用 因果(Causal)掩码:
- 只能看到过去的单词,不能看到未来的单词,确保文本按顺序生成。
示例
输入:"The weather today is"
GPT 输出:"The weather today is sunny and warm."
3. GPT 的架构
GPT 采用 Transformer 结构,但只使用 解码器(Decoder):
- 输入嵌入(Word Embeddings):将文本转换为向量。
- 多头掩码自注意力(Masked Self-Attention):只能看到之前的单词。
- 前馈神经网络(Feed-Forward Network, FFN):对每个 token 进行独立的非线性变换。
- 位置编码(Positional Embeddings):让模型感知单词顺序。
相比于 BERT(仅编码器),GPT 只使用解码器,适用于 文本生成任务。
4. GPT 的预训练
GPT 采用 自回归语言建模(Autoregressive Language Modeling, ARLM) 进行训练:
- 训练目标:给定前
t
个单词,预测下一个单词wt+1
。 - 采用 最大似然估计(MLE):
P ( w 1 , w 2 , . . . , w T ) = ∏ t = 1 T P ( w t ∣ w 1 , . . . , w t − 1 ) P(w_1, w_2, ..., w_T) = \prod_{t=1}^{T} P(w_t | w_1, ..., w_{t-1}) P(w1,w2,...,wT)=t=1∏TP(wt∣w1,...,wt−1)
GPT 训练 vs. BERT 训练
模型 | 训练任务 | 数据流动方式 |
---|---|---|
GPT | 自回归语言建模(预测下一个单词) | 单向(左 → 右) |
BERT | 掩码语言模型(预测被遮挡单词) | 双向(左 ↔ 右) |
GPT 只能 逐步生成文本,而 BERT 能够 同时使用上下文信息。
5. GPT 在 Hugging Face transformers
库中的使用
Hugging Face 提供了 GPT-2 预训练模型,可以直接用于文本生成。
5.1 加载 GPT-2 并生成文本
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载 GPT-2 预训练模型和分词器
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# 生成文本
input_text = "The future of artificial intelligence is"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids
output = model.generate(input_ids, max_length=50)
# 解码输出文本
print(tokenizer.decode(output[0], skip_special_tokens=True))
5.2 控制文本生成(温度、Top-k、Top-p)
GPT 生成文本时可以通过 温度(temperature)、Top-k 采样、Top-p 采样 控制输出:
output = model.generate(
input_ids,
max_length=50,
temperature=0.7, # 控制随机性,值越低越确定
top_k=50, # 仅从前 50 个可能的单词中采样
top_p=0.9, # 仅从累积概率为 0.9 的单词中采样
do_sample=True # 允许随机采样
)
print(tokenizer.decode(output[0], skip_special_tokens=True))
5.3 GPT-3/4 访问
GPT-3 和 GPT-4 需要 OpenAI API:
import openai
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": "What is the meaning of life?"}]
)
print(response["choices"][0]["message"]["content"])
注意:GPT-3/4 不开源,需使用 OpenAI API 访问。
6. GPT 的应用场景
GPT 适用于各种 自然语言生成(NLG)任务:
- 文本生成(文章写作、故事创作)
- 对话系统(ChatGPT)
- 代码生成(GitHub Copilot)
- 机器翻译
- 摘要生成
- 情感分析
GPT-4 还支持 多模态输入(图像+文本),适用于更复杂的 AI 任务。
7. GPT 与其他 Transformer 模型的对比
模型 | 架构 | 适用任务 | 特点 |
---|---|---|---|
GPT | 仅解码器 | 文本生成 | 适用于对话、创作、代码生成 |
BERT | 仅编码器 | 文本理解 | 适用于分类、问答、NER |
T5 | 编码器-解码器 | 翻译、摘要、问答 | 统一所有 NLP 任务为文本生成 |
BART | 编码器-解码器 | 文本修复、摘要、生成 | 适用于文本生成、摘要、翻译 |
GPT 专长于文本生成,BERT 更适用于 文本理解。
8. 结论
- GPT 是一个基于 Transformer 解码器的自回归语言模型,用于 文本生成任务。
- 采用自回归训练方式,通过 逐步预测下一个单词 生成文本。
- 最新的 GPT-4 具备更强的推理能力,支持多模态输入(文本+图像)。
- 可通过 Hugging Face 加载 GPT-2 进行文本生成,GPT-3/4 需使用 OpenAI API。
- GPT 在对话系统、文本创作、代码生成等任务中表现出色。
GPT 推动了现代 NLP 发展,其自回归文本生成能力被广泛应用于 聊天机器人(ChatGPT)、代码助手(Copilot)和 AI 写作 等领域。