(School of Computer Science and Technology,Soochow University,Suzhou 215006,China)
DOI: 10.1007/978-981-10-3635-4_2.
备注
如何改善神经机器翻译模型的翻译性能一直是学术界研究的热门课题,特别是在低资源语种的翻译任务上,如何提高原有平行语料训练出来的翻译模型的翻译质量是一个迫切需要解决的问题.为此,对传统的统计机器翻译任务上使用的协同训练方法进行优化,进一步提出新的协同训练方法,并应用于神经机器翻译任务中,改善原有神经机器翻译模型的翻译质量.实验表明神经机器翻译中使用协同训练的方法能显著提高翻译质量,在语料数量稀少(低资源语料)的情况下提升效果更为显著.
Improving the performance of neural machine translation system is a hot research topic in the academia,especially for the low-resource language translation tasks.Co-training is a method which uses large amounts of unlabeled data in addition to a small labeled data set.It is used to label unlabeled data with high quality.Such additional labeled data is further used to enlarge the original labeled data set and finally retrain the translation model to obtain a better translation model.In this paper we propose to use the co-training method in neural machine translation.In order to make this method more applicable,we introduce a new co-training method to improve its practicality.Experimental results show that the proposed co-training in neural machine translation can significantly improve the translation performance,especially for low-resource language translation tasks.
引言
近些年,神经机器翻译研究不断取得创新性进展.Bahdanau等[1]和Sutskever等[2]已经证明在拥有大量平行语料句对的任务时,神经机器翻译系统优于传统的统计机器翻译系统; 然而,对于一些低资源语料(平行语料数量稀缺的语料)的翻译任务,却落后于传统的统计机器翻译方法[3].
为了解决当前神经机器翻译模型对低资源语料翻译任务上翻译质量差的问题,探索一种利用现有平行语料和大量单语语料改善神经机器翻译系统的翻译质量显得尤为必要,这也是低资源语种翻译任务上亟待解决的问题.
1 背景知识
早在1998年,Blum等[4]提出了使用协同训练方法,利用大量易获取的未标记的网页,增强原有网页分类器的分类效果.接着Nigam等[5]对协同训练进行了分析.随后,Chris [6] 提出在统计机器翻译领域使用协同训练方法,提高统计机器翻译模型的翻译质量,但其提出协同训练方法存在一定的局限性,难以推广应用.Liang[7]对于自然语言处理任务中的半监督学习方法进行了总结,其中也包括协同训练.
在机器翻译任务中,协同训练作为一种半监督学习方法,在平行语料数量受限的情况下,能充分利用原有平行语料与大量单语语料,可提升原有平行语料训练出来的翻译模型的翻译质量.
此外,也有其他方法在平行语料受限的情况下利用各种技巧被提出用于改善翻译模型的翻译质量.Sennrich等[8]提出利用单语语料来构建伪平行语料,再利用构建的伪平行语料在原有语料的基础上进行语料扩充,进而训练出一个翻译效果更好的翻译模型,值得注意的是,该方法利用的单语语料主要为目标端单语语料.Kay[9]提到了如果一个文档被翻译成另外一种语言的文档,那它很有可能也会被翻译为其他多种语言的文档.因此Zoph等[10]提出利用多源语料(如法语-英语、德语-英语两对平行语料)可在同一个神经机器翻译框架下(即使用相同的编码器和解码器)训练出翻译模型,并得出该方法能改善翻译模型的翻译质量,减少翻译歧义性.谷歌的相关团队提出使用神经机器翻译模型训练多种语言间的翻译任务,并证明该方法在低资源语言的翻译任务上有显著的效果[11].
本文中对传统统计机器翻译中使用的协同训练方法进行改进,提出有更强适用性的新协同训练方法,并在神经机器翻译模型中使用协同训练方法提高原有翻译模型的翻译质量.所使用的协同训练方法主要是利用源端单语语料,而Sennrich等[8]提出的方法主要利用目标端单语语料改善翻译模型的翻译质量,利用协同训练方法改善原有翻译模型的翻译质量之后,可以再利用Sennrich等[8]提出的方法进一步改善翻译模型的翻译质量.
2 基于注意力机制的神经机器翻译系统
在机器学习中,监督学习主要依赖于标记好的训练数据,神经机器翻译就属于监督学习,它依赖于标记好的数据,即平行语料.一个高质量的神经机器翻译模型通常依赖于大规模的平行语料.受限于平行语料的数量,低资源语料训练得到的翻译模型的翻译效果也相对较差,甚至比传统的统计机器翻译模型训练得到的模型的效果还差.
对于低资源语料,其平行语料数量稀少,而相关的单语语料数量较多,为此,研究者们提出了充分结合已有平行语料以及大量单语语料进一步提升翻译模型的翻译质量的思路.
本文中在基于注意力机制的神经机器翻译模型中使用协同训练的方法,因此此处先简单介绍基于注意力机制的神经机器翻译模型.基于注意力机制的神经机器翻译模型由编码器和解码器组成,并在编码与解码之间融入了注意力机制(如图1所示).编码器采用双向循环的神经网络,对源句子x={x1,x2,…,xTx}进行编码,得到该句子的隐藏层h=[h1,h2,…,hTx].解码器使用注意力机制,将单词从左往右依次生成目标端句子y={y1,y2,…,yTy}.
训练时,神经机器翻译对平行句对<x,y>的条件概率的计算依据如下:
P(y|x)=∏Tyi=1P(yi|y<i,x),(1)
其中:yi表示解码器第i时刻生成的目标端单词; y<i={y1,y2,…,yi-1}.条件概率P(yi|y<i,x)计算如下:
P(yi|y<i,x)=softmax(f(si,yi-1,ci)),(2)
其中:f(·)是非线性函数; si表示解码器第i时刻的隐藏状态; ci表示源端句子的文本向量,由乘以权重的源端隐藏层h的线性和求得.si由下式给出:
si=g(si-1,yi-1,ci),(3)
式(3)中的g(·)是非线性函数;
ci=∑nj=1ai,jhj,(4)
其中权重ai,j代表解码器解码第i个单词时,对源端第j个单词所对应的隐藏向量的关注度.
基于注意力机制的神经机器翻译使用最大似然函数C训练整个模型的参数:
C(θ)=∑Nn=1∑Tyi=1log P(yni|yn<i,xn),(5)
其中,θ是模型中的参数,N是语料中的平行句对数.
在测试阶段,依据式(6),给定一个源端句子x,用集束搜索(beam search)[12]方法找到使条件概率P(y|x)最大的句子y ∧,并把它作为x对应的翻译,
y ∧=argmaxy P(y|x).(6)
3 自训练与协同训练方法介绍
3.1 自训练(self-training)介绍在介绍协同训练之前,先介绍与协同训练相关的自训练(self-training); 自训练利用原有的标记语料训练出一个基础模型,利用该基础模型对未标记的语料进行标记,再将标记的语料与原有语料结合进行训练,起到了扩充语料的效果.机器翻译中的自训练过程如下:首先,利用已有平行语料训练出一个翻译模型并利用该模型对大量单语语料进行翻译; 接着,将标记好的语料扩充到原有平行语料上,重新训练翻译模型.
3.2 协同训练(co-training)介绍由于原有平行语料数量稀少,得到的翻译模型质量较差,当用较差的模型对单语数据进行翻译时,会得到一些质量不佳的标记数据,因此需要对自训练进行改进.考虑到当一个文档可能被翻译为另一个语言的文档时,那它也很有可能被翻译为其他多种语言的文档,即存在多端相互平行的语料[9].协同训练利用已有的平行语料训练出来的模型,对多源端相互平行语料进行到目标端的标记,以提高其标记质量,再利用高质量的标记语料进行语料扩充并重新训练出更好的翻译模型.图2~4为传统统计机器翻译系统以“芬兰语-爱沙尼亚语-匈牙利语-英语”为例的协同训练的训练过程[6]:首先,如图2,利用3对平行语料训练出3个基础模型M_fi_en,M_et_en,M_hn_en; 其次,如图3,利用训练好的翻译模型分别对多源端相互平行语料(“芬兰语-爱沙尼亚语-匈牙利语”两两相互平行)进行翻译,并挑选出最好的翻译结果; 最后,如图4,将最好的翻译结果组成平行语料在原有平行语料上进行扩充,重新训练模型.
图3 对多源端相互平行语料进行标记并挑选最好的结果
Fig.3 Marking multiple sources of parallel corpus and choosing the best results图4 将标记好的语料对原有语料进行扩充并重新训练模型
Fig.4 Enlarging the original corpus with the newly labelled corpus and retraining the model在该方法中,最关键的步骤是图3所示的挑选最好的翻译结果.统计机器翻译中使用的协同训练方法挑选最好的翻译结果时使用了参考翻译[6],然而在实际情况中,假若参考翻译已经存在,则直接把参考翻译作为翻译质量最佳的结果进行语料扩充即可.因此,在传统的统计机器翻译中采用协同训练方法仅仅是在理论上表明协同训练在统计机器翻译中是有效的,并没有解决协同训练中最根本的问题:在没有参考翻译的情况下,如何挑选出多个翻译结果中翻译质量最好的翻译结果?
3.3 新协同训练方法针对原有协同训练方法的不足,提出了两种新的协同训练的方法:新协同训练方法1和新协同训练方法2,以下是对这两种方法的介绍.
新协同训练方法1.将传统的统计机器翻译中的协同训练方法应用到神经机器翻译中,并探索统计机器翻译的协同训练方法中没有解决的关键问题——在没有使用参考翻译的情况下,如何从多个翻译结果中挑选翻译质量最佳的句子.在该问题上,本文中提出使用单语语料训练一个n元语法(n-gram)模型,利用n-gram模型测量多个翻译结果的困惑度(perplexity,PPL),比较翻译结果的PPL,将PPL最低的翻译结果作为翻译质量最好的结果.提出使用n-gram模型挑选翻译质量好的句子的基本思想是:挑选翻译质量好的句子进行训练,其最终目的是为了降低由扩充语料引入的大量的噪音; 翻译结果可以分为译文流利度高的句子和译文流利度不高的句子,采用n-gram模型能挑选出流利度高的句子,尽管不能保证其一定是翻译质量好的句子(译文流利度高不确保译文忠实度高,挑选出的译文流利度高的句子不能保证全是翻译质量好的句子),但在该挑选过程中,把那些流利度不高即噪音高的句子都过滤掉,所以挑选的结果总体上降低了原有翻译结果的噪音.除了挑选翻译质量最佳的句子不同之外,其他步骤依然如图2~4所示.
新协同训练方法2.尽管在新协同训练方法1中,本文中提出使用n-gram模型挑选翻译质量好的结果,但考虑到该方法依赖于多源端相互平行的语料,并且在多源端平行语料对应的目标端平行语料缺失的前提下进行协同训练(如果目标端存在则直接使用目标端语句即为质量最佳的语句).如果多源端相互平行语句能得以构建,往往其对应的目标端也能构建出来(因为一个文档被翻译为另外一种语言时,它也可能被翻译为其他多种不同的语言).而多源端相互平行语料的构建是在多对两两相互平行的语料的基础上,相比于多对两两相互平行的语料,其单语语料往往更容易获取且语料数量更多.因此新协同训练方法1在训练语料方面受到一定程度的限制.为了减少新协同训练方法1的限制条件,本文中提出新协同训练方法2,主要利用源端单语语料改善原有平行语料训练出的模型的翻译质量.其步骤如图5和图6所示:首先,如图5,利用原有平行语料训练出翻译模型M_s_t并对大量单语语料进行翻译; 接着,利用目标端单语语料训练出n-gram模型并测量上一步的翻译结果的PPL,并挑选出PPL小于指定参数x的平行语句,作为翻译质量好的句子; 且在原有平行语料上进行扩充、重新训练模型.该方法
图5 利用已有平行语料训练出翻译模型并对单语语料进行翻译
Fig.5 Use the existing parallel corpus to train the translation model and translate the monolingual corpus图6 n-gram模型测量图 5翻译结果的PPL并挑选PPL小于指定参数x的平行语句进行语料扩充
Fig.6 Using the n-gram model to measure the perplexity of the translation results in Fig. 5 and picking parallel sentences with perplexity less than the specified parameter x for corpus expansion与自训练的区别在于,其在自训练的基础上协同利用训练好的n-gram模型挑选翻译结果中翻译质量好的句子(去除噪音比较大的句子).
4 实 验
4.1 语料准备与实验设置下载欧洲议会平行语料库(欧洲议会平行语料库是目前互联网上可免费获取的非常规范的平行语料库,语料下载网址:http:∥www.statmt.org/europarl/)并根据实验需要构建多源端相互平行语料进行实验.多源端相互平行语料的构建方法如下(以“芬兰语(fi)-爱沙尼亚语(et)-匈牙利语(hu)-英语(en)”为例进行说明):首先,下载欧洲议会平行语料库,该语料库中都是两两相互平行的语料,且目标端为英语(en)挑选出“芬兰语(fi)-英语(en)”、“爱沙尼亚语(et)-英语(en)”、“匈牙利语(hu)-英语(en)”3对两两相互平行语料; 其次,以其中一对平行语料中的英语(en)端为基准,找出其中的每一句语句在另外两对两两相互平行语料中的英语端的位置,并记录它们的位置编号(如果在3端都存在的情况下则记录,否则不记录),根据记录的3个语句的编号即可找出3对两两相互平行的语料中多端相互平行的语料,即多源端平行语料“芬兰语(fi)-爱沙尼亚语(et)-匈牙利语(hu)-英语(en)”.
根据以上方法构建出多源端相互平行语料数量共57万句对,将其分为5份,每份11.4万句对.然后,将第3节中介绍的协同训练的方法应用到神经机器翻译中,并且在不同规模的语料上进行实验.
本文中用的神经机器翻译系统为本课题组基于Bahdanau等[1]的工作开发出来的基于注意力机制的神经机器翻译模型.其中,对训练语料的句子长度限制在50以下,源端和目标端的词向量维度设置为620,隐藏层维度设置为1 000,单词表大小设置为3万,采用adadelta方法[13]对参数进行更新,训练中batch的大小设置为80,丢包率[14]设置为0.5.
4.2 实验结果在fi-en、et-en和hu-en翻译任务上准备好5份平行语料(每组平行语料数量为11.4万句对),并针对不同方法在不同语料规模上分别进行了实验,总共进行了5组不同方法的实验.前4组实验的结果如表1所示,第5组实验的实验结果如表2所示.以下是对这5组实验的说明:第1组实验方法在表1中用“origin_data_enlarge”表示,翻译系统训练过程为:先用准备好的第1份语料训练出一个模型,接着用第1份加上第2份语料训练出第2个模型,如此反复,训练出5个不同语料数量规模的模型; 第2组实验在表1中用“self-training”表示,即第3.1节中的自训练方法在不同语料规模下训练出来的翻译模型:首先使用第1份语料训练出一个基础模型,接着使用训练好的模型对剩下的的4份语料的源端进行翻译,将源端语句翻译成对应的英语(en)目标端(此时假设目标端英语(en)是未知的),然后将翻译的结果在基础模型对应的语料中进行扩充并重新训练模型.第3组实验方法在表1中用“co-training_old” 表示,即第3.2节中的传统的统计机器翻译中使用到的协同训练方法:该方法先用第1份数据训练出基础模型,接着使用训练好的基础模型对接下来的4份语料进行翻译(这4份语料中的目标端仅用于接下来挑选翻译质量好的结果,即只作为参考翻译),并使用参考翻译挑选出多个翻译模型的多个翻译结果中质量最佳的一个(将翻译结果中的单词与参考翻译中的单词进行比较并统计翻译结果中的单词也在参考翻译中出现的数量,数量大的认为是翻译质量相对好的),进行语料扩充并重新训练出新的模型.第4组实验方法在表1中用“co-training_update”表示,即第3.3节中的新协同训练方法1.其与第3组实验的区别仅仅在于挑选翻译质量好的结果的过程中不再使用到参考翻译,而是利用单语语料训练出一个n-gram模型(本实验中n设置为4,单语语料使用本课题组内自己整理的英语端单语语料500万句对,本文中提到的n-gram模型都是相同的),使用该模型测试协同训练过程中多个翻译结果的句子的PPL,将PPL小的认为是翻译质量好的结果在原有语料上进行扩充并重新训练模型.第5组实验的实验方法即第4节介绍的新协同训练方法2,该方法主要使用源端单语语料,不再使用多源端相互平行语句.实验中首先利用第1份平行语料训练出基础翻译模型,接着使用训练好的翻译模型对剩余4份语料中的源端单语语料进行翻译(假设这4份语料中的目标端不存在),并使用n-gram模型测量基础翻译模型的翻译结果的PPL,将PPL不在同一数量级上的翻译结果去除(实验过程中发现翻译质量很差的句子的PPL都大于1 000,甚至超过10 000,而翻译质量相对好的句子的PPL从几十到几百不等,于是认为PPL超过1 000的句子极有可能存在极大的噪音,将其去除),进一步去除翻译结果中源端句子与目标端句子中句长比例超过一定倍数的句子(本文中认为“源端句长/目标端句长 > 3”或“目标端句长/源端句长 > 3”的句子是噪音大的语料,将其去除),并将噪音较低的平行语料结果在原语料基础上进行扩充并重新训练出翻译模型(对4份语料通过以上降噪方法得到的平行语料数量分别是8.8万、9.1万、8.6万、5.4万句对).
表1 不同方法在不同规模语料条件下的训练模型的最佳BLEU值
Tab.1 The best BLEU scores of the models trained by different methods under different corpus sizes%4.3 实验分析由于表1中的“origin_data_enlarge”方法使用的目标端语句是正确的语句(质量最佳),因此其机器汉语互译评估(BLEU)值表示不同语料规模情况下训练出来的最佳BLEU值,其他方法中的目标端语句都是通过训练出基础模型并对剩下4份语料中的源端语句进行翻译并挑选翻译质量好的结果(此时,假设目标端不存在或者仅用目标端语句作为参考语句而不是直接使用),所以其他方法的目标端语句的质量不如表1中的 “origin_data_enlarge”方法中目标端语句的质量,由于上述原因表1中“origin_data_enlarge”方法在不同语料规模下训练出来的翻译模型对应的BLEU值相比于其他方法是最高的.而其他方法在不同规模语料下训练出来的模型的最佳BLEU值相对较低,表明其他方法对源端语料进行标记不如正确的人工标记,即或多或少地引入了噪音.
从表1的实验结果中可以看出,对于self-training方法,随着语料的扩充,“fi-en”和“et-en”对应的实验的BLEU值先缓慢上升接着又降低,甚至最后还低于基础翻译模型的BLEU值,而“hu-en”在该实验方法下的BLEU值在一直下降.这是因为用训练出的基础模型对剩下的4份语料的源端语料进行标记的过程中产生了噪音,而每份语料中的噪音又不完全一致,当噪音不是太大的情况下,随着语料的扩充,训练出的新的模型相比于基础模型在翻译质量上会得到提升,但如果噪音过大,训练出的模型的翻译质量反而不如原有的基础模型,这也体现了在自训练的过程中进行降噪的必要性.
传统统计机器翻译中的协同训练方法和新协同训练方法1(co-training_update)的目的都是在自训练的基础上提高语料标记质量,即降低噪音.co-training_old方法依赖多源端相互平行语料,在自训练的基础上结合参考翻译挑选出多个结果中翻译质量最佳的结果,由表1中可以看出,在使用参考翻译挑选翻译质量好的结果的情况下,随着语料数量的增加,新训练出的翻译模型的翻译质量总体呈上升趋势.然而该方法使用了参考翻译,实际情况中往往参考翻译是不存在的.对于co-training_update方法,由表1中的实验结果可以看出,该方法在不同语料规模下训练出的翻译模型的最佳BLEU值比co-training_old方法的低一些,总体上也呈上升趋势.这表明使用参考翻译挑选翻译质量好的翻译结果更为准确,引入的噪音更低.正如前文所述译文中噪音较大的句子包括译文不流利的句子和译文流利但译文忠实度不高的句子,使用n-gram模型挑选句子能将译文不流利的句子过滤掉,尽管不能保证挑选的一定是翻译质量好的句子,但在该挑选过程中,把那些流利度不高即噪音高的句子都过滤掉,所以挑选的结果总体上降低了原有翻译结果的噪音; 使用n-gram模型挑选翻译质量好的结果尽管没有使用参考翻译挑选的结果好,但实际应用中往往参考翻译不存在,所以使用n-gram模型挑选翻译质量好的结果显得更切合实际应用.
新协同训练方法2(co-training_new)的实验结果如表2所示.可以发现,通过该方法进行降噪之后,扩充的训练语料数量相比于“co-training_old”和“co-training_update”方法中的语料数量变少了,而实验结果总体上都不比“co-training_update”差,与使用参考翻译的“co-training_old”方法相比,尽管新协同训练方法2在fi-en和et-en的实验上略微差些,而在hu-en实验上都强于“co-training_old”方法.这是因为在先前的协同训练方法上,从多个翻译结果中挑选出翻译质量好的结果是挑选出多个翻译结果中翻译质量相对好的结果,当多个翻译结果的翻译质量都很差时,挑选的相对好的翻译结果的翻译质量也很差,如果不将其去除,依然会引入较大的噪音.在新协同训练方法2中,使用n-gram模型将译文PPL超过某一阈值的译文去掉,确保译文流利度不高的句子即噪音大的句子被过滤掉,总体上降低噪音; 而且该方法不需要使用参考翻译和多源端相互平行语料,有更广泛的适用性.
5 结 论
本文中在神经机器翻译系统中使用协同训练方法,并证明该方法在神经机器翻译系统中的有效性; 同时指出传统的统计机器翻译中使用的协同训练方法的局限性,提出新的协同训练方法以去除噪音大的平行句对,并说明了新协同训练方法的有效性与适用性.本研究的主要实验目的是探索如何利用大量单语语料改善原有平行语料训练出来的翻译模型的质量,主要实验思想是进行平行语料的扩充.在未来工作中,我们会继续研究如何使用更好的方法挑选出质量更高的平行语料(即如何更好地降低训练语料中的噪音)进而训练出更高质量的翻译模型.
- [1] BAHDANAU D,CHO K,BENGIO Y.Neural machine translation by jointly learning to align and translate[EB/OL].[2018-10-01].http:∥arxiv.org/abs/1409.0473.
- [2] SUTSKEVER I,VINYALS O,LE Q V.Sequence to sequence learning with neural networks[EB/OL].[2018-10-01].http:∥arxiv.org/abs/1409.3215.
- [3] BARRET Z,DENIZ Y,JONATHAN M,et al.Transfer learning for low-resource neural machine translation[EB/OL].[2018-10-01].http:∥arxiv.org/abs/1604.02201.
- [4] BLUM A,MITCHELL T.Combining labeled and unlabeled data with co-training[C]∥Proceedings of the 11th Annual Conference on Computational Learning Theory(COLT).New York:ACM,1998:92-100.
- [5] NIGAM K,GHANIR.Analyzing the effectiveness and applicability of co-training[C]∥Proceedings of the 9th International Conference on Information and Knowledge Management(CIKM).McLean,Virginia:ACM,2000:86-93.
- [6] CALLISON-BURCH C.Co-training for statistical machine translation[EB/OL].[2018-10-01].http:∥www.cis.upenn.edu/~ccb/publications/msc-thesis.pdf.
- [7] LIANG P.Semi-supervised learning for natural language[D].Cambridge:Massachusetts Institute of Technology,2005:1-86.
- [8] SENNRICH R,HADDOW B,BIRCH A.Improving neural machine translation models with monolingual data[EB/OL].[2018-10-01].http:∥arxiv.org/abs/1511.06709.
- [9] KAY M.Triangulation in translation[EB/OL].[2018-10-01].http:∥clu.uni.no/icame/corpora/2000-3/0119.
- [10] ZOPH B,KNIGHT K.Multi-source neural translation[EB/OL].[2018-10-01].http:∥arxiv.org/abs/1601.00710.
- [11] JOHNSON M,SCHUSTER M,LE Q V,et al.Google's multilingual neural machine translation system:enabling zero-shot translation[EB/OL].[2018-10-01].http:∥arxiv.org/abs/1611.04558.
- [12] KOEHN P.Pharaoh:a beam search decoder for phrase-based statistical machine translation models[M]∥Machine translation:from real users to research.Berlin Heidelberg:Springer,2004:115-124.
- [13] MATTHEW D,ZEILER.ADADELTA:an adaptive learning rate method[EB/OL].[2018-10-01].http:∥arxiv.org/abs/1212.5701.
- [14] SRIVASTAVA N,HINTON G,KRIZHEVSKY A,et al.Dropout:a simple way to prevent neural networks from overfitting[J].Journal of Machine Learning Research,2014,15(1):1929-1958.