掘金 人工智能 18小时前
RoBERTa:优化训练流程,让 BERT 更强
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

RoBERTa是Facebook AI提出的BERT改进版,通过全面优化预训练流程提升模型性能。它主要改进包括:移除NSP任务,采用动态掩码策略,使用更大的数据集和批次,以及采用字节级BPE分词。这些改进使得RoBERTa在多个自然语言处理任务上表现更优,证明了训练策略的重要性。RoBERTa的成功,在于对BERT预训练方法的深入理解和优化,而不是改变模型结构。

🚫 RoBERTa 移除了BERT中的下句预测(NSP)任务,只保留了掩码语言模型(MLM)。研究表明,NSP任务对模型性能提升有限,移除后模型表现反而更好。

🔄 RoBERTa 采用动态掩码策略,每次训练时随机选择要遮盖的词,使得模型每次看到的“填空题”都不同。这有助于模型更全面地学习上下文关系、语法结构和词义分布。

📚 RoBERTa 增加了预训练数据集的规模,引入了CC-News、OpenWebText和Stories等数据集,总数据量达到160GB,是BERT原始语料的10倍。更大的数据集使RoBERTa能够学习更多样的语言模式。

🚀 RoBERTa 采用了更大的训练批次,从BERT的256增加到8000。同时,RoBERTa 使用字节级 BPE 分词,这是一种更底层、更通用的子词分词算法,可以处理任意输入,包括表情符号、Unicode 特殊字符,减少了 OOV 问题,提升了模型在多任务与跨领域中的稳定表现。

RoBERTa

RoBERTa 是 Facebook AI 提出的 BERT 改进版本,全名是 Robustly Optimized BERT Pretraining Approach。它并没有改变 BERT 的模型结构,而是通过对预训练流程的全方位优化,显著提升了模型性能。

原因是,研究人员发现,BERT的训练远未收敛,所以他们提出了几种对BERT模型预训练的方法。RoBERTa = 优化训练方法版 BERT

RoBERTa的改进

去掉下句预测(NSP)任务

RoBERTa 彻底移除了 NSP 任务,只保留 掩码语言模型(MLM)

BERT 原始论文中使用了两个预训练任务:

    掩码语言模型(Masked Language Model, MLM)下句预测(Next Sentence Prediction, NSP)

其中,NSP 的任务目标是:判断给定的两个句子,是否是原文中相邻的句子。

🌰 举个例子(BERT 的 NSP 任务):

BERT 希望模型能学会捕捉句子之间的逻辑连贯性和上下文关系

之前ALBERT那个我们写了,大家觉得NSP任务没啥用,为了深入评估 NSP 的作用,研究者设计了以下四种训练设置,并使用相同的 BERT 模型架构在多个下游任务上进行评估:

训练设置是否使用NSP输入格式说明
片段对 + NSP✅ 是输入为两个片段(非严格意义的句子对),最多512个token,采用标准 BERT 的 NSP 任务
句子对 + NSP✅ 是输入为两个句子组成的句子对,可以来自同一文档或不同文档,长度限制为512个token
完整句❌ 否输入为一个完整文本片段(不使用 NSP),从一个或多个文件中连续采样,如果输入到达一个文件的末尾,那么就从下一个文件开始采样,最大长度512 token
文档句❌ 否与“完整句”类似,但只从同一个文档中采样,如果输入到达一个文件的末尾,就不会从下一个文件中采样,不跨文件边界

研究人员在以下四个任务上评估了模型表现:

论文中这个表格的结果表明,不使用 NSP 的“完整句”和“文档句”训练方式,在多个任务上性能优于使用 NSP 的训练方式。“文档句”在效果上略优于“完整句”,但由于其采样更复杂、批大小不稳定,RoBERTa 最终选择使用“完整句”作为默认策略。

