大家的AI
机器学习AI论文
加载中…

学习

🏅我的成就

Ch.03

Transformer 谱系:编码器(BERT)vs 解码器(GPT)

Transformer 这一伟大发明大体分成两支家族。一眼读完整句的 编码器家族 BERT(理解型) ,以及由前面词不断接龙下一个词的 解码器家族 GPT(生成型) 。若说 BERT 擅长“高考语文填空推理”,GPT 就是“接龙与写小说”的天才。本章说明两种模型如何训练,以及为何在实务中用途截然不同,并用初学者能懂的类比加以整理。

如何读公式

ht(0)=xt+PE(t)h_t^{(0)} = x_t + PE(t)ht(0)​=xt​+PE(t) 是输入 token 表示的起点。xtx_txt​ 提供词语语义,PE(t)PE(t)PE(t) 提供位置信息,所以模型从第一层就同时接收“是什么词”和“在什么位置”。Attn(Q,K,V)=softmax(QKT/dk)V\mathrm{Attn}(Q,K,V)=\mathrm{softmax}(QK^T/\sqrt{d_k})VAttn(Q,K,V)=softmax(QKT/dk​​)V 是 self-attention 的核心公式。先用 QKTQK^TQKT 计算相关性,再用 dk\sqrt{d_k}dk​​ 稳定尺度,最后按 softmax 权重混合 VVV 得到上下文表示。LMLM=−∑t∈Mlog⁡p(wt∣X)\mathcal{L}_{\mathrm{MLM}}=-\sum_{t\in\mathcal{M}}\log p(w_t\mid X)LMLM​=−∑t∈M​logp(wt​∣X) 是 BERT 的 MLM 目标。模型在遮盖位置集合 M\mathcal{M}M 上预测真实 token wtw_twt​,从而学习利用双向上下文。LLM=−∑tlog⁡p(xt∣x<t)\mathcal{L}_{\mathrm{LM}}=-\sum_t \log p(x_t\mid x_{<t})LLM​=−∑t​logp(xt​∣x<t​) 是 GPT 的下一 token 目标。每一步只依赖历史 token x<tx_{<t}x<t​,因此可以进行自回归生成,并通过因果掩码避免未来信息泄露。
BERT 看整句 建表示;GPT 只用已生成 token 追加下一个。

概念结构:编码器(理解)vs 解码器(生成)

BERT 系GPT 系双向编码器堆叠因果解码器堆叠N层重复分类头Add & Norm前馈 FFNAdd & Norm多头注意力文本 + 位置嵌入N层重复文本预测任务分类Add & Norm前馈 FFNAdd & Norm掩码多头注意力文本 + 位置嵌入残差连接
BERT 系双向编码器堆叠N层重复分类头Add & Norm前馈 FFNAdd & Norm多头注意力文本 + 位置嵌入GPT 系因果解码器堆叠N层重复文本预测任务分类Add & Norm前馈 FFNAdd & Norm掩码多头注意力文本 + 位置嵌入残差连接

I love deep learning 的 token 关系

BERT

双向: 每个 token 都可关注全部 token

1234

左侧迷你图是对 Multi-Head Attention 的简化表达。多个头并行关注不同关系,再将结果合并(Concat + Projection),形成双向上下文表示。

GPT

因果: 当前 token 仅关注左侧(过去)token

1234
未来屏蔽

右侧是 Masked Multi-Head Attention。结构与多头注意力相同,但加入因果掩码,使当前位置不能看到未来 token,从而支持自回归(next-token)训练。

BERT 系

学习流程:分词→掩码/目标→堆块→头

① 编码器(BERT):token 双向 互相关注

GPT 系

屏蔽未来 token

② 解码器(GPT):只看左侧 预测下一格

模型行为:双向向量 vs 自回归生成

③ 训练目标:MLM(掩码复原)vs 下一 token 对数似然
④ 推理:分类/嵌入 vs 提示驱动的 token 生成

BERT 系

学习流程:分词→掩码/目标→堆块→头

① 编码器(BERT):token 双向 互相关注

GPT 系

屏蔽未来 token

② 解码器(GPT):只看左侧 预测下一格

模型行为:双向向量 vs 自回归生成

