本文采取了 Layer-dropping 的策略,在 pre-trained model 上进行微调,从而实现模型压缩。本文提出的 model 与原始的 BERT、RoBERTa 和 XLNet 相比,可以达到 40% 的减枝效率,同时维持 98% 的准确度。

Layer-dropping 策略

删去 Top-Layer

之前的演讲发现,Top-Layer 更加针对具体的问题,因此文章推测,在进行微调之后,更高的 layers 可能没有那么重要。因此文章尝试删除 top K layers 以减枝 model。

交替删去 Layers

文章认为相邻的 layers 所提取的信息可能是相近的,所以做一个交替删除的操作可能不会影响过多准确度。

每一次的交替删除,文章会尝试两种不同的策略,一个是删除奇数 layers,另一个是删除偶数 layers。在删除之后 layers 之间可能出现的 input 和 output 之间维度不搭配,可以通过微调来恢复。

贡献程度删去 Layers

文章提到,首先计算每层的 input 和 output 之间的余弦相似度,如果相似度超过一定阈值,那么说明 output 相比 input 变化不大,应该被删去。

对称删去 Layers

文章想测试是否 lower 和 higher 的 layers 会比 middle layers 更加重要,因此尝试在中间删去部分 layers。

删去 Bottom-Layer

之前的研究发现,lower layers 更多的是和 words 以及 word pieces 交互,这在 NLP 其实是很重要的,因此不应该删去。文章做这个实验主要是为了保证整体实验的完整性。

实验结果

研究结果发现删去 Top-Layer 总是能够获得较好的效果,而 Bottom-Layer 删去对于准确度损害更大。另外三种方法在不同的 model 上的实验结果显示出了差异性,这与不同 model 的特性有关。