跳转到内容

RoBERTa — 把 BERT 重训一遍就能拿 SOTA

是什么

RoBERTa(Robustly Optimized BERT Approach)是 2019 年 7 月 Facebook AI 发的一篇论文。它没改 bert 的架构、没换损失函数,只把 BERT 的训练流程重新调了一遍,就在 GLUE / SQuAD / RACE 三个榜单上把 BERT 重新刷到 SOTA。

日常类比:

一辆车原厂调校跑 200km/h,有人看了发动机参数说”还没用满”,把胎压、油品、风挡角度重新调一遍,同一辆车跑到 250km/h。RoBERTa 干的就是这件事——证明 BERT 论文里自己交付的训练配方根本没把模型训透

读懂这句话就读懂了 RoBERTa 的核心:架构没问题,训练没训够

为什么重要

不理解 RoBERTa,下面这些事都没法解释:

  • 为什么 2019 下半年开始所有论文用的”BERT 基线”实际是 RoBERTa 权重——因为原版 BERT 在公平对比里几乎从来打不过 RoBERTa
  • 为什么 ICLR 2020 拒了这篇论文,但中文 NLP 圈、工业界全在用——评审标准看重新颖性,工程价值看复现可靠性,两者第一次公开拉裂
  • 为什么 Chinchilla 2022 那种”模型欠训练”的发现 3 年前就有人喊过——RoBERTa 用 ablation 形式说过同样的话,只是没有数学定律
  • 为什么 NLP 进入 “LLaMA 时代”后,论文风气从”新架构”转向”训练配方表”——这条路是 RoBERTa 开的

引用数 30k+。这是少数几篇”复现研究”成为开宗立派之作的论文。

核心要点

RoBERTa 在 bert 基础上动了 5 个地方,每一个都做了消融:

  1. 训练更久 + batch 更大:BERT-base 用 batch 256 × 1M steps;RoBERTa 用 batch 8K × 500K steps,等效见到的 token 量约 16 倍。核心结论:BERT 论文里给的训练配置远没用满模型容量。

  2. 数据扩到 10 倍:BERT 用 16GB(BookCorpus + English Wikipedia);RoBERTa 用 160GB(多加 CC-News 76GB / OpenWebText 38GB / Stories 31GB)。数据多了 10 倍,分越涨。

  3. 砍掉 NSPbert 论文把 NSP(Next Sentence Prediction)写成核心贡献。RoBERTa 做了 4 组消融:保留 NSP / 砍掉 NSP / 单文档输入 / 跨文档输入。结论:砍 NSP 用 FULL-SENTENCES(把多个文档拼到 512 token)反而最好。这一刀直接让”NSP 是不是有用”变成定论。

  4. 动态 masking:BERT 预处理一次性决定哪些 token 被 mask,10 个 epoch 全用同一份 mask 表。RoBERTa 每次数据进入模型前重新随机 mask——同一个句子在不同 epoch 看到不同遮挡,等于免费做了数据增强。

  5. byte-level BPE 词表:BERT 用 30K char-level BPE,对中文 / emoji / 罕见字符要先做 unicode 归一化。RoBERTa 抄 GPT-2 的 50K byte-level BPE:直接在字节序列上分词,任何 Unicode 字符串都能无损编码,不需要预处理。

实践案例

案例 1:消融表读法

RoBERTa 论文最重要的不是结果,而是这张消融表的读法

配置 GLUE SQuAD2.0
BERT-large (原版) 80.5 81.8
+ 更多数据 + 训更久 84.0 85.0
+ 砍 NSP(FULL-SENTENCES) 84.7 85.5
+ 动态 mask 84.9 85.7
+ batch 加大到 8K 85.5 86.2
RoBERTa-large(全开) 88.5 89.4

每行对应一个改动。每个改动单独都涨 0.5~1 分,加起来从 80.5 涨到 88.5——8 个点的涨幅,竟然完全没改架构。这种”小改动叠加大幅提升”的论文写法后来被广泛模仿。

案例 2:动态 masking 为什么有效

静态 masking(BERT):
预处理生成 10 份 mask 表 → 训练 40 epoch → 每份表用 4 epoch
→ 模型见到的"被 mask 的我爱[MASK]鱼"始终是同一句
动态 masking(RoBERTa):
每次数据 batch 进 GPU 前实时 mask
→ 同一句"我爱吃鱼"可能这次 mask 成"我爱[MASK]鱼",下次"我[MASK]吃鱼"

直觉解释:动态 masking 让同一句话产生不同的训练信号,等于在不增加数据的情况下变相扩充。这是 BERT 论文没做但应该做的细节。

案例 3:去 NSP 的输入设计

去掉 NSP 之后怎么组织训练样本?RoBERTa 试了 4 种:

  • SEGMENT-PAIR + NSP(BERT 原版)
  • SENTENCE-PAIR + NSP(短句对,padding 多)
  • FULL-SENTENCES(跨文档拼到 512 token,不要 NSP)
  • DOC-SENTENCES(同文档拼,不要 NSP)

结论 FULL-SENTENCES 最好。“跨文档”这件事原本被认为破坏语义连贯,结果反而是好的——因为它让模型在 512 token 的预算内见到更多样的内容。这个反直觉发现是 RoBERTa 最有意思的副产物。

案例 4:怎么把”工程美学”翻译成消融逻辑

