40

XLNet团队:只要公平对比,BERT毫无还手之力

 4 years ago
source link: https://www.tuicool.com/articles/j2qiMjn
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

今天,我们应该使用 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 也在社交网络上为自己弟子的研究站台。

UrmyEfB.jpg!web

最终,实验展示了两个非常有意思的结果:

在相同环境和配置下训练两个模型,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),它采用了论文中训练结果,即使用更多训练数据和更大的批大小。

j6F7bmm.jpg!web

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK