基于Transformer的蒙汉神经机器翻译研究

2020-03-11 12:51苏依拉牛向华赵亚平范婷婷仁庆道尔吉
计算机应用与软件 2020年2期
关键词:解码器粒度编码器

高 芬 苏依拉 牛向华 赵亚平 范婷婷 仁庆道尔吉

(内蒙古工业大学信息工程学院 内蒙古 呼和浩特 010080)

0 引 言

机器翻译(Machine Translation, MT)是借助机器之力,自动地将一种自然语言(源语言)翻译成为另外一种自然语言(目标语言)[1]。机器翻译的思想最早于1949年提出,从早期的词典匹配,到词典结合语言学专家知识的规则翻译,到基于语料库的统计机器翻译,再到当前主流的神经网络机器翻译(Neural Machine Translation, NMT),机器翻译经历了一个漫长的发展过程。神经网络机器翻译[2]是一种使用深度学习算法通过神经网络获取自然语言之间的映射关系的方法。NMT模型与统计机器翻译(Statistical Machine Translation, SMT)模型的不同之处在于其学习到的映射关系是非线性的,并且其使用连接编码器和解码器的状态向量来描述语义的等价关系。NMT自2014年被提出以来,应用递归神经网络(Recursive Neural Network, RNN)、卷积神经网络(Convolutional Neural Networks, CNN)、注意力机制(Attention Mechanism)等技术不断提升翻译系统的性能,2016年已基本全面取代SMT成为主流机器翻译方法。

序列到序列(Sequence to Sequence, Seq2seq)[3]是一种深度学习[4]算法,在机器翻译方面有广泛的应用。Seq2Seq模型由编码器和解码器两个部分来构成,其中编码器将源句总结为矢量表示,解码器从矢量中逐字生成目标句。

传统的基于CNN或RNN的Seq2Seq模型都存在一定的不足:CNN虽然能够实行并行计算,计算更高效,但是不能直接处理过长的序列样本;而RNN虽然可以处理长序列问题,但RNN的运行严格遵循从左到右或者从右到左的顺序,一次处理一个单词,不能完全并行计算。此外,Facebook 2017年提出的完全基于CNN架构的Seq2Seq模型能捕捉长距离依赖问题[5],最大优点是在训练阶段所有的元素计算可以实现完全并行,但非常占内存,在大数据量上调整参数并不容易。

针对以上提到的基于CNN和RNN的Seq2Seq模型存在的不足,2017年6月,谷歌发布了一种新的机器学习框架Transformer[6],其主体是基于自注意力机制[7]来构造编码器和解码器,独特之处是搭建了完全基于注意力机制的Seq2Seq模型。该模型高度并行工作,在任务表现、并行能力和易于训练性方面都有大幅的提高。该模型在机器翻译及其他语言理解任务上的表现远远超越了现有算法。

机器翻译的发展使得稀少资源语言和少数民族语言的机器翻译任务也获得了更多的关注。但是由于蒙古语自然语言处理研究起步较晚以及蒙古语本身语法形态变化相比英、汉等语言更为复杂,使得蒙汉翻译的研究进展相对缓慢。因此蒙汉机器翻译的发展有较大的提升空间。蒙汉机器翻译的研究将促进蒙古族语言文化与经济的繁荣、发展和科技进步,同时为其他少数民族语言开展相关研究提供一定的参考价值,具有一定的理论指导价值和现实意义。

由于蒙古语属于阿尔泰语系,汉语属于汉藏语系,故两种语言在形态学、结构学等方面都有很大的不同。蒙古语在形态学方面以词根或词干为基础,后接附加成分派生新词进行词形变化;名词、代词、形容词、数词、副词、后置词和形动词,都有人称、数或格的语法范畴;动词都有时、体、态、式等语法范畴。在结构学方面,句子中的语序都有一定的规律。通常主语在前,谓语在后,修饰语在被修饰语之前,谓语在宾语之后。而选择合适的切分粒度对蒙汉机器翻译效果有很大的影响[8],故蒙汉两种语料的切分方式应有所区别。

1 神经网络机器翻译

1.1 Transformer

Transformer框架的设计是把序列中的所有单词并行处理,同时借助自注意力机制可以将上下文与较远的单词结合起来。在每个步骤中,每一个符号的信息都可以借助自注意力机制与其他所有的符号进行沟通。Transformer与固有定式不同,它没有使用任何的CNN或者RNN结构,Transformer的训练速度比RNN快很多,而且其翻译结果也比RNN好得多。

