Advertisement

[论文阅读]Sequence-Level Knowledge Distillation

阅读量:

本文探讨了将知识蒸馏技术应用于机器翻译,特别是在序列级别上。作者提出了一种基于教师模型的知识蒸馏方法,旨在通过将教师模型的预测转移到学生模型,提升性能。具体而言,作者提出了两种序列级别的蒸馏方法:Word-Level和Sequence-Level。Word-Level蒸馏在单词级别上显著提升了性能,而Sequence-Level蒸馏则通过使用beam search生成迁移集,进一步提升了模型的性能。实验结果表明,序列级别的蒸馏方法在两种语言对(英语-德语和泰语-英语)上表现优异,特别是在解码速度和参数量减少的情况下,性能提升显著。此外,通过结合权重剪枝技术,蒸馏方法与模型压缩相结合,进一步提升了模型的压缩效果,同时保持了较高的BLEU值。研究结论表明,知识蒸馏在机器翻译中具有广泛的应用前景,特别是在序列级别上,蒸馏方法不仅提升了性能,还减少了参数量,同时保持了较高的BLEU值。

文章目录

  • 前言
    • 摘要

    • 一、概述

    • 二、知识蒸馏技术

      • 2.1 知识蒸馏技术
      • 2.2 知识蒸馏技术在机器翻译中的应用
        • 2.2.1 词级知识蒸馏技术
        • 2.2.2 序列级知识蒸馏技术
          • 2.2.3 序列级插值技术
    • 三、Experiments

    • 四、Results

      • 4.1 Decoding Speed
      • 4.2 Weight Pruning
    • 五、Conclusion

    • 总结


前言

复制代码
    论文名:Sequence-Level Knowledge Distillation
    论文作者:Yoon Kim et.al.
    期刊/会议名:EMNLP 2016
    本文作者:XMU_MIAO
    日期:2020/11/28

摘要

本文致力于采用知识蒸馏方法(这些方法已被研究表明能够有效地降低神经网络在其他领域的规模)来解决神经机器翻译(NMT)问题。研究表明,采用单词级别的标准知识蒸馏方法对于NMT是有效的,并且我们还提出了两种基于序列级别的知识蒸馏方法,这些方法进一步提升了性能。令人称奇的是,这些方法似乎无需依赖beam\,search(即便是在原始teacher模型上)。我们的最佳student模型相比最先进的teacher模型快了10倍,几乎没有任何性能损失。它显著优于未经知识蒸馏训练的基准模型:通过贪婪解码和波束搜索分别获得了4.2和1.7的BLEU分数。在知识蒸馏的基础上应用权重修剪,我们的student模型的参数数量比原始的teacher模型减少了13倍, BLEU分数降低了0.4个。

一、Introduction

暂略

二、Distillation

2.1 Knowledge Distillation

知识蒸馏是一种通过教师模型指导学生模型优化过程的方法,其中学生模型除了从训练数据中学习外,还从更大的教师模型中学习,以期提升其性能。知识蒸馏通过将学生模型的预测结果与教师模型的预测结果进行匹配训练。在分类任务中,通常通过最小化对数L2或交叉熵(cross-entropy)损失来匹配分类概率。

通常采用训练集上的负对数似然(NLL)损失作为优化目标,公式表示为:\pounds_{NLL}(\theta) = -\sum_{k=1}^{|V|} i\{y=k\} \log p(y=k|x;\theta),其中i\{*\}是指示函数,\theta表示模型参数。

2.2 Knowledge Distillation for NMT

在这里插入图片描述

2.2.1 Word-Level Knowledge Distillation

