BERT知识蒸馏TinyBERT
创始人
2024-01-20 12:59:18
0

1. 概述

诸如BERT等预训练模型的提出显著的提升了自然语言处理任务的效果,但是随着模型的越来越复杂,同样带来了很多的问题,如参数过多,模型过大,推理事件过长,计算资源需求大等。近年来,通过模型压缩的方式来减小模型的大小也是一个重要的研究方向,其中,知识蒸馏也是常用的一种模型压缩方法。TinyBERT[1]是一种针对transformer-based模型的知识蒸馏方法,以BERT为Teacher模型蒸馏得到一个较小的模型TinyBERT。四层结构的TinyBERT在GLUE benchmark上可以达到BERT的96.8%及以上的性能表现,同时模型缩小7.5倍,推理速度提升9.4倍。六层结构的TinyBERT可以达到和BERT同样的性能表现。

2. 算法原理

为了能够将原始的BERT模型蒸馏到TinyBERT,因此,在[1]中提出了一种新的针对Transformer网络特殊设计的蒸馏方法,同时,因为BERT模型的训练分成了两个部分,分别为预训练和针对特定任务的Fine-tuning,因此在TinyBERT模型的蒸馏训练过程中也设计了两阶段的学习框架,在预训练和Fine-tuning阶段都进行蒸馏,以确保TinyBERT模型能够从BERT模型中学习到一般的语义知识和特定任务知识。

2.1. 知识蒸馏

知识蒸馏(knowledge distillation)[2]是模型压缩的一种常用的方法,对于一个完整的知识蒸馏过程,有两个模型,分别为Teacher模型和Student模型,通过学习将已经训练好的Teacher模型中的知识迁移到小的Student模型中。其具体过程如下图所示:

在这里插入图片描述
对于Student模型,其目标函数有两个,分别为蒸馏的loss(distillation loss)和自身的loss(student loss),Student模型最终的损失函数为:

L=αLsoft+βLhardL=\alpha L_{soft}+\beta L_{hard}L=αLsoft​+βLhard​

其中,LsoftL_{soft}Lsoft​表示的是蒸馏的loss,LhardL_{hard}Lhard​表示的是自身的loss。

2.2. Transformer Distillation

BERT模型是由多个Transformer模块(Self-Attention+FFN)组成,单个Self-Attention+FFN模块如下图所示:

在这里插入图片描述

假设BERT模型中有NNN层的Transformer Layer,在蒸馏的过程中,BERT模型作为Teacher模型,而需要蒸馏的模型TinyBERT模型作为Student模型,其Transformer Layer的层数假设为MMM,则有M

Lmodel=∑x∈χ∑m=0M+1λmLlayer(fmS(x),fg(m)T(x))L_{model}=\sum _{x\in \chi }\sum_{m=0}^{M+1}\lambda _mL_{layer}\left ( f_m^S\left ( x \right ),f_{g\left ( m \right )}^T\left ( x \right ) \right )Lmodel​=x∈χ∑​m=0∑M+1​λm​Llayer​(fmS​(x),fg(m)T​(x))

其中,LlayerL_{layer}Llayer​是给定的模型层的损失函数,fmf_mfm​表示的是由第mmm层得到的结果,λm\lambda_{m}λm​表示第mmm层蒸馏的重要程度。在TinyBERT的蒸馏过程中,又可以分为以下三个部分:

  • transformer-layer distillation
  • embedding-layer distillation
  • prediction-layer distillation。

2.2.1. Transformer-layer Distillation

Transformer-layer的蒸馏由Attention Based蒸馏和Hidden States Based蒸馏两部分组成,具体如下图所示:

在这里插入图片描述

其中,在BERT中多头注意力层能够捕获到丰富的语义信息,因此,在蒸馏到TinyBERT中,提出了Attention Based蒸馏,其目的是希望使得蒸馏后的Student模型能够从Teacher模型中学习到这些语义上的信息。具体到模型中,就是让TinyBERT网络学习拟合BERT网络中的多头注意力矩阵,目标函数定义如下:

