DistillBERT

论文标题:DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter

提出机构:HuggingFace


部分内容引用于https://www.cnblogs.com/jiangxinyang/p/11715678.html

优化内容

DistillBert是在bert的基础上用知识蒸馏技术训练出来的小型化bert。整体上来说这篇论文还是非常简单的,只是引入了知识蒸馏技术来训练一个小的bert。具体做法如下:

1)给定原始的bert-base作为teacher网络。

2)在bert-base的基础上将网络层数减半(也就是从原来的12层减少到6层)。

3)利用teacher的软标签和teacher的隐层参数来训练student网络。

训练时的损失函数定义为三种损失函数的线性和,三种损失函数分别为:

1)𝐿𝑐𝑒。这是teacher网络softmax层输出的概率分布和student网络softmax层输出的概率分布的交叉熵(注:MLM任务的输出)。

2)𝐿𝑚𝑙𝑚。这是student网络softmax层输出的概率分布和真实的one-hot标签的交叉熵。也就是student模型做预训练的mlm损失。

3)𝐿𝑐𝑜𝑠。这是student网络隐层输出和teacher网络隐层输出的余弦相似度值,在上面我们说student的网络层数只有6层,teacher网络的层数有12层,因此个人认为这里在计算该损失的时候是用student的第1层对应teacher的第2层,student的第2层对应teacher的第4层,以此类推。

同时,作者对student的初始化也做了工作(后面的实验证明初始化工作也对精度有很大提升),作者用teacher的参数来初始化student的网络参数,做法和上面类似,用teacher的第2层初始化student的第1层,teacher的第4层初始化student的第2层。另外作者在这里移除了句子向量和pooler层,同时也移除了预训练过程中的NSP任务。

Distillation细节

模型和BERT架构完全一样,预训练过程也一致。batch_size设置的很大,使用梯度累计使batch达到4K,同时使用动态mask并移除nsp。
语料使用和BERT相同:English Wikipedia and Toronto Book Corpus。
在8张16G显存的V100 GPU上训练了90个小时。作为对比,RoBERTa在1024张32G显存的V100 GPU上训练了24个小时。

消融实验

如下表所示,mlm损失对精度影响不大,但其他两个蒸馏的loss和student模型的初始化工作对精度有很大影响。


Ablation study
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 从应用落地的角度来说,bert虽然效果好,但有一个短板就是预训练模型太大,预测时间在平均在300ms以上(一条数据...
    章鱼小丸子vvv阅读 4,728评论 0 0
  • 所谓“知识精炼”我的理解就是将一个训练好的复杂模型的“知识”迁移到一个结构更为简单的网络中,或者通过简单的网络去学...
    信步闲庭v阅读 6,220评论 0 2
  •   模型来自论文 Google 最近公布的论文 《ALBERT: A LITE BERT FOR SELF-SUP...
    双听阅读 7,102评论 0 0
  • 每晚十点多离开实验室, 只能在地铁里看着别人的拥抱, 我也是别人的丈夫, 却从没有时间在晚饭后愉快的散步。 忙碌一...
    山洪流野阅读 1,675评论 0 2
  • 破天荒,来给孩子开家长会,从上班就一直是老婆来,今天也体验下当爸爸的感觉,来早了,好多人在等着呢,希望一切顺利,深...
    应无所住_f598阅读 1,819评论 4 4

友情链接更多精彩内容