ConvBERT:使用基于区间的动态卷积来提升BERT

简介: ConvBERT:使用基于区间的动态卷积来提升BERT

论文标题:ConvBERT: Improving BERT with Span-based Dynamic Convolution


论文链接:https://arxiv.org/abs/2008.02496


论文来源:NeurIPS 2020


一、概述


  1. 简介


本文提出了一种新的预训练语言模型ConvBERT,这个模型是在BERT的基础上进行改进,最终极大地提升了训练的速度,节约了训练成本,同时提升了模型效果,具体的,ConvBERT用 1/10 的训练的时间和 1/6 的参数,就能获得跟原来的模型获得一样的精度。


该模型引入了以下几个新的机制:


①mixed attention;


②span-based dynamic convolution;


③bottleneck structure for self-attention;


④grouped linear operator。


  1. BERT中的冗余


提出该结构的具体出发点是该团队发现BERT结构中存在大量的冗余,具体包括以下两点:


①虽然self-attention是一种非局部(non-local)的operator,但是通过观察attention map可以发现很大比例的attention head主要学习的是文本局部的依赖关系(local dependency)。


这一点可以通过观察BERT的平均attention map来确认:


($6MORA~PM{9V}[WKUQDWS6.png

                       average attention map


Self-attention使用所有的token来生成attention weight来捕捉全局的依赖关系,但通过观察其平均attention map可以看到BERT更多的学习到了局部的依赖关系。这个事实是很容易理解的,对于语言来说,一句话中的一个词更多地依赖于其附近的词,这也是语言的内在属性。


②在微调时移除一些attention head并不影响模型的性能。


以上两点表明BERT的架构中存在大量的冗余。于是该团队考虑使用一种local operator来替换一些attention head来减少BERT中的冗余。在处理局部依赖关系时我们很自然地会想到卷积操作,于是在结合前人有关语言模型的卷积操作的研究的基础上,该团队提出了基于区间的动态卷积(span-based dynamic convolution)。


  1. 相关工作


一些其他的研究会使用一些方法来压缩预训练模型,比如:


①weight pruning;


②weight sharing;


③knowledge distillation;


④quantization。


另外一些研究会扩展预训练模型,比如:


①incorporate knowledge;


②multiple languages;


③multiple modalities。


但是通过修改模型架构来提升语言模型性能的研究相对较少。


二、不同方法的对比


NLP中的卷积的方式也有很多种,比起使用传统的被所有token分享参数的卷积核,动态卷积(dynamic convolution)对于捕捉局部依赖关系显然更有灵活性。


TS1LX8`K]59MUY1~S_`2003.png

                                                    对比


上图展示了self-attention、dynamic convolution和span-based dynamic convolution共3种不同的方法。


dynamic convolution使用一个kernel generator来为每个词的embedding生成自己的卷积核,但是它的局限性在于会为不同上下文的同一个词生成相同的卷积核,难以学习一词多义的情况(比如下图b中多个“can”)。


而span-based dynamic convolution的kernel generator会输入当前词以及该词周边一个区间内的词来生成卷积核,对解决上述一词多义的问题很有帮助。


另外,由上图可以看出,随着序列长度的增加,self-attention的复杂度呈现二次增长。


三、NLP中的卷积


首先需要说明在NLP任务中,卷积的channel指的是embedding的每一维。


  1. 传统的卷积

PC9OWEIW}D{8C6OCXCE8GII.png

                                   convolution


]T{4VP$CPD{85)0PI8{DX@N.png

  1. Depthwise convolution


Depthwise convolution缩减了传统卷积方法的参数量:


$}~OKF8S2MQMNX6)C6H~JNB.png

                                   depthwise convolution


K(6YIKW4BI4PX_NTDAV8V)4.png

其输出的计算方式为:


M4MUH2Y1XM6`KQ9($SIN7TR.png

通过使用depthwise convolution,参数量降为1H}SR4NQ7](FIMK}8S9]X7T.png


  1. Lightweight convolution


Lightweight convolution进一步缩减了卷积核的参数量:


@V_S4$U[Q}[4B)_]JML{}0C.png

                                    lightweight convolution



CPB1(]T1F3`LQ~DZPF}FFFV.png

