模型介绍

NLP预训练模型随着近几年的发展,参数量越来越大,受限于算力,在实际落地上线带来了困难,针对最近最为流行的BERT预训练模型,提出了DistilBERT,在保留97%的性能的前提下,模型大小下降40%,inference运算速度快了60%。

为了利用大模型在预训练过程中学习到的归纳偏差,引入了结合语言建模、蒸馏和余弦距离损失的三重损失。

模型改进

Knowledge Distilling(知识蒸馏)

一种压缩模型的技术。用一个小模型(Student)去学习大模型(Teacher)的输出。

在监督学习中,一个分类模型通常是最大化正确标签的概率来进行训练的。因此,一个标准的训练目标包括最小化模型的预测分布和训练标签的one-hot经验分布之间的交叉熵。一个模型如果表现的好,那么在正确的类别上就会有很高的概率,在其他的类别上就会有近似于0的概率。但是其中一些近似于0的类别要比其他的大,而且也会反映出模型的概括能力和在测试集上的表现。

在训练学生(Student)来模拟老师(Teacher)的输出分布时,使用的是soft target(hard label指one-hot 编码这种输出,每个输出只属于一个类;soft label输出是每个类的概率)的交叉熵(cross entropy)损失函数 L c e = ∑ i t i ∗ l o g ( s i ) L_{ce}=\sum_it_i*log(s_i) Lce=itilog(si)t i t_i ti为Teacher的logits, s i s_i si为Student的logits。并且softmax函数被替换成softmax-temperature函数 p i = e x p ( z i / T ) ∑ j e x p ( z j / T ) p_i=\frac {exp (z_i / T)} {\sum{_j exp (z_j/T)}} pi=jexp(zj/T)exp(zi/T)。T控制着输出分布的平滑度,当T变大,类别之间的差距变小;当T变小,类别直接的差距变大。 z i z_i zi为模型在类别i的score。


在训练过程中Student和Teacher使用相同的T(T>1),在推断的时候,设置T为1,恢复标准的softmax。

在分类任务上使用了损失函数 L c e L_{ce} Lce和监督训练损失函数(supervised trainning loss)的线性组合。本文中的监督学习任务是masked language modeling loss L m l m L_{mlm} Lmlm。然后在这个基础上加入了cosine embedding loss L c o s L_{cos} Lcos,也就是student和teacher隐藏状态向量的cos计算。

参数初始化

在进行模型参数初始化的时候,为了利用Student和Teacher的共同维度,Student模型使用Teacher模型的参数进行初始化。

蒸馏(distillation)

DistilBERT利用梯度累计在一个非常大的批次(一个batch达到4000个example)上进行蒸馏(distil),使用动态编码,以及去掉了NSP(next sentence prediction)任务。

数据和计算功率(compute power)

和BERT使用了相同的语料,English Wikipedia and Toronto Book Corpus。DistilBERT在8块16GB V100的GPU上训练了大约90个小时。

模型结构

DistilBERT Student和BERT有相同的结构。但是token-type embeddings层和pooler层被移除并且层的数量被减半。

模型参考

论文地址:https://arxiv.org/abs/1910.01108

代码地址:https://github.com/huggingface/transformers

DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter(2019-10-2)相关推荐

  1. 论文笔记--DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter

    论文笔记--DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter 1. 文章简介 2. 文章概括 ...

  2. 《DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter》(NeurIPS-2019)论文阅读

    前言 论文地址:https://arxiv.org/abs/1910.01108 代码地址:https://github.com/huggingface/transformers Abstract 就 ...

  3. DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter学习

    1. 总结 论文地址 论文写得很简单,但是引用量好高啊

  4. 《DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter》论文笔记

    论文来源:NIPS-2019(hugging face发布) 论文链接:https://arxiv.org/abs/1910.01108 ⭐背景介绍:  近年来NLP领域,在大型预训练模型上进行迁移学 ...

  5. DistilBERT, a distilled version of BERT

    1 简介 本文根据2020年<DistilBERT, a distilled version of BERT: smaller,faster, cheaper and lighter>翻译 ...

  6. Smaller, faster, cheaper, lighter: Introducing DistilBERT, a distilled version of BERT 翻译

    paper: https://arxiv.org/pdf/1910.01108v2.pdf code: https://github.com/huggingface/transformers Time ...

  7. Faster RCNN好文(转)

    经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在2016年提出了新的Faster RCNN,在结构上,Faster RCNN已经将特征抽取(feature extracti ...

  8. 系统学习NLP(二十六)--BERT详解

    转自:https://zhuanlan.zhihu.com/p/48612853 前言 BERT(Bidirectional Encoder Representations from Transfor ...

  9. Pytorch——BERT 预训练模型及文本分类(情感分类)

    BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...

最新文章

  1. oracle函数胡书写,Oracle中序列表sequence的使用.docx
  2. 解决报错:java.lang.NoSuchMethodException: com.tangyuan.entity.RicherProduct.<init>()
  3. Python中用字典的映射来代替switch语句
  4. Linux技术学习要点,您掌握了吗---初学者必看
  5. react 全选反选_js中怎么将createElement出来的复选框实现全选,全不选,反选效果?...
  6. 如何评估数据适不适合放入Redis中?
  7. java代码块执行顺序_JAVA代码块执行顺序分析测试
  8. Android的logger机制分析
  9. JavaSE--Java 的基本程序设计结构
  10. Android-Universal-Image-Loader-master(图片浏览+缓存)
  11. jfreechart火速应用
  12. Oracle 11g RAC 自动应用PSU补丁简明版
  13. 期刊论文格式是什么样的,如何排版?
  14. zendstudio html插件,ZendStudio安装Aptana插件(html,css,js代码提示功能)_html/css_WEB-ITnose...
  15. zabbix安装教程
  16. CPA七--应交增值税(转载)
  17. Cisco网站模块8-10网络间通信考试试题及答案
  18. JAVA 计算小数位数
  19. 问题 I: 锤子剪刀布 (20)
  20. 复制粘贴技巧,全选快捷键ctrl加什么?

热门文章

  1. 鲨鱼坦克亿万富翁马克·库班(Mark Cuban)正式支持 Polygon
  2. 天秤女天蝎男的缘与份
  3. 斧子展示_用斧头进行自动辅助功能检查
  4. 蓝桥杯历届试题 剪格子
  5. gee错误:Image.multiply, argument ‘image2‘: Invalid type. Expected type: Image<unknown bands>.
  6. RH236客户端配置--通过CIFS挂载
  7. 微软账号更改登录首邮箱后原邮箱还会收到信息解决(更改不彻底)
  8. html读取oss_oss获取图片链接的搜索结果-阿里云开发者社区
  9. 基于阿里云服务器环境搭建到项目上线系列文章之三——安装git
  10. 李群(Lie Group)