作者 | 李雅亮博士

阿里巴巴 来源 | DataFunTalk

导读:本次分享的主题为大规模预训练模型的压缩和蒸馏,主要是从自动机器学习的角度,介绍大规模预训练模型的压缩和蒸馏。将介绍阿里巴巴达摩院关于模型压缩的三个连续承接性的工作:

  • 工作1:AdaBERT:Task-AdaptiveBERT Compression with Differentiable Neural Architecture Search. IJCAI’2020.

  • 工作2:L2A:Learning toAugment for Data-Scarce Domain BERT Knowledge Distillation. AAAI’2021.

  • 工作3:Meta-KD:MetaKnowledge Distillation Framework for Language Model Compression across Domains.ACL’2021.

01

背景介绍

自2018年BERT预训练横空出世,NLP领域出现了一个全新的范式,大规模预训练模型给我们带来了很多新的能力。通俗来讲,我们会先从很多其他语料或者说很多大规模数据里面做一个预训练的模型,然后在具体任务的训练语料微调预训练的模型。基于“预训练-微调“范式,许多任务的性能都得到了极大的提升。如图1,文本分类(Text Classification), 命名实体识别(Named Entity Recognition),基于机器阅读理解的问答(Question Answering, MachineReading Comprehension)等任务的性能得到显著提升。在BERT论文中他们指出BERT在11个经典的自然语言任务中超越当前的state-of-the-art的性能,“一石激起千层浪”,自此之后,大量的预训练模型层出不穷——GPT系列预训练模型,相比BERT炼制更加成熟的RoBERTa, 缓解序列长度的限制XLNET, 融入知识的K-BERT, 领域预训练模型SCIBERT等等。

图1  BERT模型在不同任务上微调

然而,预训练的大模型,顾名思义,他们的参数量会非常大,如12层transformer堆叠的wwmpytorch版本的预训练模型大小为400M左右,24层transformer的版本大概1.2G左右。但是在现实生活中,我们的计算资源有限的情况下,至少会引起两个问题,其一,我们设备终端无法加载这么大的模型,其二,参数太多,推断速度太慢。比如说在线搜索这些需要实时响应的应用,或者说我们自己的手机、车载系统,它们的计算资源是非常受限的,所以我们需要有一些小的模型来替代它的功能。

所以,为了解决模型上述的痛点,模型的压缩技术在工业界和学术界应运而生。如图2,现在的BERT预训练模型压缩的基本研究思路如下:

图2 BERT压缩常规研究方法

  • 模型蒸馏(distillation):强迫一个小的模型去通过去模仿一个大模型的输入输出,如DistilBERT, TinyBERT, MiniLM等工作。

  • 量化(quantization):对整个大模型里面的参数做量化,也就把很多不重要的参数,我们可以用比较少的精度来存储, 如Q-BERT等工作。

  • 参数共享(parameter sharing):模型不同的组件(component)之间去共享参数,如ALBERT的工作。

02

AdaBERT介绍

1. 研究动机

上述模型压缩的几个基本的研究思路(distillation,quantization, parameter sharing等)都是和下游任务(downstream)不相关的,即模型压缩的结果都是大模型统一压缩成小模型,然后再利用小模型去微调具体任务。

但是,在2019年,Ian Tenney等人(如图3)揭示了——BERT学的knowledge非常的多,换一句说,BERT学到的非常多的general knowledge,但是不同下游任务需要的knowledge可能不太一样,比如做NER是你可能更关注的是细粒度的信息,做reading comprehension可能关注的是需要一些high level的信息。受此启发,我们提出AdaBERT:针对一个具体的下游任务,通过自动压缩一个小模型,来适配该任务,即小模型是专门为该任务服务的。

图3 自适应任务模型压缩的研究启发

2. 模型介绍

我们利用神经网络结构搜索(NAS)来自动化搜索小模型的网络结构。下面我们从三个方面介绍模型的一些设计。

① 如何定义Search Space

图4 Search space 设计

不同于以往BERT的压缩——将Transformer结构压缩成更少参数transformer的结构。在这里我们采用基于CNN结构的architecture。原因如下:

  • 首先,很多场景下的优化,基于CNN的硬件支持可能会更好,有利于实际场景中的部署;

  • 另外,主要考虑到在AutoML中NAS研究中关于绝大部分研究都会是和CNN相关的,方便借鉴已有的成果,如differentiable, Gumbel trick。

② Search目标

Search的目标包含两个方面,一方面,需要小模型尽可能保留BERT中有用的knowledge,另一方面,需要权衡推断效率,即小模型的size。权衡保留大模型的有用的knowledge和 efficiency,故总体的Loss设计参见图5。其中L 为具体下游任务的Loss。,是超参数。

图5 权衡knowledge-efficiency损失函数设计

图6  knowledge distillation Loss

图7 efficiency-aware Loss

如何去搜

