Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

思、路、张倩编译

重回榜首的BERT改进版开源了,千块V100、160GB纯文本的大模型

前段时间 Facebook 创建的改进版 BERT——RoBERTa,打败 XLNet 登上了 GLUE 排行榜榜首。近日,Facebook 公开了该模型的研究细节,并开源了模型代码。

BERT 自诞生以来就展现出了卓越的性能,GLUE 排行榜上前几名的模型一度也大多使用 BERT。然而,XLNet 的横空出世,打破了 BERT 的纪录。不过,不久之后,剧情再次出现反转,Facebook 创建的改进版 BERT——RoBERTa,登上了 GLUE 排行榜榜首。

图源:https://gluebenchmark.com/leaderboard/

Facebook 的研究人员表示,如果训练得更久一点、数据再大一点,BERT 就能重返SOTA

那么 RoBERTa 到底训练了多长时间,使用了多少数据呢?近日,Facebook 研究人员公开了研究细节。

论文地址:https://arxiv.org/pdf/1907.11692.pdf

GitHub 地址:https://github.com/pytorch/fairseq/tree/master/examples/roberta

RoBERTa 到底有多大

之前 XLNet 团队就对标准的 BERT 和 XLNet 做过一次公平的对比,他们测试了在相同参数水平、预训练数据、超参配置等情况下两者的效果。当然,XLNet 通过修改架构与任务,它的效果是全面超过标准 BERT 的。但如果 BERT 要再次超越 XLNet,那么数据和算力都需要更多。

算力

据介绍,Facebook 研究人员在多台 DGX-1 计算机上使用混合精度浮点运算,每台计算机具备 8 个 32GB Nvidia V100 GPU,这些 GPU 通过 Infiniband 连接。

但研究者并没有具体说 RoBERTa 使用了多少张 V100 GPU 训练了多长时间,我们只能了解到他们训练 Large 模型用 1024 块 V100 训练了一天,这样以谷歌云的价格来算需要 6.094 万美元。如下是原论文所述:

We pretrain for 100K steps over a comparable BOOKCORPUS plus WIKIPEDIA dataset as was used in Devlin et al. (2019). We pretrain our model using 1024 V100 GPUs for approximately one day.

因为 XLNet 的 TPU 训练价格也是 6 万美元,而且直观上用 GPU 训练会比 TPU 贵,所以我们根据上面的描述猜测 6.094 万美元是在 BOOKCORPUS 加 WIKIPEDIA 数据集上训练的成本。此外,XLNet 数据集扩充十倍,它的 TPU 训练成本也增加了 5 倍,也许 RoBERTa 也遵循同样的规则?

数据

BERT 模型预训练的关键是大量文本数据。Facebook 研究人员收集了大量数据集,他们考虑了五个不同大小、不同领域的英语语料库,共有 160GB 纯文本,而 XLNet 使用的数据量是 126GB。这些语料库分别是:

  • BOOKCORPUS (Zhu et al., 2015) 和英语维基百科:这是 BERT 训练时所用的原始数据 (16GB);

  • CC-NEWS:Facebook 研究人员从 CommonCrawl News 数据集的英语部分收集到的数据,包含 2016 年 9 月到 2019 年 2 月的 6300 万英语新闻文章(过滤后有 76GB 大小);

  • OPENWEBTEXT (Gokaslan and Cohen, 2019):Radford et al. (2019) 中介绍的 WebText 语料库的开源克隆版本。其中包含爬取自 Reddit 网站共享链接的网页内容 (38GB);

  • STORIES:Trinh and Le (2018) 中提到的数据集,包含 CommonCrawl 数据的子集,该数据集经过过滤以匹配 Winograd schemas 的故事性风格 (31GB)。

这样的数据量已经非常大了,它是原来 BERT 数据量的十多倍。但正如 XLNet 作者杨植麟所言,数据量大并不一定能带来好处,我们还需要在数量与质量之间做权衡。也许十倍量级的数据增加,可能还不如几倍高质量数据带来的提升大。

RoBERTa 到底是什么

Facebook 对 BERT 预训练模型进行了复现研究,对调参和训练数据规模的影响进行了评估,发现 BERT 训练严重不足。于是他们提出了 BERT 的改进版——RoBERTa,它可以匹敌甚至超过所有 post-BERT 方法的性能。

这些改进包括:

  • 模型训练时间更长,batch 规模更大,数据更多;

  • 移除「下一句预测」这一训练目标;

  • 在更长的序列上训练;

  • 动态改变应用于训练数据上的掩码模式。

Facebook 研究人员还收集了一个新型大数据集 CC-NEWS,以更好地控制训练数据集规模的影响。CC-NEWS 数据集的规模与其他私人使用数据集差不多。

总之,Facebook 研究人员关于 RoBERTa 的研究贡献可以总结如下:

  • 展示了一组重要的 BERT 设计选择、训练策略,介绍了一些可使下游任务性能更优的替代方法;

  • 使用新型数据集 CCNEWS,并确认使用更多数据进行预训练可以进一步提升模型在下游任务上的性能;

  • 训练方面的改进证明,在正确的设计选择下,掩码语言模型预训练的性能堪比其他近期方法。