如图1所示,不同于以往主流机器翻译使用基于RNN的seq2seq模型框架,Transformer框架用注意力机制代替了RNN搭建了整个模型框架。Transformer框架总体上依旧是Encoder-Decoder结构,图1左边是编码器,右边是解码器,是一个完全基于注意力机制的编码器-解码器模型。编码器由N个网络块组成,每一个块中包含一个多头注意力子层和前馈神经网络子层。解码器的网络块一般与编码器网络块相同,也是由N(一般为6)个网络块组成,不过解码器的网络块中多了一个Masked多头注意力层。为了更好地优化深度网络,整个网络使用了残差连接[9]并对层进行了规范化(Add & Norm)[10]。

图1 Transformer框架

1.1.1注意力机制

深度学习中的注意力机制和人类的选择性视觉注意力机制相似,都是从大量重要信息中忽略大多不重要的信息,筛选出少量重要信息并聚焦到这些重要信息上。其核心内容是为输入向量的每个单词学习一个权重。在计算注意力的时候主要分为三步:首先将query和key进行相似度计算权重,然后使用softmax函数进行归一化,最后将权重和对应的键值对value进行加权求和。一般key=value。计算公式表示为:

Attention(Q,K,V)=softmax(sim(Q,K))V

(1)

图2 放缩点积注意力

放缩点积注意力计算式表示为:

(2)

多头注意力结构如图3所示,可以理解为在参数不共享的情况下,多次执行放缩点积注意力,通过h个不同的线性变换对Q、K、V进行投影,然后将不同的注意力结果拼接起来,最后通过一个线性映射输出。这样的好处是可以允许模型在不同的表示子空间里学习到相关的信息。

图3 多头注意力

通过多头注意力,模型能够获得不同子空间下的位置信息,多头注意力计算公式为:

MultiHead(Q,K,V)=Concat(head1,head2,…,headh)W

(3)

(4)

首先在编码器端使用了多头注意力进行连接,K、V分别是编码器层的输出(K=V),Q是解码器中多头注意力的输入。利用编码器和解码器注意力来进行翻译对齐,然后在编码器和解码器中都使用多头自注意力来学习文本的表示。自注意力即K=V=Q,其实质就是输出序列即为输入序列,因而自己计算自己的注意力部分。例如输入一个句子,如图4所示,一个句子里面的每个词都要和该句子中的所有词进行注意力计算(线条的粗细代表了权重的大小)。目的是学习句子内部的词依赖关系,捕获句子的内部结构。自注意力已经被证实在机器翻译任务上效果显著[11]。

图4 自注意力

1.1.2位置编码

由于每个单词的位置与翻译相关,所以编码每个单词的位置很重要。在RNN结构中,位置信息被自动记录在RNN循环的隐藏层中,而在Transformer模型中,由于没有采用任何循环或者卷积,为了使用序列的顺序信息,需要将相对以及绝对位置信息注入到模型中,故引入位置编码,把位置编码应用在输入端,即编码了输入序列每个时刻输入的位置信息。具体计算式表示为:

PE(pos,2i)=sin(pos/100002i/dmodel)

(5)

PE(pos,2i+1)=cos(pos/100002i/dmodel)

(6)

式中:pos是该词在句子序列中的实际位置;i表示词向量的第i个维度;dmodel是词向量的维度。使用sin和cos来编码位置信息,可以使得两个位置之间的编码可以线性地互相表示,这样的编码方式既可以表示该词的绝对位置,也能表示相对位置。

1.1.3前馈神经网络

在图1中,每一个编码器和解码器模块最后都包含一个全连接前馈神经网络,它独立且相同地应用于每一个位置。前馈网络包含对输入进行两次线性变换。计算公式如下:

FFN(x)=max(0,xW1+b1)W2+b2

(7)

式中:x代表输入;W1表示第一次线性变换的参数矩阵;b1表示第一次线性变换的偏置向量;W2表示第二次线性变换的参数矩阵;b2表示第二次线性变换的偏置向量。

1.2 融合多粒度

研究表明,如果对齐语料数量过少,如只有十几万个句对,那么神经机器翻译模型会在这个小数据集上产生比较严重的过拟合,从而导致其性能低于传统的统计机器翻译模型[12],这被称为神经机器翻译的数据稀疏性问题(Low-resource Problem)。这个问题普遍存在而且非常关键,尤其是在小语种的翻译问题上。