因为定义的CNN的网络架构是离散化的,从传统的方法来看的话,如采用随机采样的方式去尝试不同的architecture,费时费力,所以我们利用differential方法去优化。其思想是:首先,我们预定义好一些operation, 对于每个网络层,并行组织所有的operation,形成super net,即每个super net中不是存在一个operation,而是存在所有可能operation的一个集合,通过加权形成所有可能的operation,这样我们就可以用differential的方法去优化整个大网络的结构了。训练architecture的parameters使用Gumbel trick。Differential的更多的具体原理细节,可以参考Liu, Simonyan等人提出DARTS。

3. 实验效果

图8 实验结果

可以看出AdaBERT的performance基本都处于次优的结果,而参数量最少,inference speedup有明显提升。

图9 验证Task-AdaBERT的实验

如图9,为了验证网络结果符合任务自适应,将训练的任务自适应的小模型应用到其他任务上,完全符合我们的设想,自适应任务的模型在自己的任务上表现最优。

03

L2A介绍

1. 研究动机

通过上述介绍,AdaBERT可以work的一个前提假设是我们存在大量的领域训练数据,然而,真实世界往往是缺乏训练数据的;如果仍然按照AdaBERT一套做模型蒸馏,在数据稀少的情况下,会导致学生(小)模型性能退化。

对于数据缺乏,NLP领域有大量的data augmentation的方法,如对于真实的文本序列做token 的增,删,改,插或者来回逆向翻译。然而从自动化的角度来看,这些data augmentation的方法需要花费大量时间成本去尝试,所以我们提出一种BERT蒸馏过程中自动学习增强数据缺少领域的方法。

2. 模型介绍

图10 L2A 模型结构

如图10,模型的主要的思想基于transfer learning和对抗网络。我们通过对source Domain 和 target Domain的data generator自动产生generated data,形成的training data去给Teacher Model 和 Student Model在压缩的时候去用,通过distillation Loss 和 Evaluation Metric通过Reinforcement learning的方式去迭代修改Generator行为。通过这样的方式去做筛选,把一些有用的信息留下来,相反把一些没用的信息就会就给剔除掉。

3. 实验结果

我们选取了四个任务,如图11,对于每组target dataset,我们都挑选合理有效的source datase。这里的缺陷即为,对于每个target dataset,需要我们人工挑选合适的source。这个问题我们会在下面Meta-KD缓解它。

图11  L2A四组任务

图12 L2A实验评估结果

如图12, 我们可以在所有的任务上都得到一个比较显著的一个提升。特别地,一个非常有趣的事情,我们找到的小模型很可能比大模型还要好,如NLI, Text classification这两个任务。

图13 L2A的消融实验

分析消融实验结果,我们可以发现L2A在数据量越小,改善越明显,他与teacher model之间的性能gap越大。这表明L2A可以有效地帮助数据稀缺领域的知识提炼。

04

Meta-KD介绍

1. 研究动机

上文提到L2A利用迁移学习的思想,可以在选择的source domain和target domain来训练一个适应任务的小模型,然而,人工选择source domain数据仍然存在一定的时间成本。为此我们提出Mate-KD:通过一个meta-teacher model 学习各种cross-domain的knowledge, student model在meta-teacher的“指导”下学习一个具体domain的knowledge。

2. 模型介绍

阶段一:meta-teacher learning。学习一个整合了cross-domainmeta-teacher model;

阶段二:meta-distillation。在 meta-teacher model的指导下,student model学习一个具体的数据集的knowledge, 具体的数据集可能从来没有在source domain出现过。

图14 Meta-KD 模型结构

3. 实验结果

我们在两个大的数据集上(MNLI, Amazon)做了实验,每个数据集都有四~五个domain,都有performance都有提升。然后比较有趣的,如图在Mate-KD在无特定领域的前置knowledge情况下,performance表现非常好。

图15 Meta-KD在MNLI数据集上的实验结果

图16 Meta-KD在Amazon数据集上的实验结果

图17 Meta-KD在无domain data情况下的实验结果

值得注意的一点是,如图17所示,当Meta-teacher在训练模型的过程中没有引入任何fiction domain的知识,然而实验效果却非常好。

05

精彩问答

Q:关于小模型的性能比大模型性能更好的意外收获,下一步的计划?

A:我们猜想大模型可能有些knowledge对于具体的task来说是noise,小模性可能去掉这个noise, 故表现更好。但是如何针对性地让所有小模型比大模型表现更好,我们认为有potential,但是目前还没有展开研究。

Q:模型压缩都是基于分类任务做的,考虑生成式任务上模型压缩吗?

A:目前我们大部分涉及到NLP 任务主要是要判断意图,分类,抽取信息,搜索之类,目前还没有涉及到generation 任务。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

END -

我从吴恩达课堂演讲中学到的一些建议

2021-11-21

KDD 2021 | 推荐系统论文集锦[持续更新]

2021-11-16

百度 2021 Lic 机器阅读理解比赛有感

2021-11-15

从 Sentence-BERT 谈句子表征

2021-11-12

