Poor Man's BERT: 更小更快的Transformer模型

文 | sliderSun

源 | 知乎


NLP模型的大小不断增加,随之而来的是可用性降低,TinyBERT ,MobileBERT ,和DistilBERT 都提出了一个独特的知识蒸馏框架,其共同目标是在保持性能的同时减小模型大小

尽管所有这些方法都以各自的方式取得了成功,但存在一个共同的缺点:知识蒸馏需要在已经很昂贵的教师训练之后进行额外的训练,限制了这些技术对推理时间的实用性。

_修剪_是知识蒸馏的替代方法,先前的工作 , 表明基于Transformer的架构可以在推理过程中减少一些注意头,而不会显著降低性能。

如果我们将整个Transformer层从我们预先训练过的模型中删除,模型性能会发生什么变化?得出的模型对进一步的微调有用吗?性能是否因我们删除的层而不同?《Poor Man’s BERT: Smaller and Faster Transformer Models》 给出了分析。

主要贡献

剪枝技术(五种不同的策略)

Top-layer dropping。 移除网络的最后一层。先前的工作已经表明,网络的后期层次专门用于训练前的目标,这在训练的微调阶段可能没有帮助。

Bottom-layer dropping。 从网络中移除初始层。出于完整性考虑,包含了这种剪枝形式,即使以前的工作已经表明初始层为token之间的局部交互建模。

Alternate dropping。 从网络的末端开始,移除每一层,包括偶数层或奇数层。这些技术的目的是回答相邻层是否学习了足够相似的变换来移除其中一个。

Symmetric dropping。 从网络中心移除层。其动机是,与底层和顶层相比,这些层学习不那么重要的功能。

Contribution-based dropping。 根据它们对输入的修改程度删除层。这是通过平均输入和输出嵌入之间的余弦相似度来测量的。移除相似度高的层似乎是合理的,因为这意味着细微的变化。

Poor Man's BERT: 更小更快的Transformer模型_第1张图片

拟议方法的好处

应用这些修剪技术的主要好处之一是,生成的模型不需要任何进一步的_预训练_。作者建议仅根据特定任务_微调_模型就足够了。

这使从业人员无需访问大量计算硬件即可轻松创建已经存在的,经过预先训练的模型的较小版本。

结果

针对三种模型评估了上述修剪技术-12层基于BERT和XLNet的模型以及6层DistilBERT。DistilBERT还使所建议的修剪方法与类似的知识蒸馏技术之间能够进行进一步的比较。

最佳修剪技术

我们发现顶层删除优于其他修剪技术,尤其是在GLUE基准测试中删除4层或6层时。在后一种情况下,当删除模型的一半层时,BERT和XLNet的性能仅分别降低了2.9和1.8 GLUE点。这与DistillBERT的性能相匹配,后者的尺寸可与这些修剪过的模型相媲美。

Poor Man's BERT: 更小更快的Transformer模型_第2张图片

在BERT或XLNet中修剪六个顶层都会得到一个与DistillBERT的性能和大小相匹配的模型,而无需任何特定的培训过程。

从DistillBERT删除图层也会产生高性能模型,其中删除一层或两层的效果与原始模型相当。同样,顶层删除是最一致的,而两种(偶数和奇数)替换删除方法都具有竞争性。

特定任务的结果

由于顶级修剪被证明是最佳选择,因此以下实验仅限于该方法。

不必研究删除固定的一组层时会发生什么,而是可以从另一个角度解决这个问题-假设我们接受了一定的性能下降,我们允许下降多少层?

接受1%,2%或3%的性能下降表明,对于某些GLUE任务,BERT和XLNet最多可以下降9(!)层(在DistilBERT情况下最多可以下降4)!这(如果有的话)应该很好地表明了变压器模型所面临的过度参数化。

对于某些任务,可以从12层模型中修剪最多9个顶层,而不会降低3%以上的性能。

BERT与XLNet

作者还提供了有关BERT和XLNet的修剪能力的详细比较。他们发现了以下内容:

XLNet在修剪顶层方面更加强大。 这使他们得出结论,XLNet能够在网络中更早地学习更复杂的,特定于任务的信息。通过在BERT和XLNET的每个变压器层上添加分类器头来评估该假设。XLNet已在第7层达到了最佳性能,而BERT需要至少11层才能收敛,请参见下图。该结果说明了XLNet的鲁棒性。

Poor Man's BERT: 更小更快的Transformer模型_第3张图片

微调以完全不同的方式影响BERT和XLNet中的层。 尽管先前的工作表明,对BERT的较晚层进行微调的程度远大于对BERTNet的较早层进行微调,但尚未研究它如何影响XLNet层。这项工作验证了先前的发现,但与XLNet的事实形成了对比,对于XLNet,中间层的变化远大于微调后的早期和晚期层。下图显示了这两种模型微调前后各层之间的比较。

Poor Man's BERT: 更小更快的Transformer模型_第4张图片

作者推测,造成这种差异的原因是预训练过程。为了避免陷入确切的细节中,XLNet是一种自动回归(AR)语言模型,它通过分解阶数的所有可能排列进行训练,尽管它是AR模型,但它仍可以学习双向上下文。

修剪微调的模型

当问到“如果我们修剪已经微调的模型会发生什么情况”这个问题是有效的时,作者表明,它并不能显着提高性能(实际上会导致BERT的结果更糟)。

结论

知识蒸馏已显示出令人鼓舞的结果,可以在减小模型大小的同时保留其大部分性能。主要缺点是建立这些模型需要额外的训练,这会阻止计算资源有限的研究人员创建这些较小的模型。

一种替代方法是通过简单地删除一组图层来修剪模型。这项工作表明,删除顶层可以提供最一致的结果,对于某些任务,可以从12层中删除9层,同时保留原始模型的97%的性能。

最后,这项工作提供了有关BERT和XLNet之间差异的见解,这表明XLNet是用于修剪的更强大的模型。 作者部分地归因于其新颖的预训练目标。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1] https://link.medium.com/jxkO6EmLi8

[2] https://link.medium.com/KeobJglLi8

[3] https://link.medium.com/I4Q4ulnLi8

[4] http://arxiv.org/abs/1905.10650

[5] https://arxiv.org/abs/1905.09418

[6] https://arxiv.org/abs/2004.03844

[7] https://medium.com/dair-ai/poor-mans-bert-why-pruning-is-better-than-knowledge-distillation-%EF%B8%8F-f9652a1dc2bd

你可能感兴趣的:(java,人工智能,机器学习,深度学习,编程语言)