GPT 模型原理:自回归语言生成
GPT 模型原理:自回归语言生成
什么是GPT?核心思想一图读懂
GPT(Generative Pre-trained Transformer)是一系列基于自回归语言生成范式的大规模语言模型。它的核心任务极其简单:给定一段前文,预测接下来的文本。这个看似“文字接龙”的游戏,通过海量数据和巨大参数规模,涌现出了理解、推理、创作等高级能力。
GPT的全部工作都以“生成下一个词”为基础,这背后的机制就是自回归。
自回归语言模型:逐词织就文本
什么是语言模型
语言模型本质上是一个概率分布函数,它为一串词序列(比如一个句子)赋予一个概率值。给定一个由 t 个词组成的序列 x₁, x₂, ..., xₜ,其联合概率可以通过链式法则分解为:
P(x₁, x₂, ..., xₜ) = P(x₁) × P(x₂|x₁) × P(x₃|x₁,x₂) × ... × P(xₜ|x₁, ..., xₜ₋₁)
每一个条件概率 P(xᵢ | x₁, ..., xᵢ₋₁) 就是“在看过前面所有词之后,下一个词是 xᵢ 的可能性”。
自回归的核心定义
自回归(Autoregressive)这个术语来自统计学,指一个变量在其自身过去值上的回归。在语言中,自回归模型指的是:每一时刻的输出,都只依赖于之前时刻已经生成的词。生成过程严格按从左到右的顺序,无法看到未来位置的词。
举个例子,如果想让模型生成“今天天气真好,我们出去”,模型会依次做以下决策:
- 根据开头(可能为空或提示)预测“今天”
- 根据[今天]预测“天气”
- 根据[今天, 天气]预测“真好”
- 根据[今天, 天气, 真好]预测“,”
- 根据[今天, 天气, 真好, ,]预测“我们”
- ... 直到输出结束符。
每一步都只向前看,看不到后面的目标词。这就是单向语言模型,也是GPT生成文本的数学基础。
自回归 vs 掩码语言模型
与BERT等掩码语言模型(MLM)不同,GPT不会在句子中间挖掉一些词让模型填空。BERT是双向的,可以看到上下文两侧信息;而GPT是严格的单向。这种设计使得GPT天然擅长文本续写和生成,而不擅长需要全局上下文的任务(不过随着模型规模扩大,此类能力也在涌现)。
GPT的骨架:Transformer解码器堆叠
GPT的模型结构本质上是Transformer的解码器部分的堆叠。原始Transformer由编码器和解码器组成,GPT只保留了后者,并做了为单向语言模型定制的关键修改。
掩码自注意力(Causal Masking)
Transformer的自注意力层会让每个词去关注整个序列的所有词。但在自回归场景下,我们绝对不能泄露未来信息。因此,GPT引入因果掩码(也叫下三角掩码)。
具体做法:在计算注意力分数时,对未来位置的分数加上一个极大的负数(例如负无穷),使得经过softmax后,这些位置的权重为0。这样一来,位置 i 的词只能注意到位置 1 到 i 的词,无法看到 i+1 及之后的内容。
用数学表达:注意力矩阵的上半部分被遮盖,保留下半三角。
Attention(Q, K, V) = softmax( (QKᵀ + Mask) / √dₖ ) × V
其中Mask在非允许位置为 -∞,允许位置为0。
其他关键组件
- 位置编码:因为自注意力本身不感知词序,GPT需要加入位置编码。早期GPT使用可学习的位置嵌入,让模型知道每个词的相对或绝对位置。
- 层归一化:GPT通常使用预层归一化(Pre-LayerNorm),有助于深层网络训练稳定。
- 前馈网络:每个解码器层内包含一个全连接前馈网络,提升非线性表达能力。
- 残差连接:将各子层的输入与输出相加,缓解梯度消失。
整个模型堆叠N个这样的解码器层,参数量动辄数十亿至数千亿,从而形成强大的生成能力。
训练GPT:让模型学会“接话”
无监督预训练
GPT的训练目标就是最大化语言序列的似然概率。给定一个超大规模文本语料,将文本切分为词元(token)序列,模型逐个位置预测下一个词元。损失函数为标准语言建模的交叉熵损失:
Loss = - Σₜ log P(xₜ | x₁, ..., xₜ₋₁; θ)
其中θ代表模型所有参数。优化器(如AdamW)不断调整θ,使模型预测下一词的概率尽可能高。
这种训练方式不需要人工标注数据,称为自监督学习。网络上的文章、书籍、代码等即是天然的“数据-标签”对:前文是输入,紧接着的词就是标签。
微调与提示调优
预训练之后,GPT获得的是宽广的世界知识和语言能力。要让其适应具体任务(如翻译、问答),可采用有监督微调(SFT)。向模型提供“输入-输出”示例对,继续用下一词预测目标训练。之后还可以通过人类反馈强化学习(RLHF)等手段对齐偏好。
在GPT-3及之后,上下文学习(in-context learning)展现了强大威力:只需在提示(prompt)中提供少量示例,模型无需参数更新就能完成新任务。这大大降低了使用门槛。
自回归生成策略:从概率分布到优美文本
训练好的GPT模型可以接受一个初始提示(prompt),然后通过迭代生成后续内容。但如何从模型输出的词表概率分布中选择下一个词,直接影响生成质量。
贪心解码(Greedy Decoding)
每一步取概率最高的词。这种方法确定性强,但容易产生重复、无趣的文本,且可能陷入局部最优。
束搜索(Beam Search)
每一步保持若干条高概率的候选序列(束宽k),最终选整体概率最高的序列。在机器翻译等需要精准输出的任务中常用,但开放式生成中常导致文本单调、缺乏多样性。
温度采样(Temperature Sampling)
在softmax之前,将logits除以温度参数T(T>0)。T→0时趋于贪心;T=1为原始分布;T>1使分布更平滑,增加多样性,但过高会引入噪声。
P(xᵢ) = softmax(logitᵢ / T)
采样就是在调整后的分布中随机抽取下一个词。这是使文本流畅且多样的关键技术。
Top-k 采样与核采样(Top-p / Nucleus Sampling)
为了避免采出概率极低的异常词,通常配合使用:
- Top-k:只从概率最高的k个词中重新归一化后再采样。
- 核采样(Top-p):累积概率达到阈值p的最小候选集合,动态调整候选词数量,兼顾多样性和连贯性。
实践中,GPT类模型通常使用温度采样 + top-p 的组合,以产生既连贯又有创造力的文本。
一个简化示例:GPT如何逐词生成
假设我们有一个微小的GPT,词汇表仅包含:“我、爱、吃、苹果、。”。提示为“我”。生成过程如下:
- 输入“我”,模型预测下一个词的概率分布:{爱: 0.5, 吃: 0.3, 苹果: 0.15, 。: 0.05}。使用top-p=0.9采样,候选集为{爱, 吃},从中采样到“爱”。
- 输入更新为“我 爱”,预测分布:{吃: 0.7, 苹果: 0.2, 。: 0.1},采样得到“吃”。
- 输入“我 爱 吃”,预测:{苹果: 0.8, 。: 0.2},采样到“苹果”。
- 输入“我 爱 吃 苹果”,预测:{。: 0.9, 吃: 0.05, ...},采样到“。”,输出结束符。
最终生成“我爱吃苹果。”。每一步的决策都只基于已生成的前文,完美诠释了自回归生成。
GPT的局限性与发展方向
尽管强大,GPT仍存在明显限制:
- 幻觉问题:自回归生成会“无中生有”,自信地编造事实,因为模型没有真实的验证机制。
- 缺乏长期连贯性:随着生成序列变长,模型可能忘记初始指令或前后矛盾,尽管大模型已有极大改善。
- 偏见与有害内容:训练数据中的偏见会被模型放大。
- 计算与成本:推理每一步需要遍历全部前文,生成速度与序列长度平方成正比(Transformer原始复杂度),加速推理是重要课题。
- 非双向理解:自回归的单向本质限制了其在需要上下文理解任务上的表现上限(但通过规模已有很大弥补)。
未来的改进方向包括检索增强生成(RAG)、更高效的注意力机制、多模态融合以及持续的对齐研究。但无论怎么变,“根据上文预测下文”的自回归内核仍将是现代语言生成的基石。
总结
GPT模型原理的精髓就是自回归语言生成:一个巨大的Transformer解码器网络,通过海量文本预训练学会了“文字接龙”,再配合精巧的采样策略,将概率分布转化为流畅、多样的文本。理解这一机制,是掌握大语言模型本质的起点,也是进一步探索提示工程、模型微调等高级应用的基础。