今天,我们应该使用 BERT 还是 XLNet?直观看来 XLNet 要比 BERT 好一些,毕竟提出模型以后,XLNet 在 GLUE 基准及其它很多 NLP 任务上都超过了 BERT,或者说超过了 BERT 和 BERT 的各种变体。而且从模型原理上来说,似乎 XLNet 那种随机排列的语言模型更适合预训练语言建模。
但早几天前,Facebook 表示只要训练更久一点、数据量再大一点,BERT 还是能重新达到 GLUE 基准的第一名。毕竟最开始 BERT 只用了 13GB 的文本就完成预训练,而后 XLNet 却是在 126GB 的纯文本上训练出了新的 SOTA 模型。尽管 XLNet 在原论文中以相同的数据集对比了 BERT-base 和 XLNet-base,但 4 个任务上的测试结果说服力似乎不那么强?
为此,XLNet 团队以更公平的方式对比了 XLNet 和 BERT 的效果,对上述质疑进行了回应。研究者表示,他们几乎确保了每一个超参数都采用相同的值,使用相同的训练数据,这样对比 BERT 和 XLNet 就非常合理了。重要的是,这套超参是从 BERT 复制到 XLNet 的,也就是说 BERT 在训练过程中会略有一些优势——因为这些超参是谷歌专门为 BERT 优化的。
作为 XLNet 工作的导师,卡耐基梅隆大学(CMU)教授 Ruslan Salakhutdinov 也在社交网络上为自己弟子的研究站台。
最终,实验展示了两个非常有意思的结果:
在相同环境和配置下训练两个模型,XLNet 在所有数据集上都超过了 BERT,且提升还不小;
在 11 个基准的 8 个中,采用 XLNet 架构所获得的性能增益要超过采用 10 倍预训练数据所获得的性能增益。
这两个实验结果都表明,在公平对比下,BERT 似乎真的也就能挣扎一下。那么,问题来了,Facebook 的大规模 RoBERTa 又是怎样超过 XLNet 的?
公平的竞技场
7 月 19 号,Facebook 提交了一个名为 Robustly Optimized BERT pretraining Approach(RoBERTa)的模型,它在 11 项 NLP 任务中有 6 项超过了集成版的 XLNet,并且总分也比它略高一点。Facebook 表示,他们采用了 BERT-Large,并通过更多的数据与更长的训练来提升预训练过程。因为目前还没有公开资料,我们也不知道这个「更多」到底是多多少。
但是我们可以通过更公平的方式对比它们的效率啊,为此 XLNet 团队也就完成了这项更详细的测试任务。具体而言,在原论文中,XLNet 的研究人员就做了控制变量测试,在相同数据集下对比了 XLNet-base 和 BERT-base 模型。
之后,很多开发者关心预训练大模型之间的性能差异,因为这样可以更好地确定实践中到底该用 BERT 还是 XLNet。因此,研究团队对 XLNet-Large 和 BERT-Large 进行对比产生了兴趣,也就有了后续的公平竞技场。
在这次的研究中,研究人员确保几乎所有可能的超参数在 BERT 和 XLNet 上都是一致的。BERT 的超参数来自于论文,是在 BERT 上优化过,但是 XLNet 上没有优化过的。研究团队具体控制了以下超参数变量:
同样的批大小:256;
同样的训练步数:1M;
同样的优化器:Adam、学习率 1e-4、前 10k 预热、线性衰减;
同样的训练语料:Wikipedia + BooksCorpus。研究人员使用和 BERT 相同的工具处理维基百科数据,但是因为未知原因,他们的维基百科语料仅有 2 B 的词,而 BERT 有 2.5B。因此,XLNet 实际上依赖的训练数据略微少一些;
同样的模型参数:24 层、1024 个隐层单元、16 个注意力头;
同样的微调参数搜索空间。
此外,研究人员对数据相关的实现细节进行了改进,以便于和 BERT 比较。
在 XLNet 之前的实现中,未被 mask 的字符不会在预训练中看到 CLS 和 SEP 标签。但在当前实现中,未被 mask 的字符可以看到 CLS 和 SEP 标签,这一点和 BERT 保持相同。
在微调中,和 BERT 一样,研究人员使用了 BERT 的数据处理形式 [CLS, A, SEP, B, SEP],而不是保留 XLNet 本身的方式 [A, SEP, B, SEP, CLS]。
此外,研究人员考虑到了三种 BERT 的变体,并将每个单独任务最好的微调结果记录下来,三种变体分别是:
Model-I:BERT 作者自己发布的模型;
Model-II:全词 mask 的 BERT,也是原作者公布的;
Model-III:由于研究人员发现「下一句预测(NSP)」任务可能对性能带来影响,因此他们使用 BERT 预训练代码重新训练了一个没有 NSP 损失的模型。
XLNet 的作者认为,以上的设置可能给 BERT 带来一些优势,因为单个任务的最好表现结果可能出自不同的 BERT 变体。此外如下图所示的 XLNet-Large(as in paper),它采用了论文中训练结果,即使用更多训练数据和更大的批大小。
XLNet-Large(论文中的)、XLNet-Large-wikibook(和 BERT-Large 保持一致的)以及和 BERT 的对比,从测试结果来看,BERT 妥妥地被全面超越。
GLUE 基准和 SQuAD 验证集上的结果,以及 RACE 上的测试集结果如上图。训练中没有进行数据增强,模型构建中没有使用集成模型或者多任务学习。
从表中可以看到很多有意思的信息:
虽然在几乎完全一致的数据集上预训练,XLNet 还是在所有数据集中超过了 BERT 的表现。
多训练十倍数据量带来的性能提升(相比从 XLNet-Large-wikibooks 到 XLNet-Large 使用更多训练数据带来的提升),其提升幅度还不如从 BERT 转向 XLNet 高(11 个基准中 8 个超过了 BERT)。
对于一些基准测试数据集,比如 CoLA 和 MRPC,模型训练更多的数据可以比训练更少的数据效果要好。
从上述实验结果中,我们或许已经可以得出结论。
XLNet 提高了性能。上面结果 1 与研究人员在原论文对 base 模型做的控制变量实验结果一致,表明在相同的训练条件下 XLNet 对 BERT 的明显优势。
XLNet-Large 可以更好地进行优化。结果 2 和结果 3 似乎表明之前发布的 XLNet-Large(经过更多数据训练)没有充分利用数据规模。因此,研究人员将继续研究如何正确扩展 XLNet 预训练语言。根据目前有限的观察结果,XLNet 团队认为以下训练细节可能发挥重要作用:
数据相关:数据规模、数据源、数据清洗、数据编码、数据格式化
优化相关:学习率(及规划)、批大小、训练步骤数、优化器
重要的是,这些超参数可能彼此还有更高阶的交互
Facebook AI 最近的 GLUE 排行榜似乎也暗示了训练细节的重要性。
总而言之,本研究更加明确地将算法/模型的影响与其他因素分离,例如训练细节、大规模计算和大数据。基于实验结果,XLNet 团队认为算法与模型至少与其他因素一样重要,它们很可能都是实现自然语言理解的最终目标所必需的。这些新的结果很快也会被更新到 XLNet 论文上。
参考链接:https://medium.com/@xlnet.team/a-fair-comparison-study-of-xlnet-and-bert-with-large-models-5a4257f59dc0