推理速度提升29倍,参数少1/10,阿里提出AdaBERT压缩方法

作为当前最佳的自然语言处理模型,BERT 却存在规模大、成本高和实时性差等缺点。为了能在实际应用中部署这种技术,有必要对 BERT 进行压缩。此前机器之心就已经介绍了几种来自不同研究机构的压缩方案,参阅《内存用量 1/20,速度加快 80 倍,腾讯 QQ 提出全新 BERT 蒸馏框架,未来将开源》和《AAAI 2020 | 超低精度量化 BERT,UC 伯克利提出用二阶信息压缩神经网络》。

今天,我们要介绍的是一项来自阿里巴巴的压缩方案 AdaBERT,这一方案的特点是能针对具体任务得到性能不会显著下降的小型模型。


论文链接:https://arxiv.org/pdf/2001.04246v1.pdf

BERT 等大型预训练语言模型研究已经表明,它们能够有效地处理多种不同的自然语言处理任务。但是,这些模型的参数规模庞大,难以部署到需要通过有限资源执行快速推理的实时应用中。
 
对于这一问题,现有的方法是将 BERT 压缩成小型模型,但这种压缩方法与任务无关,也就是说对于不同的下游任务而言,压缩方法是一样的。
 
面向任务的 BERT 压缩方法是有必要的而且很有用,为此阿里巴巴的研究者提出了一种全新的压缩方法 AdaBERT。该方法利用了可微神经架构搜索来自动将 BERT 压缩成适应不同特定任务的小型模型。
 
研究者为 AdaBERT 提出了两种不同的损失函数。一是面向任务的知识注入损失,可为搜索过程提供提示;二是效率感知型损失,这能提供搜索约束。这两个损失能为任务适应型 BERT 压缩提供效率和有效性之间的平衡。
 
研究者在多个 NLP 任务上对 AdaBERT 进行了评估,结果表明这些任务适应型压缩模型在保证表现相当的同时,推理速度比 BERT 快 12.7 到 29.3 倍,同时参数缩小至 BERT 的 11.5 到 17.0 之一的规模。

方法
 
如下图 1 所示,研究目标是针对一项具体任务,将给定的大型 BERT 模型压缩成一个有效且高效的任务适应型模型。压缩后模型的结构是以可微分方式搜索到的,这个过程需要用到来自大型 BERT 模型的面向任务的知识,同时也要重点考虑模型的效率。
图 1:AdaBERT 概况。通过考虑来自原始 BERT 的对任务有用的知识,同时兼顾模型效率,阿里巴巴提出的新方法能以可微分的方式为目标任务搜索合适的小型模型。
 
在数学形式上,研究者将在目标数据集 D_t 上进行微调后的 BERT 模型记为 BERT_t,将架构搜索空间记为 A。任务目标是找到一种最优架构 α∈A,方法是最小化以下损失函数
其中 w_α 是架构 α 的可训练的网络权重(比如一个前馈层的权重); L_CE、L_KD 和 L_E 分别是目标任务损失、面向任务的知识注入损失和效率损失。

具体来说,L_CE 是与目标数据 D_t 相关的交叉熵损失;L_KD 是面向任务的知识注入损失,能为该任务提供用于寻找适当结构的线索;L_E 是效率感知型损失,用于提供搜索约束,以便找到轻量级的高效结构。γ 和 β 是超参数,用以保持这些损失项之间的平衡。
 
面向任务的知识注入
 
  • 找到对任务有用的知识的探针

 
为了从教师模型 BERT_t 中分层地分解出对任务有用的知识,研究者使用了一组探针分类器,然后将分解出的知识注入到压缩后的模型中。
 
具体来说,研究者先是冻结了 BERT_t 的参数,然后根据 groundtruth 任务标签为每个隐藏层训练一个 softmax 探针分类器。总体模型有 J 个分类器(BERT-base 的 J=12),第 j 个分类器的分类 logit 可被视为从第 j 层学习到的知识。给定一个输入实例 m,用 表示 BERT_t 的第 j 层的隐藏表征,用 表示压缩后学生模型的第 i 层上通过注意力机制求和的隐藏状态,注入对任务有用的知识(分类 logit)的方式如下:
  • 注意力机制的分层迁移


如 Liu et al., 2019b 研究所示的那样,对于不同的任务,BERT 中每一层的作用都不一样。这里研究者通过注意机制来结合所有层的分解后的知识:
此外,为了丰富对任务有用的知识,研究者还在目标任务数据集上执行了数据增强,使用的增强过程与 Jiao et al., 2019 的一样,其中利用了 BERT 和 GloVe 来替换原始文本中的词。
 
效率感知型损失
 
因为该研究的目标是将原始 BERT 模型压缩成高效的压缩模型,所以研究者进一步从两个方面将模型效率纳入到了损失函数中,即参数规模和推理时间。具体来说,对于被搜索的架构 α_c 和 K,研究者如等式 (1) 那样定义了效率感知型的损失:
可微分架构搜索
 
新提出的方法与已有的 BERT 压缩方法有一个主要差别,即新提出的 AdaBERT 方法的目标是为不同的任务寻找适应任务的结构。研究者提出使用可微分的结构搜索方法来通过前述的损失项来搜索适应任务的结构。
 
  • 搜索空间设置


首先看看该方法的搜索空间,如下图所示:

图 2:包括堆叠的层和单元的搜索空间
 
对于单元中的候选操作,研究者采用了基于轻量级 CNN 的操作,因为它们能够有效地处理 NLP 任务,而且已有研究表明基于 CNN 的操作的推理速度比基于 RNN 和基于自注意力的模型更快,因为基于 CNN 的操作对并行处理比较友好。
 
  • 搜索算法


