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

拟议方法的好处

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

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

结果

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

最佳修剪技术

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

在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的鲁棒性。

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

作者推测,造成这种差异的原因是预训练过程。为了避免陷入确切的细节中,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 429. N叉树的层序遍历(queue)

1. 题目 返回其层序遍历:[[1],[3,2,4],[5,6] ]2. 解题 queue队列解题 /* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node() {}Node(int _val, vector<Node*> _children) {val _val;children _children;} }; */ class Solu…

Android官方开发文档Training系列课程中文版:管理Activity的生命周期之Activity的重建

原文地址&#xff1a;http://android.xsoftlab.net/training/basics/activity-lifecycle/recreating.html#RestoreState 有这么几个关于activity通过正常渠道销毁的场景&#xff0c;比如用户按下了返回按钮&#xff0c;又或者是在activity中调用了终止信号finish。系统可能也会…

Java动态追踪技术探究

引子 在遥远的希艾斯星球爪哇国塞沃城中&#xff0c;两名年轻的程序员正在为一件事情苦恼&#xff0c;程序出问题了&#xff0c;一时看不出问题出在哪里&#xff0c;于是有了以下对话&#xff1a; “Debug一下吧。” “线上机器&#xff0c;没开Debug端口。” “看日志&#xf…

论文浅尝 | 从树结构的长短期记忆网络改进语义表示

论文笔记整理&#xff1a;窦春柳&#xff0c;天津大学硕士&#xff0c;方向&#xff1a;自然语言处理链接&#xff1a;https://arxiv.org/pdf/1503.00075.pdf动机由于长短期记忆网络&#xff08;LSTM&#xff09;这种具有复杂单元的循环神经网络具有良好的表示序列信息的能力&a…

详解NLP技术中的:预训练模型、图神经网络、模型压缩、知识图谱

NLP近几年非常火&#xff0c;且发展特别快。像BERT、GPT-3、图神经网络、知识图谱等技术应运而生。我们正处在信息爆炸的时代、面对每天铺天盖地的网络资源和论文、很多时候我们面临的问题并不是缺资源&#xff0c;而是找准资源并高效学习。但很多时候你会发现&#xff0c;花费…

根因分析初探:一种报警聚类算法在业务系统的落地实施

背景 众所周知&#xff0c;日志是记录应用程序运行状态的一种重要工具&#xff0c;在业务服务中&#xff0c;日志更是十分重要。通常情况下&#xff0c;日志主要是记录关键执行点、程序执行错误时的现场信息等。系统出现故障时&#xff0c;运维人员一般先查看错误日志&#xff…

论文浅尝 | BAG:面向多跳推理问答得双向 Attention 实体图卷积网络

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究兴趣&#xff1a;知识图谱问答来源&#xff1a;NAACL 2019链接&#xff1a;https://www.aclweb.org/anthology/N19-1032/实现多跳推理问答需要模型能够充分理解文本和 query 之间的关系&#xff0c;本…

Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之构建灵活的UI

原文地址&#xff1a;http://android.xsoftlab.net/training/basics/fragments/fragment-ui.html 当设计应用程序时需要支持尺寸较大的宽屏设备时&#xff0c;可以基于可用的屏幕空间在不同的布局中配置并重新使用fragment来提升用户体验。 举个例子&#xff0c;手持设备在同…

LeetCode 669. 修剪二叉搜索树

1. 题目 给定一个二叉搜索树&#xff0c;同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点&#xff0c;所以结果应当返回修剪好的二叉搜索树的新的根节点。 来源&#xff1a;力扣&#xff08…

Pytorch翻车记录:单卡改多卡踩坑记!

文 | 哟林小平知乎先说明一下背景&#xff0c;目前正在魔改以下这篇论文的代码&#xff1a;https://github.com/QipengGuo/GraphWriter-DGLgithub.com由于每次完成实验需要5个小时&#xff08;baseline&#xff09;&#xff0c;自己的模型需要更久&#xff08;2倍&#xff09;&…

使用docker部署flask项目