如果稀疏性问题不解决,将会严重影响神经机器翻译在小语种上的翻译应用[13]。对语料进行切分,可以减少低频词,增加模型泛化能力,提高机器翻译效果。然而,大的切分粒度单元能够保存比较完整的局部特征,但是会加重数据稀疏问题。小的切分粒度单元可以缓解数据稀疏的问题,但是相比较会流失掉一些局部特征。因此本文尝试对蒙汉双语语料进行不同粒度的切分来缓解数据稀疏问题。

BPE算法[14]将切分粒度控制在字符和词之间的字粒度大小。该方法在翻译前将原有的单词拆解为更小粒度的高频子字单元[15]来缓解数据稀疏问题,提升模型的鲁棒性[8]。BPE的大概训练过程是首先将词分成一个个的字符,然后在词的范围内统计字符对出现的次数,每次将次数最多的字符对保存起来,直到循环次数结束。BPE算法包括两种:一种是将源语言和目标语言分别编码,可以使词表和文本的表示更加紧凑;另一种是将源语言和目标语言联合编码,可以尽可能保证原文和译文的子词切分方式统一。

中文分词指的是将一个汉字序列切分成一个个单独的词。Jieba分词是一个经典的中文分词工具,对于一段长文字,其分词原理大体可以分成三步:首先基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况;接着将每个句子构造成有向无环图,寻找最好的切分;最后对于连续的单字,采用HMM模型将其再次划分。

接下来,我们对“力促东矿公司和东达蒙古王两家四星级酒店开工建设。”这一句进行Jieba分词。以下是三步分词后的结果:

(1) 力促 东 矿 公司 和 东 达蒙 蒙古 王 两家 四星 四星级 星级 酒店 开工 建设。

(2) 力促 东 矿 公司 和 东 达 蒙古 王 两家 四星级 酒店 开工 建设。

(3) 力促 东矿 公司 和 东达 蒙古 王 两家 四星级 酒店 开工 建设。

先从总体上看,都是将一个整句划分为了不同的词,但是需要注意以下几点:

(1) 全模式下,“蒙”、“四”、“级”各出现了两次,“星”出现了三次,这意味着全模式是把所有的可能分词都列举了出来。

(2) 默认模式下,采用了动态规划查找最大概率路径,找出基于词频的最大切分组合。

(3) 当采用HMM模型时,“东矿”被当作一个词。这是因为“东矿”在词典中不被认为是一个词,因此切分方案将“东矿”分为两个词。采用HMM模型后,会对连续单字进行检测,将单字“东”和“矿”合为了一个词。“东达”也是同样的原理。

在蒙汉机器翻译中,不同大小的翻译单元对翻译结果影响巨大,而语料的切分粒度体现了翻译单元的大小。故本文实验中,首先对语料库进行了预处理,对中文分别进行了分词、分词+BPE以及分字+BPE处理,对蒙语进行了BPE处理,进行实验对比分析。

表1为对中文进行分词、分词+BPE以及分字+BPE处理后的结果。

表1 汉语进行不同粒度切分

从表1中可以看出,对中文进行了分词处理以后,一个汉字序列切分成一个一个单独的词。对中文进行分词又进行BPE处理后,“腹泻”变成了“腹”和“泻”,“国防部长”变成了“国”、“防”和“部长”,“盖茨”变成了“盖”和“茨”。BPE处理后由频率小的词转换成了频率高的词,因为汉语中字已经是最小的单语,故BPE处理分字之后的中文对其影响不大。对中文分字,切分成小粒度,一定程度上能够缓解数据稀疏。

从表2可以看出,对蒙文进行BPE技术处理之后,由低频词切成高频词;这种处理使得未登录词可以由粒度较小的子字单元拼接组成,从而缓解未登录词问题。

表2 蒙语进行BPE处理

系统整体架构如图5所示。

图5 系统架构图

2 实 验

2.1 实验设置