然后他们进行了深入分析,认为NSP有几个问题:

    NSP 任务太简单,没太多学习价值:句子之间是否相邻,模型可以凭借一些浅层线索(如主题相似、词语重合)来判断,不需要深层语义理解。NSP 混淆了“连贯性”和“相关性”:正例中的句子是自然连续的,但负例往往是随机配对,差距太大,模型容易抓住“话题不同”这种表层特征来猜,而不是去学真正的语义连贯性。实验发现:移除 NSP 后,模型性能反而更好:RoBERTa 团队在 GLUE、SQuAD、RACE 等任务上进行了对比实验,只使用 MLM 而不使用 NSP 的模型,表现更强,尤其在句子级任务中明显受益。

所以最后RoBERTa 彻底移除了 NSP 任务,只保留 掩码语言模型(MLM)

动态掩码策略(Dynamic Masking)

我们都知道 BERT 使用的是“掩码语言模型”任务(MLM),简单说就是把句子里的某些词遮住(mask 掉),然后让模型猜出来原词是什么。

但在 BERT 里,这些被遮住的词在预处理阶段就已经一次性选定,也就是说,无论训练多少轮,模型看到的“填空题”都是那些固定位置。

RoBERTa 对此做了一个关键优化:动态掩码,每次训练时,随机重新选择要遮住的词,也就是说,每次看到的是不同的填空版本

比如:

优弧昨天突然给我发了1000w矿石,非让我换Switch。

"Youhu suddenly sent me 10 million ores yesterday and insisted that I trade them for a Switch."

如果是 BERT,它可能始终只遮住:

"Youhu suddenly sent me 10 million [MASK] yesterday and insisted that I trade them for a Switch."

但在 RoBERTa 中,对模型进行全数据训练,每次训练中看到的被遮盖的词都是不同的:

"Youhu suddenly sent me [MASK] million ores yesterday..."

"Youhu suddenly sent me 10 million ores yesterday and insisted that I [MASK] them..."

"Youhu [MASK] sent me 10 million ores yesterday..."

这样,模型不仅学会填“ores”这种固定位置的某个词语,还能更全面地学习整个句子的上下文关系、语法结构、词义分布。

更大数据集、更大批次

数据集

BERT 的预训练数据主要来自两个英文大规模文本语料:

📦 这两个数据集合计大小约为 16GB,用于训练原始的 BERT 模型。

RoBERTa 在此基础上,进一步扩充了训练语料库,引入了三个全新的开放域数据集:

    CC-News:从 Common Crawl 中抽取的新闻数据,约 76GB;OpenWebText:模仿 OpenAI GPT 训练语料,从 Reddit 高质量链接页面抓取的网页文本,约 38GB;Stories:Common Crawl 的子集,包含大量连贯叙事文本,约 31GB。

📊 五个数据集总量合计达 160GB,是 BERT 原始语料的 10 倍

这种语料扩展使 RoBERTa 能够学习更多样、更多领域的语言模式,从而提升其泛化能力。

批量

在训练配置上,RoBERTa 同样进行了重要优化:BERT的预训练批量大小为256。而RoBERTa批量大小为8000。

采用字节级 BPE分词

BERT 使用的 WordPiece 分词器

例如:

Token:  unbelievableWordPiece:  un ##believ ##able

RoBERTa 使用 Byte-Level Byte Pair Encoding (Byte-Level BPE) ,这是一种更底层、更通用的子词分词算法:

例如:

Token:  "Hello😊"Byte-Level BPE:  ['H', 'ello', '�', '�']

RoBERTa 的词表大小扩展至 50,000 个标记。

RoBERTa 通过采用字节级 BPE,不仅提升了对边缘文本的处理能力,还减少了 OOV 问题,为模型在多任务与跨领域中的稳定表现打下基础。

总结

RoBERTa 告诉我们,训练策略比结构更重要
它没有改变 BERT 的 Transformer 架构,但凭借优化数据规模、任务设计和训练方式,就能让模型在几乎所有任务上显著提升。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

RoBERTa BERT 预训练 自然语言处理 MLM
相关文章