③ 训练目标:MLM(掩码复原)vs 下一 token 对数似然
④ 推理:分类/嵌入 vs 提示驱动的 token 生成

Transformer 谱系:BERT 理解,GPT 生成

1. BERT:双向阅读、重在“理解”的编码器
概念: BERT(Bidirectional Encoder Representations from Transformers)只发展 Transformer 的 编码器。核心是 双向(Bidirectional)上下文:同时参考左右词,把当前词在句中最准确的含义压进 表示向量。
直觉: 像名医问诊时把既往(左)与今日检查(右)同时摊开综合判断——一次看清全局,上下文把握更强。
数学: 代表训练法是 MLM(掩码语言建模) :在句中挖洞(`[MASK]`),用周围上下文去拟合正确 token wtw_twt​ 的分布 p(wt∣全文上下文)p(w_t \mid \text{全文上下文})p(wt​∣全文上下文)。
应用: “这条评论正还是负?”“从文里找人名和日期?”等文本分类、命名实体识别、文档检索等场景大量使用。
2. GPT:不断“生成”下一个词(解码器)
概念: GPT(Generative Pre-trained Transformer)发展的是 解码器。模型不能一眼看完整句:用 掩码 遮住未来词,只能看 已出现的词(1…t−11\ldots t-11…t−1) 来预测第 ttt 个词——自回归(Autoregressive)。
直觉: 像打字机写小说——还没写下的下一句不能先看,只能根据已写内容想象下一个词。
数学: 为防止未来信息泄漏,用 因果掩码(Causal Masking) 把注意力矩阵上三角置为 −∞-\infty−∞。训练最大化 −log⁡p(xt∣x<t)-\log p(x_t\mid x_{<t})−logp(xt​∣x<t​)。
应用: 聊天回复、邮件草稿、代码补全等一切要 “写出新东西” 的任务。
3. 训练目标:填空 vs 接龙
概念: 骨架不同,练法也不同。BERT 为深学 表示(Representation) ,挖空靠周边提示去猜;GPT 为强化 生成(Generation) ,只看前面把句子接下去。
直觉: BERT 训练营发 “我昨天在[MASK]吃饭” 让你猜空里是不是“餐厅”;GPT 只给你 “我昨天在餐厅……” ,逼你一直往下编。
4. 推理差异:一次判读 vs 流式生成
概念: 上线后用户体验也不同。BERT 整句进来,一次前向就算出各位置的语义向量;GPT 收到提示后产出一个词,再喂回去继续产下一个,字串流式吐出。
直觉: BERT 像 扫描仪 扫完一页就出标签;GPT 像 同声传译 或打字机一字一字接——输出越长,算力与时间往往越长。

为何重要

因地制宜:搞清模型“专业”才不容易翻车
常见误区是“GPT 很火,什么都用它”。若只做评论正负分类,上巨大 GPT 是 杀鸡用牛刀;让 BERT 写诗也会离谱。搞清谱系才能 在成本与性能间选对架构。
掩码规则决定安全性与性格
GPT 的因果掩码是在守 生成的规矩。股价或欺诈日志里,要防止“偷看未来再判过去”的 数据泄漏,时间顺序约束很关键;而基于已发生的全记录做归因分析时,双向 BERT 往往更合适。
流水线入口不同(分类头 vs 提示)
微调方式也不同:BERT 常在模型顶端加小 分类器;GPT 更常靠 提示工程 或对话式 指令微调,少动骨干结构。
抑制幻觉的设计锚点
生成模型会 幻觉。实务里常用 BERT 类理解模型从内部文档 检索 准确依据,再让 GPT 依据依据 生成——RAG 兼取两家之长。

如何使用

实务(BERT):先嵌入再接头
BERT 把文本压成 嵌入向量。例如垃圾邮件:整封邮件过 BERT,取 `[CLS]` 代表向量,再过一层逻辑回归或线性 头 得到 0–1 概率——快且准,适合后端大批量实时分类。
实务(GPT):链式生成要“缰绳”
上线 GPT 需要 缰绳 防跑偏。开发者调 温度(创意 vs 稳妥)、Top-k / Top-p(只在高概率词里选)。代码补全倾向 低温;营销文案可 升温 换创意。
成本与 GPU 算力差异
BERT 级模型常只有几百 MB~数 GB,一块便宜 GPU 甚至 CPU 能跑;GPT 级大模型动辄数十~数百 GB,输出字数 越长,算力与延迟 陡增,做预算必算这笔账。
调试策略:先分清哪类故障
分类(BERT)差:数据噪声、标注错、容量不足;聊天(GPT)胡扯:提示不清、幻觉、上下文 给不够。按线排查。

