GPT:Generative Pre-trained Transformer(生成式预训练 Transformer)
将输入向量分为多个 “头(Head)”,每个头独立计算自注意力(即每个 token 对序列中其他 token 的 “关注度”),最后将多头结果拼接并线性转换,增强模型对不同类型依赖关系(如短距离、长距离语义关联)的捕捉能力。作用:Transformer 的自注意力机制本身是 “无位置感知” 的(无法区分 token 的顺序),位置编码用于向嵌入向量中注入 token 的位置信息,让模型理解序列的时
GPT 是由 OpenAI 开发的一系列生成式人工智能模型。
OpenAI 成立于 2015 年,总部位于美国旧金山,是一家专注于**通用人工智能(Artificial General Intelligence, AGI)研究与应用的人工智能公司。
公司的使命是:
确保通用人工智能造福全人类(Ensure that AGI benefits all of humanity)。
1. 整体架构
Decoder-only 的 Transformer
输入 → 嵌入层(Embedding) → 位置编码(Positional Encoding) → 多层 Transformer 解码器块 → 输出层(语言模型头)
核心设计目标是实现自回归(Autoregressive)生成:模型通过学习 “给定前文预测下一个 token” 的规律,逐步生成连贯的文本序列。
2. 核心组件详解
1. 嵌入层(Embedding Layer)
作用:将离散的输入 token(如单词、子词)转换为连续的低维向量,捕捉 token 的语义信息。
-
Token Embedding:每个输入 token(如 “apple”“[SEP]”)通过可学习的嵌入矩阵映射为固定维度的向量(如 GPT-3 中为 12288 维)。
-
(可选)分段嵌入(Segment Embedding):仅在 GPT-1 中使用,用于区分句子对(类似 BERT 的句子 A/B),后续版本(如 GPT-2、GPT-3)因任务泛化需求移除,仅保留单一序列输入。
2. 位置编码(Positional Encoding)
作用:Transformer 的自注意力机制本身是 “无位置感知” 的(无法区分 token 的顺序),位置编码用于向嵌入向量中注入 token 的位置信息,让模型理解序列的时序关系。
GPT 的特殊设计:不同于原始 Transformer 使用的 “正弦余弦固定编码”,GPT 采用可学习的位置编码—— 即位置信息通过一个可训练的参数矩阵生成,与 Token Embedding 相加后作为解码器的输入。
位置编码直接用 随机初始化:一般是 均匀分布 (Uniform) 或 正态分布 (Normal)。
优势:可学习的编码能更灵活地适应不同长度的序列,尤其在长文本场景下表现更优。
(1)表达能力更强
-
固定位置编码依赖手工设计函数(如正余弦),它的模式是固定的,无法根据任务特性进行调整。
-
可学习位置编码是参数化的,会在训练过程中随着目标任务优化,从而捕捉最适合该任务的位置信息。这意味着模型能在不同任务(NLP/图像/语音等)中学到更符合数据分布的位置信号。
(2)灵活适配不同模态
-
NLP任务:LPE 可以学习到更复杂的顺序关系(如句法结构、依存关系),不仅仅是线性位置。
-
视觉任务(CV):在 Vision Transformer (ViT) 中,LPE 能更好地适配不同图像分辨率或补丁划分方式,相比固定编码在图像裁剪/缩放时更具鲁棒性。
(3)提升模型性能
-
在许多实验(如 BERT 改进、ViT、DETR 等)中,LPE 往往能带来更高的下游任务精度。
-
这是因为它能够更细致地建模 相对位置/局部关系,而不是只依赖于固定的全局函数。
(4)与任务特定结构更好融合
-
可学习位置编码可与注意力机制、卷积特征、频域特征等结合,增强模型对 局部上下文 和 全局依赖 的建模。
-
例如图像去雾或图像恢复中,LPE 可更好地学习雾的分布规律与图像局部结构之间的对应关系。
(5)可扩展到更复杂的位置表示
-
LPE 可以被扩展为 二维位置编码(图像)、相对位置编码、甚至 旋转不变位置编码等形式,保持可学习性同时增强表达能力。
-
而固定编码需要人为设计,很难推广。
不足之处:
-
需要额外参数(尤其在长序列任务中参数量会大)。
-
可能对序列长度泛化较差(训练时固定长度 → 推理时更长序列可能表现不佳)。为此,许多工作会结合 相对位置编码 或 旋转位置编码(RoPE) 来缓解泛化问题。
3. Transformer 解码器块(Decoder Block)
这是 GPT 的核心计算单元,多个解码器块(如 GPT-3 有 96 层)堆叠形成深层网络。每个解码器块包含 3 个关键部分:
(1)掩码多头自注意力(Masked Multi-Head Attention)
-
多头自注意力(Multi-Head Attention): 将输入向量分为多个 “头(Head)”,每个头独立计算自注意力(即每个 token 对序列中其他 token 的 “关注度”),最后将多头结果拼接并线性转换,增强模型对不同类型依赖关系(如短距离、长距离语义关联)的捕捉能力。
-
掩码(Mask)的关键作用: GPT 的自注意力加入了因果掩码(Causal Mask,也称未来掩码)—— 通过一个下三角矩阵(对角线及以下为 1,以上为 -∞)屏蔽 “未来 token” 的信息。 例如,在预测第 i 个 token 时,模型只能关注第 1 到第 i−1 个 token,无法 “偷看” 第 i+1 及之后的 token。这一设计保证了模型的 “自回归特性”,符合文本生成的逻辑(基于前文生成下文)。
(2)前馈神经网络(Feed-Forward Network, FFN)
每个解码器块在注意力层之后,会通过一个两层的前馈网络进一步处理特征:
-
第一层:将输入向量映射到更高维度(如 GPT 中为 4 倍模型维度),并使用 ReLU 激活函数引入非线性。
-
第二层:将高维向量映射回原维度,输出特征。
-
FFN = 逐 token 的 MLP,作用是 特征变换 + 非线性增强 + 升维降维。
-
补充了 Attention 的不足,使 Transformer 既能 建模序列关系,又能 提升单 token 表达能力。
(3)残差连接与层归一化(Residual Connection & Layer Normalization)
-
残差连接:将每一层的输入与输出相加(如注意力层输入 + 注意力层输出),缓解深层网络的梯度消失问题,帮助模型训练。
-
层归一化:对每一层的输出进行归一化(使均值为 0、方差为 1),稳定训练过程,加速收敛。 在 GPT 中,归一化的位置是 “先归一化,再输入子层”(与原始 Transformer 的 “子层输出后归一化” 略有不同,属于细节优化)
(4) 输出层(Language Model Head)
经过多层解码器块处理后,最终输出的向量会通过一个线性层(将模型维度映射到词表大小)和 softmax 函数,得到下一个 token 的概率分布:
-
例如,词表大小为 50000 时,输出层会生成 50000 个概率值,分别对应每个 token 作为 “下一个 token” 的可能性。
-
生成文本时,模型会根据概率分布采样(或取最大概率)选择下一个 token,重复这一过程直到生成结束符(如
<|endoftext|>)。
3. 训练过程:预训练 + 微调
GPT 采用 “两阶段训练” 模式,这是其泛化能力强的核心原因:
(1)预训练(Pre-training)
-
任务:无监督语言建模(Language Modeling, LM)—— 给定一段文本的前n个 token,预测第n+1个 token。
-
数据:大规模无标注文本(如书籍、网页、文章等,GPT-3 的训练数据量达 45TB)。
-
目标:通过海量数据学习通用的语言规律(语法、语义、逻辑关系等),形成 “世界知识” 的隐式表示。
(2)微调(Fine-tuning)
-
任务:针对具体下游任务(如文本分类、问答、翻译等),使用少量标注数据调整预训练模型的参数。
-
适配方式:根据任务类型修改输入格式(如在分类任务中加入
[CLS]标记作为分类依据),并替换输出层为任务特定头(如分类头)。 -
优势:预训练阶段学到的通用知识可迁移到下游任务,大幅减少对标注数据的依赖。
更多推荐



所有评论(0)