编程与 AI15 分钟阅读更新于 2026-08-03

BERT、GPT 与 Transformer 有什么关系:从编码器到解码器的不同用法

把 Transformer、BERT 和 GPT 放到同一张结构图里理解,区分通用架构、编码器式理解、解码器式生成,以及双向注意力和因果注意力的差异。

相关工具

先把三个名字放在不同层级

Transformer 首先是一种架构。它用注意力、前馈网络、残差连接和层归一化组织序列表示,原始论文同时描述了编码器和解码器。BERT 和 GPT 则是基于 Transformer 思路发展出来的两类典型模型,它们选择了不同的模块组合和训练目标。

因此,BERT 不是 Transformer 的同义词,GPT 也不是另一种完全无关的架构。更准确的说法是:BERT 主要采用编码器式 Transformer 来做双向上下文理解,GPT 主要采用解码器式因果 Transformer 来做自回归生成。

先分清“架构家族”和“具体模型”,再比较两者的效果、用途和训练方法,很多容易混淆的说法就会自然消失。

Transformer 架构与 BERT、GPT 模型关系对比图
Transformer、BERT 与 GPT 的关系

Transformer 是基础架构家族,BERT 选择编码器堆叠偏向理解,GPT 选择因果解码器堆叠偏向生成。

BERT 更像一台上下文理解器

BERT 的核心结构是多层 Transformer 编码器。输入序列中的一个位置通常可以同时关注前后的有效词,因此它能在完整上下文中理解当前词。对于分类、句子关系判断、命名实体识别和抽取式问答等任务,这种双向表示很有价值。

例如要判断一个词在句子里的含义,后面的内容可能和前面的内容同样重要。编码器不需要遵守“只能看过去”的生成约束,可以利用左右两侧的信息把当前词解释得更充分。

BERT 的输出仍然是每个位置一组上下文表示。下游任务可以使用特殊位置的表示完成句子级判断,也可以使用每个位置的表示完成序列标注或答案片段识别。

GPT 更像一台逐步生成器

GPT 主要采用解码器式的 Transformer,并使用因果掩码。当前位置只能看到自己和前面的词,不能读取未来内容。这样训练出来的模型可以把文本看成不断延伸的序列,依据已有前缀预测下一个词。

生成时,GPT 从起始输入或用户给出的提示开始,输出一个词元,再把它追加到上下文中继续预测。每一次预测都依赖已经形成的前缀,所以它天然适合文本续写、对话、摘要生成等需要产生新序列的任务。

这种结构不是说 GPT 完全不能理解文本,而是它把理解服务于下一词预测。模型通过大量预测任务学到语义、句法和知识,再在生成过程中利用这些表示。

双向注意力和因果注意力的差别

BERT 式编码器通常使用双向自注意力。对某个位置来说,前面的词和后面的词都可以成为上下文来源。GPT 式解码器则使用因果掩码,把注意力矩阵限制在下三角区域,保证每个位置只能访问过去。

这个差别不是简单的“看得多”和“看得少”。双向注意力适合在已知完整输入上形成充分表示,因果注意力则保证预测过程符合时间顺序。一个更重视完整理解,一个更重视生成约束。

两种注意力都使用 Q、K、V 和缩放点积公式,区别主要体现在可见范围和训练目标。掌握公式之后,继续看掩码矩阵,就能理解它们为什么会形成不同的模型行为。

BERT 双向注意力矩阵与 GPT 因果注意力矩阵对比图
BERT 双向注意力与 GPT 因果注意力

BERT 允许位置同时查看左右上下文,GPT 通过因果掩码只保留当前位置和过去位置。

BERT 的掩码语言模型训练

BERT 的经典预训练目标之一是掩码语言模型。训练时,输入句子中的一部分词会被替换为特殊标记或其他形式,模型利用左右两侧的上下文预测被遮住的词。这个任务要求编码器理解完整句子中的关系。

例如句子中“银行”被遮住,模型可以同时参考前面的“去”和后面的“存钱”,从而判断被遮位置更可能是什么词。模型的损失通常只针对被选中的掩码位置计算,而不是要求每个位置都进行下一词预测。

这种训练目标让 BERT 擅长建立上下文表示,但它和 GPT 的自回归训练不是同一个任务。BERT 在训练时可以看到目标词左右两侧的其他内容,GPT 则必须遵守只能使用前缀的约束。

GPT 的下一词预测训练

GPT 训练时把文本序列右移一位,每个位置根据前缀预测下一个词,并使用因果掩码阻止读取未来词。输入是“已经出现的内容”,目标是“下一个真实词”,交叉熵对各位置的预测进行评价。

这种目标和生成阶段高度一致。训练时可以在掩码约束下并行计算多个位置,推理时则从起始位置开始逐步追加预测结果。模型在大量序列上反复学习后,获得了从上下文延伸出合理后文的能力。

