文章目录
前言
论文名:Sequence-Level Knowledge Distillation
论文作者:Yoon Kim et.al.
期刊/会议名:EMNLP 2016
本文作者:XMU_MIAO
日期:2020/11/28
摘要
本文考虑应用知识蒸馏方法(这些方法已被证明能够成功地减小神经模型在其他领域的大小)解决NMT问题。
我们证明了应用于单词级别的的标准知识蒸馏对于NMT是有效的,并且还介绍了两个新的序列级别知识蒸馏方法,这两个方法进一步提高了性能。并且令人惊讶的是,似乎消除了对于 b e a m s e a r c h beam\,search beamsearch的需要(即使应用于原始的 t e a c h e r teacher teacher模型)。
我们最好的 s t u d e n t student student模型比最先进的 t e a c h e r teacher teacher模型运行速度快10倍,而且几乎没有任何损失。它也明显优于没有经过知识蒸馏训练的基线模型:通过贪婪解码/波束搜索的4.2/1.7 BLEU。在知识蒸馏的基础上应用权重修剪, s t u d e n t student student模型的参数比原来的 t e a c h e r teacher teacher模型少13倍,比原来的 t e a c h e r teacher teacher模型减少0.4个BLEU。
一、Introduction
暂略
二、Distillation
2.1 Knowledge Distillation
知识蒸馏描述了一类通过向更大的 t e a c h e r teacher teacher模型学习(除了从训练数据集学习之外)来训练更小的 s t u d e n t student student网络以使其表现更好的方法。知识蒸馏通过将 s t u d e n t student student模型与 t e a c h e r teacher teacher模型的预测结果进行匹配训练。对于分类任务,这一般意味着通过对数 L 2 L_2 L2或交叉熵( c r o s s − e n t r o p y cross{-}entropy cross−entropy)匹配分类概率。
具体地,假设我们要在 ( x , y ) (x,y) (x,y)形式的数据集上学习一个类别为 V V V的多类别分类器。通常的训练准则是最小化训练集中每个样本的 NLL \textbf{NLL} NLL: £ N L L ( θ ) = − ∑ k = 1 ∣ V ∣ i { y = k } l o g p ( y = k ∣ x ; θ ) \pounds_{NLL}(\theta)=-\sum_{k=1}^{|V|}i\{y=k\}log\,p(y=k|x;\theta) £NLL(θ)=−k=1∑∣V∣i{
y=k}logp(y=k∣x;θ)其中 i { ∗ } i\{*\} i{
∗}表示一个指示器,当花括号式子成立时值为1,否则为0。 p p p是模型通过参数化 θ \theta θ得到的概率分布。
在知识蒸馏中,假设已得到 t e a c h e r teacher teacher模型的训练(可能是相同的数据集)得到的概率分布 q ( y ∣ x ; θ T ) q(y|x;\theta_T) q(y∣x;θT),不同于最小化与可观测数据( s t u d e n t student student模型的训练集)的交叉熵,知识蒸馏最小化 s t u d e n t student student模型与 t e a c h e r teacher teacher模型的交叉熵: £ K D ( θ ; θ T ) = − ∑ k = 1 ∣ V ∣ q ( y = k ∣ x ; θ T ) l o g p ( y = k ∣ x ; θ ) \pounds_{KD}(\theta;\theta_T)=-\sum_{k=1}^{|V|}q(y=k|x;\theta_T)log\,p(y=k|x;\theta) £KD(θ;θT)=−k=1∑∣V∣q(y=k∣x;θT)logp(y=k∣x;θ)其中 θ T \theta_T θT参数化了 t e a c h e r teacher teacher模型的概率分布,并在其训练结束后固定不变。该交叉熵的两个概率分布的设置是相同的(如蒸馏温度相同等)。在 q ( y ∣ x ; θ T ) q(y|x;\theta_T) q(y∣x;θT)上进行训练能够提供更多对 s t u d e n t student student模型有用的信息。但是这还不够,由于上述目标函数未在训练集上进行训练,因而通常的做法是在以下两个损失函数之间进行插值: £ ( θ ; θ T ) = ( 1 − α ) £ N L L ( θ ) + α £ K D ( θ ; θ T ) \pounds(\theta;\theta_T)=(1-\alpha)\pounds_{NLL}(\theta)+\alpha\pounds_{KD}(\theta;\theta_T) £(θ;θT)=(1−α)£NLL(θ)+α£KD(θ;θT)其中 α \alpha α是一个混合参数。
2.2 Knowledge Distillation for NMT
2.2.1 Word-Level Knowledge Distillation
机器翻译系统是直接最小化每一个位置单词的 NLL \textbf{NLL} NLL, £ W O R D − N L L \pounds_{WORD-NLL} £WORD−NLL。定义对于一个句子上单词级别的知识蒸馏的损失函数为: £ W O R D − K D = − ∑ j = 1 J ∑ k = 1 ∣ V ∣ q ( t j = k ∣ s , t < j ) l o g p ( t j = k ∣ s , t < j ) \pounds_{WORD-KD}=-\sum_{j=1}^{J}\sum_{k=1}^{|V|}q(t_j=k|s,t_{<j})log\,p(t_j=k|s,t_{<j}) £WORD−KD=−j=1∑Jk=1∑∣V∣q(tj=k∣s,t<j)logp(t