其输出的计算公式为:


0Q45Z~9%GY[LVTT)`$~KUNI.png

Softmax-normalization对卷积核channel一维进行softmax处理,相当于归一化每个词的每一维的重要性。实验表明,如果不进行softmax就不会收敛。


  1. Dynamic convolution


Dynamic convolution会动态地生成卷积核:


$(BKF$IL66PLNZOXB~P`5_A.png

                                     dynamic convolution


3NNNUFD(ANN5NVLI9FB46ZH.png


Dynamic convolution计算输出的公式为:


LXB`2SBQML{29IG_K`]7NY0.png


上图中,右侧部分为帮助理解,实际计算中并未进行view步骤。


  1. Span-based dynamic convolution


}B)DX%I%I~A]]]T)C0%WLP8.png

      span-based dynamic convolution


QIM11`E1WJI_L$ATTRC9I27.png

上述过程的动态生成卷积核公式为:


T5~S_FN}6I15NVG$U}KA1I7.png


Span-based dynamic convolution的公式为:


7@)$1L}J{JJLKZPGAJM4%2N.png


然后需要经过一个Linear层进行处理。


我们总是保持depthwise convolution和span-based dynamic convolution卷积核的size一致。


四、ConvBERT的架构


TI{H3ZN1XT[YGXFB)LV0ZCF.png

                         mixed attention


上图为mixed attention的架构。


  1. Mixed attention


Mixed attention集成了self-attention和span-based dynamic convolution,其中self-attention负责捕获全局信息,span-based dynamic convolution负责捕获局部信息。self-attention和span-based dynamic convolution使用相同的query和value,但是使用不同的key。Mixed attention的计算公式为:


JJ[6H($J_@(U%}$([43F6FP.png

  1. Bottleneck design for self-attention


Self-attention中一些head是冗余的,我们引入span-based dynamic convolution后需要减少一部分head,这里用到的操作被称为bottleneck structure。Bottleneck

structure是指将输入的embedding被映射到更低的维度2XT3BD84X`6G~VGXA9Z8ZGB.png。同时也按照比例WHWA(CO}%_[%6S`PU@Y4$FK.png来减少head的数量。


  1. Grouped feed-forward module


Transformer中很大一部分参数量来自于前馈网络模块,在能减少参数量和运算成本又不损伤模型性能的前提下,该团队提出了一种grouped linear (GL)操作来改进前馈网络部分。其思路是mixed attention输出的embedding是IAY6VT5@O6S60A9}7T~F@HG.png维的,则在embedding维度上将[HPSUN[CB1}D}61OKVN0`U8.png个维度分成D]82@`8]WRV0Z91123VA4YD.png组,然后将每组输入到各自的前馈网络中然后再将前馈网络的输出concatenate起来。


该过程的公式为:

1{ZPS`0VYVT`_46}M39B%JU.png

这种方式比前馈网络更有效并且模型性能下降可以忽略不计。


五、对比


下图展示了BERT、ELECTRA、ConvBERT等模型在GLUE上的效果对比:


`KQ8TKSQIICHEUUDZBZZN87.png

                                     GLUE对比


可以看到ConvBERT相对于BERT和ELECTRA取得了更好的效果且需要更少的算力。


六、其他要点


  1. 对比平均attention map


对比BERT和ConvBERT的平均attention map我们可以看到,ConvBERT的相对于BERT,其self-attention模块更多地用来提取全局信息,这也就减少了冗余:


ZJI93EW0GZRJ$}M9TJP12EK.png

                      对比平均attention map


  1. Kernel size的选择


R]F8`FOE@`0RD[3YS)FN195.png

                                 kernel size