通过直接地暴力穷举所有候选操作来优化等式 (1) 中的整体损失是不可能办到的,因为组合操作具有巨大的搜索空间,在 α 上训练 w_α 需要消耗大量时间。为了解决这一问题,研究者在这里采用的方法是将被搜索的架构 建模为离散的变量,并使其服从离散概率分布 

因此,K 和 o_{i,j} 都被建模为了 one-hot 变量,并且分别是从层范围 [1, K_max] 和候选操作集 O 采样的。但是,由于这个离散采样过程让梯度无法传递回可学习的参数 P_K 和 P_o,因此 L 是不可微分的。研究者受之前的研究(Xie et al., 2019; Wu et al., 2019)的启发,使用了 Gumbel Softmax 技术来将分类样本弛豫化到连续样本向量 1和  中:



通过这种方式,y^K 和 y^o 就成了离散样本的可微分代理变量,然后就可以直接使用基于梯度的优化器来有效地优化 L 了。
 
注意,整体损失 L 的优化可被视为学习一个由搜索空间 α 所定义的父图,其候选操作的权重 w_α 和架构分布 P_α是同时训练的。在训练阶段,P_α 所引入的随机性可以增强对合适的上下文编码器的探索,这些编码器可以在资源限制下模仿特定于任务的教师 BERT_t。在完成父图(parent graph)的训练之后,可以通过在 P_α 上使用 argmax 来推导得到一个高效的任务适应型子图,并以此作为压缩后的模型。

前面已经提到,知识注入损失 L_KD 能为 P_α 上的架构采样提供正则化,而效率感知型损失 L_E 则有助于得到稀疏结构,使模型紧凑和高效。
 
实验
 
实验采用了 6 个数据集进行评估,下表总结了压缩结果,包括参数规模、推理速度和分类准确度。

表 1:模型压缩结果。
 
下表总结了 AdaBERT 方法在不同任务上的详细结果。

表 2:通过 AdaBERT 为不同任务搜索到的结构的层数、参数数量和推理速度提升情况。
 
整体上讲,AdaBERT 方法在所有评估数据集上都实现了显著的效率提升,同时还保持着相当的性能。相比于 BERT_12-T,压缩后的模型的参数规模小了 11.5 到 17.0 倍,推理速度则提升了 12.7 到 29.3 倍,同时平均准确度表现仅有 2.79% 的降低。这说明 AdaBERT 可以将 BERT 压缩成特定于任务的小型模型。
 
适应性研究
 
为了进一步研究通过 AdaBERT 搜索到的架构的适应能力,研究者将搜索得到的压缩模型结构应用到了不同的下游任务上。下表 3 给出了跨任务验证的结果。
表 3:将搜索得到的压缩结构应用于不同任务上的准确度比较。
 
从上表 3 我们可以看到:搜索得到的结构在原始的目标任务上表现最佳,即表中对角线上的数字是最好的。
 
为了了解搜索得到的结构的适应能力,研究者还对搜索得到的不同任务的结构的基本单元进行了可视化,如下图 3 所示:
图 3:为三类 NLP 任务搜索得到的结构的基本单元。
 
根据以上将搜索得到的结构应用于不同任务的结果,可以确定新提出的 AdaBERT 方法可以为 BERT 压缩搜索适应任务的结构。
 
控制变量研究
 
研究者通过在不同的任务上执行实验,评估了知识注入(L_KD)和监督式标签知识(L_CE)的效果。结果如下表 4 所示:
表 4:知识损失项的效果。
 
最后,研究者还通过改变对应的系数而研究了效率感知型损失 L_E 的效果,包括标准情况(β = 4)、无效率限制情况(β = 0)和强效率限制情况(β = 8)。下表 5 给出了不同情况下的模型表现和对应的参数规模。
表 5:效率损失项的效果。
入门参数模型压缩BERT阿里巴巴
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

GloVe技术

Stanford开发的用于词向量表示的一个库/工具

自注意力技术

自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

参数技术

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

概率分布技术

概率分布(probability distribution)或简称分布,是概率论的一个概念。广义地,它指称随机变量的概率性质--当我们说概率空间中的两个随机变量具有同样的分布(或同分布)时,我们是无法用概率来区别它们的。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

超参数技术

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

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

优化器技术

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

语言模型技术

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

阿里巴巴机构

阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的18人于1999年在浙江杭州创立的公司。 阿里巴巴集团经营多项业务,另外也从关联公司的业务和服务中取得经营商业生态系统上的支援。业务和关联公司的业务包括:淘宝网、天猫、聚划算、全球速卖通、阿里巴巴国际交易市场、1688、阿里妈妈、阿里云、蚂蚁金服、菜鸟网络等。 2014年9月19日,阿里巴巴集团在纽约证券交易所正式挂牌上市,股票代码“BABA”,创始人和董事局主席为马云。 2018年7月19日,全球同步《财富》世界500强排行榜发布,阿里巴巴集团排名300位。2018年12月,阿里巴巴入围2018世界品牌500强。

https://www.alibabagroup.com/
相关技术
结构搜索技术

深度学习提供了这样一种承诺:它可以绕过手动特征工程的流程,通过端对端的方式联合学习中间表征与统计模型。 然而,神经网络架构本身通常由专家以艰苦的、一事一议的方式临时设计出来。 神经网络架构搜索(NAS)被誉为一条减轻痛苦之路,它可以自动识别哪些网络优于手工设计的网络。

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