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]标记作为分类依据),并替换输出层为任务特定头(如分类头)。

  • 优势:预训练阶段学到的通用知识可迁移到下游任务,大幅减少对标注数据的依赖。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