卷积核的receptive filed还没有覆盖整个输入序列时,kernel size越大效果越好,而如果kernel size达到覆盖了整个输入序列,效果就会下降。


参考资料


ref:ConvBERT: Improving BERT with Span-based Dynamic Convolution https://arxiv.org/abs/2008.02496

ref:PAY LESS ATTENTION WITH LIGHTWEIGHT AND DYNAMIC CONVOLUTIONS https://arxiv.org/abs/1901.10430

ref:ICLR 2019 | 采用轻量化及动态卷积替代注意力机制 https://www.jianshu.com/p/78356d6fdd14

相关文章
|
9月前
|
机器学习/深度学习 传感器 算法
【GRU分类】基于注意力机制门控循环单元attention-GRU实现数据多维输入单输出分类附matlab代码
【GRU分类】基于注意力机制门控循环单元attention-GRU实现数据多维输入单输出分类附matlab代码
|
算法 计算机视觉 网络架构
YOLOv7 | 模型结构与正负样本分配解析
YOLOv7 | 模型结构与正负样本分配解析
1586 0
YOLOv7 | 模型结构与正负样本分配解析
|
21天前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进-论文笔记】 AKConv(可改变核卷积):任意数量的参数和任意采样形状的即插即用的卷积
AKConv是一种可改变核卷积,旨在解决传统卷积的局限,包括固定大小的卷积窗口和卷积核尺寸。AKConv提供灵活的卷积核参数和采样形状,适应不同尺度特征。其创新点包括:1)支持任意大小和形状的卷积核;2)使用新算法确定初始采样位置;3)应用动态偏移调整采样位置;4)优化模型参数和计算效率。AKConv已应用于YOLOv8,提高网络性能。相关代码可在<https://github.com/CV-ZhangXin/AKConv>找到。
|
1月前
|
机器学习/深度学习 人工智能 移动开发
一文搞懂 FFN / RNN / CNN 的参数量计算公式 !!
一文搞懂 FFN / RNN / CNN 的参数量计算公式 !!
38 3
|
1月前
|
人工智能 物联网
PiSSA :将模型原始权重进行奇异值分解的一种新的微调方法
我们开始看4月的新论文了,这是来自北京大学人工智能研究所、北京大学智能科学与技术学院的研究人员发布的Principal Singular Values and Singular Vectors Adaptation(PiSSA)方法。
24 3
|
1月前
|
机器学习/深度学习 编解码 自然语言处理
LRP-QViT完美而来 | 输出层分配相关性+剪切通道让Swin Transformer量化后居然涨1.5个点
LRP-QViT完美而来 | 输出层分配相关性+剪切通道让Swin Transformer量化后居然涨1.5个点
194 0
|
1月前
|
机器学习/深度学习 并行计算 网络架构
YOLOv5改进 | 卷积篇 | 手把手教你添加动态蛇形卷积(管道结构检测适用于分割Seg)
YOLOv5改进 | 卷积篇 | 手把手教你添加动态蛇形卷积(管道结构检测适用于分割Seg)
151 0
|
1月前
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 2023 | FocalModulation替换SPPF(精度更高的空间金字塔池化)
YOLOv8改进 | 2023 | FocalModulation替换SPPF(精度更高的空间金字塔池化)
160 2
|
1月前
|
机器学习/深度学习 数据可视化 计算机视觉
YOLOv5改进 | 2023注意力篇 | MSDA多尺度空洞注意力(附多位置添加教程)
YOLOv5改进 | 2023注意力篇 | MSDA多尺度空洞注意力(附多位置添加教程)
118 0
|
10月前
|
机器学习/深度学习 数据采集
区间预测 | MATLAB实现基于QRCNN-BiGRU-Multihead-Attention多头注意力卷积双向门控循环单元多变量时间序列区间预测
区间预测 | MATLAB实现基于QRCNN-BiGRU-Multihead-Attention多头注意力卷积双向门控循环单元多变量时间序列区间预测