总结

Transformer 分作两支大家:BERT 型编码器 双向读句、学富 表示;GPT 型解码器 只看左侧、不断 生成 下一 token——像填空与接龙。训练上 BERT 常用 MLM 填掩码,GPT 在 因果掩码 下最大化 下一词似然。部署时 BERT 常 一次打分/嵌入 固定输入;GPT 从提示 逐 token 堆长输出,越长越慢。现代产品常二者混用:编码器做 检索,解码器写 草稿,RAG 压 幻觉。

习题说明

小结 — BERT(编码器家族)以 双向理解与表示 为核心,GPT(解码器家族)以 只看左侧的自回归生成 为核心。BERT 用 MLM 等学上下文嵌入;GPT 用 p(xt∣x<t)p(x_t\mid x_{<t})p(xt​∣x<t​) 接龙。推理上 BERT 更接近 一次读出向量;GPT 更接近 流式拉长 token。
  • 类型BERT 系
  • 提示(关键词→思路)仅编码器、双向上下文、表示学习 → 找 “encoder/理解”
  • 类型GPT 系
  • 提示(关键词→思路)解码器、因果掩码、下一 token 预测 → 找 “generation/自回归”
  • 类型MLM
  • 提示(关键词→思路)掩码一部分并复原;损失在掩码位置 → 训练目标
  • 类型Causal LM
  • 提示(关键词→思路)−∑log⁡p(xt∣x<t)-\sum \log p(x_t\mid x_{<t})−∑logp(xt​∣x<t​) 左条件 → 生成训练
  • 类型掩码
  • 提示(关键词→思路)屏蔽未来位置(如注意力中 −∞-\infty−∞)→ 防偷看
  • 类型迁移
  • 提示(关键词→思路)BERT:分类头;GPT:提示/指令微调 → 产品形态
类型提示(关键词→思路)
BERT 系仅编码器、双向上下文、表示学习 → 找 “encoder/理解”
GPT 系解码器、因果掩码、下一 token 预测 → 找 “generation/自回归”
MLM掩码一部分并复原;损失在掩码位置 → 训练目标
Causal LM−∑log⁡p(xt∣x<t)-\sum \log p(x_t\mid x_{<t})−∑logp(xt​∣x<t​) 左条件 → 生成训练
掩码屏蔽未来位置(如注意力中 −∞-\infty−∞)→ 防偷看
迁移BERT:分类头;GPT:提示/指令微调 → 产品形态
示例(概念)
“最接近典型 BERT 结构?”
① 堆编码器双向
② 仅解码器
③ 仅卷积 → 1

“正弦 PE 偶数维 2i2i2i 通常放什么?”
① sin⁡\sinsin
② cos⁡\coscos
③ ReLU → 1

“最符合 GPT 训练?”
① 仅注意力混合
② 自回归下一 token LM(只看左侧)
③ 缩短序列 → 2

“dff=4dmodeld_{ff}=4d_{model}dff​=4dmodel​, dmodel=128d_{model}=128dmodel​=128,自然 dffd_{ff}dff​?”
① 256
② 512
③ 64 → 2

“最接近可学习位置嵌入?”
① 每位置加可学习向量
② 只用 sin⁡\sinsin
③ 不用位置 → 1

“顺序影响标签时,与注意力一起保留的输入?”
① token 嵌入+位置
② 仅像素
③ 仅文件名 → 1

示例(判断) 加性 PE 通常加到 token 嵌入上 → 1

示例(情景) 用药顺序重要→先加强
① 嵌入+PE → 1

示例(投票) [1,1,0,1,0] 中 1 的个数 → 3

示例(聚合) [2,1,2] 之和 → 5

示例(结构) 10×1010\times1010×10 注意力分数矩阵元素数 → 100

示例(深度) 堆层目的最接近?
① 分层抽象 → 1