本文使用一台搭载GeForce GTX 1070 Ti GPU的工作站作为主要的实验设备,实验环境为Ubuntu16.04 Linux系统,Python 2.7.0。采用UTF-8编码格式作为蒙汉双语语料的编码格式。选用清华大学开源工具包THUMT/nmt进行蒙汉神经机器翻译模型训练。参数设置如下:隐藏层大小设置为512,过滤器大小设置为2 048;多头注意力机制设置为8头;Transformer的神经网络层数设置为6层。在训练中,使用Adam[16]优化算法。学习率初始值设置为0.6,使用Vaswani等[6]描述的学习率衰减策略。解码阶段采用集束搜索策略,beam width设置为4。长度惩罚因子α设置为0.6。迭代步数设置为100 000步。batch-size设置为6 250。采用BLEU值作为翻译译文质量的评测指标。

本文采用的对比基准系统是哈佛大学开源的神经机器翻译系统OpenNMT,它是基于LSTM[17]和注意力机制的机器翻译模型。实验环境为Ubuntu16.04 Linux系统,PyTorch 0.4.3。参数设定如下:编码器和解码器中LSTM神经网络的网络层数设置为4层,词向量维度设置为500,解码器中全局注意力机制中输入特征设置为500,输出特征设置为500,激活函数选择Tanh()。使用Adam优化算法。Dropout设置为0.3,迭代步数设置为100 000步,学习率设置0.1,学习率衰减速率设置为1,batch-size设置为64句。采用BLEU值作为翻译译文质量的评测指标。

本文实验的语料来源于CWMT提供的去重校正后的118 502句对蒙汉平行双语语料。在使用数据集训练模型之前,需要先将整个数据集分为训练集、验证集和测试集。本文划分好的训练集包含116 002句对蒙汉平行语料,验证集包含1 500句对蒙汉平行语料,测试集包含1 000句对蒙汉平行语料。

2.2 实验结果

表3为机器翻译模型BLEU值的对比分析,可以看到,基于Transformer的翻译模型比基于LSTM的翻译模型高9个BLEU值左右。BLEU值出现大幅提升的原因是Transformer翻译模型在语义提取和语义表达能力高于LSTM,翻译质量提高。在采用Transformer翻译模型中,对中文进行分字+BPE,蒙文进行BPE处理比对中文进行分词+BPE,蒙文BPE处理接近高接近13个BLUE值,可以得出在较小语料库中,汉文分字的效果优于汉文分词的效果。汉文分词效果差的原因是在较小语料库的情况下,大粒度的切分会放大数据稀疏问题,使得翻译效果不太好;而分词+BPE比单独使用分词后的BLEU值提高3.28,是因为BPE技术处理之后,由分词后的低频词切换成高频词,从一定程度上缓解数据稀疏问题。

表3 机器翻译模型对比

蒙汉机器翻译模型生成后,选用相同的蒙古语句子对不同模型进行测试,体现所述翻译模型的效果。结果如表4所示。

表4 机器翻译模型译文对比

通过与参考译文对比,可以看出基于Transformer的蒙汉翻译模型确实比基于LSTM的翻译模型翻译效果更好;同时对语料库进行不同粒度的切分也可以提高翻译译文的质量。

3 结 语

神经机器翻译发展迅速,在诸如英法、英德、中英等许多大语种翻译任务上均取得了突破性成果。但因为神经机器翻译的模型参数量庞大,且训练方法为极大似然估计,所以需要大量的对齐语料,比如数百万个句对,才能得到一个比较理想的翻译模型。

本文基于Transformer融合多粒度构建的蒙汉机器翻译模型,相比于基准系统基于LSTM的蒙汉机器翻译系统,在一定程度上提高了翻译准确率,提高了BLEU值。但是本文构建的蒙汉翻译模型是基于平行语料库的,而现阶段,蒙汉平行语料贫乏,平行语料库规模较小,故下一阶段我们将研究单语语料,目前有两个方向:一个是FaceBook的无监督神经机器翻译[18],目前性能还不足够好,但它仍在发展过程中;另一个是微软提出的对偶学习[19],也是利用非平行语料,通过对偶学习的方式提高性能。

猜你喜欢
解码器粒度编码器
基于ResNet18特征编码器的水稻病虫害图像描述生成
WV3650M/WH3650M 绝对值旋转编码器
超重力场中煤泥颗粒沉降规律研究①
WDGP36J / WDGA36J编码器Wachendorff自动化有限公司
基于Beaglebone Black 的绝对式编码器接口电路设计*
动态更新属性值变化时的最优粒度
基于Android环境下的数据包校验技术分析
浅谈SCOPUS解码器IRD—2600系列常用操作及故障处理
情感粒度
做一个二进制解码器