文本生成:从 RNN 到 GPT 的创作

FreeGuideOnline 最新 2026-06-16

文本生成:从 RNN 到 GPT 的创作

本教程带你走进文本生成的核心技术演进,从最基础的循环神经网络出发,逐步理解注意力机制、Transformer 架构,直至掌握 GPT 系列模型如何完成现代文本创作。无需深厚数学背景,适合所有对 AI 写作感兴趣的技术爱好者。


1. 什么是文本生成

文本生成是指让计算机自动产生自然语言文本的任务,例如写作故事、回答问题、翻译语言、生成代码等。其本质是学习大量文本中的统计规律,预测下一个词或下一段文字。按照工作方式可分为两类:

  • 自回归生成:逐词预测,当前输出依赖之前生成的全部内容(如 GPT)。
  • 非自回归生成:一次性输出全部序列(如某些翻译模型),速度更快但连贯性略低。

本教程重点关注自回归方式,这也是现今主流生成模型的核心思路。


2. 循环神经网络(RNN):处理序列的第一步

2.1 为什么需要 RNN

传统前馈神经网络要求固定大小的输入,但文本是变长序列。RNN 引入隐藏状态,在时间步之间传递信息,天然适合序列建模。

2.2 基本结构

在时间步 t,RNN 接收当前输入词向量 x_t 和上一步隐藏状态 h_{t-1},计算新隐藏状态 h_t

h_t = tanh(W_x * x_t + W_h * h_{t-1} + b)

然后,通过 h_t 预测下一个词的概率分布。这种循环连接使网络拥有“记忆”,可以捕捉短程依赖。

2.3 训练与局限

训练时使用时间反向传播(BPTT),将误差沿时间展开回传。然而,朴素 RNN 面临两大难题:

  • 梯度消失:长序列中早期信息的梯度接近零,无法学习长程依赖;
  • 梯度爆炸:梯度呈指数增长,导致训练不稳定。

实用中,我们通常使用梯度裁剪应对爆炸,但消失问题催生了更强大的变体——LSTM 和 GRU。


3. 长短期记忆网络(LSTM)与门控循环单元(GRU)

3.1 LSTM 的设计哲学

LSTM 引入单元状态(cell state)作为贯穿时间的“信息高速路”,并通过三个门控机制控制信息的流入、保留和流出:

  • 遗忘门:决定从单元状态中丢弃哪些旧信息;
  • 输入门:决定哪些新信息存入单元状态;
  • 输出门:决定基于单元状态输出什么内容。

这种结构能有效保留长距离信息,缓解梯度消失。

3.2 GRU 的简化

GRU 将遗忘门和输入门合并成“更新门”,并将单元状态与隐藏状态融合,参数更少、计算更快,在许多任务上效果与 LSTM 相当。它同样解决了长程依赖问题。

3.3 应用与局限

LSTM/GRU 支撑了早期的机器翻译、文本摘要和对话系统。但当序列超过几十个词时,仍然难以完美捕捉全局关系,并且顺序计算导致训练无法并行,速度慢。


4. 序列到序列(Seq2Seq)与注意力机制

4.1 编码器-解码器框架

Seq2Seq 模型由两个 RNN 组成:

  • 编码器:读取源序列,总结成最后一个隐藏状态(上下文向量);
  • 解码器:从上下文向量生成目标序列。

然而,固定长度的上下文向量成为信息瓶颈,长输入时表现骤降。

4.2 注意力机制的诞生

注意力机制让解码器能够直接“回看”编码器的所有隐藏状态,并动态计算权重——即每一步应该重点关注源序列的哪些位置。这极大提升了长文本生成的质量。

核心公式(缩放点积注意力):

Attention(Q, K, V) = softmax(QK^T / √d_k) * V

在 Seq2Seq 中,查询(Q)来自解码器状态,键(K)和值(V)来自编码器输出。加权求和后,解码器获得融合上下文信息的向量。

4.3 注意力发展

随后出现的自注意力(Self-Attention)、多头注意力(Multi-Head Attention)不再依赖循环结构,直接计算序列内任意两词之间的关联,为 Transformer 铺平道路。


5. Transformer:开创并行生成新时代

2017 年《Attention Is All You Need》论文彻底抛弃 RNN,提出基于纯注意力机制的 Transformer 模型。

5.1 核心组成

  • 多头自注意力:同时使用多个注意力头,从不同表示子空间捕捉信息;
  • 位置编码:由于无循环结构,必须通过正弦函数或可学习参数注入词序信息;
  • 前馈网络与残差连接:增强非线性表达能力并加速训练;
  • 层归一化:稳定深层网络的训练。

5.2 编码器和解码器

Transformer 原始架构包含编码器(双向处理)和解码器(带掩码的自注意力,保持自回归特性),但文本生成通常只用其解码器部分。

5.3 为什么 Transformer 适合生成

  • 并行计算:训练时所有时间步同时计算,速度远超 RNN;
  • 长程依赖:自注意力直接连通序列中任意位置,距离不再是瓶颈;
  • 可扩展性:参数量可从数百万轻松扩展到数千亿。

6. GPT 系列:从预训练到提示工程

GPT(Generative Pre-trained Transformer)将 Transformer 解码器缩放,通过大规模无监督预训练实现强大的语言建模能力。

6.1 GPT 的关键思想

  • 自回归语言模型:给定前文 w_1, w_2, ..., w_{t-1},预测下一个词 w_t 的概率,训练目标是最大化整个语料的似然函数。
  • 单向性:只看到左侧上下文,与 BERT 的双向编码形成对比,天生适合生成任务。
  • 大容量预训练:在海量文本上训练,模型学会语法、事实、推理等能力。

6.2 演进之路

  • GPT (2018):1.17 亿参数,验证了预训练+微调范式;
  • GPT-2 (2019):15 亿参数,展现出强大的零样本生成能力,甚至能写出连贯文章;
  • GPT-3 (2020):1750 亿参数,不再需微调,通过上下文学习(In-context Learning)适应新任务,大幅降低使用门槛;
  • GPT-4 (2023):多模态模型,理解能力、推理深度和可控性进一步提升。

6.3 提示工程(Prompt Engineering)

大规模模型时代,用户与模型的交互方式转为设计精巧的提示词:

  • 零样本提示:直接描述任务,如“将以下文本翻译成英文:...”;
  • 少样本提示:提供几个示例,模型从示例中学会模式;
  • 思维链(Chain-of-Thought):引导模型展示中间推理步骤,提升复杂问题的准确性。

良好的提示能让通用模型化身专属作家、程序员或数据分析师。

6.4 生成策略与可控性

生成时需选择合适的解码方法:

  • 贪心搜索:每步选概率最高的词,但可能陷入重复;
  • 束搜索:保留多个候选序列,平衡质量与多样性;
  • Top-k / Top-p 采样:限制候选词数量,提升创作惊喜感;
  • 温度系数:调节概率分布的尖锐程度,高温度增加随机性。

现代模型还支持通过系统指令、角色设定等方式精细控制风格、语气和内容安全边界。


7. 实战:十分钟构建一个故事生成器

我们使用 Hugging Face 的 transformers 库调用 GPT-2 模型,快速体验文本生成。

7.1 环境准备

pip install transformers torch

7.2 代码示例

from transformers import GPT2LMHeadModel, GPT2Tokenizer

model_name = "gpt2"  # 可在 Hugging Face 上选择更大模型
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
model = GPT2LMHeadModel.from_pretrained(model_name)

# 设置起始文本
prompt = "在一个遥远的星系,一艘孤独的飞船"
input_ids = tokenizer.encode(prompt, return_tensors='pt')

# 生成
output = model.generate(
    input_ids,
    max_length=150,
    do_sample=True,
    top_k=50,
    top_p=0.95,
    temperature=0.8,
    pad_token_id=tokenizer.eos_token_id
)

story = tokenizer.decode(output[0], skip_special_tokens=True)
print(story)

运行后,你将看到模型根据提示续写的科幻故事。调整 temperaturetop_p 即可控制创造性。

7.3 进阶方向

  • 使用更大模型(如 GPT-Neo、GPT-J)获取更好效果;
  • 加载 DialoGPT 构建聊天机器人;
  • 通过 LoRA 等适配器高效微调,定制专属写作风格。

8. 总结与展望

从 RNN 的循环记忆,到 Transformer 的自注意力,再到 GPT 的预测式生成,文本生成技术已从只能拼凑短语发展到能进行长篇创作、逻辑推理和多轮对话。其核心始终是:学会在词的海洋中预测下一个词,而在这个过程中,意外地涌现出理解世界的能力

当前,我们正迈向可控生成、多模态融合与个性化创作的新阶段。理解其底层原理,能帮助你更好地驾驭这一强大工具,无论是创作内容、开发应用,还是探索人机协作的无限可能。

持续学习建议:亲手运行代码,对比不同解码参数的效果;跟踪最新论文(如 RLHF 对齐技术);深入体验 ChatGPT 和开源模型,实践提示工程。