达摩院李雅亮:大规模预训练模型的压缩和蒸馏相关推荐

  1. 极客日报:达摩院实现全球最大AI预训练模型;苹果3nm芯片或将2023年问世;微软官宣加入JCP计划

    一分钟速览新闻点! 达摩院实现全球最大AI预训练模型 清华北大等18所高校设立集成电路博士授权点 购物平台推出"协助退订营销短信"功能 抖音内测"听视频模式": ...

  2. 2021智源大会AI TIME|大规模预训练模型离通用人工智能还有多远?

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 6月1日,人工智能领域内行盛会"北京智源大会"如约而至.当天上午,北京市副市长靳伟.科技部战略规划司司长许倞出席并致 ...

  3. 中文版GPT-3来了?智源研究院发布清源 CPM —— 以中文为核心的大规模预训练模型...

    清源 CPM(Chinese Pretrained Models)是北京智源人工智能研究院和清华大学研究团队合作开展的大规模预训练模型开源计划,清源计划是以中文为核心的大规模预训练模型.首期开源内容包 ...

  4. 中文版GPT-3来了?智源、清华发布清源 CPM——以中文为核心的大规模预训练模型

    2020-11-18 23:43:21 清源 CPM(Chinese Pretrained Models)是北京智源人工智能研究院和清华大学研究团队合作开展的大规模预训练模型开源计划,清源计划是以中文 ...

  5. 200+页综述!阐述大规模预训练模型机遇与风险

    来源 | 机器之心 在一篇 200 多页的论文中,Percy Liang.李飞飞等斯坦福研究者系统阐述了大规模预训练模型背后的机遇与风险.他们还给这些模型取了一个统一的名字-- Foundation ...

  6. 「悟道」来了!大规模预训练模型交流论坛开启报名

    2020年10月以来,智源研究院已组建了清华大学唐杰教授领衔,由来自北大.清华.人大.中科院等单位的80余人的AI科学家组成的"悟道"联合攻关团队,开展"文源" ...

  7. 还在 Fine-tune 大规模预训练模型? 该了解下最新玩法 Prompt-tuning啦

    写干货不易,点个赞再走吧! 由于预训练模型经过了预训练的学习,因此其本身已经拥有了一定的特征抽取(挖掘)能力,是个"三好学生":而大规模预训练模型在此基础上由于参数量众多,因此结合 ...

  8. 交互式多模型_26亿参数,智源、清华开源中文大规模预训练模型

    近日,北京智源人工智能研究院和清华大学研究团队联合发布了以中文为核心的大规模预训练语言模型 CPM-LM,参数规模达 26 亿,预训练中文数据规模 100 GB. 26亿参数,智源.清华开源中文大规模 ...

  9. 【2021 第五届“达观杯” 基于大规模预训练模型的风险事件标签识别】1 初赛Rank12的总结与分析

    目录 相关链接 1 赛题分析 2 引言 3 方案 3.1 传统DL方案 3.2 预训练方案 4 提分技巧 5 加快训练 6 总结和反思 7 参考资料 相关链接 [2021 第五届"达观杯&q ...

最新文章

  1. [iOS]提交App报错ERROR ITMS -90207
  2. elasticsearch health yellow
  3. python中字符串运算符及用法_python将字符串转换为运算符
  4. 第八周结对编程四则运算二
  5. php 安装php soap.dll,php_soap.dll下载
  6. iOS设备控制打印机输出文本
  7. linux系统io编程,Linux系统编程(1) —— 文件IO
  8. 量子计算机组运算极限,拓扑量子计算
  9. 卸载 趋势科技防毒墙网络版
  10. 用JS判断浏览器是否是IE9以下
  11. 卡尔曼滤波器和六轴传感器姿态融合资料整理
  12. 熊出没机器人光头强_熊出没:光头强的最强发明,第2件砍树神器,最后1件价值千万!...
  13. 什么是鱼骨分析法(N Why)?
  14. 远程过程调用失败而且未执行怎么办
  15. 科研小白如何做好科研(内附一些科研实用工具)
  16. java的书写规范_java书写规范以及技巧
  17. 关于Linux、git和github的一些历史事件
  18. 计算机数据采集管理系统的结构和功能,生产数据采集系统结构、功能及特点
  19. ipad键盘符号少怎么办?
  20. 【工具安装】Quartus II 安装与驱动

热门文章

  1. 消费金融盈利分析及风控能力建设
  2. sql必知必会的数据初始化
  3. 第7章 使用Spring MVC构建Web程序(一)
  4. LeetCode Online Judge 题目C# 练习 - Search in Rotated Sorted Array II
  5. 安装JDK,如何配置PATH,如何配置CLASSPATH
  6. VC++6.0安装步骤
  7. JAVA实现ATM源代码及感想
  8. 【Flask】ORM 关系一对一
  9. 硬件时间,操作系统时间,Windows 和linux 双系统时间差8小时问题说明
  10. Ubuntu中Qt5.7.0无法输入中文