RoBERTa 都改了些啥

对于原版 BERT,直接用它来做极大数据的预训练并不能 Work,我们还需要一些特殊的技巧来提升模型的鲁棒性,这也就是 Facebook 研究者主要尝试的。如下研究人员在论文中揭示并量化了 BERT 要进行哪些改进才能真正变得稳健。

1. 静态 vs. 动态掩码

BERT 依赖随机掩码和预测 token。原版的 BERT 实现在数据预处理期间执行一次掩码,得到一个静态掩码。Facebook 研究者将该策略与动态掩码进行比较,动态掩码即,每次向模型输入一个序列时都会生成掩码模式。在预训练进行更多步或使用更大的数据集时,这点变得尤其重要。

表 1: BERT_BASE 的静态和动态掩码比较。

2. 模型输入格式和下一句预测

在原版的 BERT 预训练步骤中,模型观察到两个连接在一起的文档片段,这两个片段要么是从相同的文档中连续采样,要么采样自一个文档的连续部分或不同文档。为了更好地理解这种结构,研究者比较了几种训练格式:

  • SEGMENT-PAIR+NSP:这种方式和 BERT 中用到的原始输入格式相同,NSP 是 Next Sentence Prediction(下一句预测)结构的缩写。

  • SENTENCE-PAIR+NSP:每个输入包含一对自然语言句子,采样自一个文档的连续部分或不同文档。

  • FULL-SENTENCES:每个输入都包含从一或多个文档中连续采样的完整句子,以保证总长度至多 512 token。

  • DOC-SENTENCES:这种输入的构造与 FULL-SENTENCES 类似,只是它们可能不会跨过文档边界。

表 2:在 BOOKCORPUS 和 WIKIPEDIA 上预训练的基础模型的开发集结果。所有的模型都训练 1M 步,batch 大小为 256 个序列。

3. 大批量训练

神经机器翻译领域之前的工作表明,在学习率适当提高时,以非常大的 mini-batch 进行训练可以同时提升优化速度和终端任务性能。最近的研究表明,BERT 也能适应大批量训练。

表 3:在 BOOKCORPUS 和 WIKIPEDIA 上用不同的 batch 大小(bsz)训练的基础模型在留出训练数据(ppl)和开发集上的困惑度。

4. 文本编码

Byte-Pair Encoding(BPE)是字符级和词级别表征的混合,支持处理自然语言语料库中的众多常见词汇。

原版的 BERT 实现使用字符级别的 BPE 词汇,大小为 30K,是在利用启发式分词规则对输入进行预处理之后学得的。Facebook 研究者没有采用这种方式,而是考虑用更大的 byte 级别 BPE 词汇表来训练 BERT,这一词汇表包含 50K 的 subword 单元,且没有对输入作任何额外的预处理或分词。这种做法分别为 BERTBASE 和 BERTLARGE 增加了 15M 和 20M 的额外参数量。

实验结果

Facebook 研究人员综合所有这些改进,并评估了其影响。结合所有改进后的方法叫作 RoBERTa(Robustly optimized BERT approach)。

为了厘清这些改进与其他建模选择之前的重要性区别,研究人员首先基于 BERT LARGE 架构训练 RoBERTa,并做了一系列对照试验以确定效果。

表 4:随着训练数据的增大(文本数量从 16GB → 160GB)、训练步长的增加(100K → 300K → 500K 训练步),RoBERTa 在开发集上的结果。在对照试验中,表格中每一行都累积了前几行的改进。

对于 GLUE,研究人员考虑了两种微调设置。在第一种设置中(单任务、开发集),研究人员分别针对每一项 GLUE 任务微调 RoBERTa,仅使用对应任务的训练数据。在第二种设置中(集成,测试集),研究人员通过 GLUE 排行榜对比 RoBERTa 和其他方法。

表 5:多个模型在 GLUE 上的结果。所有结果都基于 24 层的模型架构。

理论RoBERTaGLUE排行榜其他智能领域自然语言处理深度学习
2
相关数据
神经机器翻译技术

2013 年,Nal Kalchbrenner 和 Phil Blunsom 提出了一种用于机器翻译的新型端到端编码器-解码器结构 [4]。该模型可以使用卷积神经网络(CNN)将给定的一段源文本编码成一个连续的向量,然后再使用循环神经网络(RNN)作为解码器将该状态向量转换成目标语言。他们的研究成果可以说是神经机器翻译(NMT)的诞生;神经机器翻译是一种使用深度学习神经网络获取自然语言之间的映射关系的方法。NMT 的非线性映射不同于线性的 SMT 模型,而且是使用了连接编码器和解码器的状态向量来描述语义的等价关系。此外,RNN 应该还能得到无限长句子背后的信息,从而解决所谓的「长距离重新排序(long distance reordering)」问题。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

语料库技术

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

推荐文章
暂无评论
暂无评论~