当前位置:   article > 正文

SqueezeBERT: What can computer vision teach NLP about efficient neural networks?(2020-6-19)_squeeze bert

squeeze bert

模型介绍

人类每天要读写数千亿条信息。此外,由于大型数据集、大型计算系统和更好的神经网络模型的可用性,自然语言处理(NLP)技术在理解、校对和组织这些消息方面取得了重大进展。因此,在无数的应用程序中部署NLP以帮助网络用户、社交网络和企业是一个重要的机会。特别的,智能手机和其他移动设备是大规模部署NLP模型的关键平台。然而,如今的高精度NLP神经网络模型,如BERT和RoBERTa,计算成本极高,在Pixel 3智能手机上,基于BERT的文本片段分类需要1.7秒。

在这项工作中,观察到分组卷积等方法对计算机视觉网络产生了显著的加速,但其中许多技术尚未被NLP神经网络设计者采用。然后演示了如何用分组卷积替换自我注意层中的几个操作,并在一个名为SqueezeBERT的新网络架构中使用了该技术,该网络架构在Pixel 3上运行速度比基于bert的网络快4.3倍,同时在GLUE测试集上实现了具有竞争力的精度。

模型改进

在这里插入图片描述

Squeeze的主要的创新地方在于将前馈全连接网络替换为分组卷积网络。为什么这么做呢?通过实验发现BERT模型的所有组件中, softmax ⁡ ( Q K T d k ) V \operatorname{softmax}(\displaystyle \frac {QK^T} {\sqrt d_k})V softmax(d kQKT)V 在self-attention 计算中延迟占比 11.3%,而前馈全连接网络在 self-attention 计算中延迟占比高达 88.3%。然后就是通过前馈全连接网络和 1d 卷积网络的计算公式,发现当 k=1 时,1d 卷积网络就相当于全连接网络

在这里插入图片描述
在这里插入图片描述

其中, f f f 表示输入特征向量, w w w 表示权重,输入特征向量维度为 ( P , C i n ) (P,C_{in}) (P,Cin) P P P 为向量的长度, C i n C_{in} Cin 为向量的维数,输出向量为 ( P , C o u t ) (P,C_{out}) (P,Cout) K K K 为卷积核的大小。

将分组卷积融合到self-attention网络中,定义如下:

在这里插入图片描述
其中,输入特征向量维度为 ( P , C i n ) (P,C_{in}) (P,Cin),输出向量维度为 ( P , C o u t ) (P,C_{out}) (P,Cout) P P P 为向量的长度, C i n C_{in} Cin 为向量的维数,K 为卷积核大小,G 为卷积的分组数。

这相当于将输入向量在 P 的维度上分成 G 个大小不同的向量 ( P , C i n G ) (P,\frac {C_{in}} {G}) (P,GCin),通过 G进行分组,使每个卷积都有独立的权值,向量计算后的大小为 ( P , C o u t G ) (P,\frac {C_{out}} {G}) (P,GCout)。分组后的卷积网络,浮点计算和权重为原来的 1/G,不计算经常包含在卷积层中的通道方向偏差项所需的少量(且不变)操作。

模型结构

SqueezeBERT与基于BERT的非常相似,但是PFC层实现为分组卷积,并且对许多层进行了分组卷积。 基于BERT的编码器中的每个块都有一个具有3个PFC层的自注意模块,以及另外3个称为前馈网络层(FFN1,FFN2和FFN3)的PFC层。FFN层有以下维度:FFN1 有 C i n = C o u t = 768 C_{in}=C_{out}=768 Cin=Cout=768,FFN2 有 C i n = 768 , C o u t = 3072 C_{in}=768,C_{out}=3072 Cin=768,Cout=3072,FFN3有 C o u t = 3072 , C i n = 768 C_{out}=3072,C_{in}=768 Cout=3072,Cin=768。在自我注意模块的所有PFC层以及FFN2和FFN3层中,使用G = 4的分组卷积。为了允许跨不同组的通道进行混合,在较便宜的FFN1层中使用G = 1。 请注意,在基于BERT的基础上,FFN2和FFN3各自的运算量是FFN1的4倍。 但是,当在FFN2和FFN3中使用G = 4时,现在所有FFN层都具有相同数量的算术运算。

模型参考

论文地址:https://arxiv.org/abs/2006.11316

代码地址:https://github.com/huggingface/transformers/blob/main/src/transformers/models/squeezebert/modeling_squeezebert.py

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/356153?site=
推荐阅读
相关标签
  

闽ICP备14008679号