机器翻译系统通过最小化每个位置单词的NLL损失来实现目标。定义如下,单词级别的知识蒸馏损失函数为:\pounds_{WORD-KD}=-\sum_{j=1}^{J}\sum_{k=1}^{|V|}q(t_j=k|s,t_{其中V表示目标词表集合。因此,针对单词级别的知识蒸馏,最终的损失函数定义为:\pounds(\theta;\theta_T)_{WORD-KD}=(1-\alpha)\pounds_{WORD-NLL}(\theta)+\alpha\pounds_{WORD-KD}(\theta;\theta_T)具体细节可参考图1中左侧图表。

2.2.2 Sequence-Level Knowledge Distillation

通过单词级别的知识蒸馏,模型能够继承单词级别的信息。然而,在理想情况下,我们希望student模型能够模仿teacher模型在序列级别上的信息。

2.2.3 Sequence-Level Interpolation

为了实现student模型在序列级别混合训练的目标,我们选择在包含teacher模型生成的数据集(\pounds_{SEQ-KD})student模型的训练集(\pounds_{SEQ-NLL})的基础上,设计一种混合训练策略:\pounds=(1-\alpha)\pounds_{SEQ-NLL}+\alpha \pounds_{SEQ-KD}=-(1-\alpha)\log\,p(y|s)-\alpha\sum_{t\in \tau} q(t|s)\log\,p(t|s)。其中,损失函数的第二项由于较为复杂,我们采用前文所述的方法进行近似处理:\pounds=-(1-\alpha)\log\,p(y|s)-\alpha\log\,p(\hat{y}|s)。该模型需要在可观察数据yteacher模型生成的近似数据\hat{y}上进行训练。由于\hat{y}y之间存在显著差异,直接训练模型以生成\hat{y}相对较为复杂。为此,我们提出了一种单序列近似方法。该方法受统计机器翻译领域鉴别训练方法启发,通过local\,updating策略实现。具体而言,我们采用与y最接近的序列作为teacher模型的beam\,search目标:\hat{y}\approx argmax_{t\in \tau_{K}}sim(t,y),其中sim为衡量近似程度的函数(如:Jaccard\,\,similarity\,\,BLEU等),\tau_{K}beam\,searchK{-}best序列构成。在本文中,我们选择sentence{-}level\,BLEU作为相似度函数,并参考图1右侧图的示意图进行具体实现。


Distilling the Knowledge in a Neural Network一文中,知识被定义为一种可学习的映射关系。假设student模型f_s的训练样本形式为(x,y_s),则从teacher模型f_t中获取的知识(或迁移集)的单个样本形式为(x,y_t),其中y_t=f_t(x)。基于这一理解,接下来对单词级别和序列级别的知识蒸馏进行详细说明。在单词级别,蒸馏方法通过最小化学生模型对教师模型输出的模仿来实现知识的传递;而在序列级别,则通过保持输入序列的语序和时序信息,使学生模型能够更好地模仿教师模型的处理逻辑。

  • \textbf{单词级别蒸馏:} 在单词级别上,y_t=f_t(x)是每一个单词在目标词表上的分布,蒸馏时student模型对该分布进行学习。使用一个x,可以产生唯一的分布y_t,得到一个迁移集样本(x,y_t)
  • \textbf{序列级别蒸馏:} 在序列级别上,蒸馏的目标是序列信息,对于一个y_t=f_t(x),若要翻译的目标序列长度为n,目标词表V,则由该式子能够得到V^{n}个序列,即使用一个x,可以得到(x,y_1),(x,y_2),...,(x,y_{V^n})个迁移集样本。给定一个x,得到V^{n}y,这显然不容易处理。因而在teacher模型上使用beam\,search(k{-}best)寻找到k个概率最大的y进行代替,但发现k个概率最大的ystudent模型的训练集的对应y差异巨大(即:y_{beam\,search}y_s相差较大),不利于学习。因此在此基础上提出:beam\,search结果中寻找与y_s最相近的序列y作为迁移集样本的target值。现在使用一个样本x,可以得到一个迁移集样本(x,y_{tgt}),其中y_{tgt}=argmax\,sim(y_{beam\,search},y_s)
  • \textbf{Sequence{-}Level\,KD}\textbf{Sequence{-}Level\,Interpolation}区别:\textbf{Sequence{-}Level\,KD}只在迁移集上进行训练,而\textbf{Sequence{-}Level\,Interpolation}是在迁移集和student训练集上进行混合训练

三、Experiments

该实验在高质量的English-German语料库和较低质量的Thai-English语料库上运行。

  • Word-Level Knowledge Distillation(Word-KD):通过联合训练student模型在student数据集和迁移数据集上,尝试了不同的参数α值(0.5和0.9),发现α=0.5时效果更为显著。
    • Sequence-Level Knowledge Distillation(Seq-KD):基于beam search生成的序列数据集,对student模型进行训练,其中beam size K被设定为5。
    • Sequence-Level Interpolation(Seq-Inter):采用微调方法,首先对student模型进行预训练,随后在两种数据集上进行知识蒸馏训练。

如前所述,所提到的方法可以相互补充使用。具体而言,如表1所示,Seq-KDWord-KD的结合表示先在Teacher生成的迁移集中进行训练,随后利用单词级别的知识进行蒸馏训练;而Baseline+Seq-Inter则表示先基于Baseline进行训练,随后在Seq-Inter上进行微调。

四、Results

在这里插入图片描述

根据表1的数据,可以看出Word-KD相较于基准模型有所提升。在两种语料上,Seq-KD的效果表现相似。将两者结合使用(即Seq-KD+Word-KD),在2×300和2×100的student模型上均展现出显著的性能提升,这表明两者分别提供了单词级别的知识和序列级别的知识。除了通过Seq-KD和Word-KD训练的模型,Seq-Inter还改进了原始teacher模型。实验结果表明:Seq-KD模型在概率质量方面,显著优于基准模型。例如,在英语-德语(English-German)任务中,2×500的Seq-KD模型的概率质量为16.9%,而基准模型对应的数值为0.9%(表1最后一列p(t=ŷ))。尽管过去的研究表明,复杂程度较低的模型通常具有较高的BLEU值,但实验结果表明情况并非如此。虽然Seq-KD模型在贪婪解码(+4.2 BLEU)和波束搜索解码(+1.4 BLEU)方面表现更优,但在困惑度上却出现了逆转。基准2×500的英语-德语模型的困惑度为8.2,而Seq-KD模型的困惑度则为22.7。

4.1 Decoding Speed

|

|

|
|---|---|

计算复杂度呈线性提升,随着beam size的增加。由此可见,序列级别的知识蒸馏可以采用贪婪搜索进行解码具有重要意义。为了评估解码速度的提升效果,我们分别在GPU、CPU和Android设备上部署teacher模型和student模型,并统计每秒翻译单词的平均数量(如表2所示)。研究表明,使用贪婪解码的student模型相较于在GPU上进行beam search的teacher模型快10倍(1051.3 vs 101.9 words/sec),但性能表现接近。

4.2 Weight Pruning

该研究部分基于大小的非结构化权重剪枝方法(可参考神经机器翻译模型压缩方法综述对模型大小进行优化调整。在\textbf{English-German}语言对齐任务中,我们选择了性能最优的student模型,其架构为(2\times500\,Seq{-}KD+Seq{-}Inter),并对其中x\%的参数量进行剪枝处理。随后,在Seq{-}KD任务上以学习率lr=0.2进行模型再训练,并在Seq-KD任务上采用学习率lr=0.1进行精细微调。
研究结果表明,通过结合权重修剪和知识蒸馏技术可以实现压缩效果的正交性。student模型进行80\%的参数量剪枝,所得模型参数规模较teacher模型减少了13倍,但仅降低了0.4个BLEU分数。当剪枝比例达到90\%时,模型性能进一步下降了1.0个BLEU值,此时模型参数量缩减至8 million,较teacher模型减少了26倍。

五、Conclusion

本研究探讨了将现有知识蒸馏技术应用于机器翻译领域(采用单词级别的蒸馏策略),并详细阐述了两种基于序列级别的蒸馏变体,这些方法较采用单词级别的蒸馏策略表现出更优的性能。

总结

本文探讨了知识蒸馏技术在机器翻译领域的应用,并提出了基于序列级别的两种知识蒸馏方法,其中文中已详细阐述了理解难点。实验结果表明,采用单词级别的知识蒸馏对基线模型的性能提升效果较为显著,而序列级别的知识蒸馏则能够带来更为明显的性能提升效果。具体而言:
(1)基于序列级别知识蒸馏的模型在贪婪解码模式下能够实现与beam\,search解码模式下性能的并行,并且显著提升了解码效率;
(2)知识蒸馏技术可以与模型剪枝技术相结合,这样能够在保持模型性能的前提下,显著降低模型的参数规模;
(3)在应用知识蒸馏的情况下,\textbf{ppl}值较高的模型\textbf{BLEU}值较低的结论并非绝对成立。

全部评论 (0)

还没有任何评论哟~