机器翻译基础
机器翻译的思想由来已久,约500年前,著名数学家笛卡尔提出了一种在统一的数字代码基础上编写字典的理念,不同语言中的相同思想共享一个符号,并与莱布尼兹等人试图来实现。在该思想的影响下,维尔金斯在1668中提出的中介语。中介语的设计试图将世界上所有的概念加以分类和编码,有规律地列出并描述所有的概念和实体,并根据它们各自的特点和性质,给予不同的记号和名称。
随后的时间,又有不少先驱为这一目标探索奋斗,包括法国、前苏联科学家们,但都无疾而终。
基于规则的机器翻译
机器翻译第一个被认可的实际研究项目出现于冷战背景下。1949年,资讯理论研究者WarrenWeave正式提出了机器翻译的概念。1954年,IBM与美国乔治敦大学合作公布了世界上第一台翻译机IBM-701。它能够将俄语翻译为英文,虽然身躯巨大,事实上它里面只内建了6条文法转换规则,以及250个单字。但即使如此,这仍是技术的重大突破,那时人类开始觉得应该很快就能将语言的高墙打破。实验以每秒打印两行半的惊人速度,成功将约60句俄文自动翻译成英文,被视为机器翻译可行的开端。
image.png随后,美苏两个超级大国出于对军事、政治和经济目的,均投入巨资来进行机器翻译研究——为此来获取更多敌方的情报。同时,欧洲国家由于地缘政治和经济的需要也对机器翻译研究给予了相当大的重视。中国早在1956年就把机器翻译研究列入了全国科学工作发展规划。1957年,中国科学院语言研究所与计算技术研究所合作开展了俄汉机器翻译试验,翻译了9种不同类型的句子。
当时,人们对机器翻译的高度期待和乐观主义情绪高涨,但是低估了问题的难度!尤其是自然语言翻译本身的复杂性及当时计算机软硬件系统的局限性。不久,人们失望的看到,各家机器翻译的效果都与期望相差甚远。泡沫很快要被刺破了。
1964年,美国科学院成立了语言自动处理咨询委员会。两年后,在委员会提出的报告中认为机器翻译代价昂贵,准确率低,速度慢于人工翻译,未来也不会达到人工翻译质量。结论就是给机器翻译的研究直接判了死刑,认为完全不值得继续投入。在接下来的十来年中,机器翻译研究从迅速跌入谷底,研究几乎完全停滞。
进入20世纪70年代,随着科学技术的发展和各国科技情报交流的日趋频繁,国与国之间的语言障碍显得更为严重,传统的人工作业方式已经远远不能满足需求,人们迫切地需要计算机来从事翻译工作。
这时候,现代语言之父乔姆斯基(Chomsky)的“转换生成语法”产生了深远影响力,学者们意识到,要想实现好的翻译效果,必须在理解语言的基础上进行翻译,从理解句法结构上下功夫。有了新思想信念的加持,再加上计算机软硬件系统飞速地发展,基于语法规则的机器翻译研究开始如火如荼地展开,相关技术、产品不断涌现。
但很快,基于规则的机器翻译就遇到了瓶颈。纯靠人工编纂、维护的规则很难全面、准确覆盖人类繁杂、凌乱、不断演化的语言现实,而且可拓展性很差。译文的准确率虽有进步,但依然达不到可用的预期。
自20世纪80年代开始,研究人员逐渐开始数据驱动的机器翻译方法。1980年,Martin Kay提出了翻译记忆方法,其基本思想在翻译新句子时从已经翻译好的老句子中找出相似部分来辅助新句翻译。1984年,长尾真(MakotoNagao)提出基于实例的机器翻译方法,它从实例库中提取翻译知识,通过增、删、改、替换等操作完成翻译。这些方法,在实践中都得以广泛应用。
统计机器翻译
20世纪80年代末起,基于数据和算法的统计学习方法在理论和应用层面都取得了飞速进展。极端的一个例子是,首个将统计模型引入语音识别和语言处理的现代语音识别和自然语言处理研究的先驱Frederick Jelinek曾有过如此令人惊讶的言论:
每当我开除一个语言学家,语音识别系统就更准确了。
于是,在基于规则的机器翻译受挫后,学者们开始全面转型统计机器翻译。标志性事件是,1990年在芬兰赫尔辛基召开的第13届国际计算语言学大会,会上提出了处理大规模真实文本的战略任务,开启了语言计算的一个新的历史阶段——基于大规模语料库的统计自然语言处理。
基于词的统计机器翻译模型处理的单元较小,后来逐渐发展起来的基于短语的方法成为统计机器翻译的主流工作。研究人员开始基于大规模的语料对照数据,构建模型,训练优化目标,自动化测评效果。这首次使得机器翻译趋于流程化,从而上了可以快速迭代的快车道。
具体地,Och在2003提出的基于最大熵的对数—线性模型和参数最小错误训练方法促使统计机器翻译方法能够将多种不同的特征函数融合进机器翻译模型中,并且自动学习它们各自的特征权重,使得翻译性能显著超越了其他传统机器翻译方法。此外,自动评测指标 BLEU的提出不仅避免了人工评价成本昂贵的弊端,而且可以直接成为模型优化的目标,极大地提高了统计机器翻译系统模型训练、迭代、更新的效率。
统计机器翻译方法的特点是几乎完全依赖对大规模双语语料库的自动学习、自动构造机器翻译系统。这种方法具有广泛的一般性,与具体语种无关,与语法细节无关,与语言的内容无关,自此也不再需要人工规则集。一些研究机构不断先后开源机器翻译系统,以促进学术研究,其中比较著名的是约翰霍普金斯大学教授,Philipp Koehn团队开发的Moses系统(http://www.statmt.org/moses/),常被作为学术论文中的对比基线。
21世纪初期开始,借助于互联网的发展,统计机器翻译系统逐渐从2B、2G走向全世界个体的2C。以谷歌、微软为代表的科研机构和企业均相继成立机器翻译团队并相继发布了能够支持世界上几十种、几百种常用语言的互联网机器翻译系统,迅速普及了机器翻译的应用场景,极大地提高了人们使用机器翻译的便利性。
神经网络机器翻译
随着深度学习的迅猛发展,以及在语音、图像识别领域取得巨大突破,越来越多的自然语言处理问题也开始采用深度学习技术。研究人员逐渐放弃了统计机器翻译框架中各子模型独立计算的模式,提出了端到端(end-to-end,句子到句子)的神经机器翻译模型架构。该架构由编码器和解码器两部分组成,其中编码器负责将源语言句子编码成一个实数值向量,然后解码器基于该向量解码出目标译文。
机器翻译本质上是序列到序列(sequenceto sequence)问题的一个特例,即源语言句子(源语言的词序列)到目标语言句子(目标语言的词序列)。Sutskever等在2014提出了基于循环神经网络(recurrent neuralnetwork, RNN)的编码器-解码器(encoder-decoder)架构,并用于序列到序列学习。他们使用一个循环神经网络将源语句中的词序列编码为一个高维向量,然后通过一个解码器循环神经网络将此向量解码为目标语句的词序列。他们将此模型应用于翻译任务,并在英法翻译任务上达到了媲美传统的统计机器翻译的效果,由此掀起了神经网络机器翻译的热潮。
2016年9月30日,Google发布了新版神经机器翻译(GNMT)系统,通过对维基百科和新闻网站选取的语句的测试,相比基于短语的统计翻译能减少55%到85%的翻译错误,在中英文翻译人工测评的准确率高达80%左右。面对机器的强悍,翻译从业人员们首次感受到了寒意,有翻译员甚至这样形容:
作为一名翻译员,看到这个新闻的时候,我理解了18世纪纺织工人看到蒸汽机时的忧虑与恐惧。
但机器翻译进化的脚步并没有停下来,随着注意力机制被引入,机器翻译的效果又有了飞速的提升。2017年以来,机器翻译人员抛弃了传统的RNN、CNN结构,采用完全基于注意力机制的Transformer模型,在效果、训练速度、性能等多个维度上都碾压之前所有模型。
image.png上图是采用了Transformer模型的百分点机器翻译系统的翻译演示案例,从上面的中文和翻译得到的英文来看,效果优秀,基本不用修改。
但是,神经网络机器翻译依旧存在不少待解决的重要问题,包括:
海量数据依赖:效果优异的翻译模型的训练普遍需要于上千万条平行语料,而现实中除了少量世界级大语种之间,很难有如此海量的语料。如何让模型学习少量的数据或者单边语料就能达到较好的效果是当前最亟待解决的问题。
易受噪音影响:当前模型非常容易受噪音的影响,我们在实际训练中发现,引入20%左右的低质量语料(比如意译味较浓的字幕翻译),就能使翻译效果迅速下降。如果训练模型能更稳健,那么可用的语料数量将大大提高。
专业领域翻译:在细分的专业领域内(比如医疗),专业语料本身的量会非常稀少,同时存在大量的专业词汇没有出现在训练语料中。如果能利用大量的普通语料和少量的专业语料来建立准确的专业领域机器翻译系统,那么机器翻译的应用场景将不仅仅局限于日常新闻领域,真正突破不同语言国家之间的文化、科技藩篱。
翻译风格问题:由于训练语料来源广而杂,同一类型的翻译在训练语料中的翻译方法可能由于翻译员的个人偏好而五花八门。因此,在用这些语料训练出来的模型,博采各家之所长,但也部分地博采各家之所短。因此,在用来翻译新的句子的时候,其结果会有很多不可预见性。如何对翻译模型中的知识进行提纯,得到风格统一的翻译模型是非常有挑战性的重要目标。
2013年~2014年不温不火的自然语言处理(NLP)领域发生了翻天覆地的变化,因为谷歌大脑的Mikolov等人提出了大规模的词嵌入技术word2vec,RNN、CNN等深度网络也开始应用于NLP的各项任务,全世界NLP研究者欢欣鼓舞、跃跃欲试,准备告别令人煎熬的平淡期,开启一个属于NLP的新时代。
在这两年机器翻译领域同样发生了“The Big Bang”。2013年牛津大学Nal Kalchbrenner和Phil Blunsom提出端到端神经机器翻译(Encoder-Decoder模型),2014年谷歌公司的Ilya Sutskerver等人将LSTM引入到Encoder-Decoder模型中。这两件事标志着以神经网络作为基础的机器翻译,开始全面超越此前以统计模型为基础的统计机器翻译(SMT),并快速成为在线翻译系统的主流标配。
2015年注意力机制和基于记忆的神经网络缓解了Encoder-Decoder模型的信息表示瓶颈,是神经网络机器翻译优于经典的基于短语的机器翻译的关键。2017年谷歌Ashish Vaswani等人参考注意力机制提出了基于自注意力机制的Transformer模型,Transformer家族至今依然在NLP的各项任务保持最佳效果。总结近十年NMT的发展主要历经三个阶段:一般的编码器-解码器模型(Encoder-Decoder)、注意力机制模型、Transformer模型。
新的曙光:Encoder-Decoder模型
上文已经提到在2013年提出的这种端到端的机器翻译模型。一个自然语言的句子可被视作一个时间序列数据,类似LSTM、GRU等循环神经网络比较适于处理有时间顺序的序列数据。如果假设把源语言和目标语言都视作一个独立的时间序列数据,那么机器翻译就是一个序列生成任务,如何实现一个序列生成任务呢?一般以循环神经网络为基础的编码器-解码器模型框架(亦称Sequence to Sequence,简称Seq2Seq)来做序列生成,Seq2Seq模型包括两个子模型:一个编码器和一个解码器,编码器、解码器是各自独立的循环神经网络,该模型可将给定的一个源语言句子,首先使用一个编码器将其映射为一个连续、稠密的向量,然后再使用一个解码器将该向量转化为一个目标语言句子。
编码器Encoder对输入的源语言句子进行编码,通过非线性变换转化为中间语义表示C:
image.png
在第i时刻解码器Decoder根据句子编码器输出的中间语义表示C和之前已经生成的历史信息y₁,y₂,……,yᵢ-₁来生成下一个目标语言的单词:
image.png image.png
每个yᵢ都依次这么产生,即seq2seq模型就是根据输入源语言句子生成了目标语言句子的翻译模型。源语言与目标语言的句子虽然语言、语序不一样,但具有相同的语义,Encoder在将源语言句子浓缩成一个嵌入空间的向量C后,Decoder能利用隐含在该向量中的语义信息来重新生成具有相同语义的目标语言句子。总而言之,Seq2Seq神经翻译模型可模拟人类做翻译的两个主要过程:
- 编码器Encoder解译来源文字的文意;
- 解码器Decoder重新编译该文意至目标语言。
突破飞跃:注意力机制模型
Seq2Seq模型的局限性
Seq2Seq模型的一个重要假设是编码器可把输入句子的语义全都压缩成一个固定维度的语义向量,解码器利用该向量的信息就能重新生成具有相同意义但不同语言的句子。由于随着输入句子长度的增加编解码器的性能急剧下降,以一个固定维度中间语义向量作为编码器输出会丢失很多细节信息,因此循环神经网络难以处理输入的长句子,一般的Seq2Seq模型存在信息表示的瓶颈。
一般的Seq2Seq模型把源语句跟目标语句分开进行处理,不能直接地建模源语句跟目标语句之间的关系。那么如何解决这种局限性呢?2015年Bahdanau等人发表论文首次把注意机制应用到联合翻译和对齐单词中,解决了Seq2Seq的瓶颈问题。注意力机制可计算目标词与每个源语词之间的关系,从而直接建模源语句与目标语句之间的关系。注意力机制又是什么神器,可让NMT一战成名决胜机器翻译竞赛呢?
注意力机制的一般原理
通俗地解释,在数据库里一般用主键Key唯一地标识某一条数据记录Value,访问某一条数据记录的时候可查询语句Query搜索与查询条件匹配的主键Key并取出其中的数据Value。注意力机制类似该思路,是一种软寻址的概念:假设数据按照<Key, Value>存储,计算所有的主键Key与某一个查询条件Query的匹配程度,作为权重值再分别与各条数据Value做加权和作为查询的结果,该结果即注意力。因此,注意力机制的一般原理(参考上图):首先,将源语句中的构成元素想象成是由一系列的<Key, Value>数据对构成,目标语句由一序列元素Query构成;然后给定目标语句中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数;最后,可对Value进行加权,即得到最终的Attention数值。因此,本质上注意力机制是对源语句中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。一般性计算公式为:
image.png
在机器翻译中Seq2Seq模型一般是由多个LSTM/GRU等RNN层叠起来。2016年9月谷歌发布神经机器翻译系统GNMT,采用Seq2Seq+注意力机制的模型框架,编码器网络和解码器网络都具有8层LSTM隐层,编码器的输出通过注意力机制加权平均后输入到解码器的各个LSTM隐层,最后连接softmax层输出每个目标语言词典的每个词的概率。
GNMT如何计算让性能大幅提升的注意力呢?假设(X,Y)为平行语料的任一组源语句-目标语句对,则:
- 源语句长度为M的字符串:
- 目标语句长度为N的字符串:
- 编码器输出d维向量作为h的编码:
利用贝叶斯定理,句子对的条件概率:
image解码时解码器在时间点i根据编码器输出的编码和前i-1个解码器输出,最大化P(Y|X)可求得目标词。
GNMT注意力机制实际的计算步骤如下:
image.png image.png高光时刻:基于自注意力机制的Transformer模型
我们提到基于seq2seq+注意力机制比一般的seq2seq的模型架构取得了更好的效果,那么这种组合有什么缺点呢?事实上循环神经网络存在着一个困扰研究者已久的问题:无法有效地平行运算,但不久研究者就等来了福音。2017年6月Transformer模型横空问世,当时谷歌在发表的一篇论文《Attention Is All You Need》里参考了注意力机制,提出了自注意力机制(self-attention)及新的神经网络结构——Transformer。
该模型具有以下优点:
- 传统的Seq2Seq模型以RNN为主,制约了GPU的训练速度,Transformer模型是一个完全不用RNN和CNN的可并行机制计算注意力的模型;
- Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行计算,并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。
Transformer模型架构
Transformer模型本质上也是一个Seq2Seq模型,由编码器、解码器和它们之间的连接层组成,如下图所示。在原文中介绍的“The Transformer”编码器:编码器Encoder由N=6个完全相同的编码层Encoder layer堆叠而成,每一层都有两个子层。第一个子层是一个Multi-Head Attention机制,第二个子层是一个简单的、位置完全连接的前馈网络Feed-Forward Network。我们对每个子层再采用一个残差连接Residualconnection,接着进行层标准化Layer Normalization。每个子层的输出是LayerNorm(x+Sublayer(x)),其中Sublayer(x)是由子层本身实现的函数。
“The Transformer”解码器:解码器Decoder同样由N=6个完全相同的解码层Decoder Layer堆叠而成。除了与每个编码器层中的相同两个子层之外,解码器还插入第三个子层(Encoder-Decoder Attention层),该层对编码器堆栈的输出执行Multi-HeadAttention。与编码器类似,我们在每个子层再采用残差连接,然后进行层标准化。
Transformer模型计算attention的方式有三种:
- 编码器自注意力,每一个Encoder都有Multi-Head Attention层;
- 解码器自注意力,每一个Decoder都有Masked Multi-Head Attention层;
-
编码器-解码器注意力,每一个Decoder都有一个Encoder-Decoder Attention,过程和过去的seq2seq+attention的模型相似。
image.png
自注意力机制
Transformer模型的核心思想就是自注意力机制(self-attention),能注意输入序列的不同位置以计算该序列的表示的能力。自注意力机制顾名思义指的不是源语句和目标语句之间的注意力机制,而是同一个语句内部元素之间发生的注意力机制。而在计算一般Seq2Seq模型中的注意力以Decoder的输出作为查询向量q,Encoder的输出序列作为键向量k、值向量v,Attention机制发生在目标语句的元素和源语句中的所有元素之间。
自注意力机制的计算过程是将Encoder或Decoder的输入序列的每个位置的向量通过3个线性转换分别变成3个向量:查询向量q、键向量k、值向量v,并将每个位置的q拿去跟序列中其他位置的k做匹配,算出匹配程度后利用softmax层取得介于0到1之间的权重值,并以此权重跟每个位置的v作加权平均,最后取得该位置的输出向量z。下面介绍self-attention的计算方法。
可缩放的点积注意力
image.png可缩放的点积注意力即如何使用向量来计算自注意力,通过四个步骤来计算自注意力:
- 从每个编码器的输入向量(每个单词的词向量)中生成三个向量:查询向量q、键向量k、值向量v。矩阵运算中这三个向量是通过编解码器输入X与三个权重矩阵Wᴼ̴、Wᴷ、Wᵛ相乘创建的。
2)计算得分。图示例子输入一个句子“Thinking Machine”,第一个词“Thinking”计算自注意力向量,需将输入句子中的每个单词对“Thinking”打分。分数决定了在编码单词“Thinking”的过程中有多重视句子的其它部分。分数是通过打分单词(所有输入句子的单词)的键向量k与“Thinking”的查询向量q相点积来计算的。比如,第一个分数是q₁和k₁的点积,第二个分数是q₁和k₂的点积。
3)缩放求和:将分数乘以缩放因子1/√dₖ (dₖ是键向量的维数dₖ=64)让梯度更稳定,然后通过softmax传递结果。softmax的作用是使所有单词的分数归一化,得到的分数都是正值且和为1。softmax分数决定了每个单词对编码当下位置(“Thinking”)的贡献。
4)将每个值向量v乘以softmax分数,希望关注语义上相关的单词,并弱化不相关的单词。对加权值向量求和,然后即得到自注意力层在该位置的输出zᵢ。
因此,可缩放的点积注意力可通过下面公式计算:
image.png
在实际中,注意力计算是以矩阵形式完成的,以便算得更快。那我们接下来就看看如何用通过矩阵运算实现自注意力机制的。
首先求取查询向量矩阵Q、键向量矩阵K和值向量矩阵V,通过权重矩阵Wᴼ̴、Wᴷ、Wᵛ与输入矩阵X相乘得到;同样求取任意一个单词的得分是通过它的键向量k与所有单词的查询向量q相点积来计算的,那么我们可以把所有单词的键向量k的转置组成一个键向量矩阵Kᵀ,把所有单词的查询向量q组合在一起成为查询向量矩阵Q,这两个矩阵相乘得到注意力得分矩阵A=QKᵀ;然后,对注意力得分矩阵A求softmax得到归一化的得分矩阵A^,这个矩阵在左乘以值向量矩阵V得到输出矩阵Z。
image.png多头注意力
image.png如果只计算一个attention,很难捕捉输入句中所有空间的信息,为了优化模型,原论文中提出了一个新颖的做法——Multi-Head Attention。Multi-Head Attention是不能只用嵌入向量维度dmodel的K,Q,V做单一attention,而是把K,Q,V线性投射到不同空间h次,分别变成维度dq,dₖ,dᵥ再各自做attention。
其中,dq=dₖ=dᵥ=dmodel/h=64就是投射到h个Head上。Multi-Head Attention允许模型的不同表示子空间联合关注不同位置的信息,如果只有一个attention Head则它的平均值会削弱这个信息。
Multi-Head Attention为每个Head保持独立的查询/键/值权重矩阵Wᴼ̴ᵢ、Wᴷᵢ、Wᵛᵢ,从而产生不同的查询/键/值矩阵(Qᵢ、Kᵢ、Vᵢ)。用X乘以Wᴼ̴ᵢ、Wᴷᵢ、Wᵛᵢ矩阵来产生查询/键/值矩阵Qᵢ、Kᵢ、Vᵢ。与上述相同的自注意力计算,只需八次不同的权重矩阵运算可得到八个不同的Zᵢ矩阵,每一组都代表将输入文字的隐向量投射到不同空间。最后把这8个矩阵拼在一起,通过乘上一个权重矩阵Wᵒ,还原成一个输出矩阵Z。
Multi-Head Attention的每个Head到底关注句子中什么信息呢?不同的注意力的Head集中在哪里?以下面这两句话为例“The animal didn’t crossthe street because it was too tired”和“The animal didn’t cross the street because it was too wide”,两个句子中"it"指的是什么呢?“it"指的是"street”,还是“animal”?当我们编码“it”一词时,it的注意力集中在“animal”上和“street”上,从某种意义上说,模型对“it”一词的表达在某种程度上是“animal”和“street”的代表,但是在不用语义下,第一句的it更强烈地指向animal,第二句的it更强烈的指向street。
Transformer模型其他结构
残差连接与归一化
编解码器有一种特别的结构:Multi-HeadAttention的输出接到Feed-forward layer之间有一个子层:residual connection和layer normalization(LN),即残差连接与层归一化。残差连接是构建一种新的残差结构,将输出改写为和输入的残差,使得模型在训练时,微小的变化可以被注意到,该方法在计算机视觉常用。
在把数据送入激活函数之前需进行归一化,因为我们不希望输入数据落在激活函数的饱和区。LN是在深度学习中一种正规化方法,一般和batch normalization(BN)进行比较。BN的主要思想就是在每一层的每一批数据上进行归一化,LN是在每一个样本上计算均值和方差,LN的优点在于独立计算并针对单一样本进行正规化,而不是BN那种在批方向计算均值和方差。
前馈神经网络
编解码层中的注意力子层输出都会接到一个全连接网络:Feed-forward networks(FFN),包含两个线性转换和一个ReLu,论文是根据各个位置(输入句中的每个文字)分别做FFN,因此称为point-wise的FFN。计算公式如下:
image.png线性变换和softmax层
解码器最后会输出一个实数向量。如何把浮点数变成一个单词?这便是线性变换层要做的工作,它之后就是softmax层。线性变换层是一个简单的全连接神经网络,它可以把解码器产生的向量投射到一个比它大得多的、被称作对数几率(logits)的向量里。
不妨假设我们的模型从训练集中学习一万个不同的英语单词(我们模型的“输出词表”)。因此对数几率向量为一万个单元格长度的向量——每个单元格对应某一个单词的分数。接下来的softmax层便会把那些分数变成概率(都为正数、上限1.0)。概率最高的单元格被选中,并且它对应的单词被作为这个时间步的输出。
位置编码
Seq2Seq模型的输入仅仅是词向量,但是Transformer模型摒弃了循环和卷积,无法提取序列顺序的信息,如果缺失了序列顺序信息,可能会导致所有词语都对了,但是无法组成有意义的语句。作者是怎么解决这个问题呢?为了让模型利用序列的顺序,必须注入序列中关于词语相对或者绝对位置的信息。在论文中作者引入Positional Encoding:对序列中的词语出现的位置进行编码。下图是20个词512个词嵌入维度上的位置编码可视化。
将句子中每个词的“位置编码”添加到编码器和解码器堆栈底部的输入嵌入中,位置编码和词嵌入的维度dmodel相同,所以它俩可以相加。论文使用不同频率的正弦和余弦函数获取位置信息:
image.png其中pos是位置,i是维度,在偶数位置使用正弦编码,在奇数位置使用余弦编码。位置编码的每个维度对应于一个正弦曲线。
Transformer模型毋庸置疑是当前机器翻译的主流模型,面对谷歌等科技巨头公司强大的实力,百分点认知智能实验室如何采用Transformer模型研制具有市场竞争力、工业级的多语言神经翻译系统呢?第4部分将为您娓娓道来。
工业级多语言神经翻译模型实践
多语言模型翻译框架
谷歌GNMT采用对多种语言的巨大平行语料同时进行训练得到一个可支持多种源语言输入多种目标语言输出的神经翻译模型,但该方法需要昂贵的计算资源支持训练和部署运行。
百分点的神经翻译系统Deep Translator目前支持中文、英文、日文、俄文、法文、德文、阿拉伯文、西班牙文、葡萄牙文、意大利文、希伯来文、波斯文等20多个语言数百个方向两两互译,如何在有限的服务器资源的条件下进行模型训练与在线计算呢?
不同于谷歌GNMT采用多语言单一翻译模型的架构,研发团队提出的Deep Translator的多语言翻译模型为多平行子模型集成方案。该方案有两个主要特点:一是模型独立性,针对不同语言方向训练不同的翻译模型;二是“桥接”翻译,对于中文到其他语言平行语料较少的语言方向,以语料资源较为丰富的英文作为中间语言进行中转翻译,即先将源语言翻译为英文,再将英文翻译为目标语言。
采取上述方案研发团队有何深度思考呢?第一点,不同于谷歌面向全球的互联网用户,国内企业最终用户语种翻译需求明确且要求系统本地化部署,对部分语言方向如英中、中俄等翻译质量要求较高,同时希望这些语言方向的翻译效果能持续提升,发现问题时能及时校正,而其他使用频次较低的翻译模型能保证其稳定性,这导致高频使用的语言模型更新频率会较高,低频使用的语言模型更新频率较低。若将多语言方向的模型统一在一个框架下,既增加模型复杂度也影响模型稳定性,因为升级一个语言方向,势必会对整个模型参数进行更新,这样其他语言方向的翻译效果也会受到影响,每次升级都要对所有语言方向进行效果评测,若部分翻译效果下降明显还要重新训练,费时费力。而独立的模型结构对一种语言方向的参数优化不会影响到其他语言方向的翻译效果,在保证系统整体翻译效果稳定性的基础上又大大减少了模型更新的工作量。
第二点,工业级可用的神经机器翻译模型对平行语料质量要求较高,一个可用的翻译模型需要千万级以上的平行训练语料,系统支持的语言方向相对较多,现阶段很多语言方向很难获取足够的双边训练数据。针对这个问题的解决方案一般有两种,一是采用无监督翻译模型,这种翻译模型只需单边训练语料,而单边训练语料相对容易获取,但缺点是目前无监督翻译模型成熟度较低翻译效果难以满足使用需求;二是采用“桥接”的方式,因为不同语言同英文之间的双边语料相对容易获取,缺点是经英文转译后精度有所损失,且计算资源加倍执行效率降低。通过对用户需求进行分析发现用户对翻译效果的要求大于执行效率的要求,且通过对两种模型翻译效果的测评对比,“桥接”结构的翻译效果优于目前无监督翻译模型,所以最终选择通过英文“桥接”的框架结构。
十亿级平行语料构建
平行语料是神经机器翻译研究者梦寐以求的资源,可以毫不夸张地说在突破Transformer模型结构之前平行语料资源就是机器翻译的竞争力!不论谷歌、脸书如何从海量的互联网爬取多少平行语料,在行业领域的平行语料永远是稀缺资源,因为行业领域大量的单边语料(电子文档、图书)、专业的翻译工作者的翻译成果并不在互联网上。这些资源的获取、整理成平行语料并不免费,需要大量的人工,因此是神经机器翻译深入行业应用的拦路虎。
image.png认知智能实验室如何构建自有的多语种平行语料库呢?除了获取全世界互联网上开放的语料库资源,开发团队设计一种从电子文档中的单边语料构建领域平行语料的模型与工具,可较为高效地构建高质量的行业领域平行语料支撑模型训练。从单边语料构建平行语料需经过分句和句子对齐,那么如何从上千万句单边语料计算语句语义的相似性?开发团队提出通过给译文分类的方式学习语义相似性:给定一对双语文本输入,设计一个可以返回表示各种自然语言关系(包括相似性和相关性)的编码模型。利用这种方式,模型训练时间大大减少,同时还能保证双语语义相似度分类的性能。由此,实现快速的双语文本自动对齐,构建十亿级平行语料。
经过整理网上开源的平行语料与构建行业级平行语料,认知智能实验室形成部分语种高质量平行语料库的数量如下。
屏幕快照 2020-03-09 下午7.56.54.png