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

模型介绍

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负韶华ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值