前言 本次部署是把2个项目、mysql、redis、uwsgi封装在一个容器中&#xff0c;ngnix封装在一个容器中 实际应用中最好是&#xff1a; 项目和uwsgi封装在一个容器中mysql单独封装&#xff0c;可能还要读写分离&#xff0c;主从同步等redis单独封装&#xff0c;可能还要读写分离&…

论文浅尝 | DRUM:一种端到端的可微的知识图谱上的规则学习方法

论文笔记整理&#xff1a;张文&#xff0c;浙江大学在读博士&#xff0c;研究方向为知识图谱的表示学习&#xff0c;推理和可解释。现有的多数链接预测方法都不能处理新的实体&#xff0c;并且多为黑盒方法&#xff0c;使得其预测结果无法解释。本文提出了一种新的端到端的可微…

WSDM Cup 2019自然语言推理任务获奖解题思路

WSDM&#xff08;Web Search and Data Mining&#xff0c;读音为Wisdom&#xff09;是业界公认的高质量学术会议&#xff0c;注重前沿技术在工业界的落地应用&#xff0c;与SIGIR一起被称为信息检索领域的Top2。 刚刚在墨尔本结束的第12届WSDM大会传来一个好消息&#xff0c;由…

LeetCode 637. 二叉树的层平均值(层次遍历queue)

1. 题目 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组. 输入:3/ \9 20/ \15 7 输出: [3, 14.5, 11] 解释: 第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].2. 解题 queue按层遍历&#xff0c;每次进入循环记录队列长度n class So…

AI框架你只会调包,这种想法很危险!

深度学习神经网络正步入成熟&#xff0c;而深度学习框架目前众多&#xff0c;大都可以在图像识别、手写识别、视频识别、语音识别、目标识别和自然语言处理等诸多领域大显身手。深度学习框架平台占据人工智能产业生态的核心地位&#xff0c;具有统领产业进步节奏、带动终端场景…

Docker镜像大小

都说容器大法好&#xff0c;可是假设没有Docker镜像&#xff0c;Docker该是多无趣啊。 是否还记得第一个接触Docker的时候&#xff0c;你从Docker Hub下拉的那个镜像呢&#xff1f;在那个处女镜像的基础上。你执行了容器生涯的处女容器。镜像的基石作用已经非常明显。在Docker…

论文浅尝 | 机器阅读理解中常识知识的显式利用

论文笔记整理&#xff1a;吴林娟&#xff0c;天津大学硕士&#xff0c;自然语言处理方向。链接&#xff1a;https://arxiv.org/pdf/1809.03449.pdf动机机器阅读理解(MRC)和人类进行阅读理解之间还存在差距&#xff0c;作者认为主要体现在对于数据的需求和噪声鲁棒性上&#xff…

深度学习在美团配送ETA预估中的探索与实践

1.背景 ETA&#xff08;Estimated Time of Arrival&#xff0c;“预计送达时间”&#xff09;&#xff0c;即用户下单后&#xff0c;配送人员在多长时间内将外卖送达到用户手中。送达时间预测的结果&#xff0c;将会以”预计送达时间”的形式&#xff0c;展现在用户的客户端页面…

在AndroidStudio中配置Gradle进行 “动态编译期间,根据远程服务器地址 ,生成多类安装包”

原文地址&#xff1a;http://www.cnblogs.com/vir56k/p/4763810.html 需求&#xff1a; 在产品开发中&#xff0c;经常需要发布各个版本&#xff0c;每个版本的服务器地址有不同的服务器地址。比如 开发 服务器使用 192.168.1.232服务器&#xff0c;测试 服务器使用 192.168.1.…

中科院博士整理的机器学习算法知识手册,完整 PDF 开放下载!

分享一份中科院博士总结的机器学习算法知识手册&#xff0c;文章已打包成压缩文件&#xff0c;感兴趣的同学可下载交流。文件包含了&#xff1a;机器学习基础&#xff0c;监督学习方法、非监督学习方法&#xff0c;Python数据科学和深度学习等相关知识&#xff0c;若初学者在自…