BERT, RoBERTa, DistilBERT, XLNet的用法对比

2019-09-15 21: 47: 28宽兄弟在玩数字

指南:BERT,RoBERTa,DistilBERT,XLNet强大吗?如何在不同的研究领域和应用场景中进行选择已经成为一个大问题。一切都很慌张,这篇文章可以帮助你理清你的想法。

BERT和后续模型

谷歌基于变压器的BERT系列在NLP领域引发了一场风暴,其在多个任务中的表现一直很强劲,超越了之前使用的最先进技术。最近,谷歌修改了BERT。我将比较修订前后的主要相似点和不同点,以便您可以选择在研究或应用中使用哪一个。

BERT是一种双向变换器,可预先训练大量未标记的文本数据,以学习可用于微调特定机器学习任务的语言表示。虽然BERT在几个任务中的性能优于NLP领域中使用的最先进技术,但其性能提升主要归功于双向变换器,任务训练和结构预测的掩蔽语言模型,以及大量数据和Google的计算能力。

最近,已经提出了几种方法来改善BERT的预测指数或计算速度,但它们从未实现相同的目的。 XLNet和RoBERTa提高了性能,而DistilBERT提高了推理速度。下表对它们进行了比较:

图1:比较BERT和最近的改进

估计GPU计算时间(使用4个TPU Pod进行4天的原始培训)

根据掩蔽过程的不同,使用大量小批量数据训练学习速度和延长时间

数据的来源是原始纸张

xlnet是一个大型的双向转换器,它使用一种改进的训练方法,具有更大的数据集和计算能力。xlnet在20个语言任务中优于bert。

为了改进训练方法,xlnet引入了位移语言模型,其中所有的标记都按随机顺序进行预测。这与伯特的掩蔽语言模型形成对比,后者只预测掩蔽(15%)标记。这也颠覆了传统的语言模型,即所有标记都是按顺序而不是随机顺序预测的。这有助于模型学习双向关系,以便更好地处理单词之间的关系和发音。另外,采用变压器XL作为基础设施,即使没有统一的排序训练,也能表现出良好的性能。

xlnet使用超过130gb的文本数据和512个tpu芯片进行训练,运行2.5天,xlnet的训练库比bert大得多。

roberta,robustly在facebook上发布了一个bert优化解决方案。roberta在bert的基础上重新训练,改进了训练方法,使数据量增加了1000%,提高了计算能力。

为了优化训练方案,roberta将结构预测(nsp)任务从bert预训练方案中去掉,在训练过程中引入动态掩蔽来改变掩蔽标记。在这一过程中,也证实了大批量训练规模在训练过程中确实更有用。

重要的是,RoBERTa预训了160 GB的文本,包括16GB的文本语料库和BERT的英语维基百科。其他数据包括CommonCrawl新闻数据集(6300万篇文章,76 GB),Web文本语料库(38GB)和普通爬虫(31 GB)的故事。加上1024 V100 Tesla GPU每天都在运行,这为RoBERTa提供了预训练的基础。

因此,RoBERTa在GLUE基准测试结果中优于BERT和XLNet:

图2:RoBERTa的性能比较。

另一方面,为了减少BERT或相关模型的计算(训练,预测)时间,应该选择使用较小的网络来实现类似的性能。有很多方法可以做到这一点,包括修剪,蒸馏和量化,所有这些都会导致预测指标降低。

DistilBERT研究了BERT的蒸馏(近似)版本,保留了95%的性能,但只使用了一半的参数。具体来说,它没有标记类型和池化图层嵌入,只留下了一半的Google BERT图层。 DistilBERT使用一种名为steam的技术,类似于Google的BERT(即一个由小型神经网络组成的大型神经网络)。理由是,一旦要训练大型神经网络,就可以使用较小的网络来估计其完整的输出分布。这在某种意义上类似于后验近似。贝叶斯统计中后验近似的关键优化函数之一是Kulback Leiber分歧,这也是自然使用的。

注意:在贝叶斯统计中,我们接近真实的后验值(来自数据),而对于蒸馏,我们只能接近在较大网络中学习的后验值。

如何使用

如果你真的需要更快地推理,并且可接受的价格是预测准确度稍微下降,那么DistilBERT将是一个不错的选择,但如果你仍在寻找最好的预测性能,你最好使用Facebook。罗伯塔。

理论上,基于XLNet替换的培训应该能够处理依赖性,并且可以在长期操作中表现更好。

但是,Google的BERT确实提供了良好的基线。如果您没有上述任何关键要求,则可以使用BERT保持系统正常运行。

总结

大多数性能改进(包括BERT本身)都是由于数据量,计算能力或培训过程的增加。虽然它们确实有自己的价值,但它们往往会在计算和预测指标之间进行权衡。今天真正需要的是在使用更少的数据和计算资源的同时对性能进行基本改进。

