基于知识蒸馏的维汉神经翻译模型解码速度提升方法
2022-12-03朱相荣杨雅婷
朱相荣 王 磊 杨雅婷 董 瑞 张 俊
(中国科学院新疆理化技术研究所 新疆 乌鲁木齐 830011)(中国科学院大学 北京 100049)(中国科学院新疆理化技术研究所新疆民族语音语言信息处理实验室 新疆 乌鲁木齐 830011)
0 引 言
近年来,基于深度神经网络的机器翻译取得了飞速的发展,在众多语言对上表现出很好的翻译效果[1]。大多数神经机器翻译(Neural Machine Translation,NMT)模型使用“编码器-解码器”框架实现,编码器将源句子表示输入到解码器中生成目标句子表示;解码器以自回归方式从左到右逐字解码生成目标句子,即第t个目标词的生成依赖于先前t-1个目标词。虽然最近提出的几个模型利用卷积神经网络[2]或自注意力机制[3]将训练过程高度并行化,加快了训练速度,但由于自回归的解码方式使得模型解码速度非常缓慢,严重制约了现实场景中的应用。同时随着网络规模增大和参数量增多,容易导致网络结构变得繁重和冗余,从而产生严重的过拟合和过参数化问题[4],严重影响了运行效率和解码速度。因此,本文的研究内容集中于在保证翻译质量的前提下,探索如何提升模型的解码速度,使得翻译质量和解码速度达到一个更好的平衡,以便神经机器翻译模型能很好地在实际应用中发挥价值。
针对此问题,研究人员采用非自回归模型对每个译文单词的生成单独建模,能够同时生成整句译文,大幅度提升解码速度。Gu等[5]首次提出非自回归神经机器模型来减少自回归解码方式的延迟问题。相比于自回归解码从左到右逐字生成的翻译方式,该模型能够并行生成目标端所有单词,但严重降低了翻译性能。即对于一个长为n的目标句子,自回归模型需要O(n)次循环生成,而该模型仅需O(1)次循环生成。此后,研究人员通过增加循环次数的方式来提升翻译性能,如:Lee等[6]提出基于迭代优化的非自回归序列模型;Wang等[7]提出半自回归神经机器翻译模型;Stern等[8]提出通过插入操作来灵活生成目标序列;对应的循环次数分别为O(k)、O(n/k)和O(logn)。同时对非自回归机器翻译模型改进的方法还包括增强解码器端的输入[9]、引入隐变量作为解码器的输入[10]、辅助正规化[11]和引入序列信息[12]等工作。
虽然这些非自回归方法通过对目标词的生成进行单独的建模,可以显著提升解码速度;但由于词级别的交叉熵损失函数不合理地要求模型输出与参考译文严格对齐,且无法准确地建模目标端的序列依赖关系,从而导致模型的翻译质量不是很好。尤其是不能降低神经网络中过多参数带来的存储空间浪费,难以将其部署到资源受限的平台中,使得深度神经网络在时间和空间上的应用都受到很大约束[13]。
目前,非自回归模型解码速度快、翻译质量差;而自回归模型翻译质量好、解码速度慢,均难以保证翻译质量的前提下提升解码速度,严重制约了现实场景中的应用。因此本文从自回归模型具有翻译精度的优势作为切入点,探索如何提升模型的解码速度。通过探索模型压缩方法对模型进行精简实现网络参数量、计算量的减少,使得计算开销与存储需求大大降低,从而达到模型运行效率的提高,为模型在同等硬件条件下提升解码速度提供可能[14]。模型压缩可以通过设计更精细的网络结构来改变模型结构,实现模型存储的减小;也可以在已有模型的基础上减少模型参数,在不改变模型结构的条件下减小模型存储大小。当前研究人员在不改变模型结构的基础上提出了许多可行方法,如剪枝[15]、量化[16]、低精度[17]和知识蒸馏[18]等。
本文提出一种基于知识蒸馏的数据增强方法,通过引入模型压缩方法中的知识蒸馏来减小模型的参数量和存储需求,达到加快运行效率提升解码速度的目的;同时引入数据增强的方法来保证模型压缩对翻译精度不产生影响。首先采用知识蒸馏的方法利用教师网络较强的预测能力从源语言中提取隐性双语知识,弥补学生网络优化中监督信号不足的问题,从而指导学生网络学习有限双语数据中缺失的翻译映射关系;然后采用数据增强的方法将训练好的教师网络输出的软标签数据集和原始数据集合并得到扩充的数据集作为学生网络的训练集;最后在不改变学生网络的网络结构和参数量的前提下,使得学生网络达到教师网络的翻译精度,同时实现解码速度的提升。该方法在CWMT2017维汉双语数据集上的实验结果表明,利用该方法训练自回归模型可以保证翻译精度的前提下,获得模型的压缩和解码速度的提升。
1 相关工作
本文的相关工作主要基于知识蒸馏和数据增强方法,接下来做简要介绍。
为了处理复杂的训练数据,神经网络通常会建立或集成复杂模型得到最终结果。例如GPT[19]、BERT[20]、RoBERTa[21]和XLNet[22]等复杂的预训练语言模型在NLP的许多任务上取得了很好的效果。但是这些模型对计算资源的需求很高,具有数亿个参数且需要大量的内存用于训练和解码,使得难以大规模部署或在新的场景下重新训练成本高。而较小的模型不仅可以降低计算复杂度,而且可以增加批处理大小来更好地利用GPU并行性,有效地提升解码速度。因此研究人员试图设计精简模型或利用知识蒸馏技术将大型预训练模型压缩为小型模型。
近年来,大型预训练模型的压缩吸引了越来越多研究者的兴趣。现有的研究大致可分为知识蒸馏、剪枝、量化,其中知识蒸馏的效果最佳。在本文中,我们关注知识蒸馏的压缩方法。Buciluǎ等[23]利用预训练好的复杂模型将大量无标签数据生成标签,利用生成的伪标签数据补充有标签数据来监督指导简单模型,证明可以将复杂模型的知识压缩在简单模型。Ba等[24]利用一种相对教师模型更浅的学生模型来模拟教师模型,并保证两者的参数量相同,最终得到浅层神经网络的性能可以接近深层神经网络[25]。基于该思想,Hinton等[18]提出知识蒸馏的压缩框架,利用复杂且强大的教师模型指导简单且性能较差的学生模型学习。该框架采用教师-学生范式将教师网络压缩得到学生网络,利用教师模型Softmax函数的输出对学生模型的输出进行监督,使得教师模型的信息可以传递到学生模型。此方法虽然简单,但却能展现很好的效果。Chen等[26]借助知识蒸馏框架,利用中轴语言改善低资源的神经机器翻译。
利用知识蒸馏的方法可以将复杂网络学习出来的先验知识迁移到简单网络,从而指导简单网络学习有限双语数据中缺失的翻译映射关系,使得在相同场景中简单网络相比复杂网络可以加快运行效率从而提升解码速度。这种方法可以使简单网络的解码速度获得提升的前提下翻译质量有所改善,但并不能接近甚至超越复杂网络的翻译质量。
由于维汉平行语料是低资源语言,神经机器翻译中训练集较少且容易导致泛化能力不足的问题。本文在知识蒸馏的基础上利用数据增强方法来弥补训练集不足的问题,也使句子结构变得多样化。Zoph等[27]在四组低资源语言对上翻译结果表明,统计机器翻译优于神经机器翻译。此后,研究人员在神经机器翻译中通过增加训练集或将语法、语义信息与神经机器翻译融合,从而提升翻译效果。Sennrich等[28]首次提出利用容易获取的单语语料构造伪平行语料,然后将伪平行语料和真实语料合并共同训练模型。Fadaee等[29]通过大规模的单语语料训练得到语言模型,进而获取句子中高频词能被低频词替代的位置。通过这种高低频单词的替换可以增加训练集中低频词出现的频率,从而提升模型对低频词的理解能力。
本文在知识蒸馏的基础上,通过将教师网络输出的软标签数据与真实标签合并得到新的训练集,来改善简单网络的翻译质量低于复杂网络的劣势。
2 本文方法
2.1 教师和学生网络的结构
本文的教师和学生网络的结构是基于Pytorch开源框架,搭建Vaswani等[3]提出的Transformer模型。教师和学生网络具有相同的模型结构,其中教师网络参数大、结构复杂且性能较好,而学生模型参数小、结构简单且性能较差。Transformer是机器翻译的主流框架,也是自回归模型性能最好的模型之一,无论翻译质量和效率方面都是最先进的[30]。因此,本文将其作为教师和学生网络模型。
该模型完全基于自注意力机制,摒弃了以往循环神经网络的递归计算和卷积神经网络的卷积操作,提升了模型的收敛和训练速度;同时将注意力机制引入编码器和解码器内解决源语言和目标语言句子内部词语之间的依赖关系,有效地解决了长距离依赖建模能力不足的问题。如图1所示为Transformer的结构,该模型由编码器、解码器和多头注意力机制组成。
图1 Transformer结构
在Transformer中,编码器包括N个相同的层,每层由自注意力和前馈神经网络两个子层组成,如图1左侧所示。自注意力层通过关注同一层的所有相邻令牌,计算此令牌与相邻令牌之间的相关分数,最后将所有相邻令牌与此令牌表示线性组合来计算该令牌的输出表示。图1右侧所示的解码器也包括N个相同的层,每层有三个子层。其中:第一子层是对部分翻译历史进行总结的掩蔽自注意力层;第二子层是编码器-解码器注意力层决定当前预测的动态源端上下文;第三子层是前馈层。同时,编码器和解码器的每个子层执行残差连接和层正则化,前者保留原始输入中的信息,后者加快模型训练速度。显然,注意力机制是关键组成部分,包括编码器自注意力、解码器遮蔽自注意力和编码器-解码器注意力机制。这三种注意力机制可以形式化为相同的公式,如式(1)所示。
式中:q、K和V分别代表查询、键和值矩阵;dk是键的维度。
编码器自注意力机制中q、K、V来自同一层;解码器遮蔽自注意力机制使得预测i位置的词只能依赖i之前的位置,因为自回归从左到右的单向解码无法获得i位置之后的预测;编码器-解码器注意力机制是计算源端动态上下文,负责预测当前目标语言标记。查询是遮蔽自注意力子层的输出,键和值是相同的编码器上下文向量,然后应用残差连接、层正则化和前馈子层产生整个层的输出。经过N个这样的层得到最终的隐藏状态,利用Softmax函数对目标词进行预测,如图1右上方所示。
2.2 方法描述
为了提升模型的解码速度,引入知识蒸馏的模型压缩方法将知识从教师模型迁移到学生模型,把学生模型训练成模仿教师模型的输出,使得在同等硬件环境中学生模型相比教师模型可以加快运行效率从而提升解码速度。然而,虽然解码速度获得提升,但学生模型不能充分利用教师模型的所有知识。这使得学生模型的解码速度获得提升的前提下翻译质量有所提高,但并不能接近甚至超越教师模型的翻译质量。因此,本文在引入知识蒸馏的基础上,通过对训练集的数据增强进行自蒸馏,提高学生模型的泛化能力,提出一种基于知识蒸馏的数据增强方法如图2所示。
图2 基于知识蒸馏的数据增强方法
在神经机器翻译中通常采用一位有效(one-hot)编码,如式(2)所示。
wi={0,1}|y|i=1,2,…,T
(2)
式中:wi标注的目标语言词语作为预测目标,它的维度与目标语言词汇表大小相同,除了一个维度值为1,其余均为0,该位置对应目标单词在词汇表Y的位置。这种是1非0的编码方式使得目标语言词汇表中丢失了词间相似性信息,导致知识迁移时学生模型不能充分利用教师模型的所有知识。例如,单词“CHN”“China”“People’s Republic of China”都是“中国”的同义词,但使用这种编码方式完全不会考虑这种同义词之间的相似性,很容易使得训练好的模型预测“China”时目标端词语很可能预测为:“China”为0.9、“CHN”为0.05、“People’s Republic of China”为0.1。
因此,为了弥补这种编码方式带来监督信号不足的问题,本文在引入知识蒸馏方法中通过调整温度“T”来改变Softmax函数的输出,如式(3)所示。
式中:qi是神经网络Softmax函数的输出,代表学生模型学习的对象。当T=0时,Softmax输出的最大值更接近1,其他值为0,这种收敛近似于神经机器翻译中one-hot编码对应的函数形式。当T=1时,得到标准的Softmax函数。随着T的增加,Softmax函数产生的概率分布变得更软,能够提供更多的信息,使得学生模型和教师模型的预测更相似。所以,相比于one-hot编码产生硬标签的缺陷,对教师模型采用这种方法,能够得到更多词间相似信息的软标签。
虽然该方法在解码速度获得提升的前提下学生模型的翻译质量有所改善,但依然达不到甚至超越教师模型的翻译质量。因此,本文在引入知识蒸馏方法的基础上再次引入对训练集的数据增强进行自蒸馏。在不改变和不添加原训练集的基础上,通过将教师模型输出的软标签数据集与原数据集混合形成新的训练集,进一步提取训练集中的隐性双语知识,弥补学生模型优化中监督信号不足的问题,使得学生模型训练中获取的信息量更丰富。最终可以使学生模型能够学习有限双语数据集中缺失的翻译映射关系,使得在解码速度提升的前提下,学生模型的翻译质量接近甚至超越教师模型。
具体而言,首先,在维汉神经机器翻译中利用知识蒸馏的方法且调整温度T来改变Softmax的输出得到更多含有知识的软标签数据,将知识从教师模型迁移到学生模型,在不改变网络结构和参数量的前提下提升学生模型的解码速度和翻译质量;其次,针对解码速度提升的前提下学生模型翻译质量尽管有所改善,但仍达不到教师模型的问题,引入对训练集的数据增强进行自蒸馏。通过扩充原始数据集来弥补学生网络中监督信息不足引起翻译精度下降的问题,使得学生模型的翻译质量接近甚至超越教师模型;最后,将使用本文方法的学生模型与未使用该方法的学生模型作比较,得到学生模型翻译精度达到教师模型的前提下,可以获得解码速度的提升和参数模型的缩小,更有利于应用在计算和存储资源受限的平台中。
因此该方法适用于计算和存储资源较少且不易扩充的硬件环境,且平行语料有限,但对翻译质量和解码速度需求较高的平台中。该方法首先能够高效且有效地优化单个学生网络;其次通过数据到数据的自蒸馏,学生模型可以学习更多内在表示的泛化;最后学生模型在较低的计算成本和内存负载下翻译质量和解码速度得到显著提高。
3 实验与结果分析
3.1 数据集
维吾尔语是一种在语素的组合上有着高度灵活性的黏着性语言,可以构成无限多的词语使得大多数维吾尔语词语出现在语料库中的频率降低,即使在测试集中也极易出现训练集中未出现的词[31]。由于这种语言特性,造成了很严重的数据稀疏性问题和未登录词问题。为了解决这种问题,杨洋[32]采用维语形态切分和字节对编码(Byte-Pair Encoding,BPE)[33]技术两种不同的方法,并在实验效果上作对比。最终得到采用BPE技术是效果最好的,因为对子词的切分提高了模型对罕见词和未登录词的处理能力,解决了数据稀疏性问题。因此,本文所有的维吾尔语语料均采用BPE技术进行编码处理。
因此,本文中涉及的维吾尔语采用BPE算法进行标记分割成子词单元。采用Sennrich开源的Subword[33]分词工具。核心思想是对语料库中的高频词不作切分,只对低频词切分来增加稀疏词中子词的共现次数。同时汉语语料同样采用BPE编码技术来减少词汇量。由于汉语字与字之间没有空,直接使用BPE分词会影响编码效果。因此,首先使用北京大学开源的中文分词工具pkuseg对汉语语料分词,然后使用BPE编码技术。这样将学习到的规则应用于所有的测试集、开发集和训练集。而且在平行语料进行分词之前,需要进行编码转换、去除重复对、全角字符转半角字符、过滤控制字符等特殊字符和处理转义字符。其中,采用BPE的迭代轮数为32 000,词表大小均为40 000。本节所用数据集如表1所示,其中:cor表示原始的维汉数据集;trg表示教师模型产生的硬标签数据集;dec表示教师模型产生的软标签数据集。
表1 数据集
3.2 评价指标
对于神经机器翻译结果,本文采用机器翻译常用的评价指标双语互译评估(BLEU)[34]来对模型的翻译质量进行评价。解码速度采用每秒处理单词数和每秒处理句子数来判定,Δ表示解码速度指标每秒处理单词数变化量的增量。
3.3 实验设置
本文将base-Transformer作为教师模型(基线系统),small-Transformer作为学生模型[3],参数设置如表2所示。训练步数均为2×105,优化器采用Adam[35],训练和解码过程在单个Nvidia Tesla K80 GPU上。
表2 教师模型和学生模型设置
3.4 结果分析
实验具体步骤为:
(1) 根据实验的需求设计教师模型和学生模型的网络结构,如表2所示。
(2) 采用CWMT2017维汉双语数据集,修改教师模型Softmax函数中温度参数T为一个较大的值(实验中设置为T=8)[36],训练后得到含有更多词间相似性信息的软标签数据。
(3) 采用数据增强的方法,在学生模型上评估多种不同数据集组合的效果,选择最佳的数据集组合将知识从教师模型迁移到学生模型,如表3所示。
表3 学生模型在不同数据集组合上的实验结果
(4) 分析学生模型采用基于知识蒸馏的数据增强方法后与未使用的区别,以及学生模型最后的性能与基线系统的比较,包括解码速度、翻译质量和参数规模等,如表4和表5所示。
表4 学生模型与基线系统(教师模型)结果对比
表5 模型参数对比分析
(5) 本文方法与现有的自回归和非自归回翻译方法进行翻译效果和解码方法比较,显示该方法的优势性,如表6所示。
表6 不同模型对比分析
表3的实验结果显示,原始数据集在教师模型和学生模型上得到的翻译精度分别为48.21和40.14个BLEU值。采用本文提出的基于知识蒸馏的数据增强方法,学生模型在cor+dec+trg数据集组合中效果最好,翻译结果的BLEU值为48.47。因此,在相同的训练条件下,不改变学生模型的网络结构和参数量,与未使用该方法的学生模型相比,翻译精度提升8.33(48.47与40.14的差值)个BLEU值。
表4的实验结果显示,采用本文方法后,学生模型的翻译性能可达到基线系统,甚至还提升0.26个BLEU值,解码速度比基线系统提升1.05倍。因此本实验可以证明,采用基于知识蒸馏的数据增强方法,可以使学生模型达到基线系统的翻译性能,同时解码速度提升1.05倍。
表6的实验结果显示,在相同的训练条件下,本文方法与现有的自回归模型、非自回归模型和Transformer(学生模型)进行比较,非自回归模型在解码速度相比于自回归上更有优势,而翻译效果具有劣势,即得到非自回归模型的解码速度比自回归模型提升1.74倍时,翻译质量可达到自回归模型的95.34%,而本文方法比这两种方法在翻译质量和解码速度上都具有优势,尤其是翻译效果方面。
表5的实验结果显示,本文方法在学生模型达到基线系统翻译性能的条件下,模型参数规模压缩率为2.44倍。因此对于一些比较臃肿、不便部署的复杂模型,该方法可以将其知识迁移到简单模型上。
因此,本文方法相比于目前自回归模型和非自回归模型均有优势,即该方法可使学生模型提升8.33个BLEU值,同时使学生模型的翻译性能达到基线系统,解码速度提升1.05倍,模型压缩2.44倍,可使简单网络具有复杂网络的翻译性能,解码速度提升1.05倍,更有利于部署在对翻译速度需求迫切的计算资源受限的平台中。
4 结 语
本文利用有限的维汉双语数据集,成功实现了翻译性能和解码速度的提升,同时使得参数模型得到了压缩,更有利于部署到对计算资源受限的平台中。采用本文方法将知识从教师模型迁移到学生模型,在不改变其网络结构、参数量和不增加计算成本的前提下,提升学生模型的翻译质量和速度。这种方法可以获得目标语言词汇表中更多的词间相似性信息,从而提供更单纯、噪声更小的数据集来训练学生网络。最终使用该方法,学生模型在达到基线系统翻译性能的条件下,解码速度提升1.05倍,参数模型压缩2.44倍。在下一步的工作中将研究非自回归翻译模型解码速度快的优势和翻译性能差的劣势,改进模型使翻译质量和解码速度达到一个更好的平衡。