想必不少小伙伴面试过程中,会遇到这道题,「说说 BERT 和 Transformer 的区别」。
还别说,这问题真挺常问的。前几天有读者私信我说,面试官问了这题,他答了「BERT 用了 Transformer 的架构」,面试官追问「具体用了哪部分,为什么只用那部分」,他就卡住了。
其实这道题一点都不难,关键是你脑子里要有一张清晰的图。
今天咱们就用图把这件事讲透。看完你会知道,Transformer 是一个完整的翻译团队,而 BERT 和 GPT 分别只拿走了这个团队的一半。

翻译团队,Transformer 的完整架构
Transformer 到底长什么样?
2017 年,Google 发了一篇论文叫「Attention Is All You Need」。这篇论文提出了 Transformer 架构,从此改变了整个 NLP 的走向。
Transformer 最初是为了做机器翻译设计的,比如把「我爱你」翻译成「I love you」。
要完成翻译,你需要两个能力,一个是「听懂原文」,一个是「说出译文」。
Transformer 就是按照这个思路设计的,它由两部分组成,
- Encoder(编码器),负责听懂输入
- Decoder(解码器),负责说出输出 我打个比方。
你可以把 Transformer 想象成一个同声传译团队。左边坐着一个「听力官」,他负责听完整段中文,把意思理解透。右边坐着一个「口译官」,他负责根据听力官传过来的理解,一个词一个词地把英文说出来。
听力官和口译官之间有一条「传话通道」,在 Transformer 里这个通道叫 Cross-Attention,它让口译官在说每个英文词的时候,都能回头看一眼听力官的笔记,确认自己没理解错。

这两个部分内部长什么样?
听力官(Encoder)内部的工作流程是这样的,
先把输入的中文句子转成向量(Input Embedding + Position Encoding)
然后做 Self-Attention,让每个字都看看其他字,搞清楚它们之间的关系
再过一个前馈网络(Feed Forward),做一次非线性变换
以上这套流程重复 N 次(原始论文是 6 次) 口译官(Decoder)的流程类似,但多了一步,
先把已经说出的英文词转成向量
做 Masked Self-Attention,每个词只能看到它左边已经说出的词,不能偷看右边还没说的
做 Cross-Attention,回头看听力官的笔记
过前馈网络
同样重复 N 次

为什么 Decoder 要遮住右边?
这个问题很关键。
想象你在做翻译,你正在说第三个英文词。如果你已经知道了第四个词和第五个词是什么,那这道题就没意义了,因为你直接照抄就行了。
所以 Decoder 必须「遮住右边」,这叫 Masked Attention。每个词在预测的时候,只能看到它前面已经确定的词,不能偷看后面的答案。
这就像考试时用手挡住下面的题,一道一道做。

环顾会议室,Self-Attention 机制
Self-Attention 到底是怎么工作的?
Self-Attention 是 Transformer 最核心的零件,无论是 Encoder 还是 Decoder 里都有它。
我再打一个比方。
想象你在一个会议室里,桌子上坐了 5 个人,分别代表句子里的 5 个词,「我」「爱」「吃」「苹」「果」。
现在轮到「吃」这个词发言了。它要决定,在理解自己的意思时,应该重点关注桌上的哪个人。
「吃」环顾了一圈会议室,
- 看了一眼「我」,觉得还行,跟自己有点关系(谁在吃)
- 看了一眼「爱」,觉得关系不大
- 看了一眼「苹」,觉得关系很大(吃什么)
- 看了一眼「果」,觉得关系也很大 于是「吃」决定,把更多注意力分给「苹」和「果」,少一点给「我」,几乎不理「爱」。
Self-Attention 干的就是这件事,让每个词都看一圈所有其他词,然后决定谁对自己最重要。

技术上是怎么实现的?
在实际计算中,每个词会被变成三个向量,
- Q(Query),相当于这个词的「提问」,「我想找跟我相关的人」
- K(Key),相当于这个词的「标签」,「我是什么身份」
- V(Value),相当于这个词的「内容」,「我能提供什么信息」 计算过程是,
- 用 Q 和所有的 K 做点积,算出每对词之间的相关度
- 把相关度过一个 Softmax,变成 0-1 之间的注意力权重
- 用注意力权重对 V 做加权求和,得到最终输出 用公式写就是,Attention(Q, K, V) = softmax(QK^T / √d_k) · V
那个 √d_k 是一个缩放因子,防止点积数值太大导致 Softmax 梯度消失。

什么是 Multi-Head Attention?
Transformer 不止用一组 Q/K/V,而是同时用了多组,这叫 Multi-Head Attention。
还是会议室的比喻。如果只有一个视角,「吃」可能只注意到「吃什么」这个关系。但如果同时有 8 个视角(8 个 head),那不同的 head 可以分别关注,
- Head 1 关注「谁在吃」→ 注意力在「我」
- Head 2 关注「吃什么」→ 注意力在「苹果」
- Head 3 关注「什么态度」→ 注意力在「爱」 多个视角拼在一起,理解就更全面了。

只带耳朵的翻译,BERT
BERT 到底是什么?
2018 年,Google 又发了一篇论文,提出了 BERT(Bidirectional Encoder Representations from Transformers)。
名字挺长,但核心就一句话,BERT 只用了 Transformer 的 Encoder 部分,把 Decoder 整个扔掉了。
为什么?
因为 BERT 的目标不是「翻译」也不是「写作」,它的目标是「理解」。
还是用翻译团队的比喻。BERT 相当于一个只带耳朵的翻译,它不需要开口说话,它的工作就是,听完一段话之后,告诉你「这段话是正面情绪还是负面情绪」「这段话里的人名分别是谁」「这两段话是不是在说同一件事」。
既然不需要说话,那口译官(Decoder)就不需要了。只留听力官(Encoder)就够了。

BERT 的注意力和 Transformer 有什么不同?
这是最关键的区别,BERT 的 Self-Attention 是双向的。
在原始 Transformer 的 Decoder 里,每个词只能看到左边的词(Masked Attention),这是因为翻译/生成任务要求你一个词一个词地往外蹦,不能偷看后面的。
但 BERT 不需要一个词一个词往外蹦,它的任务是「理解整段话」。理解一段话的时候,当然要前后都看。
比如「苹果发布了新手机」这句话,你要判断「苹果」是水果还是公司,就必须看到后面的「新手机」。只看左边的话,你看到的是「苹果发布了」,没法确定是水果还是公司。
所以 BERT 把 Mask 去掉了,让每个词都能同时看到左边和右边的所有词。
这就是「Bidirectional」这个词的含义,双向。

填空题选手,BERT 的训练方式
BERT 是怎么训练出来的?
BERT 的训练方式非常巧妙,它用了两个任务。
任务一,Masked Language Model(MLM),做填空题
训练的时候,随机把句子里 15% 的词遮住,换成一个特殊符号 [MASK],然后让模型猜这个词是什么。
比如原句是「我 爱 吃 苹 果」,遮住之后变成「我 [MASK] 吃 苹 果」,模型要猜出 [MASK] 的位置应该填「爱」。
因为词被随机遮住,模型必须利用前后所有的上下文来猜。这就逼着它学会真正理解语义,而不是只记住一个方向的模式。

任务二,Next Sentence Prediction(NSP),判断两句话是不是连着的
给模型两句话 A 和 B,让它判断 B 是不是 A 的下一句。
比如,
- A=「今天天气真好」 B=「适合出去走走」 → 是下一句 ✓
- A=「今天天气真好」 B=「股票又跌了」 → 不是下一句 ✗ 这个任务让 BERT 学会理解句子之间的关系,对「问答」「推理」这些需要跨句子理解的任务特别有用。

接龙选手,GPT 的训练方式
GPT 又是怎么训练的?
GPT 的训练方式完全不同。
GPT 只用了 Transformer 的 Decoder 部分(把 Encoder 扔掉了,刚好和 BERT 反过来)。它的训练任务只有一个,预测下一个词。
给 GPT 一句话的前面几个词,让它猜下一个词是什么,
- 输入「我」→ 预测「爱」
- 输入「我 爱」→ 预测「吃」
- 输入「我 爱 吃」→ 预测「苹」
- 输入「我 爱 吃 苹」→ 预测「果」 这叫**自回归(Autoregressive)**训练,模型像玩成语接龙一样,一个词一个词地往后接。
因为是往后接,所以每个词只能看到它前面的词,不能偷看后面的。这就是为什么 GPT 用的是 Masked Attention(单向)。

BERT 做填空,GPT 玩接龙,这两种方式各有什么好处?
填空题(BERT)的好处是,模型必须前后都看,理解更深。坏处是,它不会「说话」,因为它从来没练过一个词一个词往外蹦的能力。
接龙(GPT)的好处是,模型天生就会「说话」,你给它一个开头,它能一直往下写。坏处是,它只能看左边,理解不如 BERT 深。
一句话总结,
BERT 是考试型选手,做阅读理解特别强,但你让它写作文它不行。
GPT 是写作型选手,写东西特别溜,但你让它做细粒度的分类判断,不如 BERT 精准。

谁干什么活,下游任务的分工
面试官经常问,BERT 和 GPT 分别适合什么场景?
BERT 这条线(Encoder-only)主要用在「需要理解但不需要生成」的场景,
文本分类,判断一句话是正面还是负面
命名实体识别(NER),找出句子里的人名、地名、机构名
问答系统,给一段文本和一个问题,找出答案在文本的哪个位置
语义相似度,判断两句话是不是在说同一件事
搜索排序,判断搜索结果和查询词的相关度 GPT 这条线(Decoder-only)主要用在「需要生成」的场景,
对话,ChatGPT、Claude 聊天
写作,写文章、写邮件、写代码
翻译,虽然原始 Transformer 用的是 Encoder-Decoder,但现在大模型靠纯 Decoder 也能翻译得很好
代码补全,GitHub Copilot 有意思的是,今天最火的大语言模型(LLM)全是 GPT 这条线的后代。GPT-4、Claude、LLaMA、千问、DeepSeek,清一色 Decoder-only 架构。
BERT 那条线没有消失,它的后代 RoBERTa、ALBERT、DeBERTa 还活跃在搜索引擎、广告系统、风控系统这些需要「快速精准判断」的场景里。只是不像 GPT 那条线这么出圈。

回到面试,一张表记住所有区别
面试被问到的时候,你脑子里有这张表就够了,
| 对比项 | BERT | GPT | 原始 Transformer |
|---|---|---|---|
| 用了哪部分 | 只用 Encoder | 只用 Decoder | Encoder + Decoder |
| 注意力方向 | 双向(左右都看) | 单向(只看左边) | Encoder 双向,Decoder 单向 |
| 训练方式 | 填空(MLM + NSP) | 接龙(预测下一个词) | 翻译(Seq2Seq) |
| 擅长什么 | 理解、分类、NER | 生成、对话、写作 | 翻译、摘要 |
| 代表模型 | BERT/RoBERTa/DeBERTa | GPT-4/Claude/LLaMA | T5/BART |
| 诞生年份 | 2018 | 2018(GPT-1) | 2017 |

最后用一句话帮你记住,
Transformer 是一个完整的翻译团队,BERT 只留了耳朵,GPT 只留了嘴巴。BERT 做填空题练出来的,所以它听得懂但不会说。GPT 玩接龙练出来的,所以它能一直往下说。
下次面试被问到,先说这句话,再展开讲细节,稳了。
图解系列持续更新,如果你觉得有用,帮我点个赞。