Lattn=1h∑i=1hMSE(AiS,AiT)L_{attn}=\frac{1}{h}\sum_{i=1}^{h}MSE\left ( A_i^S,A_i^T \right )Lattn​=h1​i=1∑h​MSE(AiS​,AiT​)

其中,hhh代表注意力头数,Ai∈Rl×lA_i \in \mathbb{R}^{l\times l}Ai​∈Rl×l代表Student或者Teacher模型中的第iii个注意力头对应的注意力矩阵,lll代表输入文本的长度。在[1]中使用注意力矩阵AAA而不是softmax(A)softmax\left ( A \right )softmax(A)是因为实验结果显示这样可以得到更快的收敛速度和更好的性能表现。

Hidden States Based的蒸馏是对Transformer层进行了知识蒸馏处理,目标函数定义为:

Lhidn=MSE(HSWh,HT)L_{hidn}=MSE\left ( H^SW_h,H^T \right )Lhidn​=MSE(HSWh​,HT)

其中,矩阵HS∈Rl×d′H^S\in \mathbb{R}^{l\times {d}'}HS∈Rl×d′和HT∈Rl×dH^T\in \mathbb{R}^{l\times d}HT∈Rl×d分别代表Student网络和Teacher网络的隐状态,且都是FFN的输出。ddd和d′{d}'d′代表Teacher网络和Student网络的隐藏状态大小,且d′{d}'\times d}Wh​∈Rd′×d是一个参数矩阵,将Student网络的隐藏状态投影到Teacher网络隐藏状态所在的空间。

2.2.2. Embedding-layer Distillation

Embedding层的蒸馏与Hidden States Based蒸馏一致,其目标函数为:

Lembd=MSE(ESWe,ET)L_{embd}=MSE\left ( E^SW_e,E^T \right )Lembd​=MSE(ESWe​,ET)

其中 ESE^SES,ETE^TET分别代表Student网络和Teacher网络的Embedding,WeW_eWe​的作用与WhW_hWh​的作用一致。

2.2.3. Prediction-layer Distillation

除了对中间层做蒸馏,同样对于最终的预测层也要进行蒸馏,其目标函数为:

Lpred=CE(zTt,zSt)L_{pred}=CE\left ( \frac{z^T}{t},\frac{z^S}{t} \right )Lpred​=CE(tzT​,tzS​)

其中,zSz^SzS,zTz^TzT分别是Student网络和Teacher网络预测的logits向量,CECECE表示的是交叉熵损失,ttt是温度值,在实验中得知,当t=1t = 1t=1时效果最好。

综合上述三个部分的Loss函数,则可以得到Teacher网络和Student网络之间对应层的蒸馏损失如下:

Llayer={Lembd,m=0Lhidn+Lattn,M≥m>0Lpred,m=M+1L_{layer}=\begin{cases} L_{embd}, & m=0 \\ L_{hidn} + L_{attn}, & M \geq m > 0 \\ L_{pred}, & m=M+1 \end{cases}Llayer​=⎩⎧​Lembd​,Lhidn​+Lattn​,Lpred​,​m=0M≥m>0m=M+1​

2.3. 两阶段的训练

对于BERT的训练来说分为两个阶段,分别为预训练和fine-tunning,预训练阶段可以使得BERT模型能够学习到更强的语义信息,fine-tunning阶段是为了使模型更适配具体的任务。因此在蒸馏的过程中也需要针对两个阶段都蒸馏,即general distillation和task-specific distillation,具体如下图所示:

在这里插入图片描述

在general distillation阶段,通过蒸馏使得TinyBERT能够学习到BERT中的语义知识,能够提升TinyBERT的泛化能力,而task-specific distillation可以进一步获取到fine-tuned BERT中的知识。

3. 总结

在TinyBERT中,精简了BERT模型的大小,设计了三种层的蒸馏,分别为transformer-layer,embedding-layer以及prediction-layer。同时,为了能够对以上三层的蒸馏,文中设计了两阶段的训练过程,分别与BERT的训练过程对应,即预训练和fine-tunning。

参考文献

[1] Jiao X, Yin Y, Shang L, et al. Tinybert: Distilling bert for natural language understanding[J]. arXiv preprint arXiv:1909.10351, 2019.

[2] 知识蒸馏基本原理

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...