背景

NLP预训练模型随着近几年的发展,参数量越来越大,受限于算力,在实际落地上线带来了困难,针对最近最为流行的BERT预训练模型,提出了DistilBert,在保留97%的性能的前提下,模型大小下降40%,inference运算速度快了60%,具体论文参考《DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter》

Knowledge Distilling(知识蒸馏)

首先我们介绍下知识蒸馏这一概念。即用一个小的模型(student)去学习一个大模型或一个ensemble模型(teacher)的输出。最早提出于Hinton大佬的论文《Distilling the Knowledge in a Neural Network》
在监督学习领域,对于一个分类问题,定义soft label为模型的输出(即不同label的概率), hard label为最终正确的label(也就是ground truth),通常是通过最大化正确label的概率来进行学习的,通常采用 cross-entropy作为损失函数,即让正确label的概率尽可能预测为1,其余label的概率趋近于0,但是这些不正确趋近于0的label也是有大有小的(比把图片数字2识别成3的概率还是要比识别成9大,尽管他们都趋近于0),这被称为"暗知识(Dark Knowledge)", 这也反应了模型的泛化能力。但因为过于趋紧0不利于student模型学习,为了让student也容易学习tearcher的输出,引入了带温度T的softmax概率为

当温度T为1的时候,即为标准的softmax。训练的时候T>1, 方便学到类间信息;预测的时候T=1,恢复到标准的softmax进行计算。T越大,输出的概率约平滑。
具体模型的训练方式如图

Loss Fn为cross entropy,最终的损失函数为图中两个loss的线性组合。

DistilBERT: a distilled version of BERT

Student architecture

和BERT类似,只是layer的数量减半

Student initialization

因为Student模型和Teacher模型每层的layer一样,因此每两层保留一层,利用相关的参数

Distillation

采用了RoBERTa的优化策略,动态mask,增大batch size,取消NSP任务的损失函数,

Training Loss

The final training objective is a linear combination of the distillation loss LceL_{ce}Lce with the supervised training loss, in our case the masked language modeling loss LmlmL_{mlm}Lmlm We found it beneficial to add a cosine embedding loss (LcosL_{cos}Lcos) which will tend to align the directions of the student and teacher hidden states vectors.

最终的loss由三部分构成

  1. 蒸馏损失,即Lce=∑iti∗log(si)L_{ce}=\sum_it_i*log(s_i)Lce=itilog(si), 其中sis_isi是student输出的概率,tit_iti是teacher输出的概率,當BERT预测的tit_iti越高,而DistilBERT预测(sis_isi)越低,得到的Loss就会越高
  2. Mask language model loss,参考BERT,这部分也就是为hard loss
  3. Cosine Embedding Loss,利于让student学习和teacher一样的hidden state vector

总结

DistilBERT利用知识蒸馏的技术,达到不过分降低性能的情况下,减少模型大小和inference速度

DistilBert解读相关推荐

  1. 深度学习:蒸馏Distill

    Distilling the knowledge in a neural network Hinton 在论文中提出方法很简单,就是让学生模型的预测分布,来拟合老师模型(可以是集成模型)的预测分布,其 ...

  2. Bert RoBerta DistilBert ALBert 解读

    目录 1 Transformer结构 1.1 self attention的理解 1.2 Multi head理解 1.3 transformer基本单元构成 2 Bert 2.1 bert的输入三部 ...

  3. Simple Transformer:用BERT、RoBERTa、XLNet、XLM和DistilBERT进行多类文本分类

    作者 | Thilina Rajapakse 译者 | Raku 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]本文将介绍一个简单易操作的Transformers库- ...

  4. 48小时单GPU训练DistilBERT!这个检索模型轻松达到SOTA

    ©PaperWeekly 原创 · 作者 | Maple小七 单位 | 北京邮电大学 研究方向 | 自然语言处理 论文标题:  Efficiently Teaching an Effective De ...

  5. Python Re 模块超全解读!详细

    内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...

  6. Bert系列(二)——源码解读之模型主体

    本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...

  7. Bert系列(三)——源码解读之Pre-train

    https://www.jianshu.com/p/22e462f01d8c pre-train是迁移学习的基础,虽然Google已经发布了各种预训练好的模型,而且因为资源消耗巨大,自己再预训练也不现 ...

  8. NLP突破性成果 BERT 模型详细解读 bert参数微调

    https://zhuanlan.zhihu.com/p/46997268 NLP突破性成果 BERT 模型详细解读 章鱼小丸子 不懂算法的产品经理不是好的程序员 ​关注她 82 人赞了该文章 Goo ...

  9. 解读模拟摇杆原理及实验

    解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...

  10. 自监督学习(Self-Supervised Learning)多篇论文解读(下)

    自监督学习(Self-Supervised Learning)多篇论文解读(下) 之前的研究思路主要是设计各种各样的pretext任务,比如patch相对位置预测.旋转预测.灰度图片上色.视频帧排序等 ...

最新文章

  1. CGAN生成cifar10, cifar100, mnist, fashion_mnist,STL10,Anime图片(pytorch)
  2. 每日程序C语言32-取一个整数从右端开始的4-7位
  3. JavaScript pop()函数弹出数组最后数据
  4. 让 .Net 更方便的导入导出Excel
  5. SQL日期与时间函数
  6. 一点创业想法:读书类垂直博客
  7. 串口调试助手使用说明
  8. 计算机用户密码在哪里设置,电脑开机密码在哪里设置?怎么设置?
  9. vue3.0 + xlsx 实现纯前端生成excel表格
  10. 国产三维CAD华天软件STNOVATION 几何造型内核CRUX IV 解析
  11. Qt解决资源文件中添加图片,对应控件不显示图片的问题
  12. C++ vector详细用法
  13. 商务蓝牙降噪耳机什么牌子好?商务蓝牙降噪耳机推荐
  14. Java8 Zip 压缩与解压缩
  15. 计算机显卡显示图片原理,认识显卡!浅析显卡及显卡工作原理
  16. Android root检测方法总结
  17. 能够在乱世中_东夏国,为何在乱世中还可以立国?是有什么原因呢?
  18. star ccm 报java错误_在 Linux VM 上运行 STAR-CCM+ 与 HPC Pack - Azure Virtual Machines | Microsoft Docs...
  19. 朝花夕拾---dubbo源码分析
  20. 记录一次服务器CPU负载高,利用率正常的处理方法

热门文章

  1. 用html写游戏,Html5写一个简单的俄罗斯方块小游戏
  2. luogu P1510 精卫填海
  3. 简单人物画像_超级简单人物素描画图片精选
  4. 类似于talkingdata的灵动功能的实现
  5. git push 遇到的rejected问题
  6. linux 查看vcf文件,vcf文件扩展名,vcf文件怎么打开?
  7. 传统蓝牙HCI流控(HCI flow control)
  8. 实拍:丽江特色美食腊排骨火锅
  9. 模型压缩——重参数化
  10. 【Paper笔记】Complement Objective Training