GPT 不是只记住句子中的下一个字面词,而是在预测任务中逐渐形成对语言结构和世界知识的内部表示。生成能力来自表示学习和自回归目标的共同作用。

BERT 掩码语言模型与 GPT 下一词预测训练流程对比图
BERT 预训练与 GPT 下一词预测

BERT 预测被遮住的词,GPT 根据左侧前缀预测下一个词,两者的输入可见范围和训练目标不同。

为什么 BERT 更适合理解任务

理解任务通常要求模型对一段已经存在的文本做判断。分类要看全句,实体识别要判断每个词在上下文中的角色,句子关系判断要比较两段完整内容。编码器式双向表示可以让每个位置同时参考左右信息。

BERT 的输出可以直接交给一个较小的任务层。任务层可能是分类层、逐位置标签层或答案边界预测层,编码器负责提供已经融合上下文的基础表示。

这并不表示 BERT 不能生成任何内容,而是它的原始结构和训练目标没有把连续生成作为主要任务。若要生成长文本,通常需要额外的生成结构或采用更适合自回归的模型。

为什么 GPT 更适合生成任务

生成任务的关键是:每一步都要根据已有内容决定下一步。GPT 的因果掩码和下一词训练目标与这个过程自然匹配,模型不需要在推理阶段改变注意力规则,就能沿着训练时的约束继续生成。

对话、续写、摘要和改写都可以归结为给定前缀后继续输出。不同任务只是输入提示、输出格式和结束条件不同,底层仍然是重复进行下一词预测。

生成质量还受到解码策略影响。贪心、束搜索、随机采样和温度调整会改变从概率分布中选择词的方式,但这些策略都建立在 GPT 先提供词表概率的基础上。

Encoder-only、Decoder-only 和 Encoder-Decoder

把 Transformer 家族按主结构分成三类,会更容易建立全局视角。Encoder-only 以编码器为主,擅长把完整输入变成上下文表示;Decoder-only 以带掩码的解码器为主,擅长根据前缀生成后文;Encoder-Decoder 同时保留两者,适合把一种序列转换成另一种序列。

BERT 是 Encoder-only 的典型代表,GPT 是 Decoder-only 的典型代表,原始 Transformer 翻译模型属于 Encoder-Decoder。三类结构都继承了注意力、前馈网络、残差和归一化等基础部件,只是信息来源和可见范围不同。

这种分类不是给模型贴上永久标签,而是帮助理解它的主要使用方式。具体模型可能增加特殊位置表示、跨注意力、不同的训练目标或其他结构,但主干关系仍然可以从这三类开始看。

选择模型结构时看什么

如果任务是对完整文本做分类、匹配或逐词标注,优先考虑能利用双向上下文的编码器式结构。如果任务要求连续写出新内容,因果解码器式结构更自然。如果任务是把输入序列转换成目标序列,编码器—解码器结构可以分别处理源序列理解和目标序列生成。

实际选择还要看训练数据、输出长度、延迟、资源和任务评估方式。不能只因为某个模型名字更熟,就忽略输入输出形式与训练目标是否匹配。

最稳妥的判断顺序是:先明确任务需要理解还是生成,再看模型允许哪些位置互相注意,最后看预训练目标和推理方式是否与任务一致。

模型结构的四个判断点
步骤 1
任务类型

先判断主要是理解、生成,还是序列到序列转换。

步骤 2
可见范围

确认是双向注意力还是带因果掩码的注意力。

步骤 3
训练目标

区分掩码词预测、下一词预测和序列转换目标。

步骤 4
输出方式

看模型输出表示、分类结果还是逐步生成的词元。

把三者放回 Transformer 的发展脉络

Transformer 论文给出了编码器、解码器和注意力模块的完整组合,后来的模型根据不同任务选择其中一部分并重新设计训练目标。BERT 证明编码器式双向表示适合理解语言,GPT 则把解码器式自回归结构发展成强大的生成框架。

所以,学习 BERT 和 GPT 最重要的不是背诵谁用了哪几个层,而是理解它们如何取舍信息可见范围、训练目标和输出方式。看懂这些取舍,就能进一步理解各种变体为什么会出现。

到这里,Transformer 专题已经从注意力计算、位置编码和编码器解码器结构,连到了实际模型的使用方式。后续再学习模型规模、预训练和微调时,可以把它们放回这条结构主线中理解。

常见问题

BERT 和 GPT 都是 Transformer 吗?

它们都建立在 Transformer 思路上,但使用的模块组合和训练目标不同。BERT 主要采用编码器式结构,GPT 主要采用因果解码器式结构。

BERT 为什么可以双向看上下文,GPT 却不能?

BERT 的编码器自注意力通常不屏蔽前后有效位置;GPT 为了保持自回归生成,使用因果掩码屏蔽未来位置。

Encoder-only 一定不能生成文本吗?

不是绝对不能,而是它的主要结构和训练目标更偏向理解任务。连续自回归生成通常更适合 Decoder-only 或 Encoder-Decoder 结构。