使用MindStudio进行squeezebert模型训练

详细情况请点击:使用MindStudio进行squeezebert模型训练 - 知乎

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

总体来说,squeezebert 有意义的创新主要有:

(1).用卷积替换位置上的全连接层(PFC)

为了解决这个问题,用分组卷积代替 PFC 层,这已经证明可以显着提高计算机视觉网络的速度。 作为朝着这个方向迈出的第一步,现在证明在整个 BERT 编码器中使用的全连接层是非分组一维卷积的特殊情况。 在下文中,f 表示输入特征向量,w 表示权重。 给定具有P 个位置和Cin 通道的尺寸(P,Cin) 的输入特征向量以生成(P,Cout) 特征的输出,位置方式全连接层执行的操作可以定义如下:

考虑核大小为 K 的一维卷积的定义具有相同的输入和输出维数:

观察到位置全连通操作等价于核大小为 k = 1 的卷积。因此,可以使用卷积实现 GPT、BERT

和类似的自注意网络的 PFC 层,而不改变网络的数值性质或行为。

(2).合并分组卷积到自我关注

已经说明了如何使用卷积在自我注意网络中实现昂贵的 PFC 层,可以将有效的分组卷积合并到自我注意网络中。 分组卷积定义如下。 给定具有 P 个位置和Cin 通道的尺寸(P, Cin) 的输入特征向量,并输出具有(P,Cout) 尺寸的向量,则可以如下定义内核大小为K 和 G 的 1d 卷积:

这相当于把输入向量沿着 P 维分成 G 个不同大小的向量(P,CinG) ,用独立的权重运行 G

个单独的卷积,每个计算向量的大小(P,CoutG) 。但是,分组卷积只需要 1G 数量的浮点运算

(FLOP)和 1G 权重,就比普通卷积要多,这还不包括通道方向偏差项所需的少量(且不变) 的运算量。 通常包含在卷积层中(注意,G = 1 的分组卷积与普通卷积是相同的)。

你可能感兴趣的:(人工智能,深度学习)