原作者:SuleimanKhan

原文链接:

指南:BERT,RoBERTa,DistilBERT,XLNet强大吗?如何在不同的研究领域和应用场景中进行选择已经成为一个大问题。一切都很慌张,这篇文章可以帮助你理清你的想法。

BERT和后续模型

谷歌基于变压器的BERT系列在NLP领域引发了一场风暴,其在多个任务中的表现一直很强劲,超越了之前使用的最先进技术。最近,谷歌修改了BERT。我将比较修订前后的主要相似点和不同点,以便您可以选择在研究或应用中使用哪一个。

BERT是一种双向变换器,可预先训练大量未标记的文本数据,以学习可用于微调特定机器学习任务的语言表示。虽然BERT在几个任务中的性能优于NLP领域中使用的最先进技术,但其性能提升主要归功于双向变换器,任务训练和结构预测的掩蔽语言模型,以及大量数据和Google的计算能力。

最近,已经提出了几种方法来改善BERT的预测指数或计算速度,但它们从未实现相同的目的。 XLNet和RoBERTa提高了性能,而DistilBERT提高了推理速度。下表对它们进行了比较:

图1:比较BERT和最近的改进

估计GPU计算时间(使用4个TPU Pod进行4天的原始培训)

根据屏蔽程序的不同,使用大量小批量数据来训练学习速度和延长时间

数据来源是原始论文

XLNet是一种大型双向变换器,采用改进的训练方法,具有更大的数据集和更强的计算能力。 XLNet在20种语言任务中优于BERT。

为了改进训练方法,XLNet引入了位移语言建模,其中所有标记都以随机顺序预测。这与BERT的掩蔽语言模型形成对比,后者仅预测掩蔽(15%)标记。这也颠覆了传统的语言模型,其中所有标记都是按顺序而不是按随机顺序预测的。这有助于模型学习双向关系,以更好地处理单词之间的关系和表达。此外,使用Transformer XL作为基础设施,即使没有统一的分类培训,它也可以表现出良好的性能。

XLNet使用超过130 GB的文本数据和512 TPU芯片进行培训,运行2.5天,XLNet的培训库比BERT大得多。

在Facebook上强力推出的RoBERTa是BERT优化解决方案。 RoBERTa在BERT的基础上进行了再培训,改进了训练方法,并将数据增加了1000%,从而提高了计算能力。

为了优化训练计划,RoBERTa从BERT预训练计划中删除了结构预测(NSP)任务,引入动态掩蔽以在训练期间更改蒙面标记。在此过程中,还确认了大批量培训规模在培训过程中确实更有用。

重要的是,RoBERTa预训了160 GB的文本,包括16GB的文本语料库和BERT的英语维基百科。其他数据包括CommonCrawl新闻数据集(6300万篇文章,76 GB),Web文本语料库(38GB)和普通爬虫(31 GB)的故事。加上1024 V100 Tesla GPU每天都在运行,这为RoBERTa提供了预训练的基础。

因此,RoBERTa在GLUE基准测试结果中优于BERT和XLNet:

图2:RoBERTa的性能比较。

另一方面,为了减少BERT或相关模型的计算(训练,预测)时间,应该选择使用较小的网络来实现类似的性能。有很多方法可以做到这一点,包括修剪,蒸馏和量化,所有这些都会导致预测指标降低。

DistilBERT研究了BERT的蒸馏(近似)版本,保留了95%的性能,但只使用了一半的参数。具体来说,它没有标记类型和池化图层嵌入,只留下了一半的Google BERT图层。 DistilBERT使用一种名为steam的技术,类似于Google的BERT(即一个由小型神经网络组成的大型神经网络)。理由是,一旦要训练大型神经网络,就可以使用较小的网络来估计其完整的输出分布。这在某种意义上类似于后验近似。贝叶斯统计中后验近似的关键优化函数之一是Kulback Leiber分歧,这也是自然使用的。

注意:在贝叶斯统计中,我们接近真实的后验值(来自数据),而对于蒸馏,我们只能接近在较大网络中学习的后验值。

如何使用

如果你真的需要更快地推理,并且可接受的价格是预测准确度稍微下降,那么DistilBERT将是一个不错的选择,但如果你仍在寻找最好的预测性能,你最好使用Facebook。罗伯塔。

理论上,基于XLNet替换的培训应该能够处理依赖性,并且可以在长期操作中表现更好。

但是,Google的BERT确实提供了良好的基线。如果您没有上述任何关键要求,则可以使用BERT保持系统正常运行。

总结

大多数性能改进(包括BERT本身)都是由于数据量,计算能力或培训过程的增加。虽然它们确实有自己的价值,但它们往往会在计算和预测指标之间进行权衡。今天真正需要的是在使用更少的数据和计算资源的同时对性能进行基本改进。

原作者:SuleimanKhan

原文链接: