上一篇把 Transformer 的"骨架"拆完了——注意力机制、Encoder-Decoder。这篇顺着走下去,看三个把 Transformer 用到极致的代表模型:
- BERT:拿 Transformer 的 Encoder,像"读完再答题"的学生
- GPT:拿 Transformer 的 Decoder,像"一边写一边看"的小说家
- T5:Encoder-Decoder 都拿,把所有任务都变成"翻译"
它们是当代大模型(ChatGPT、Claude、文心、豆包)的三条技术血脉。理解了这三个,后面看任何新模型都能秒定位。
类比:Transformer 像一块乐高底座。BERT 拿走"理解模块"、GPT 拿走"生成模块"、T5 两块都拿还加了个"翻译模块"。它们仨不是替代关系,是互补关系——一个团队里,有人专门读、有人专门写、有人既能读又能写。
一句话定位
| 模型 | 拿到 Transformer 的 | 训练目标 | 一句话人设 |
|---|---|---|---|
| BERT | Encoder(阅读模块) | 完形填空 + 下一句判断 | "读完一整段再答题的学霸" |
| GPT | Decoder(写作模块) | 下一个词预测 | "想到哪写到哪的小说家" |
| T5 | Encoder + Decoder | 连续片段还原 | "什么语言都能翻的翻译官" |
一、BERT:读完再答题的学霸
1.1 BERT 是什么?
BERT(Bidirectional Encoder Representations from Transformers)= 双向 Transformer Encoder。
把一段文字丢进去,每个词同时看到左边和右边的所有上下文,学出一个"语境化"的词向量。
类比:BERT 像一个读完一整段再答题的学霸。
- 试卷:"小明去 _ 存钱"
- 普通学生:看到"小明去"就猜,猜"银行"
- BERT 学霸:读完整个句子——"小明去银行存钱"和"小明去河边",结合"存钱"两个字,秒判第一个"银行"是金融机构、第二个"银行"是河岸。
这就是 BERT 的核心能力:同一个词在不同上下文里,是两个完全不同的"理解"。
1.2 BERT 怎么"理解"一句话?
输入一句话(这里 "my dog is cute. he likes playing"),经过 BERT 编码后,每个词都吐出一个包含全文语境的向量。
拿第一个特殊符号 [CLS] 的向量去接一个分类头,就能判断这句话的情感、意图、类别——这是 BERT 最常见的用法。
类比:班主任让全班同学写读后感。BERT 让每个同学(每个词)都看完别人的读后感再写自己的。最后看"班长"([CLS])写的总结,就能知道整篇文章的中心思想。1.3 模型输入:工作证三件套
BERT 的输入不是裸文字,而是三种 embedding 相加:
| Embedding | 类比 | 作用 |
|---|---|---|
| Token Embedding | 员工姓名 | 词本身的语义 |
| Segment Embedding | 员工部门编号 | 区分这是第几句话(A 还是 B) |
| Position Embedding | 员工工位号 | 引入位置信息(第几个词) |
类比:把每个 token 做成一张"工作证"——名字 + 部门 + 工位,缺一张都不完整。BERT 的输入是这三种信息的叠加。
1.4 模型结构:Transformer Encoder 叠叠乐
BERT-base 用 12 层 Encoder 堆叠,每层有:
- Multi-Head Self-Attention(互相看)
- Feed Forward(前馈网络)
- 残差 + LayerNorm(防跑偏)
BERT-large 翻倍到 24 层。
关键点:BERT 每一层的 Self-Attention 都是双向的——每个词同时看所有位置(左 + 右 + 自己),所以叫 Bidirectional。
类比:班里 12 个学霸围坐一圈讨论问题,每一轮每个人都听其他 11 个人的意见后再发言。讨论 12 轮后,每个人对全班语境的理解都到位了。
1.5 输出:每个位置都答题
BERT 不像传统模型只输出一个分类结果,它每个位置都吐一个向量:
[CLS]位置 → 整段话的总结向量,做分类用- 其他位置 → 每个词的语境向量,做问答/命名实体识别用
类比:一场考试不是只有一个标准答案——阅读理解 5 道题、完形填空 20 道、翻译 2 段,每道题每个空格都需要一个"答案向量"。BERT 给每个位置都准备了独立的答案。
1.6 预训练任务 1:完形填空(Masked LM)
BERT 训练时随机遮住 15% 的词,让模型根据上下文猜被遮住的词是什么。
- 80% 替换为
[MASK]:my dog is [MASK]→ 让模型猜 - 10% 替换为随机词:防止模型"摆烂"——硬逼它真的看懂上下文
- 10% 保持原词:保留一部分原始信号
类比:高考英语的完形填空——挖掉几个词,根据上下文填回来。BERT 做的就是这个,只是卷子是整个互联网的文本。
1.7 预训练任务 2:下一句预测(NSP)
BERT 还做了第二个任务:判断两句话是不是相邻的。
- 正样本:真正的下一句("今天下雨" → "我带伞了")
- 负样本:随机凑的两句("今天下雨" → "苹果是红色的")
作用:让模型学到句子间的关系——对问答、自然语言推理等需要"两句话对比"的任务至关重要。
类比:让模型玩"剧情接龙"——判断下一句剧情合不合理。这让 BERT 学会句际关系,不只单词本身。
1.8 BERT 能干啥?
| 任务 | 类比 | 典型场景 |
|---|---|---|
| 文本分类 | 给文章打标签 | 情感分析、垃圾邮件识别、意图识别 |
| 命名实体识别 NER | 把人名地名画出来 | 从文本里抽人名、地名、机构名 |
| 问答 QA | 阅读理解答问题 | 客服机器人、智能搜索 |
| 句子对匹配 | 判断两句话像不像 | 检索去重、问答匹配 |
| 特征提取 | 把文本转成语义向量 | 任何需要"语义表示"的下游任务 |
1.9 拓展:从 word2vec 到 BERT 的进化
为什么要有 BERT?回看一下词嵌入的演进:
| 时代 | 代表 | 类比 | 痛点 |
|---|---|---|---|
| 2013 | word2vec / GloVe | 每个词有一张固定名片 | 一词多义分不清 |
| 2017 | ELMo | 根据场合换不同名片 | LSTM 特征提取弱于 Transformer |
| 2018 | OpenAI GPT | 拿 Decoder 单向预训练 | 单向,没利用下文 |
| 2018 | BERT | 拿 Encoder 双向预训练 | 训练贵、不能直接生成 |
BERT 的革命性:第一次让"词向量"是根据上下文实时算的。"银行"在"去银行存钱"和"去银行买苹果"里,是两个完全不同的向量。
类比:以前的 word2vec 像是印好的一本小词典;ELMo 是根据场合换不同页面;BERT 是现场实时打印一张带语境的名片。
二、GPT:一边写一边看的小说家
2.1 GPT 是什么?
GPT(Generative Pre-trained Transformer)= 单向 Transformer Decoder。
和 BERT 反过来——GPT 拿的是 Transformer 的 Decoder 块,并且让 Self-Attention 只能看到左边的词。
类比:GPT 像一个一边写一边往后看的小说家。
- 写"今天是晴天,我去 ___" 时,他不知道后面会出现什么
- 只能根据"今天是晴天,我去"这几个字,决定下一个字
- 写完后才能继续往后看,写下一个字
所以 GPT 主攻"生成"——给它开头,它能一路续写下去。
2.2 Transformer 进化时间线
从 2017 年 Transformer 论文到 GPT-2,演进很清晰:
- 2017:Transformer 论文发表(Encoder-Decoder)
- 2018-06:GPT-1(Decoder 单向 + 预训练 + 微调)
- 2018-10:BERT(Encoder 双向,更适合理解)
- 2019:GPT-2(更大、更强、能 zero-shot 完成任务)
BERT 和 GPT 像硬币的两面:
| BERT | GPT | |
|---|---|---|
| 类比 | 阅读理解的学霸 | 写作文的小说家 |
| 架构 | Encoder | Decoder |
| 注意力方向 | 双向 | 单向(左→右) |
| 训练任务 | 完形填空 | 下一个词预测 |
| 擅长 | 理解 | 生成 |
2.3 为什么 GPT 是单向的?
Transformer 原始架构里:
- Encoder:双向注意力,每个位置看所有其他位置 → 适合"理解全文"
- Decoder:单向(Masked)注意力,每个位置只看左边 → 适合"逐字生成"
GPT 拿 Decoder 做生成任务,单向是架构选择而不是限制——你写文章时,下一个字没出现之前你本来就不知道它是什么。
类比:
- 阅读 → 可以先看全篇再回头理解 → 双向(Encoder)
- 写作 → 一边写一边决定下一个字 → 单向(Decoder)
这是两种天然不同的认知过程,对应两种天然不同的架构。
2.4 GPT-2 输入:极简两件套
GPT-2 的输入比 BERT 简单——只有两种 embedding:
- Token Embedding:和 BERT 一样的子词切分
- Position Embedding:可学习的位置编码
没有 Segment Embedding,因为 GPT 不做句子对任务——它只做"一件事":续写。
类比:GPT 像只做一件事的流水线工人——输入"前面 N 个字",输出"第 N+1 个字"。不需要区分句子对,所以不需要 Segment Embedding。
2.5 GPT-2 的 Decoder 块结构
每个 Decoder 块包含两件事:
- Masked Multi-Head Self-Attention:只能看左边的词
- Feed Forward + 残差 + LayerNorm:和 BERT 一样
GPT-2 small 有 12 层、768 维、12 个 head;GPT-2 medium 翻倍到 24 层、1024 维、16 个 head。
类比:GPT 就像 12 个作家坐在一排,每个人写完一句话递给下一个人,下一个人接着写——后一个人能看到前面所有人写过的话,但不能跳到后面去偷看。
2.6 Masked Self-Attention:GPT 的灵魂
Masked = 在注意力分数上加一个"上三角是负无穷"的 mask,让当前位置只能 attend 到左边的 token。
具体实现:
- 算 Q·K^T 得到注意力分数矩阵
- 加 mask(上三角设为 -∞)
- softmax → 变成概率分布
- 用概率加权求和 V
类比:考试时试卷是从左到右滚动出示的——你写到第 5 题时看不到第 6 题。
这就是 Masked Attention:每个位置只能参考左边已经"亮出来"的题。反过来,如果是 BERT 的双向注意力,所有题同时亮出来,你可以来回翻看。
2.7 GPT 的训练:下一个词预测
GPT 的训练目标极简——给定前 N 个词,预测第 N+1 个词:
这个任务看似简单,但当数据量和模型规模上去后,模型"被迫"学会了语法、世界知识、推理能力——这就是涌现能力的来源。
类比:让一个学生每天抄写 1000 万篇新闻的后半段,最后他即使没学过语法,也能写出语法正确、风格得体的句子。
这就是大模型最迷人的地方——海量 + 简单目标 = 涌现能力。
2.8 GPT 能干啥?
| 任务 | 类比 | 典型场景 |
|---|---|---|
| 文本生成 | 给开头,续写下去 | 写邮件、写小说、写代码 |
| 对话 | 多轮对话拼成一段输入 | ChatGPT、客服机器人 |
| 摘要 | prompt 引导生成摘要 | 新闻摘要、报告摘要 |
| 翻译 | "translate to English:" + 中文 → 英文 | 机器翻译 |
| 分类 | 类别标签当文字,模型预测概率 | 零样本/少样本分类 |
| 音乐生成 | 音符当 token,一样续写 | MuseNet、AI 作曲 |
最神奇的特性:Zero-shot 学习——训练时没见过具体任务,只要在 prompt 里说"Translate to English:",GPT-2 就能做翻译。
类比:GPT 像一个受过海量阅读训练的博学的人——你只要在 prompt 里描述清楚你要什么("请把这段话翻译成英文"),他就能照做,哪怕他没受过专门的翻译训练。
这就是大模型最迷人的地方:一个模型吃所有任务。
三、T5:什么都能翻的翻译官
3.1 T5 是什么?
T5(Text-to-Text Transfer Transformer)= 完整的 Transformer Encoder-Decoder。
思路很独特——把所有 NLP 任务都统一成"输入文本 → 输出文本"。
不管你是翻译、分类、问答还是摘要,T5 都把它们塞进同一个框架:
翻译 :translate English to German: That is good. → Das ist gut.
分类 :cola sentence: The course is jumping well. → acceptable
摘要 :summarize: <长文章> → <短摘要>
问答 :question: ... context: ... → <答案>
回归 :stsb sentence1: ... sentence2: ... → 3.8类比:T5 像一个万能翻译官——你塞进去任意格式的"中文",它都给你吐出来一段"中文"。
- 输入"翻译请求" → 输出翻译结果
- 输入"分类请求" → 输出类别文字
- 输入"摘要请求" → 输出摘要文字
- 输入"问答请求" → 输出答案文字
任务之间的区别,只在输入文本怎么写、输出文本怎么解读。
3.2 核心理念:万物皆文本
T5 的论文标题就叫 "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer"——用统一的文本到文本框架,探索迁移学习的极限。
这解决了什么问题?
传统 NLP 里,每个任务都有自己专属的模型结构:
| 任务 | 传统做法 | T5 做法 |
|---|---|---|
| 分类 | softmax 输出概率 | 输出类别文字 |
| 翻译 | Encoder-Decoder + Beam Search | 输出翻译文字 |
| 摘要 | Encoder-Decoder + 特殊解码 | 输出摘要文字 |
| 问答 | span extraction 头 | 输出答案文字 |
| 回归 | 输出实数 | 输出数字文字 |
T5 说:别这么麻烦,全给我转成文本。模型只有一个 loss(生成文本的 cross-entropy),所有任务一起训练,所有任务一起推理。
类比:以前每个业务部门都有自己的报表系统——财务用 Excel、销售用 CRM、运营用 BI。T5 说:所有部门都用一个记事本,写什么就拿什么——统一接口、统一格式、统一训练。
3.3 模型结构:经典 Encoder-Decoder
输入文本 输出文本
│ ▲
▼ │
┌─────────────────┐ ┌─────────────────┐
│ Encoder │ │ Decoder │
│ ┌───────────┐ │ │ ┌───────────┐ │
│ │ Self-Att │ │ ────────────────▶ │ │ Self-Att │ │ ← 单向 mask
│ │ (双向) │ │ Cross-Att │ └───────────┘ │
│ └───────────┘ │ │ ┌───────────┐ │
│ ┌───────────┐ │ │ │ Enc-Dec │ │ ← 看 encoder
│ │ FFN │ │ ────────────────▶ │ │ Attention │ │
│ └───────────┘ │ │ └───────────┘ │
│ (12 层) │ │ ┌───────────┐ │
└─────────────────┘ │ │ FFN │ │
│ └───────────┘ │
│ (12 层) │
└─────────────────┘T5 的结构 = 标准 Transformer Encoder-Decoder:
- Encoder:双向注意力,处理输入文本
- Decoder:单向 Masked 注意力 + Encoder-Decoder Cross Attention,逐字生成输出
类比:T5 像一个翻译公司——
- Encoder(翻译助理)先把客户的中文材料通读一遍、双向理解
- Decoder(翻译官)拿到助理的笔记,一个字一个字翻译成英文
- 翻译官不能跳着写——必须从第一个英文单词开始往后逐字生成(Masked)
3.4 关键技术细节
A. 相对位置编码
T5 没用 BERT/GPT 的绝对位置编码,而是用相对位置编码——每个 attention 分数加上一个和"两个 token 距离"相关的偏置。
| 距离 | 含义 | 类比 |
|---|---|---|
| 0 | 自己 | 镜子里的自己 |
| 1 | 相邻 | 隔壁工位 |
| 2 | 隔一个 | 隔一个工位 |
| ... | ... | ... |
| 128+ | 全部进最后一桶 | 远处不重要,记个大概就行 |
好处:训练时学到的"距离关系"能泛化到比训练时更长的序列(外推性好)。
类比:BERT/GPT 的绝对位置像给每个人发固定楼层卡(3 楼 5 号);T5 的相对位置像只记录"我和他隔几个人"——更灵活,换位置不影响理解。
B. 简化版 Layer Normalization
把 LayerNorm 从残差块内部移到残差块外部,训练更稳定,显存占用更小。
类比:以前是"做完每一步就检查一次作业";T5 是"做完一整块再检查一次"——更高效、占用更少资源。
C. SentencePiece 分词器
T5 用 SentencePiece(Google 开源的子词切分工具)做分词,统一处理中英文不依赖空格的语言。
类比:BERT 用 WordPiece(按词切)、GPT 用 BPE(按频率切),T5 用 SentencePiece(按概率切)。工具不同,效果类似——都是把"不可切"的中文/日文/希腊文切成模型能吃的子词。
3.5 预训练任务:Span Corruption
T5 的预训练任务叫 Span Corruption(连续片段破坏):
原文:Thank you for inviting me to your party last week.
破坏:Thank you <X> me to your <Y> week.
目标:<X> for inviting <Y> party last <Z>随机选若干连续片段(平均长度 3),用哨兵 token <X>, <Y>, <Z> 替换,模型要按顺序生成出这些被替换的片段。
和 BERT Masked LM 的区别:
| BERT | T5 | |
|---|---|---|
| 遮蔽方式 | 单个 token | 连续片段(平均 3 个 token) |
| 遮蔽比例 | 15% | 15% |
| 哨兵 token | 无(直接 [MASK]) | 用 <X> <Y> <Z> 占位 |
| 目标 | 猜被遮的单个词 | 按顺序还原被遮的多个片段 |
类比:
- BERT 的训练任务是"挖掉单个字让你填"——高考完形填空
- T5 的训练任务是"挖掉一整段让你填"——更接近真实任务中"信息缺失"的模式,比如新闻摘要本来就丢了一半内容
3.6 T5 三个尺度
| 规模 | 参数量 | 层数 | 类比 |
|---|---|---|---|
| T5-small | 6000 万 | 6 | 实习生——演示、教学用 |
| T5-base | 2.2 亿 | 12 | 正式员工——一般任务够用 |
| T5-large | 7.7 亿 | 24 | 主管级——高质量任务 |
| T5-11B | 110 亿 | 24 | 总裁级——SOTA 效果 |
3.7 T5 的影响
T5 的"万物皆文本"思想影响极大——后来的 GPT-3 / GPT-4 / PaLM / ChatGPT 本质上都在用类似思路:
- 一个超大模型
- 一个统一的文本接口(对话 prompt)
- 一个统一的训练目标(下一个 token)
T5 是这条路的先驱。
类比:T5 提出了"一个模型吃所有任务"的设想——后来 GPT-3/ChatGPT 把它推到了极致:只要 prompt 写得好,一个对话框搞定一切。
四、BERT / GPT / T5 对比
4.1 一图看懂
4.2 详细对比表
| 维度 | BERT | GPT | T5 |
|---|---|---|---|
| 架构 | Encoder-only | Decoder-only | Encoder-Decoder |
| 类比 | 阅读理解学霸 | 写作小说家 | 万能翻译官 |
| 注意力 | 双向 | 单向 Masked | 双向 + 单向 |
| 训练目标 | Masked LM + NSP | 下一个词预测 | Span Corruption |
| 擅长 | 理解(分类/QA/NER) | 生成(续写/对话/翻译) | 通用(全任务) |
| 不能做的事 | 自然文本生成 | 利用下文 | 单架构吃所有任务 = 规模更大 |
| 典型规模 | 110M~340M | 117M~1.5B | 60M~11B |
| 后继者 | RoBERTa、ALBERT、ERNIE | GPT-3、GPT-4、ChatGPT | Flan-T5、mT5、UL2 |
| 业务场景 | 智能客服问答理解、文本审核 | AI 写作、对话机器人、代码生成 | 多任务 NLP 平台 |
4.3 怎么选?
| 业务需求 | 推荐 | 类比 |
|---|---|---|
| 评论情感分析 / 意图识别 | BERT 类 | 只读不写,BERT 速度更快 |
| 客服机器人 / 写作助手 / 代码生成 | GPT 类 | 必须会写,GPT 最自然 |
| 多任务 NLP 平台(一模型吃所有) | T5 类 | 通用接口,省去每个任务做模型 |
| 实时性要求高(推理快) | BERT 类 | Encoder 比 Decoder 推理快一倍 |
| 超长文本生成 | T5 类 | Encoder-Decoder 长文本生成更稳 |
类比:招聘 NLP 工程师——
- BERT 像阅读理解专家(读得快、答得准)
- GPT 像内容创作专家(想到哪写到哪)
- T5 像翻译官(什么语言都能翻,但不是最精)
看业务需求招对的人,模型也一样——架构选错 = 产品选错。
五、演进时间线(2017-2023)
2017 Transformer 论文
│ ← 乐高底座诞生
│
2018 GPT-1 ────▶ BERT ────▶ ELMo
│ 单向 双向
│ 小说家 学霸
│ 110M 340M
│
2019 GPT-2 RoBERTa ────▶ T5
│ 大模型 BERT 升级 万物皆文本
│ 1.5B 同样双向 翻译官
│ 220M~11B
│
2020 GPT-3
│ 1750 亿参数
│ In-context learning
│ "博学的全才"
│
2022 InstructGPT / ChatGPT
│ RLHF 让模型听话
│ "有礼貌的全才"
│
2023 GPT-4 / Claude / Gemini
│ 多模态、更长上下文
│ "全能助理"
▼规律:模型越来越大、训练目标越来越统一、应用场景从"专用"走向"通用"。
类比:从 Transformer 到 GPT-4 的演进,像手机从功能机到智能机——
- 2017 Transformer = 第一台触屏手机
- 2018 BERT/GPT = 不同操作系统的早期智能机
- 2020 GPT-3 = 智能手机
- 2023 GPT-4 = 全能助理
每一代都比上一代"什么都能干"。
六、作为 AI 产品经理要记住的 5 件事
- 架构决定能力:BERT 擅长理解、GPT 擅长生成、T5 想统一一切——选错架构 = 选错产品
- 大模型的核心是"预训练 + 微调/提示":先把通用能力预训练好,再针对具体任务调
- 数据量决定上限:BERT 用 33 亿词、GPT-3 用 3000 亿 token、T5 用 750 GB 文本
- 统一接口是大趋势:从 T5 的"万物皆文本"到 ChatGPT 的"万物皆对话",都是这个思路
- 看名字猜架构:看到
*-BERT一般是 Encoder,看到*-GPT一般是 Decoder,看到*-T5一般是 Encoder-Decoder
参考资料
- 图解 BERT - datawhalechina/learn-nlp-with-transformers
- 图解 GPT - datawhalechina/learn-nlp-with-transformers
- T5 结构及应用 - datawhalechina/base-llm
本文整合了三篇原始教程的核心知识点,按"AI 产品经理入门"视角重新组织。所有配图来自原始仓库,版权归原作者所有。


















Comments | NOTHING