一种基于自监督的机器翻译译文自动优化的方法和系统
技术领域
本发明涉及一种基于自监督的机器翻译译文自动优化的方法和系统,属于机器翻译领域。
背景技术
机器翻译是利用计算机程序将文字或语音从一种自然语言翻译成另一种自然语言的技术。机器翻译译文质量在近年来,特别是在神经机器翻译出现后有很大的提高,但其整体质量与人工译文相比仍有较大差距,机器译文需要进行一定的优化才能作为合格的译文使用。机器翻译译文的优化技术大概可以分为两种:一种是在原译文的基础上引入其他翻译结果进行译文的融合优化,如引入多种机器翻译系统的翻译结果;另一种是采用后处理的思想,修改当前译文的瑕疵,类似人工翻译过程中的译后编辑(Post Editing,PE),故称为自动后编辑(Automatic Post Editing,APE)。本专利采取的技术路线是一种自动后编辑策略。
译后编辑一般由受过专业训练的人类专家进行,但随着翻译任务规模的增加,人类译后编辑的过程非常昂贵且费时。对于机器翻译来说,其中的翻译错误呈现一定的规律性,针对这些错误所需的后编辑操作也是有规律可循的,因此人们提出了自动后编辑这一技术思路。译文自动后编辑往往需要大量的机器翻译结果和译后编辑形成可接受译文,利用某种学习策略训练建立后编辑模型,实现自动纠正机器翻译译文中出现的错误。
早期的自动后编辑主要是基于规则的方法。Allen和Hogan等人(2000)将自动后编辑系统定义为一个能自动从包含源语言、机器译文和目标语译文的“三语平行语料库”中自动的学习后编辑规则的方法。Elming提出了一种基于转换学习的方法(Transformation-based learning,TBL),自动的从“三语”语料库中学习修改规则,并将其运用于待编辑译文。
Simard等人(2007)沿用统计机器学习的思想,将自动后编辑看作将“机器语言(译文)”翻译成“自然语言(人工译文)”的过程。具体技术上就是训练一个基于短语的单语统计机器翻译系统,将待优化的机器译文视作源语言句子,人工译文视作目标端句子对模型进行训练。Béchara等人(2011)则再此基础上解决了后编辑短语与源语言之间信息失去联系的缺陷,提出了基于源语言对齐的模型。在该模型中,Béchara等人引入源语言句子并把它作为APE的上下文来构建机器翻译系统,源语言和机器翻译结果之间的对齐信息被引入到统计后编辑模型中。
深度学习出现后,各种神经机器翻译模型也和统计翻译模型一样,被用于解决自动后编辑问题。Pal等人提出利用双向循环神经网络编码器-解码器模型建立一个单语机器翻译系统完成APE任务,与基于短语的统计后编辑模型相比,该方法极大提高了APE的效果。
Junczys-Dowmunt等人和Tebbifakhr等人将Transformer模型引入到自动后编辑任务中,同样采取了两个编码器和一个解码器的架构;Correia等人利用BERT模型处理自动后编辑问题,将BERT作为多语言的编码器并对BERT模型进行修改,使其能作为解码器使用,在多个数据集上取得了当前最好的效果。
上述APE模型的共同特性是都是系统依赖的,即对于特定机器翻译系统,利用它所产生的双语句对进行预训练的APE模型在该系统上有很好的性能,但对于其他翻译系统却效果骤降。本专利提出一个通用的机器翻译自动后编辑模型,对所有机器翻译系统译文都具有较好的优化能力。
发明内容
本发明的目的是提出了一种基于自监督的机器翻译译文自动优化的方法和系统,可以解决机器翻译中的错译与漏译问题,且不受后编辑数据规模的限制,且模型的并行性高。
一种基于自监督的机器翻译译文自动优化的方法,所述方法包括以下步骤:
步骤一、使用大规模平行语料对模型进行训练,使模型学习替换操作;
步骤二、使用人工构造的伪数据对模型进行训练,使模型学习插入操作,得到训练好的模型;
步骤三、使用训练好的模型对待优化的译文中的每个词和词间空隙进行候选词预测,完成替换和插入的后编辑操作。
进一步的,在步骤一中,包括以下步骤:
步骤一一、使用编码器对源语言句子S进行编码;
步骤一二、使用正向反向两个解码器对目标端句子T进行编码,将两个解码器的输出进行移位拼接,将两个解码器的输入词向量进行移位拼接,将两次移位拼接的结果进行拼接,得到特征向量;
步骤一三、使用特征向量对目标端的每个词进行预测,使用预测的结果与实际的输入计算损失,进行误差回传,训练网络参数。
进一步的,在步骤二中,包括以下步骤:
步骤二一、构造伪数据:随机删除句子中的词,对句子中词之间的空隙进行标注,假设经过随机删除后的句子长度为N,则空隙包括句子起始位置和每个词后的位置共N+1个,针对某个空隙,若其对应某一被删除的词,则空隙标签为该词,否则为标识符<blank>表示空;
步骤二二、使用伪数据进行模型训练,其中编码器对源语言句子S进行编码,正向反向两个解码器对目标端句子T进行编码,将正向反向两个解码器的输出进行移位拼接,将正向反向两个解码器的输入词向量进行移位拼接,将两次移位拼接的结果进行拼接,作为每个词的向量表示,而词间空隙的表示则由该空隙两端词的表示拼接而成,由此得到每个空隙的特征向量;
步骤二三、使用特征向量对每个词间空隙进行预测,使用预测的结果与实际的输入计算损失,进行误差回传,训练网络参数。
进一步的,在步骤三中,包括以下步骤:
步骤三一、使用编码器对源语言句子S进行编码;
步骤三二、使用正向反向两个解码器对目标端句子T进行编码,将两个解码器的输出进行移位拼接,将两个解码器的输入词向量进行一位拼接,将两次移位拼接的结果进行拼接,得到特征向量;
步骤三三、使用特征向量对机器译文中每个词和词间空隙进行预测,完成插入和替换的后编辑操作。
一种基于自监督的机器翻译译文自动优化的系统,基于上述的一种基于自监督的机器翻译译文自动优化的方法,所述系统包括:
伪数据构造模块,用于模型的训练,使模型学习插入操作;
训练模块,用于对模型进行训练,使模型学习替换操作和插入操作,得到训练好的模型;
通用系统预测模块,用于使用训练好的模型对待优化的译文中的每个词和词间空隙进行候选词预测,完成替换和插入的后编辑操作。
进一步的,所述模型采用序列到序列架构,包括一个编码器和正向反向两个解码器,其中编码器采用Transformer模型的编码器,共两层,每层包括两部分,第一部分为多头自注意力层,第二部分为前馈神经网络,每个解码器采用Transformer模型的解码器,共两层,每层由三部分组成,第一部分为多头的自注意力层,第二部分为源端注意力层,第三部分为前馈神经网络。
进一步的,所述训练模块包括替换操作训练模块和插入操作训练模块,其中,
所述替换操作训练模块:设模型隐层大小为dmodel,序列长度为T,将正反向解码器输出进行移位拼接得到T×2dmodel大小的向量,将正反向解码器输入词向量进行移位拼接得到T×2dmodel大小的向量,将两次移位拼接结果进行拼接,得到T×4dmodel大小的特征向量,使用特征向量与大小为4dmodel×V的输出权重矩阵相乘,得到大小为T×V的向量,进行softmax计算,得到每个位置在词表上的概率分布,并与实际的词的分布进行交叉熵损失计算,
其中p(x)表示真实的词分布,q(x)表示预测的词分布;
所述插入操作训练模块:由于要对词之间的空隙进行预测,对于每个空隙,使用其左右两个词的向量拼接作为表示向量,长度为N的句子,共有N+1个词间空隙(包括句子起始和结束位置),故得到的词间空隙的向量大小为(T+1)×8dmodel,与大小为8dmodel×V的输出权重矩阵相乘,得到大小为(T+1)×V的向量,进行softmax函数计算,得到其在词表上的概率分布,与真实的标签分布计算交叉熵损失。
进一步的,所述通用系统预测模块包括特征抽取模块和后编辑模块,其中,
所述特征抽取模块:输入源语言句子S和机器译文M,编码器编码S,正向反向两个解码器对M进行编码,得到正向反向两个解码器的输出,每个输出的大小为T×dmodel,将两个解码器的输出的最后一个位置的向量删除,得到两个大小为(T-1)×dmodel的向量,再将这两个向量进行移位拼接,得到大小为T×2dmodel的向量。为了使模型获取到原始词向量的信息,将两个编码器的输入也进行如上的移位拼接操作,得到大小为T×2dmodel的向量。最后将两次移位拼接的向量进行拼接,得到大小为T×4dmodel的向量,作为每个词的特征向量使用;
所述后编辑模块:使用模型对译文中的词和词间空隙进行预测,对于替换词预测,将特征向量与大小为4dmodel×V的输出权重矩阵相乘,得到大小为T×V的向量,对其进行softmax函数计算,得到每个位置在词表上的概率分布,取概率值最大的词,若该词与机器译文中的词相同则不修改译文,若不同则将译文中对应位置的词替换为模型预测的词,完成替换操作;
对于词间空隙的预测,使用其左右两个词的向量拼接作为表示向量,长度为N的句子,共有N+1个词间空隙(包括句子起始和结束位置),故得到的词间空隙的向量大小为(T+1)×8dmodel,与大小为8dmodel×V的输出权重矩阵相乘,得到大小为(T+1)×V的向量,进行softmax函数计算,得到其在词表上的概率分布,取概率最大的词,若预测得到标识符<blank>则表示不插入词,若为其他词则表示该位置应插入模型预测的词,完成插入操作。
本发明的主要优点是:本发明的一种基于自监督的机器翻译译文自动优化的方法和系统,可以解决机器翻译中的错译与漏译问题。模型首先使用大规模的平行语料进行训练,训练目标为对目标端句子中的每个词进行预测,这样可以使模型学会对错误翻译的词进行改正。然后模型使用人工构造的伪数据进行训练,训练目标为对目标端句子中的词与词之间的空隙进行预测,判断空隙处是否需要插入词,这样可以使模型学会对漏译的情况进行改正。且本发明的发明的优点在于不受后编辑数据规模的限制,而是直接从大规模平行语料中学习知识,实现对译文中的每个词和词隙进行编辑。此外模型的并行性较高,编辑操作之间不存在时序上的先后顺序,在预测速度上优于传统的基于自回归的(autoregressive)的自动后编辑模型。同时本专利突破了传统基于深度学习的APE技术系统依赖的缺陷,在不同机器翻译系统上具备相同的性能,是一种通用的机器翻译自动后编辑方法。
附图说明
图1为本发明所述的一种基于自监督的机器翻译译文自动优化的方法的模型架构图;
图2为本发明所述的一种基于自监督的机器翻译译文自动优化的方法的模型示意图;
图3为本发明所述的一种基于自监督的机器翻译译文自动优化的系统的架构图;
图4为训练模块的流程图;
图5为预测模块流程图。
具体实施方式
下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在传统的机器翻译后编辑任务中,后编辑数据集的标注过程较为繁琐,对标注人员的素质要求也较高,这导致后编辑任务的代价十分昂贵,故后编辑数据集的规模一直较小,这限制了传统后编辑方法的发展。本发明突破了传统后编辑任务的局限,不使用小规模的后编辑数据,而是从大规模平行语料中学习编辑信息。
当前流行的基于深度学习的后编辑模型虽然取得了很好的效果,但没能摆脱系统依赖的缺陷,即在特定翻译系统的数据上表现良好,不具有很强的泛化能力。本发明利用双语平行语料作为模型预训练的输入,使得模型在不同机器翻译系统上都能获得良好的优化性能,是一种通用的机器翻译自动后编辑模型。
此外,传统的基于自回归的自动后编辑模型需要依次对目标端的词进行预测,这在很大程度上限制了自动后编辑速度;而本方法提出的模型在预测时有很高的并行性,可以同时对所有目标端的词进行预测,大大提高了译文优化的速度。
本发明提出了一种基于自监督的机器翻译译文自动优化的方法的一实施例,所述方法包括以下步骤:
步骤一、使用大规模平行语料对模型进行训练,使模型学习替换操作;
步骤二、使用人工构造的伪数据对模型进行训练,使模型学习插入操作,得到训练好的模型;
步骤三、使用训练好的模型对待优化的译文中的每个词和词间空隙进行候选词预测,完成替换和插入的后编辑操作。
具体的,模型的训练可分为两阶段,第一阶段模型的输入为平行句对(S,T),其中S表示源语言句子,T表示目标端句子,训练目标为预测目标端句子中的每个词,标签即为原始目标端句子中的每个词。这样使模型能够学习改正译文中翻译错误的词。
第二阶段模型的输入为人工构造的伪数据(S,P),其中S表示源语言句子,P表示经过删除词操作的目标端句子,训练目标为预测目标端句子中每个词与词之间的空隙,若该空隙对应之前删掉的一个词,则标签为删掉的那个词,否则标签为空词,这里用标识符<blank>表示。这样可以使模型学习预测译文中漏译的词。
模型采用序列到序列(sequence to sequence)架构,包含一个编码器(Encoder)和正向反向两个解码器(Decoder),其中编码器采用Transformer模型的编码器,共两层,每层由两部分组成,第一部分为多头自注意力层(Multi-Head Self Attention),第二部分为前馈神经网络(Position-wise Feed-Forward Networks)。每个解码器采用Transformer模型的解码器,共两层,每层由三部分组成,第一部分为多头的自注意力层(Multi-Head SelfAttention),第二部分为源端注意力层(Multi-Head Attention),第三部分为前馈神经网络(Position-wise Feed-Forward Networks)。
模型隐藏层(隐藏层在这里不是指某一特定的层,泛指模型内部所有的模块)大小为dmodel,对于多头注意力层,头的个数为h,对于前馈神经网络大小为dmodel。本方法模型中,dmodel=512,h=8。
参照图1,对模型运行过程进行描述。这里假设每次输入一个句子,首先对于编码器,输入为源语言句子,是一个大小为T×V的向量,其中T表示序列长度,V表示源语言词表大小。该向量经过词向量编码层(Word Embedding),即与一个大小为V×dmodel的参数矩阵相乘,得到大小为T×dmodel的向量。然后与位置向量(Position Embedding)进行相加,输入到编码器中。
进入编码器的第一层,首先进行多头自注意力计算,注意力机制可以抽象为K(key),V(value),Q(query),三个向量的计算,在自注意力机制里,这三个向量相等。这里使用点乘注意力机制(dot-product attention),公式如下。
多头的注意力机制是将输入的向量分为维度更小的向量,本例中为8个头,即存在8组(Q,K,V),每组内计算注意力,得到八个输出,再拼接在一起,得到该模块输出。
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
得到自注意力层的输出后,进行残差连接(residual connection)和层归一化(layer normalization)。然后输入编码器的第二部分前馈神经网,经过两次线性变换,中间使用Relu作为激活函数,公式如下。
FFN(x)=max(0,xW1+b1)W2+b2
得到前馈神经网的输出,再次进行残差连接和层归一化,并将输出作为编码器下一层的输入,经过编码器的所有层之后,得到编码器的输出。
对于解码器,输入为目标端句子,其计算过程与编码器基本相同,不同的是在自注意力层和前馈神经网络中间添加了一个源端注意力层,与自注意力层不同,源端注意力层的K和V为编码器的输出,Q为解码器中自注意力层的输出。经过多层的计算,得到编码器的输出。
训练过程中,我们使用编码器对源语言句子进行编码,使用正向反向两个解码器对目标端句子进行编码,即正向的编码器输入正序的目标端句子,反向的编码器输入反序的目标端句子。经过如上的计算,得到两个解码器的输出,每个输出的大小为T×dmodel,将两个解码器的输出的最后一个位置的向量删除,得到两个大小为(T-1)×dmodel的向量,再将这两个向量进行移位拼接,得到大小为T×2dmodel的向量。为了使模型获取到原始词向量的信息,将两个编码器的输入也进行如上的移位拼接操作,得到大小为T×2dmodel的向量。最后将两次移位拼接的向量进行拼接,得到大小为T×4dmodel的向量,作为每个词的特征向量使用。
对于第一阶段训练,使用特征向量与大小为4dmodel×V的输出权重矩阵相乘,得到大小为T×V的向量,进行softmax计算,得到每个位置在词表上的概率分布,并与实际的词的分布进行交叉熵损失计算。对于第二阶段训练,由于要对词之间的空隙进行预测,对于每个空隙,使用其左右两个词的向量拼接作为表示向量,长度为N的句子,共有N+1个词间空隙(包括句子起始和结束位置),故得到的词间空隙的向量大小为(T+1)×8dmodel,与大小为8dmodel×V的输出权重矩阵相乘,得到大小为(T+1)×V的向量,进行softmax函数计算,得到其在词表上的概率分布,与真实的标签分布计算交叉熵损失。
在预测阶段,输入为双语句对(S,M),其中S表示源语言句子,M表示利用某个机器翻译模型得到的待后编辑的机器译文。与训练时相似,使用编码器对S进行编码,使用正反向两个解码器对M进行编码,拿到两个解码器的输出进行移位拼接,对M中的每个词和词间空隙进行预测,即进行softmax函数计算,得到词表上的概率分布,概率最大的那个词即为预测词。如果预测的词与M中的词不一致,则认为该位置的词错误,需要进行后编辑操作,并将该位置的词替换为模型预测的词;如果对词间空隙的预测不是标识符<blank>,则表示该位置应插入一个词。图2中给出了模型进行替换操作的示意图,模型预测的结果为“play”,故将“beat”替换为预测结果“play”,达到译文优化的目的。
参照图2所示,在本部分优选实施例中,在步骤一中,包括以下步骤:
步骤一一、使用编码器对源语言句子S进行编码;
步骤一二、使用正向反向两个解码器对目标端句子T进行编码,将两个解码器的输出进行移位拼接,将两个解码器的输入词向量进行移位拼接,将两次移位拼接的结果进行拼接,得到特征向量;
步骤一三、使用特征向量对目标端的每个词进行预测,使用预测的结果与实际的输入计算损失,进行误差回传,训练网络参数。
具体的,得到两个解码器的输出,每个输出的大小为T×dmodel,将两个解码器的输出的最后一个位置的向量删除,得到两个大小为(T-1)×dmodel的向量,再将这两个向量进行移位拼接,得到大小为T×2dmodel的向量。为了使模型获取到原始词向量的信息,将两个编码器的输入也进行如上的移位拼接操作,得到大小为T×2dmodel的向量。最后将两次移位拼接的向量进行拼接,得到大小为T×4dmodel的向量,作为每个词的特征向量使用。
得到特征向量后,与大小为4dmodel×V的输出权重矩阵相乘,得到大小为T×V的向量,对其进行softmax函数计算,得到每个位置在词表上的概率分布,与其真实分布计算交叉熵损失,并将损失进行梯度回传。
交叉熵损失函数为:
其中p(x)表示真实的词分布,q(x)表示预测的词分布。
参照图2所示,在本部分优选实施例中,在步骤二中,包括以下步骤:
步骤二一、构造伪数据:随机删除句子中的词,对句子中词之间的空隙进行标注,假设经过随机删除后的句子长度为N,则空隙包括句子起始位置和每个词后的位置共N+1个,针对某个空隙,若其对应某一被删除的词,则空隙标签为该词,否则为标识符<blank>表示空;
步骤二二、使用伪数据进行模型训练,其中编码器对源语言句子S进行编码,正向反向两个解码器对目标端句子T进行编码,将正向反向两个解码器的输出进行移位拼接,将正向反向两个解码器的输入词向量进行移位拼接,将两次移位拼接的结果进行拼接,作为每个词的向量表示,而词间空隙的表示则由该空隙两端词的表示拼接而成,由此得到每个空隙的特征向量;
步骤二三、使用特征向量对每个词间空隙进行预测,使用预测的结果与实际的输入计算损失,进行误差回传,训练网络参数。
具体的,在进行伪数据构造时,首先随机从大规模的平行语料中采样出一定量的双语句对,在之前的统计中13442句对共进行了9410次插入操作,平均每句进行0.70次插入操作,并且冠词、介词、连词、代词占有较大比重。故我们对百分之七十的句对中的上述四种词进行了删除,构建了用于插入操作训练的伪数据。
在训练时与步骤一中过程基本一致,得到大小为T×4dmodel的特征向量后,对每个词间空隙进行预测,对于每个空隙,使用其左右两个词的向量拼接作为表示向量,长度为N的句子,共有N+1个词间空隙(包含句子起始和结束位置),故得到的词间空隙的向量大小为(T+1)×8dmodel,与大小为8dmodel×V的输出权重矩阵相乘,得到大小为(T+1)×V的向量,进行softmax函数计算,得到其在词表上的概率分布,与真实的标签分布计算交叉熵损失,并将损失进行梯度回传。
交叉熵损失函数为:
其中p(x)表示真实的词分布,q(x)表示预测的词分布。
参照图2所示,在本部分优选实施例中,在步骤三中,包括以下步骤:
步骤三一、使用编码器对源语言句子S进行编码;
步骤三二、使用正向反向两个解码器对目标端句子T进行编码,将两个解码器的输出进行移位拼接,将两个解码器的输入词向量进行一位拼接,将两次移位拼接的结果进行拼接,得到特征向量。
步骤三三、使用特征向量对机器译文中每个词和词间空隙进行预测,完成插入和替换的后编辑操作。
具体的,与训练阶段类似,将源语言句子输入到编码器中进行编码,将机器译文输入到正反向两个解码器中,得到大小为T×4dmodel的特征向量。对于替换词预测,将特征向量与大小为4dmodel×V的输出权重矩阵相乘,得到大小为T×V的向量,进行softmax函数计算,得到每个位置在词表上的概率分布,取概率值最大的词,若该词与机器译文中的词相同则不修改译文,若不同则将译文中对应位置的词替换为模型预测的词,完成替换操作。
对于词间空隙的预测,使用其左右两个词的向量拼接作为表示向量,长度为N的句子,共有N+1个词间空隙(包含句子起始和结束位置),故得到的词间空隙的向量大小为(T+1)×8dmodel,与大小为8dmodel×V的输出权重矩阵相乘,得到大小为(T+1)×V的向量,进行softmax函数计算,得到其在词表上的概率分布,取概率最大的词,若预测得到标识符<blank>则表示不插入词,若为其他词则表示该位置应插入模型预测的词,完成插入操作。
参照图3所示,一种基于自监督的机器翻译译文自动优化的系统,基于上述的一种基于自监督的机器翻译译文自动优化的方法,所述系统包括:
伪数据构造模块,用于模型的训练,使模型学习插入操作;
训练模块,用于对模型进行训练,使模型学习替换操作和插入操作,得到训练好的模型;
通用系统预测模块,用于使用训练好的模型对待优化的译文中的每个词和词间空隙进行候选词预测,完成替换和插入的后编辑操作。
具体的,伪数据构造模块:为了了解机器译文中存在的错误类型和分布,我们分析了WMT2019英语到德语的机器翻译质量估计数据,该数据集涉及IT领域,译文是一个基于序列到序列的神经机器翻译的输出。在插入操作涉及的词中,冠词、介词、连词、代词占有较大比重。平均每个句子进行0.7次插入操作,故我们对百分之七十的句对中的上述四种词进行了删除,构建了用于插入操作训练的伪数据;
训练模块:模型采用序列到序列(sequence to sequence)架构,包含一个编码器(Encoder)和正向反向两个解码器(Decoder),其中编码器采用Transformer模型的编码器,共两层,每层由两部分组成,第一部分为多头自注意力层(Multi-Head Self Attention),第二部分为前馈神经网络(Position-wise Feed-Forward Networks)。每个解码器采用Transformer模型的解码器,共两层,每层由三部分组成,第一部分为多头的自注意力层(Multi-Head Self Attention),第二部分为源端注意力层(Multi-Head Attention),第三部分为前馈神经网络(Position-wise Feed-Forward Networks)。
模型隐藏层大小为dmodel,对于多头注意力层,头的个数为h,对于前馈神经网络大小为dmodel。本方法模型中,dmodel=512,h=8。
参照图1,对模型运行过程进行描述。这里假设每次输入一个句子,首先对于编码器,输入为源语言句子,是一个大小为T×V的向量,其中T表示序列长度,V表示源语言词表大小。该向量经过词向量编码层(Word Embedding),即与一个大小为V×dmodel的参数矩阵相乘,得到大小为T×dmodel的向量。然后与位置向量(Position Embedding)进行相加,输入到编码器中。
进入编码器的第一层,首先进行多头自注意力计算,注意力机制可以抽象为K(key),V(value),Q(query),三个向量的计算,在自注意力机制里,这三个向量相等。这里使用点乘注意力机制(dot-product attention),公式如下。
多头的注意力机制是将输入的向量分为维度更小的向量,本例中为8个头,即存在8组(Q,K,V),每组内计算注意力,得到八个输出,再拼接在一起,得到该模块输出。公式如下,其中
和
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
得到自注意力层的输出后,进行残差连接(residual connection)和层归一化(layer normalization)。然后输入编码器的第二部分前馈神经网,经过两次线性变换,中间使用Relu作为激活函数,公式如下。
FFN(x)=max(0,xW1+b1)W2+b2
得到前馈神经网的输出,再次进行残差连接和层归一化,并将输出作为编码器下一层的输入,经过编码器的所有层之后,得到编码器的输出。
对于解码器,输入为目标端句子,其计算过程与编码器基本相同,不同的是在自注意力层和前馈神经网络中间添加了一个源端注意力层,与自注意力层不同,源端注意力层的K和V为编码器的输出,Q为解码器中自注意力层的输出。经过多层的计算,得到编码器的输出。
训练过程中,我们使用编码器对源语言句子进行编码,使用正向反向两个解码器对目标端句子进行编码,即正向的编码器输入正序的目标端句子,反向的编码器输入反序的目标端句子。经过如上的计算,得到两个解码器的输出,每个输出的大小为T×dmodel,将两个解码器的输出的最后一个位置的向量删除,得到两个大小为(T-1)×dmodel的向量,再将这两个向量进行移位拼接,得到大小为T×2dmodel的向量。为了使模型获取到原始词向量的信息,将两个编码器的输入也进行如上的移位拼接操作,得到大小为T×2dmodel的向量。最后将两次移位拼接的向量进行拼接,得到大小为T×4dmodel的向量,作为每个词的特征向量使用。
通用系统预测模块:输入双语句对(S,M),其中S为源语言句子,M为某机器翻译系统的机器译文。模型对句对进行编码,提取特征向量,然后对目标端每个位置的词和词间空隙进行预测,得到该位置的概率分布,并取概率最大的词作为正确结果。
与训练阶段类似,将源语言句子输入到编码器中进行编码,将机器译文输入到正反向两个解码器中,得到大小为T×4dmodel的特征向量。对于替换词预测,将特征向量与大小为4dmodel×V的输出权重矩阵相乘,得到大小为T×V的向量,对其进行softmax函数计算,得到每个位置在词表上的概率分布,取概率值最大的词,若该词与机器译文中的词相同则不修改译文,若不同则将译文中对应位置的词替换为模型预测的词,完成替换操作。
对于词间空隙的预测,使用其左右两个词的向量拼接作为表示向量,长度为N的句子,共有N+1个词间空隙(包含句子起始和结束位置),故得到的词间空隙的向量大小为(T+1)×8dmodel,与大小为8dmodel×V的输出权重矩阵相乘,得到大小为(T+1)×V的向量,进行softmax函数计算,得到其在词表上的概率分布,取概率最大的词,若预测得到标识符<blank>则表示不插入词,若为其他词则表示该位置应插入模型预测的词,完成插入操作。
在本部分优选实施例中,所述模型采用序列到序列架构,包括一个编码器和正向反向两个解码器,其中编码器采用Transformer模型的编码器,共两层,每层包括两部分,第一部分为多头自注意力层,第二部分为前馈神经网络,每个解码器采用Transformer模型的解码器,共两层,每层由三部分组成,第一部分为多头的自注意力层,第二部分为源端注意力层,第三部分为前馈神经网络。
参照图4所示,在本部分优选实施例中,所述训练模块包括替换操作训练模块和插入操作训练模块,其中,
所述替换操作训练模块:使用特征向量与大小为4dmodel×V的输出权重矩阵相乘,得到大小为T×V的向量,进行softmax计算,得到每个位置在词表上的概率分布,并与实际的词的分布进行交叉熵损失计算,
其中p(x)表示真实的词分布,q(x)表示预测的词分布;
所述插入操作训练模块:由于要对词之间的空隙进行预测,对于每个空隙,使用其左右两个词的向量拼接作为表示向量,长度为N的句子,共有N+1个词间空隙(包括句子起始和结束位置),故得到的词间空隙的向量大小为(T+1)×8dmodel,与大小为8dmodel×V的输出权重矩阵相乘,得到大小为(T+1)×V的向量,进行softmax函数计算,得到其在词表上的概率分布,与真实的标签分布计算交叉熵损失。
参照图5所示,在本部分优选实施例中,所述通用系统预测模块包括特征抽取模块和后编辑模块,其中,
所述特征抽取模块:与训练阶段类似,输入源语言句子S和机器译文M,编码器编码S,正向反向两个解码器对M进行编码,得到两个解码器的输出,每个输出的大小为T×dmodel,将两个解码器的输出的最后一个位置的向量删除,得到两个大小为(T-1)×dmodel的向量,再将这两个向量进行移位拼接,得到大小为T×2dmodel的向量。为了使模型获取到原始词向量的信息,将两个编码器的输入也进行如上的移位拼接操作,得到大小为T×2dmodel的向量。最后将两次移位拼接的向量进行拼接,得到大小为T×4dmodel的向量,作为每个词的特征向量使用;
所述后编辑模块:使用模型对译文中的词和次间空隙进行预测,对于替换词预测,将特征向量与大小为4dmodel×V的输出权重矩阵相乘,得到大小为T×V的向量,对其进行softmax函数计算,得到每个位置在词表上的概率分布,取概率值最大的词,若该词与机器译文中的词相同则不修改译文,若不同则将译文中对应位置的词替换为模型预测的词,完成替换操作;
对于词间空隙的预测,使用其左右两个词的向量拼接作为表示向量,长度为N的句子,共有N+1个词间空隙(包括句子起始和结束位置),故得到的词间空隙的向量大小为(T+1)×8dmodel,与大小为8dmodel×V的输出权重矩阵相乘,得到大小为(T+1)×V的向量,进行softmax函数计算,得到其在词表上的概率分布,取概率最大的词,若预测得到标识符<blank>则表示不插入词,若为其他词则表示该位置应插入模型预测的词,完成插入操作。