思、泽南、一鸣报告

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

是的,BERT 毫无还手之力,但 XLNet 没有中文预训练模型...

今天,我们应该使用 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

入门深度学习智能机器人XLNetBERT
相关数据
自然语言理解技术

自然语言理解是人工智能的核心课题之一,也被广泛认为是最困难和最具标志性的任务。最经典的两个人工智能思想实验——图灵测试和中文房间,都是围绕自然语言理解来构建的。自然语言理解在人工智能技术体系中的重要性不言而喻,它一方面承载着机器和人的交流,另一方面直达知识和逻辑。自然语言理解也是人工智能学者孜孜以求的圣杯,机器学习的巨擘 Michael I. Jordan 就曾经在 Reddit 上的 AMA(Ask Me Anything)栏目中畅想用十亿美元建立一个专门用于自然语言理解的实验室。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

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

规划技术

人工智能领域的「规划」通常是指智能体执行的任务/动作的自动规划和调度,其目的是进行资源的优化。常见的规划方法包括经典规划(Classical Planning)、分层任务网络(HTN)和 logistics 规划。

学习率技术

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

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

多任务学习技术

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

语言模型技术

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

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