TinyBERT: Distilling BERT for Natural Language Understanding
https://arxiv.org/pdf/1909.10351.pdfarxiv.org
Backgroud and Issue
在NLP领域,预训练模型(BERT, XLNet, GPT-3)等已经取得了极大的成功。但是因为预训练模型极大的参数量和推理时间,因此对移动端部署带来了很大的困难。急需一种有效的方式,能够在保持预训练模型精度的同时,尽量地压缩其计算消耗和模型大小。
Method
本文采用知识蒸馏的方法来实现BERT的压缩。首先针对Transformer结构,提出了一种专门的蒸馏方法,并设计了模型专有的损失含糊;然后提出了一种两阶段的整流体系,分别在预训练阶段和下游任务训练阶段进行模型的蒸馏,此外,提出了一种数据增强的方式,来提升下游任务蒸馏的效果。
Transformer Distillation
文中所提出的Transformer Distillation是专门针对于Transformer网络提出的蒸馏方法。其主要解决两个问题:a、Transformer layer的匹配;b、损失函数的设计。
A、 Transformer layer的匹配。TinyBERT希望设计出的网络结构层数少于原BERT,但这为layer级别的蒸馏带来了问题:层数不匹配。例如BERT_base是12层,而所设计的TinyBERT则只有4层,本文提出从BERT的12层中挑选出4层来