赞
踩
人类每天要读写数千亿条信息。此外,由于大型数据集、大型计算系统和更好的神经网络模型的可用性,自然语言处理(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层都具有相同数量的算术运算。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。