这篇文章主要介绍两篇文章关于动态网络中的早退机制,有意思的是两篇文章都出自2020年ACL,并且两者有很多相似点。两篇论文地址如下:
DeeBert
FastBert
1. 动机
由于大规模预训练模型的兴起,如Bert,它确实有很不错的表现能力。然而,在实际应用中Bert规模太大,在推理时计算复杂度太高,往往需要很长的时间,因此需要设计一种自适应推理模型。
2. DeeBert
2.1. 介绍
DeeBert是在Bert每一层encoder后增加一个输出出口(即一个分类器)。如下图所示,长方形表示的是encoder,圆形表示的是分类器,其实DeeBert的模型架构与FastBert的模型架构几乎一致。
DeeBert
?
2.2. Training
DeeBert的训练分为两阶段:
2.3. inference
当输入样本x到达某一层的分类器,如果该分类器的预测结果的信息熵小于设定的阈值S,则直接返回该分类器的预测结果同时不在往后执行;如果该分类器的预测结果的信息熵大于设定的阈值S,则继续往后执行。

?
2.4. experiments
DeeBert使用GLUE数据集进行实验,实验结果如下:

3. FastBert
3.1. 介绍
FastBert的模型架构与DeeBert的模型架构类似,都是在Bert的每层encoder后增加一个分类器,FastBert给最后一个分类器取名为老师分类器,其它分类器都称为学生分类器。如下图所示:

3.2. Training
FastBert的训练也分为两阶段:


3.3. inference
在推理阶段,FastBert与DeeBert的策略也是几乎一样,都使用了分类器输出的信息熵作为是否早退的指标,当信息熵小于阈值S则早退,大于阈值S则继续执行。FastBert只是在信息熵基础上乘了一个系数,如下图所示:

?其中N是分类类别,分子部分其实就是信息熵。
3.4. experiment
FastBert选取了六个中文数据集以及六个中文数据集进行实验,结果如下:

?

4. DeeBert与FastBert对比
4.1. 相同点
-
两个模型的架构都是一致,只是取名不一样 -
两个模型训练都是两个阶段,并且第一阶段是一致的,都与Bert的微调一致 -
两个模型推理阶段一致,都使用分类器输出概率的信息熵作为早退指标,信息熵小于阈值S则早退,信息熵大于阈值S则继续执行
4.2. 不同点
不同点主要是训练的第二阶段,DeeBert采用有标签数据微调分类器,使用交叉熵作为loss。而FastBert采用自蒸馏技术,使用无标签数据,将老师分类器的概率分布蒸馏给学生分类器的概率分布,使用kL散度作为loss。
|