ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

RoBERTa 相比 BERT 在训练策略上做了哪些关键改进?

RoBERTa 相比 BERT 在训练策略上做了哪些关键改进? RoBERTa 相比 BERT 的关键训练策略改进RoBERTaRobustlyOptimizedBERTApproach由 Facebook AI 于 2019 年发布核心思路是BERT 的架构没问题但训练策略不够充分。通过改进训练方法在不改架构的前提下显著提升了性能。改进全景对比训练策略BERTRoBERTa影响静态掩码✅ 预处理时固定掩码❌ 改为动态掩码每次掩码不同学得更充分NSP 任务✅ 保留下一句预测❌ 移除 NSP去掉有害无益的任务训练数据量16GB (BookCorpus Wiki)160GB5倍更多数据更强泛化训练步数100万步50万步但batch更大更大batch更优收敛Batch Size256819232倍梯度更准优化更稳字节级 BPE❌ 字符级 WordPiece✅ 字节级 BPE无 UNK处理任意字符数据组合BookCorpus WikiCC-News OpenWebText Stories Wiki更大更多样逐项详解1. 动态掩码Dynamic Masking取代静态掩码BERT 的做法在数据预处理阶段一次性生成掩码之后每次训练都用同一份。原始句子: 今天天气真好 预处理后固定为: 今天 [MASK] 真好 ← 第10轮训练还是这个 问题: 模型在不同 epoch 反复看到相同的掩码模式容易过拟合到特定位置RoBERTa 的做法每次将训练数据喂给模型时实时随机生成掩码。原始句子: 今天天气真好 Epoch 1: 今天 [MASK] 真好 Epoch 2: [MASK] 天气 真好 Epoch 3: 今天 天气 [MASK] → 每次掩码位置不同模型学到更鲁棒的表示实现方式将重复数据复制 10 份每份用不同随机种子做掩码等效于 40 个 epoch 中看到 400 种不同掩码。2. 移除 NSPNext Sentence Prediction任务BERT 的 NSP 任务给定句子 A 和 B判断 B 是否是 A 的真实下一句。正例: A今天天气真好 B我们去公园吧 → IsNext 负例: A今天天气真好 B股票涨了三个点 → NotNextRoBERTa 发现 NSP 有害无益直接移除。实验证据实验设置结果BERT 原版有 NSP句对拼接基准去掉 NSP仍用句对拼接性能下降去掉 NSP改为连续长文本非句对性能最好↑原因分析NSP 任务太简单模型主要靠主题相似性就能判断学不到有用的跨句关系句对拼接导致每条训练样本变短模型缺少长距离上下文建模能力改为连续长文本输入后模型能看到更长的上下文表示能力更强BERT 输入格式: [CLS] 句子A [SEP] 句子B [SEP] ← 两个句子有NSP标签 RoBERTa 输入格式: [CLS] 连续文本片段... [SEP] ← 尽量长的连续文本无NSP3. 更大的训练数据16GB → 160GB数据集BERT 使用RoBERTa 使用大小BookCorpus✅❌11GBWikipedia✅✅16GBCC-News❌✅76GBOpenWebText❌✅38GBStories❌✅31GB总计16GB160GB5倍CC-NewsCommon Crawl 抓取的新闻语料OpenWebTextReddit 上被引用≥3次的网页高质量StoriesCommon Crawl 中提取的故事类内容更多 更多样的数据是性能提升的重要来源。4. 更大的 Batch Size256 → 8192BERT: batch_size 256, 训练 100万步 RoBERTa: batch_size 8192, 训练 50万步 总样本量: 8192 × 50万 ≈ 256 × 100万总训练量相当 但每次梯度估计更准确 → 优化更稳定 → 最终性能更好实验发现大 batch 训练在 MLM 任务上持续带来提升这与 CV 领域的发现一致。但大 batch 需要更多显存RoBERTa 使用了 1024 张 V100 GPU 分布式训练。5. 字节级 BPEByte-Level BPE取代 WordPiece分词方式BERT (WordPiece)RoBERTa (Byte-Level BPE)词表大小30,52250,000基本单元字符字节256种OOV 问题有未知词变成[UNK]无任何字符都能用字节组合表示编码示例“emoji” →[UNK]“emoji” →e m o j i [字节序列]字节级 BPE 的优势彻底消除[UNK]所有文本都能编码对多语言、特殊字符、emoji 更友好词表更通用不依赖特定语言的预处理6. 更长的训练时间BERT: 100万步 (batch256) RoBERTa: 50万步 (batch8192) → 但等效训练量 500亿 token vs BERT的25亿 token 实际训练量是 BERT 的约 4 倍RoBERTa 论文还发现BERT 训练严重不充分即使训练到 100 万步MLM loss 仍在下降。RoBERTa 通过更大 batch 更多数据 更长训练充分挖掘了 BERT 架构的潜力。消融实验哪个改进贡献最大RoBERTa 论文做了详细的消融实验各改进的贡献排序贡献从大到小: ① 更大数据集 (160GB vs 16GB) ████████████ 最大 ② 移除 NSP 连续长文本 ████████ ③ 更大 batch size ███████ ④ 动态掩码 █████ ⑤ 字节级 BPE ███ ⑥ 更长训练时间 ███关键发现数据规模和训练充分性的贡献最大架构本身不是瓶颈。架构对比RoBERTa 没改架构架构参数BERT-baseRoBERTa-baseBERT-largeRoBERTa-large层数12122424隐藏维度76876810241024注意力头数12121616参数量110M125M340M355M架构完全相同完全相同完全相同完全相同参数量微增仅来自词表变化30K → 50KTransformer 编码器结构完全一致。性能对比任务BERT-largeRoBERTa-large提升SQuAD 2.0 (F1)83.188.95.8MNLI (准确率)86.790.23.5SST-2 (准确率)92.794.82.1RACE (准确率)72.083.211.2在不改架构的前提下仅靠训练策略改进就获得了显著提升。总结RoBERTa 的核心洞察: BERT 的架构没问题是训练方法不够好 4 个关键改进: ① 动态掩码 → 每次掩码不同学得更鲁棒 ② 移除 NSP → 去掉有害任务改用连续长文本 ③ 更多数据 更大batch 更长训练 → 充分挖掘模型潜力 ④ 字节级 BPE → 消除 OOV更通用的分词 一句话: RoBERTa 证明了同样的架构更好的训练策略就能大幅提升性能 核心贡献是训练方法论而非模型创新。
返回列表