历史最全BERT压缩方法汇总分享_神经网络

    模型压缩减少了训练好的神经网络中冗余的部分。模型压缩对于像BERT这类复杂模型来说特别有用,因为BERT,特别是BERT-Large需要消耗大量GPU显存,且根本不适用于内存受限的智能手机。当然,提高内存和推理速度也可以大规模节省成本。

     

    在这篇文章中,整理列一些压缩BERT的一些论文,分享给大家。


Bert压缩常用方法

    裁剪-训练后移除网络中不必要的部分。这包括weight裁剪、attention head裁剪、layer裁剪等。一些方法还在训练过程中通过正则化,以增加可靠性(layer dropout)。

     

    权值矩阵分解-通过将参数矩阵分解成两个较小矩阵的乘积来逼近原始参数矩阵。这给矩阵施加了低秩约束。权值因子分解既可以应用于输入embedding(这节省了大量磁盘内存),也可以应用于前馈/self-attention层的参数(为了提高速度)。

     

    知识抽取——又名“Student Teacher”。根据预训练/下游数据从头开始训练一个小得多的Transformer。正常情况下,这可能会失败,但是由于未知的原因,利用全尺寸模型中的soft labels可以改进优化。一些方法还使用其他模型架构(LSTM)抽取BERT,这些模型具有更快的推理速度。其他方法则采用更深的teacher,不仅着眼于输出,还着眼于权值矩阵和隐藏的激活。

     

    权值共享-模型中的一些权值与模型中的其他参数共享相同的值。例如,ALBERT对BERT中的每一层self-attention使用相同的权值矩阵。

     

    量化-截断浮点数,使其仅使用几个比特(这会导致舍入误差)。量化值也可以在训练期间或之后学习。

     

    训练前与训练后—一些方法仅通过某些下游任务来压缩BERT。其他方法则以任务无关的方式压缩BERT。


相关论文

(按压缩方法分类)

历史最全BERT压缩方法汇总分享_权值_02

     

其他相关资源

    Sparse Transformer: Concentrated Attention Through Explicit Selection:https://openreview.net/forum?id=Hye87grYDH


    Lightweight and Efficient Neural Natural Language Processing with Quaternion Networks:http://arxiv.org/abs/1906.04393


    Adaptively Sparse Transformers:https://www.semanticscholar.org/paper/f6390beca54411b06f3bde424fb983a451789733


    Compressing BERT for Faster Prediction:https://blog.rasa.com/compressing-bert-for-faster-prediction-2/amp/


历史最全BERT压缩方法汇总分享_权值_03