板块三 · 语言模型的发展
第22篇 · BERT
用一道完形填空题,把双向上下文真正塞进每一层 Transformer——预训练+微调范式的巅峰之作
本页所有数字均复述自论文原文并注明小节出处;标注【解读者补充】的内容不来自论文。本站不做任何外部验证。
一、全局大图
摘要拆解对照表
| 摘要短语(意译) | 对应论文章节 | 本页解读章节 |
| 与 ELMo、OpenAI GPT 不同,预训练深度双向表示,联合调节左右上下文 | §1 引言、§4.1 架构 | 第2章 |
| 掩码语言模型(MLM),受完形填空启发 | §3.1、§3.3 | 第3章 |
| 下一句预测(NSP)联合预训练文本对表示 | §3.2 | 第4章 |
| 只需加一个输出层微调即可适配广泛任务 | §3.5 微调、§4 任务列表 | 第6章 |
| GLUE 80.5%(+7.7)、MultiNLI 86.7%(+4.6)、SQuAD v1.1 F1 93.2(+1.5)、SQuAD v2.0 F1 83.1(+5.1) | 摘要、§5.1–5.3 | 第7章·批判性阅读 |
| 消融研究证明深度双向性是关键 | §5.5 消融 | 第7章·批判性阅读 |
主要贡献与证据强度预评
- 贡献1:证明深度双向预训练对语言表示的重要性。★★★ 强实验支撑 —— §5.5 消融直接对比 MLM vs LTR&No NSP(SQuAD F1 从 88.5 掉到 77.8),证据链完整。
- 贡献2:预训练表示大幅减少任务特定架构工程。★★★ 强实验支撑 —— 同一套 BERT 骨架在 GLUE、SQuAD、SWAG 上全部 SOTA,11 个任务。
- 贡献3:NSP 预训练任务有效。★★ 仅有消融 —— §5.5 显示去掉 NSP 后 QNLI 掉 3.5 分、SQuAD 掉 0.6 分,但该结论后来在学界有争议(本页第7章讨论)。
- 贡献4:更大模型在小数据下游任务上仍严格更好。★★★ 强实验支撑 —— §5.2 模型大小消融表单调递增。
- 贡献5:"MLM 收敛略慢但绝对性能几乎立即超过 LTR"。★★ 仅有消融 —— 附录 A.4.5 训练步数消融(图示为主,正文数字有限)。
推荐阅读路线
必读主线:引言 → §3.3 MLM → §3.4 NSP → §4 框架 → §5.1/5.2 主结果 → §5.5 消融。可跳读支线:§2 相关工作(若已熟悉 ELMo/GPT 可略);附录 A 各数据集细节。跳过消融研究的代价最大——你会误以为提升来自"更大的模型",而论文自己的证据说主要来自"双向预训练目标"。
二、逐章精读
第1章 问题设定:单向语言模型的"天生残疾"
来源:论文 §1 引言(第1页)。失效模式与类比部分为解读者补充。
学习目标:学完本章你应能——说出 feature-based 与 fine-tuning 两类方法的区别及各自代表;解释为什么"从左到右的语言模型"对句子级和词元级任务都次优;复述 BERT 的两步框架(预训练/微调)。
失效模式先行【解读者补充】:假设你要做抽取式问答。问题问"谁发明了电话",文章里写"贝尔于1876年发明了电话"。一个从左到右的模型在读到"贝尔"时,还完全看不到后面的"发明了电话"——它必须靠猜。GPT 式的单向注意力把这个约束硬编码进了每一层:第 k 层的"贝尔"永远只能看到它左边的词。ELMo 的拼接方案(左LSTM+右LSTM)看似双向,实则两个方向从未在同一层交互过。【实验支持】论文 §5.5 的消融显示:把 BERT 换成纯 LTR 版本,SQuAD F1 直接从 88.5 跌到 77.8——这正是这个"残疾"的量化代价。
直觉类比:单向语言模型像隔着一条单行道看风景——你只能记住走过的路,不能提前看到前方。类比在哪里失效:人至少还能"预期"前方内容,而 LTR 模型在第 t 步对未来 token 的信息量严格为零(被注意力掩码彻底切断);ELMo 则像两条单行道上各走各的两个人最后碰头交换笔记——信息融合发生在最末端而非逐层进行。
主张 vs 事实:【论文声称】两种既有方法(feature-based / fine-tuning)的局限都在于"预训练目标是单向的";【实验支持】§5.5 消融给出量化对比;【解读者推断】论文把"双向性"立为问题框架,使 MLM 成为框架内的自然答案——这是典型的写作动作,读者应意识到"NSP 是否必要""MLM 是否唯一的双向化方案"都是框架外的开放问题(XLNet 等后续工作即在此发力)。
一句话蒸馏:一句话记住本节——BERT 的全部动机可以压缩为一句反问:为什么预训练时要禁止模型看右边?
闭卷自检:不看材料,你能说出 ELMo、GPT、BERT 三者在"双向程度×使用方式"二维表中的位置吗?(ELMo=浅层拼接+feature-based;GPT=单向+fine-tuning;BERT=深层双向+fine-tuning。)
第2章 模型架构与输入表示:几乎没有新东西
来源:论文 §4.1、§4.2(第3–4页)。手算验证为解读者补充计算。
学习目标:学完本章你应能手算给定 (L,H,A) 的 Transformer 编码器参数量级;画出 BERT 输入嵌入的三部分组成;说出 [CLS]、[SEP] 标记的作用。
架构就是标准的 Transformer 编码器堆叠,记号:L=层数,H=隐藏维,A=注意力头数,前馈维=4H。两个规格(§4.1 表1):BERT_BASE:L=12, H=768, A=12, 参数 110M;BERT_LARGE:L=24, H=1024, A=16, 参数 340M。输入表示 = WordPiece 词元嵌入 + 位置嵌入 + 分段嵌入(标明属于句子 A 还是 B),词表 30,000(WordPiece,§4.2)。序列首 token 固定为 [CLS],其最终隐状态 C 用作分类任务的聚合表示;句对用 [SEP] 拼接成单序列。
公式手术 · 参数量估算
N ≈ L × ( 12·H² + 偏置项等 ) ≈ 12·L·H² (忽略嵌入层时的经典近似)
| 符号 | 它是什么 | 直觉 |
| 12·H² | 每层四个矩阵(Q/K/V/O 各 H×H)加上前馈层 2×H×4H=8H²,合计 4H²+8H²=12H² | 注意力占三分之一,前馈占三分之二——Transformer 的参数大头其实在 FFN 里 |
| L | 层数 | 参数随层数线性增长,但计算随层数线性、随序列长度平方增长 |
手算验证
BERT_BASE:12·L·H² = 12×12×768² ≈ 85.0M(非嵌入参数)。加上嵌入:词元嵌入 30000×768≈23.0M + 位置嵌入 512×768≈0.39M + 分段嵌入 2×768≈0.002M ≈ 23.4M。合计约 108.4M,与论文声称的 110M 在舍入误差内吻合【解读者补充计算,原文只给了总数 110M】。BERT_LARGE:12×24×1024² ≈ 302M + 嵌入(词表同为 30000×1024≈30.7M)≈ 333M,与声称的 340M 吻合。
数字对账
论文附录 A.1 指出 BERT 与 GPT 的关键差异之一:"GPT 训练 batch 为 32,000 词,BERT 为 128,000 词"。对账:BERT 的 batch 是 256 个序列 × 512 tokens = 131,072 tokens ≈ 128K 词 ✓ 自洽。另一个对账点:BERT_BASE 参数 110M vs Vaswani et al. 最大编码器 100M、当时文献中最大 Transformer 213M(§5.2 引述)——BERT_LARGE 340M 已超过此前公开报道的所有 Transformer,这解释了为何"模型大小消融"在当时具有冲击力。
常见误读1:"BERT 双向所以用了什么新注意力机制"。没有——用的就是标准自注意力,双向性来自去掉因果掩码+换掉训练目标,不是新结构。
常见误读2:"[CLS] 是通过特殊池化操作得到句子向量"。不是——C 只是第一个位置的最终隐状态,靠预训练中 NSP 任务的监督信号把它"逼成"了聚合表示。若不用 NSP 预训练,[CLS] 对分类未必友好。
常见误读3:"分段嵌入只有 0/1 两个取值所以没用"。它恰恰是句对任务(QA、NLI)统一处理的关键:自注意力同时编码拼接句对,等效包含了两个方向的交叉注意力(§4.6 论证)。
工程账单【解读者补充】:双向注意力缓解的是"表达能力"压力,新增的是显存与计算压力——无掩码注意力无法像 decoder 那样用 KV cache 做高效增量解码,BERT 天生不适合生成式任务。这笔债直到 T5/BART 用 encoder-decoder 才还清。
一句话蒸馏:一句话记住本节——架构零创新,创新全在"怎么训"。
闭卷自检:不看材料,你能算出 H=768 时一层 FFN 的宽度吗?能说出输入嵌入的三部分吗?
第3章 预训练任务一:掩码语言模型(MLM)
来源:论文 §3.1、§3.3(第4–5页)。
学习目标:学完本章你应能——解释为什么标准 LM 无法直接双向化;复述 15%→(80%,10%,10%) 的完整掩码策略及其每个分支的动机;算出随机替换占总词元的比例;说出 MLM 相比标准 LM 的收敛代价。
失效模式先行:如果天真地让语言模型"看到两边再预测当前词",会出现什么?平凡解泄露:在多层双向条件下,目标词本身的身份会通过间接路径泄漏到它的条件上下文里,模型只需"复制"即可达到近乎零损失——学不到任何语言规律(§3.1 原文表述为"每个词可以间接看到自己/trivially")。这就是为什么 GPT 宁愿单向、ELMo 只敢浅层拼接。
方案:别让模型预测它看得见的词——先把要考的词遮住。随机选 15% 的 WordPiece 词元作为"考点",只用这些位置的最终隐向量去预测原始词汇 ID。但 [MASK] 这个符号微调时根本不会出现,造成预训练/微调分布错配。于是 15% 内部再做三岔分流(§3.3):
- 80% 换成 [MASK](例:my dog is hairy → my dog is [MASK]);
- 10% 换成随机词(→ my dog is apple);
- 10% 保持原词(→ my dog is hairy)。
三岔的动机【解读者补充归纳】:80% 保证主任务仍是"完形填空";10% 随机替换强迫编码器对每一个输入词都维持分布式表征(因为不知道哪个词被动过手脚);10% 保持原词是为了缩小预训练与微调之间的表征差距——真实文本里绝大多数词就是原样出现的。随机替换只占总词元的 15%×10%=1.5%,作者据此论证不会损害语言理解能力。
公式手术
L_MLM = −Σ_{i∈M} log P( x_i | x̃ ) x̃ 为掩码后的序列,M 为被选中的 ~15% 位置集合
| 符号 | 它是什么 | 直觉 |
| M | 被选中做预测的位置集 | 每条序列约 15% 的位置;其余 85% 位置不产生损失 |
| x_i | 位置 i 的原始词汇 ID | 预测目标是原词,不是 [MASK] |
| x̃ | 按 80/10/10 规则扰动后的输入 | 编码器看到的序列可能含 [MASK]、假词或真词 |
代价(论文自己承认)【实验支持】:每批只对 15% 的词元产生预测信号,MLM 比 LTR 收敛更慢(附录 A.4.5:1M 步比 500k 步在 MNLI 上多约 1.0 准确率);但就绝对准确率而言 MLM 模型几乎立即开始超越 LTR。
数字对账
附录 A.4.6 给出六种掩码策略消融(MNLI/NER Dev):80/10/10 得 MNLI 84.2、特征式 NER 94.9;100% Mask 得 MNLI 84.3 但 NER 特征式仅 94.0(明显更差);100% Random 得 MNLI 83.6。对账结论:微调场景下各策略差异极小(≤0.7),但纯 Mask 会伤害特征式用法——这与正文"策略优势"的叙述需要合起来读:80/10/10 不是为了微调,主要是为了特征式用法和不匹配鲁棒性【解读者推断】。
常见误读:"15% 的词都被替换成了 [MASK]"。错——15% 只是"被选中",其中仅 80% 变成 [MASK],另有 1.5% 被换成随机词、1.5% 原样保留。混淆这两层比例会让你在实现复现时出错。
一句话蒸馏:一句话记住本节——MLM 把"语言建模"变成"开卷考试前的划重点":先遮住答案,再逼模型从左右两侧推理补全。
闭卷自检:一条 128-token 序列,平均有多少个位置参与 MLM 损失?其中多少个位置实际是 [MASK]?
参考答案(L1)
约 128×15% ≈ 19 个位置参与损失;其中 19×80% ≈ 15 个位置是 [MASK],约 2 个随机替换、2 个保持原词。
第4章 预训练任务二:下一句预测(NSP)
来源:论文 §3.2、§3.4(第5–6页)。
学习目标:学完本章你应能——写出构造 NSP 正负例的方法;说出最终模型的 NSP 二分类准确率;指出哪些下游任务被认为受益于 NSP。
许多重要下游任务(QA、NLI)的本质是理解两句之间的关系,这是任何单句语言建模目标都捕捉不到的。NSP 的构造极其廉价:50% 的样本 B 是 A 的真实下一句(标签 IsNext),50% 从语料随机抽一句当 B(标签 NotNext)。最终模型在该二分类上达到 97%–98% 准确率(§3.4)。总损失为 MLM 与 NSP 两个似然之和(§4.5)。
直觉类比:MLM 教模型"认字造句",NSP 教模型"读懂上下文衔接"——类似读完上一段猜下一段讲什么。类比在哪里失效:随机负例太容易识破——随便抽的一句往往话题完全无关,模型可能只学会"话题一致性"这种浅层判据,而不是真正的篇章推理。这正是后来 RoBERTa 实验质疑 NSP 价值的伏笔(见第7章)。
主张 vs 事实:【论文声称】NSP 对 QA/NLI 类任务至关重要;【实验支持】§5.5 表:去掉 NSP 后 QNLI 88.4→84.9(−3.5)、MNLI 84.4→83.9、SQuAD 88.5→87.9;【解读者观点】注意 MRPC 和 SST-2 几乎不受影响(86.7→86.5、92.7→92.6),说明 NSP 的收益高度集中在句对关系型任务,且幅度不算大——论文标题级的成功不能全记在 NSP 头上。
一句话蒸馏:一句话记住本节——NSP 用零标注成本给 [CLS] 位置装上了"句子级语义汇聚器"。
闭卷自检:NSP 正负样本怎么造?去掉 NSP 受伤最重的任务是哪一个?
第5章 预训练配方与微调:一笔工程账
来源:论文 §4.5、§4.6(第6–7页);成本数字来自 §4.5 与 §4.6。
学习目标:学完本章你应能用原文数字复算语料总量与训练吞吐;列出微调超参搜索空间;说出"90% 时间用短序列训练"的理由。
- 语料:BooksCorpus 8 亿词 + 英文维基百科 25 亿词 ≈ 33 亿词。强调必须用文档级长连续语料(点名批评 Billion Word Benchmark 这类打乱句子的数据集)。
- 训练:batch = 256 序列(256×512 = 128,000 tokens/batch),共 1,000,000 步 ≈ 语料的 40 epoch。Adam,lr 1e-4,前 10,000 步预热后线性衰减;dropout 0.1;激活函数 GELU(跟随 GPT 而非 ReLU)。
- 硬件:BERT_BASE 用 4 台 Cloud TPU Pod(16 芯片)、BERT_LARGE 用 16 台(64 芯片),各训练 4 天(均以完整 1M 步计)。
- 序列长度课程:90% 的步数用长度 128,剩余 10% 用长度 512——因为注意力对序列长度平方复杂度,先用短序列省算力,最后教会长序列的位置嵌入。
- 微调:batch {16,32},lr {5e-5,3e-5,2e-5},epoch {2,3,4};大数据集对超参远不敏感。所有结果可在单个 Cloud TPU 上 ≤1 小时复现(GPU 数小时);SQuAD 模型单 TPU 约 30 分钟可达 Dev F1 91.0。
手算验证(解读者补充)
总处理 token 量 = 128,000 × 1,000,000 = 1.28×10¹¹ = 1280 亿 token;语料 33 亿词 × 40 epoch = 1320 亿 token——两者吻合 ✓(差异来自 WordPiece 切分后的计数口径)。粗估总算力:每 token 约 2×110M=2.2×10⁸ FLOPs(前向+反向≈3倍即 6.6×10⁸),1280 亿 token × 6.6×10⁸ ≈ 8.5×10¹⁹ FLOPs ≈ 985 petaflop/s-days 量级——与"64 个 TPU 芯片跑 4 天"(TPU v1/v2 单芯片数十 TFLOPS 量级)的叙述数量级相容【费米估算,仅供量级感】。
常见误读:"预训练 4 天很便宜"。4 天的前提是 64 个 TPU 芯片并行——按当时的云价格这是一笔不小的开销;而且这只是 BASE/LARGE 各一次的训练时间,不含超参搜索。论文强调的其实是下游复现便宜(单卡小时级),这才是"预训练一次、处处微调"商业逻辑的核心。
一句话蒸馏:一句话记住本节——贵的训练只做一次,便宜的一次微调服务所有任务。
闭卷自检:为什么先用 128 再用 512 训练?微调的学习率大概是什么数量级、比预训练大还是小?
第6章 分级自测题(覆盖全文)
- L1 一条 512-token 序列按论文策略处理,期望有多少个 token 被 [MASK] 替换?
显示答案
512×15%×80% = 61.44 ≈ 61 个。注意链条:15% 被选中,其中 80% 变 [MASK]。
- L2 若把掩码率从 15% 提高到 50%,预训练信号量和预训练/微调错配各会发生什么变化?请分方向讨论。
显示答案
信号量:参与损失的 token 从 15% 升到 50%,每批监督信号约增 3.3 倍,理论上收敛更快;错配:[MASK] 类标记占比升至 40%(50%×80%),微调时模型几乎见不到这种"满目疮痍"的输入,分布偏移急剧加大;同时相邻被遮 token 无法互相看到彼此的原文,任务退化为"多空格完形填空",难度失真。(评分要点:三个方向各占一分。)变式追问:反过来降到 5% 会怎样?——信号稀疏,收敛显著变慢。
- L3 有同学说:"ELMo 也是双向的,所以 ELMo 和 BERT 的区别只是用 LSTM 还是 Transformer。"找出这段话里的错误并纠正。
显示答案
两处错误。① ELMo 是左向 LSTM 与右向 LSTM 分别独立训练后拼接,两个方向从未在同一层内交互,属于"浅层双向";BERT 在每一层用同一个自注意力联合条件于左右上下文。② 使用方式不同:ELMo 是 feature-based(冻结特征喂给任务特定架构),BERT 是 fine-tuning(端到端微调全部参数)。评分要点:指出"独立训练+末端拼接≠深层双向"得主要分,指出使用方式差异得分。
- L4 仅凭摘要里的四个数字(GLUE 80.5/+7.7、MNLI 86.7/+4.6、SQuAD 93.2/+1.5、SWAG 未提但超人类),推演这篇论文必须在方法部分回答哪三个问题,并说明每个数字如何"逼出"其中一个。
显示答案
① GLUE 全线大涨且横跨 8 个异质子任务 ⇒ 必须回答"单一架构如何统一句对/单句/分类任务"→ 输入打包([CLS]/[SEP]/分段嵌入)+ 统一输出头设计(§4.2、§4.6)。② SQuAD 提升相对最小(+1.5 且对手是 ensemble)而 MNLI +4.6 ⇒ 必须回答"提升到底来自哪里"→ 消融研究隔离 MLM/NSP/模型大小三因素(§5.5)。③ SWAG 超越人类专家 ⇒ 必须回答"是否只是数据/规模效应而非方法创新"→ 模型大小消融 + 与同规模 GPT 的对照(同数据 BooksCorpus 下 BERT 仍胜)。(评分要点:每个对应关系 1 分,逻辑完整性 1 分。)
三、批判性阅读:如何不被数字带节奏
7.1 每个 benchmark 到底测什么
- GLUE 系列:8 个异质任务合集(MNLI 392k、QQP 363k、QNLI 108k、SST-2 67k、CoLA 8.5k、STS-B 5.7k、MRPC 3.5k、RTE 2.5k,样本数见 §5.1)。名字有误导性的地方:QNLI 并非"问答"而是把 SQuAD 改造成的"该句是否包含答案"的二分类;WNLI 因数据构造缺陷被排除——所有系统都低于 65.1 的多数类基线(附录 A),排除合理但读者应知道总分是不完整的。
- SQuAD v1.1:给定段落+问题,预测答案跨度。测"段落内定位抽取能力",不测世界知识(答案保证在文中)。
- SQuAD v2.0:加入"段落中没有答案"的问题,测校准——模型要敢说"不知道"。
- SWAG:113k 四选一的句子续写,号称测接地常识推理。警惕:BERT_LARGE 测试集 86.3 已超过专家人类 85.0(§5.4),一个基准被迅速打穿往往意味着它测的是表层统计线索而非真正的常识。
7.2 比较公平吗
【论文承认的不对称】BERT 训练语料比 GPT 多(BooksCorpus+Wikipedia 33亿词 vs GPT 仅 BooksCorpus 8亿词)、batch 大 4 倍(128k 词 vs 32k 词)、且为每个任务单独在 dev 上选学习率而 GPT 统一用 5e-5(附录 A.1 明确列出这四点差异)。因此"BERT vs OpenAI GPT"的主表比较不是控制变量比较:数据、批量、超参搜索力度都不同。真正干净的比较是 §5.5 消融内部的 "LTR & No NSP" 行——同数据同配置下,MLM 版在 SQuAD 上高出 10.7 F1。【解读者观点】媒体传播中常引用的"+7.7 GLUE"混合了方法与资源两类增益,引用时应注明。
7.3 证据等级区分
| 证据 | 等级 | 说明 |
| GLUE 测试集分数 | 较强 | 由官方评估服务器评分,非自评 |
| SQuAD/SWAG 测试分数 | 较强 | 提交排行榜;但 SWAG 的人类基线来自数据集作者自己组织的标注 |
| 消融实验 | 中 | Dev 集结果、5 次随机重启平均,控制良好但未上测试服务器 |
| "MLM 收敛慢但很快反超 LTR" | 较弱 | 主要依据附录图示曲线与单点数字(500k vs 1M 步差 1.0),缺乏表格化完整证据 |
| "NSP 使模型获得句间关系能力" | 中偏弱 | 仅一组消融;机制性解释([CLS] 学到什么)论文未验证 |
7.4 第二坐标轴:成本与效率
论文给出的成本坐标:预训练 64 TPU 芯片 × 4 天(LARGE);下游微调单 TPU ≤1 小时。缺失的坐标轴:推理延迟(双向注意力无法 KV-cache 化,线上部署成本高于同规模 GPT);能量消耗(2018 年论文未报告,这在今天是不可接受的 omission);超参搜索本身消耗的计算(LARGE 在小数据集上需要多次随机重启)。
7.5 论文没有告诉你什么
- NSP 的有效性后来被推翻了一半:RoBERTa(2019)在更多数据+更长训练下发现去掉 NSP 几乎不掉点甚至更好。本页只陈述"存在这一后续争议",具体数字不在本文范围内。
- 中文/多语言场景未涉及:全文只做英文。
- 失败案例零展示:论文没有给出任何一个 BERT 做错的例子分析。
- 知识记忆与幻觉问题:MLM 学到的"知识"存放在哪里、能否被可靠提取,论文完全不讨论——这成为后来 LOME、PET 等整个研究方向的开端。
- 掩码策略敏感性只在附录:正文宣称的策略优势,其消融(附录 A.4.6)显示微调场景差异其实很小——正文与附录的证据强度并不对称。
四、综合考核(毕业关)
任务一 · 重建因果链
只给你三个事实:(a) 目标是深层双向;(b) 双向化会让词"看见自己";(c) [MASK] 不出现在下游文本。请推演出 80/10/10 三岔策略是这三者的必然产物,并指出如果删掉其中任一分支会破坏哪一环。
显示参考答案与评分标准
因果链:(a) 要求每层都能看左右 → 不能再用因果掩码 → (b) 平凡解泄露 → 必须遮住待预测词 → 但遮蔽引入 [MASK],与真实文本分布不符(下游没有 [MASK])→ 需要 10% 随机替换让编码器对任意输入保持分布式表征、10% 保持原词让大部分输入贴近真实分布。删 80% 分支:主任务变成纯替换检测,完形填空信号弱化(消融显示特征式 NER 从 94.9 掉到 94.6~94.7,纯 Rnd 更差);删 10% 保持原词:预训练输入 100% 含噪声标记,微调错配最大化(消融 80/20/0 组 NER 95.2 尚可,但理论错配仍在);删 10% 随机替换:编码器可学会"[MASK] 之外都可信",分布式表征约束消失(消融 100%/Same 组 NER 特征式 94.0 最差印证此点)。评分要点:链路完整性 2 分、每个删除分支的影响 3 分。
任务二 · 数字总对账
核对以下五组跨章节数字是否自洽,写出计算过程:
- ① batch 256×512 与"128,000 tokens/batch";② 1M 步 × 128k 与"33 亿词 × 40 epoch";③ 15%、80%、10% 与"随机替换占总词元 1.5%";④ BERT_BASE 12·H² 估算与 110M;⑤ GLUE 平均:BERT_LARGE 82.1 相对 Pre-OpenAI SOTA 74.0 与"+7.0"的声称。
显示答案
① 131,072≈128k ✓(论文取整);② 1.31×10¹¹ vs 1.32×10¹¹ ✓(WordPiece 计数口径差异);③ 15%×10%=1.5% ✓;④ 108M vs 110M ✓(±2%,舍入与偏置/LayerNorm 参数);⑤ 82.1−74.0=8.1 ≠ 7.0 ✗——注意论文原文说的是 BERT_LARGE 较先前 SOTA 提升 7.0、BASE 提升 4.5(79.6−74.0=5.6 也不等于 4.5)。此处数字对不上,可能的原因是:论文的平均值计算排除了 WNLI 及个别任务口径不同,或"先前 SOTA"逐任务取的是各自最强系统而非同一系统的均值。这正是精读的价值:引用"+7.0"时应意识到它是作者的汇总口径。【解读者推断】
任务三 · 设计决策答辩(三连问)
- [CLS]+NSP 作为句子表示:为什么这样做?不这样做(如用所有位置平均池化)会怎样?论据够吗?
参考答案
为什么:需要一个固定位置的聚合向量供分类头使用,且 NSP 给它专属监督信号使其在预训练阶段就被塑形。不这样做:平均池化没有专属监督,[CLS] 退化;但 Sentence-BERT 系工作表明微调时平均池化同样有效甚至更稳——说明该设计的必要性主要存在于预训练期而非使用期。论据强度:★,论文未做池化方式消融。【解读者补充】
- WordPiece 30k 词表:为什么不用字符级或更大词表?
参考答案
30k 是序列长度与 OOv 的折中:词表越大嵌入层越大且序列更短(算力省),但稀有词被过度切碎;字符级则序列过长,512 上限装不下多少内容。论文未给出词表消融——论据不足,属于继承自 BERT 前身(Google NMT)的工程默认值。
- 90% 步数用 seq_len=128:省了多少?代价是什么?
参考答案
注意力 O(n²):512²/128²=16 倍差距,若全程 512 算力约为现在的数倍以上。代价:位置嵌入前 90% 训练只见 0–127 位置,需末段 10% 补课;长短文档混合分布被人为扭曲。论文未报告"全程 512"的对照,论据为工程直觉。
任务四 · 证据审计
回看第一章的预评分,给出读后修正:
显示审计结论
贡献1(双向重要性):维持 ★★★,LTR 消融是最强证据。贡献2(减少架构工程):维持 ★★★,11 任务统一骨架本身就是证明。贡献3(NSP 有效):降为 ★☆——消融存在但幅度小(多数任务 <1 分),且收益集中于 QNLI 一项,后续学界争议进一步削弱。贡献4(规模有益):维持 ★★★,六档配置单调递增是罕见的干净证据。贡献5(MLM 快速反超):降为 ★★,证据主要是曲线而非表格,且"几乎立即反超"依赖对图的目测。总体判断:本文最不可动摇的资产是"MLM vs LTR"消融;最脆弱的资产是 NSP。