RoBERTa 全文最值得学的不是任何单点改动,而是**“控制变量做消融”的工程纪律**:

  • 每个改动只动一个变量
  • 每个改动单独跑,再叠加跑
  • 每一步都记录 GLUE / SQuAD / RACE 三个榜单
  • 给出”砍了它分掉多少”的精确数字

这套纪律放到任何工程系统都是黄金做法——但在 2019 年的 NLP 研究里大多数论文都在”一次改 5 件事再说效果好”。RoBERTa 是少数把”做对消融”当成核心贡献的论文,这本身就是一种”trick 比架构更值钱”的具体写法。

踩过的坑

  1. byte-level BPE 让 embedding 矩阵变重:50K 词表 × 1024 维 = 50M 参数仅 embedding 一项,比原 BERT 多 27M。在 base 规模上属于”头重脚轻”,小模型场景慎用。

  2. batch 8K 不是学术资源:8K batch 用 1024 张 V100 训了一天。这等于把 NLP 研究的”准入门槛”再抬一档。从 RoBERTa 之后,没有 GPU 资源的实验室只能用别人发布的权重做下游研究——学术界从此进入”复现都困难”的时代

  3. 去 NSP 不等于去掉所有句对感:FULL-SENTENCES 把不相关文档拼在一起,对纯句对任务(如 STS-B 句子相似度)的影响后续论文又有反复——RoBERTa 给出”砍掉更好”的结论,但对所有下游任务都成立这一点没被严格验证

  4. 能耗代价:RoBERTa-large 单次预训练耗电约相当于一辆汽车跑 1.6 万公里的碳排放。GreenAI 讨论从此热起来——“刷 SOTA 的边际成本”成为公开议题。

  5. 被 ICLR 2020 拒:评审意见集中在”创新性不足、只是 BERT 复现”。但工业界几乎立刻全部切换 checkpoint。这件事后来被反复引用,说明 paper 评审标准和工程价值的脱钩

历史小故事(可跳过)

  • 2018-10bert 发布,预训练 + 微调成为新范式。论文同时给出 BERT-base / BERT-large 的训练配方
  • 2019-02:GPT-2 发布,用 byte-level BPE + 海量网页数据做单向 LM,间接证明”数据量是关键”
  • 2019-06xlnet-2019 用 permutation LM 反超 BERT,架构派的代表作
  • 2019-07RoBERTa 发布,证明同架构 BERT 配方调对了能直接打平 XLNet——工程派的反击
  • 2019-09:ALBERT 发布,参数共享让 BERT 变小,路线又分化
  • 2022:Chinchilla 用 scaling law 形式严格证明”大模型大多欠训练”——RoBERTa 三年前的直觉被数学化
  • 2023+:LLaMA / Mistral 系都沿用 RoBERTa 的”工程配方表式 paper” 风格

学到什么

  1. 复现研究可以是真贡献——只要做得彻底、ablation 清晰,复现一篇 paper 反而能改写整个领域基线认知。RoBERTa 是这条路最经典的证据
  2. 架构 vs 训练,1:9 的功劳比——RoBERTa 暗示在某些区间内,训练配方的影响远超架构创新。这个观察是后来 scaling law 思潮的前夜
  3. paper 评审标准 vs 工程实用价值会脱钩——被 ICLR 拒不影响成为工业标准。“开源权重 + 强基线”在影响力上常常胜过任何 best paper
  4. 要敢承认前人没训够——RoBERTa 最难的不是技术,是承认 BERT 论文交的训练表是错的。学术礼仪上这是一记耳光,但一记必要的耳光
  5. engineering aesthetic:trick 比架构更值钱——同样的钱花在调参上能不能比花在新架构上更划算?RoBERTa 给了”在 2019 这个时点上,能”的答案
  6. 写论文也要有”产品意识”——RoBERTa 论文行文极其克制:5 个 ablation、4 张表、1 个总结。没有花哨的故事和漂亮的 figure,但读者看完就能复用。这种”读完即拿走”的风格后来被 LLaMA paper 系列继承
  7. scale 不是堆资源那么简单——同样的算力,BERT 训出来 80.5,RoBERTa 训出来 88.5,差 8 个点。资源是必要条件,但不是充分条件——会调的人在同样资源下能多榨出 10% 性能

延伸阅读

关联

  • bert — RoBERTa 严格在 BERT 之上做 ablation,没动架构只动训练
  • xlnet-2019 — 同期对手,走”架构创新派”,被 RoBERTa 用工程派打平
  • chinchilla — 把 RoBERTa 的”undertrained”直觉用 scaling law 数学化
  • llama — 沿用 RoBERTa 风格的 byte-level BPE 和大数据预训练配方
  • t5 — 类似的 ablation-heavy 大消融表,但走 encoder-decoder 路线
  • gpt-3 — 把”scale up 训练”思路推到 175B 参数极致

反向链接

  • bert —— BERT — 双向 Transformer 预训练
  • chinchilla —— Chinchilla — 训练大模型的数据/参数最优比
  • electra-2020 —— ELECTRA — 把猜词题改成判真假题,训练效率 4 倍
  • gpt-3 —— GPT-3 — Language Models are Few-Shot Learners
  • llama —— LLaMA — Meta 开源大语言模型
  • t5 —— T5 — Text-to-Text Transfer Transformer
  • xlnet-2019 —— XLNet — 把句子打乱顺序读,借此同时拿到 AR 和双向