前言
- 论文地址:https://arxiv.org/abs/2004.02984
- 代码地址:https://github.com/google-research/google-research/tree/master/mobilebert
Abstract
提出 MobileBert 来压缩和加速 Bert 模型。
1、Introduction
MobileBERT 采用的和 BERT-large 一样深的层数,在每一层中的 transformer 中加入了 bottleneck 机制使得每一层 transformer 变得更窄。那么 bottleneck structures 是个什么东西呢?看下面这个图:

其中 a 是bert,从图中可以看出,多了两个全连接层,就是图中的矩形,这个就是作者说的bottleneck structures。它的主要作用是调整输入输出维度。
2、Related Work
过。
3、MobileBert
3.1、Bottleneck and Inverted-Bottleneck
模型接口就是如上面图所示,它跟 Bert-large 一样深,但是参数小很多,以此来减小模型。另外加了上述的 bottleneck structures 调整输入输出的维度,也是为了减小参数。但是训练这种很深有很瘦的网络是一个挑战,然后作者提出先训练好教师网络,然后将其信息转移到 MobileBert 中。teacher model 是 Bear-large,但是增加了反向的 bottleneck structures。
3.2、Stacked Feed-Forward Networks
引入了 bottleneck structure 明显改变了模型结构,它可能会破坏
总的来说,作者想减小模型的参数,但是这样会让模型难以训练,然后就想用 teacher 网络指导训练,但又不好直接指导,然后进引入了 bottleneck structure 结构,引入这个结构后,又可能让原本的结构变差,然后提出了堆叠 linear 层次来解决该问题。
3.3、Operational Optimizations
- 将normalization操作转换为element-wise的线性变换。
- 把smooth GeLU的激活函数更换为ReLU。
3.4、Embedding Factorization
减小Embedding 的参数,做法是用多核的1维卷积操作来提特征。
3.5、Training Objectives
未完待续