BERT 为什么值钱:它没发明任何零件,却重写了整个 NLP 的工作方式
- 关联论文:1810.04805
2018 年之前,做 NLP 有两套互不相通的打法。一套是 ELMo 那种"特征派":先拿任务无关的语言模型学出词向量,再给分类、问答、命名实体识别各写一套专门模型。另一套是 GPT 那种"微调派":预训练一个从左往右读的模型,后面接个头做任务。
BERT 把三件早就有、但从没凑到一起的零件组装起来:双向 Transformer 编码器、掩码语言模型(MLM)、端到端微调。架构没变,目标函数没变。结果它在 11 个 NLP 任务上刷了 SOTA,并给出后来统治全领域五年的标准流程:先预训练通用底座,换任务只改数据格式和输出层。
为什么"双向"这件事以前做不到
这是理解 BERT 的关键入口。标准条件语言模型只能从左往右训练——如果同时看左右,每个词都能间接"看见自己",目标可平凡预测,模型直接抄答案,训练信号就废了。
GPT 因此只能单向。ELMo 虽然用了双向,但它是"两个独立单向 LSTM 输出拼接",属于浅层双向:上层表示只看得到已拼好的结果,不是每层都联合依赖左右上下文。
BERT 的问题表述得很干净:怎么训练一个每一层都能同时看左右的深度双向模型?答案就是 MLM——随机挑 15% 的 WordPiece 词位当预测目标,让模型根据左右上下文补全。被遮住的位置不提供信息,模型只能真正依赖两侧语义。论文原话:深度双向模型严格来说比单向模型、或左右 LSTM 拼接的浅层模型更强。这个 trick 的价值远大于 BERT 本身,后来所有 encoder-only 预训练模型都沿用了它。
第二个机制:NSP,以及它的可疑之处
BERT 还加了下一句预测任务(NSP):50% 概率给真实相邻句,50% 概率给随机句,让模型判断。动机是问答、自然语言推理需要理解两句关系,而纯语言模型学不到。成本极低,无需任何标注。
但有个必须诚实标注的信号:论文脚注自己写着,最终模型在 NSP 上准确率是 97%–98%。模型几乎必然能答对的任务,精细监督非常有限。这就是四年后 RoBERTa 直接删掉 NSP 的理由之一。
第三个机制:一个 [CLS] 打天下
BERT 靠一套机械的接口约定,把"换任务"变成"换输入输出":
- 句对任务不搞两阶段 cross-attention,直接把两段文本拼成一个序列,self-attention 天然包含双向交互
- 分类取序列首位
[CLS]的表示送输出层;序列标注、抽取式问答取对应 token 表示 - 输入表示 = 词嵌入 + 片段嵌入 + 位置嵌入三者相加;句对用
[SEP]分隔,片段嵌入标记 A/B
微调时端到端更新全部参数,不冻结任何层。
数字与证据边界
BERT_BASE(1.1 亿参数)在 GLUE 上平均 79.6,BERT_LARGE(3.4 亿)82.1,超过同期 GPT 的 75.1。摘要写的是官方 GLUE score 80.5%,比此前最好系统高 7.7 个百分点;MultiNLI 86.7%;SQuAD v1.1 F1 93.2%、v2.0 F1 83.1%。微调成本低得惊人:全部结果可在单块 TPU 上 1 小时内复现,SQuAD 模型约 30 分钟到 Dev F1 91.0。
但有三处边界必须说清:
一、80/10/10 掩码策略的收益在微调场景下不成立。 附录消融网格显示,80/10/10 混合策略在命名实体识别两列领先(微调 95.4 vs 纯 [MASK] 的 94.9),但 MNLI 上纯 [MASK] 反而高 0.1(84.3 vs 84.2)。收益主要落在"表征不能调整"的特征式那一列(94.9 vs 94.0)。走微调路线时,别把这个比例当铁律。
二、BERT 严重训练不足。 附录显示 500k 步到 100 万步,MNLI 还能再涨约 1.0%。论文自己承认 100 万步不是收敛点。
三、[CLS] 未经微调不是句子向量。 原文脚注明确说 C 向量在没有为句子表示任务训练过时"没有有意义的句子表示"。这直接影响今天拿 BERT 直接做检索、做 RAG embedding——会得到很差的向量。
工程上还有硬约束:512 token 长度上限(超长截断,很多长文任务的损失比换模型更大)、30K WordPiece 词表对中文和代码是灾难、英文-centric 的启发式分词不能直接搬到中文。
留在工程现场的东西
真正被继承下来的是接口标准化,不是某个 checkpoint。今天做 NLP 需求,第一反应应该是"冻结架构,只写数据 loader 和输出层"。同时把预训练与微调分开算账——"微调只要 1 小时"的前提是底座已经有了,预训练才是大头。论文那句"1M steps 不够"值得写进排期:延长预训练几乎总比在微调侧折腾划算。
标题变体
- BERT 为什么值钱:它没发明任何零件,却重写了整个 NLP 的工作方式
- 十年后回看 BERT:真正的遗产不是那个模型,而是一套接口约定
- 用一句话理解 BERT:把"造模型"变成了"换数据 loader"
小红书卡片文案
BERT 到底改变了什么?
一句话:它没发明任何零件,却把整个 NLP 的工作方式改了。
以前做 NLP:分类一套模型、问答一套模型、NER 再一套,每换一个任务就重写一遍网络。
BERT 之后:先训一个通用底座,换任务时只改两样东西——数据怎么拼、最后接哪个输出层。
最巧的一招是"挖坑":随机遮住 15% 的词让模型猜。因为词被遮住了,模型没法偷看答案,只能真的去理解左右上下文——这就是为什么 BERT 能做到每一层都双向,而 GPT 只能单向。
几个反直觉的事实: ✅ 论文自己承认训练"严重不足",加一半步数还能涨 1 个点 ⚠️ 那个流传很广的 80/10/10 遮罩比例,在微调任务上其实打不过全遮罩 🚫 未经微调的 [CLS] 不是句子向量,拿它做检索会翻车
工程上最该记住的一句:先问"是不是该换个数据 loader",而不是"是不是该换个模型"。