Bootstrap

GPT(Generative Pre-trained Transformer)模型

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-120181.17 亿仅支持文本生成,首次引入 Transformer 预训练
GPT-2201915 亿(最大 175 亿)更大规模,支持更长文本生成
GPT-320201750 亿具备 强大的零样本(Zero-shot)学习能力
GPT-42023未公开多模态(支持图像、文本等),更强推理能力

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=1TP(wtw1,...,wt1)

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. 结论

  1. GPT 是一个基于 Transformer 解码器的自回归语言模型,用于 文本生成任务
  2. 采用自回归训练方式,通过 逐步预测下一个单词 生成文本。
  3. 最新的 GPT-4 具备更强的推理能力,支持多模态输入(文本+图像)
  4. 可通过 Hugging Face 加载 GPT-2 进行文本生成,GPT-3/4 需使用 OpenAI API
  5. GPT 在对话系统、文本创作、代码生成等任务中表现出色

GPT 推动了现代 NLP 发展,其自回归文本生成能力被广泛应用于 聊天机器人(ChatGPT)、代码助手(Copilot)和 AI 写作 等领域。

;