一种基于动态线性聚合的深层神经机器翻译方法与流程

文档序号:17723613发布日期:2019-05-22 02:21阅读:160来源:国知局
一种基于动态线性聚合的深层神经机器翻译方法与流程

本发明属于机器翻译技术领域,涉及一种基于动态线性聚合的深层神经机器翻译方法。



背景技术:

神经机器翻译技术通常采用基于神经网络的编码器-解码器框架对整个翻译过程进行端对端的建模,通过线性与非线性函数的组合来学习源语言与目标语言之间的映射关系,目前基于自注意力机制的transformer模型在多个语种取得了最佳翻译性能。其中,编码器负责把输入的源语言句子编码成稠密的语义向量,而解码器将通过语义向量生成与源语言对应的翻译结果。通常把输入的句子进行分词得到多个单词片段,之后根据预先生成的词典将单词片段转换成词嵌入。

基于自注意力机制的transformer模型由编码器与解码器组成,编码器由l个相同层的叠层组成,每个叠层具有两个子层。第一子层是一个自注意力网络,第二子层是一个全连接的前馈神经网络。解码器对比于编码器在两个子层之间加入一个编码-解码注意力网络来学习两种语言之间的映射关系。

transformer模型不同子层之间会通过层正则化(layer-normlization)对隐层的特征向量进行缩放,同时通过残差连接将每一个子层计算后的结果与当前层的输入进行累加作为下一层网络的输入。目前在深度学习任务上研究人员发现通过增加模型的容量能够有效地提高模型的表示能力,同时在图像识别等领域中残差连接能够有效地提高网络中信息传递的效率,利于训练深层网络,进而提升模型的性能。目前在机器翻译领域,基于自注意力网络的transformer模型的编码-解码端分别由6个相同的叠层堆砌,在深度上已经超越了传统的基于循环神经网络的机器翻译系统,但对比于图像领域的resnet的1000层网络依旧比较浅。人们广泛认知通过增加模型的隐层表示维度(宽度)即使用transformer-big能够有效地提高翻译的性能,但从堆砌transformer模型的深度角度来看并没有很好的正向效果。原因在于增加网络的深度会增大梯度消失的风险,底层的网络不能得到充分的训练,从而导致模型不收敛现象。

transformer模型本质上等价于一个大的残差网络,使用的是基于自注意力机制和前馈全连接网络的核函数。由于机器翻译任务是处理语言与语言之间的联系,语言本身具有一些歧义性,导致任务的难度也要更大一些。深层网络可以看做是上层网络对特征的不断提取、抽象,尽管transformer同样使用残差连接来缓解梯度消失问题,但残差连接本质上是一种单步的欧拉方法,第n层网络的计算只考虑第n-1层网络的输入和输出,并没有充分利用之前层网络的信息。



技术实现要素:

为解决上述技术问题,本发明提供一种基于动态线性聚合的深层神经机器翻译方法,以解决现有技术中神经机器翻译模型transformer在训练深层网络时底层网络不能得到充分的训练,导致无法有效地训练更深层的网络结构,从而无法进一步提升翻译性能的问题。

本发明提供一种基于动态线性聚合的深层神经机器翻译方法,包括如下步骤:

步骤1:基于自注意力机制的transformer模型,在编码端与解码端同时加入记忆网络以存储编码端与解码端的不同叠层的输出,构成基于动态线性聚合的transformer模型;

步骤2:对源语和目标语构成的双语平行句对进行分词,得到源语序列和目标语序列并转换成计算机能够识别的稠密向量,再分别对应写入到编码端和解码端的记忆网络;

步骤3:将源语序列转换后的稠密向量输入到编码端的对应子层进行特征提取,获得当前叠层的输出,并将该输出的语义向量写入到记忆网络;

步骤4:在进行下一叠层网络特征提取前访问记忆网络,基于常微分方程的线性多步方法对记忆网络中存储的稠密向量和前面所有叠层的语义向量进行聚合,得到一个融合各层特征的隐层表示,该隐层表示经过层正则化操作获得一个参数服从标准正态的语义向量作为下一叠层的输入,完成每一叠层网络的计算后,获得编码端的输出结果;

步骤5:将目标语序列转换后的稠密向量和编码端的输出结果输入到解码端的对应子层进行特征提取,获得当前叠层的输出的语义向量并写入到解码端的记忆网络;

步骤6:对解码端的记忆网络中存储的稠密向量和前面所有叠层的语义向量进行聚合并进行正则化后再输入到下一叠层进行特征提取,完成解码端的每一叠层网络的计算后,获得解码端的输出结果;

步骤7:对解码端的输出结果进行线性变换映射到目标端词表空间,使用softmax归一化操作得到目标语的词汇分布,通过计算词汇分布与真实标签数据间的差异来更新模型参数,完成基于动态线性聚合的transformer模型训练;

步骤8:利用训练完的基于动态线性聚合的transformer模型进行翻译。

在本发明的基于动态线性聚合的深层神经机器翻译方法中,所述步骤2中输入的双语句子级平行数据为双语互译的句对集合,每个句对由源语句子和目标语句子组成。

在本发明的基于动态线性聚合的深层神经机器翻译方法中,所述步骤2中将源语序列和目标语序列转换成计算机能够识别的稠密向量具体为:

对分词后的源语序列和目标语序列进行统计得到源语言的词典和目标语言的词典;

根据每个单词在对应的词典中的索引将分词后的句子转换成维度为对应词典大小的one-hot向量;

通过词嵌入的方式将one-hot向量转换成唯一标识的词向量;

将基于位置编码的位置向量和词向量进行累加,获得稠密向量作为基于动态线性聚合的transformer模型的编码端和解码端的输入,同时将稠密向量写入对应的编码端和解码端的记忆网络存储起来。

在本发明的基于动态线性聚合的深层神经机器翻译方法中,所述在对应子层进行特征提取具体为:

通过叠层中的自注意网络抽取输入的向量中不同词间的语义联系;

通过层正则化将自注意网络的输出转换成标准的正态分布,再通过残差连接将自注意网络的输入和输出进行累加作为前馈全连接网络的输入;

对累加结果进行进一步的特征提取,获得叠层的输出;

重复标准的正态分布操作和累加操作获得当前叠层的最终输出的语义向量。

在本发明的基于动态线性聚合的深层神经机器翻译方法中,所述步骤4和步骤6中对记忆网络中存储的稠密向量和前面所有叠层的语义向量进行聚合,具体采用线性平均或权重平均两种手段进行聚合。

在本发明的基于动态线性聚合的深层神经机器翻译方法中,所述线性平均法具体为:

第n个叠层的输入依赖于前n-1个叠层的输出,采用动态规划的方法对记忆网络中存储的稠密向量和语义向量进行线性加和,之后取平均值作为当前叠层的输入;

其中l0表示网络的原始输入的稠密向量,li(0<i<n)表示网络的中间叠层的输出,ln表示前面所有叠层输出,n表示叠层数。

在本发明的基于动态线性聚合的深层神经机器翻译方法中,所述权重平均法具体为:

(1)定义一个维度为(lnum×lnum)的权值矩阵w,矩阵中每一行的数值表示之前各叠层对当前叠层计算的贡献度,其中lnum的大小是编码端或解码端总共的叠层数目;

该权值矩阵w是一个下三角矩阵,使用方法一进行矩阵参数的初始化,即初始化矩阵w0的每一行各个位置的值为初始化矩阵w0表示如下;

伴随着神经网络的训练,网络通过反向传播算法来不断更新网络中的参数,动态地调整权值矩阵w中每一行不同位置权重的大小;

(2)将记忆网络中存储的中间结果在第0维度进行拼接,得到一个融合的多层表示lstack:

lstack=stack(l0,l1,l2,…ln-1)

其中,l0代表记忆网络中存储的稠密向量(词向量与位置向量的累加),l1、l2、…ln-1代表记忆网络中存储的各个叠层的输出结果,这里使用函数stack将各个表示拼接成一个高维的向量表示;

例如:l0=[1,2]、l1=[3,4]、l2=[5,6],每一个向量的维度都是(1,2)。lstack经过函数变换得到[[1,2],[3,4],[5,6]],维度变为(3,2)。

(3)在进行第n层网络输入的计算时选取权值矩阵w的第n行wn与多层表示lstack进行点乘操作,之后将得到的ln在第0维度进行累加得到第n层网络的输入,公式如下所示:

其中wn,i代表权值矩阵w第n行第i列的权重,ln,i代表lstack中第n个语义向量。

本发明的一种基于动态线性聚合的深层神经机器翻译方法,至少具有以下有益效果及优点:

1.本发明方法分别在transformer模型的编码端与解码端中相同的叠层之间额外加入了一个记忆网络来存储中间叠层的网络输出,利用常微分方程中的线性多步方法让上层网络计算时充分利用之前计算的结果,提高信息传递地效率,让网络可以堆砌更深并在性能上带来正向效果。

2.本发明在上述方法的基础上使用额外的权值矩阵来动态学习前n-1层网络的输出对第n层网络计算的贡献度,更灵活地按权重融合浅层的信息,从而让机器翻译模型堆砌的更深、模型的表示能力变得更强、训练的更鲁棒。

附图说明

图1是本发明的一种基于动态线性聚合的深层神经机器翻译方法的流程图;

图2是本发明的基于动态线性聚合的transformer模型的结构图。

具体实施方式

研究人员认为深层网络中不同层网络对特征提取的能力不同,因此在计算上层网络时应该有效地利用之前层网络的计算结果会更利于上层网络进行特征学习。基于上述理论,本发明分别在transformer模型的编码端与解码端中相同的叠层之间额外加入了一个记忆网络来存储中间叠层的网络输出,构成基于动态线性聚合的transformer模型。利用常微分方程中的线性多步方法让当前叠层网络计算时充分利用之前所有叠层计算的结果,提高信息传递地效率,让网络可以堆砌更深并在性能上带来正向效果。在本发明中,采用的线性多步聚合方法不仅仅作用于编码端,同时应用于解码端。

如图1所示,本发明的一种基于动态线性聚合的深层神经机器翻译方法,包括如下步骤:

步骤1:基于自注意力机制的transformer模型,在编码端与解码端同时加入记忆网络以存储编码端与解码端的不同叠层的输出,构成基于动态线性聚合的transformer模型。

如图2所示为本发明的基于动态线性聚合的transformer模型的结构图。本发明基于自注意力机制的transformer模型进行改进,在编码端与解码端同时加入一个记忆网络来存储之前中间叠层的输出,在进行上层网络计算之前利用常微分方程中线性多步的思想:通过对记忆网络中的记忆序列进行聚合得到一个新的语义向量,作为当前叠层网络的输入。通过这种方式让上层网络计算时充分考虑之前网络提取出的特征向量,进而训练更深层的模型来提高模型的表示能力,改善机器翻译的性能。

图中展示的是在transformer模型的编码端引入记忆网络来存储之前叠层网络计算出的语义向量,通过一些聚合的手段得到融合之前各个叠层信息的语义向量作为上层网络的输入。这里左侧新加入的结构是记忆网络,每一个叠层计算前需要访问记忆网络得到输入,在每一个叠层计算后需要将叠层的输出写入到记忆网络中。

步骤2:对源语和目标语构成的双语平行句对进行分词,得到源语序列和目标语序列并转换成计算机能够识别的稠密向量,再分别对应写入到编码端和解码端的记忆网络。

其中,双语句子级平行数据为双语互译的句对集合,每个句对由源语句子和目标语句子组成。

其中,将源语序列和目标语序列转换成计算机能够识别的稠密向量具体为:

对分词后的源语序列和目标语序列进行统计得到源语言的词典和目标语言的词典。根据每个单词在对应的词典中的索引将分词后的句子转换成维度为对应词典大小的one-hot向量,例如“篮球”在词典中是第1个词,那么篮球所对应的one-hot向量为[0,1,0,0…0],只有第1个位置为1,其他位置都为0的稀疏向量。由于任意两个稀疏向量都是正交的,因此在网络的计算过程中无法充分表示不同词向量之间的语义联系,同时词典中包含上万个单词,高维向量的计算对硬件有很高的要求。因此,通过词嵌入的方式将one-hot向量转换成唯一标识的词向量。由于词向量通常采用随机数初始化,词向量的每一个位置都是真实的数值,在网络的更新过程中更容易捕捉不同词之间的语义联系。由于自注意力机制可以让transformer模型进行高度并行的矩阵乘法计算,提高了计算效率但对比于基于循环神经网络模型无法学习到序列之间的位置关系,因此将基于位置编码的位置向量和词向量进行累加,获得稠密向量作为改进的自注意力模型的编码端和解码端的输入,同时将稠密向量写入对应的编码端和解码端的记忆网络存储起来。

步骤3:将源语序列转换后的稠密向量输入到编码端的对应子层进行特征提取,获得当前叠层的输出,并将该输出的语义向量写入到记忆网络;

步骤4:在进行下一叠层网络特征提取前访问记忆网络,基于常微分方程的线性多步方法对记忆网络中存储的稠密向量和前面所有叠层的语义向量进行聚合,得到一个融合各层特征的隐层表示,该隐层表示经过层正则化操作获得一个参数服从标准正太的语义向量作为下一叠层的输入,完成每一叠层网络的计算后,获得编码端的输出结果;

步骤5:将目标语序列转换后的稠密向量和编码端的输出结果输入到解码端的对应子层进行特征提取,获得当前叠层的输出的语义向量并写入到解码端的记忆网络;

步骤6:对记忆网络中存储的稠密向量和前面所有叠层的语义向量进行聚合并进行正则化后输入到下一叠层进行特征提取,完成解码端的每一叠层网络的计算后,获得解码端的输出结果;

步骤7:对解码端的输出结果进行线性变换映射到目标端词表空间,使用softmax归一化操作得到目标语的词汇分布,通过计算词汇分布与真实标签数据间的差异来更新模型参数,完成基于动态线性聚合的transformer模型训练;

步骤8:利用训练完的基于动态线性聚合的transformer模型进行翻译。

本发明基于transformer模型进行改进,其保留了transformer模型每一叠层内部的网络计算:包括自注意力网络的计算和前馈全连接网络的计算,因此在对应子层进行特征提取具体包括如下步骤:

通过叠层中的自注意网络抽取输入的向量中不同词间的语义联系;通过层正则化将自注意网络的输出转换成换成期望为0,标准差为1的标准的正态分布,以防止经过某一层网络的计算后参数的范数发生大幅度的变化,从而更利于网络的训练。再通过残差连接将自注意网络的输入(即前馈神经网络的输出)和输出进行累加作为前馈全连接网络的输入。网络采用残差连接更易于各叠层网络中信息的传递。本发明在自注意力模型的计算后得到稠密的语义向量,在编码端使用自注意力网络与前馈神经网络的输出累加和作为每一个叠层的输出状态;在解码端使用编码-解码注意力网络与前馈神经网络的输出累加和作为每一个叠层的输出状态。然后对累加结果进行进一步的特征提取,获得叠层的输出。重复几次上面的标准的正态分布操作和累加操作以获得当前叠层的最终输出的语义向量。

在步骤4和步骤6中对记忆网络中存储的前面所有词向量和语义向量进行聚合,具体采用线性平均或权重平均两种手段进行聚合。

方法一、线性平均法具体为:

第n个叠层的输入依赖于前n-1个叠层的输出,采用动态规划的方法对记忆网络中存储的语义向量进行线性加和,之后取平均值作为当前叠层的输入;

其中l0表示网络的原始输入的词向量,li(0<i<n)表示网络的中间叠层的输出,ln表示前面所有叠层输出,n表示叠层数。

尽管上述线性平均法利用了前n-1层的网络输出来初始化第n层网络的输入,但每一层网络对当前网络ln的贡献是相同的(都是1/n),由于伴随着网络层数不断地增加,根据常微分方程中多步方法,之前不同层的权重应该是不同的。如果将不同层的计算抽象成对输入向量进行逐层的特征提取,尽管不同层之间的参数是不一样的,仍可以近似看成lstm(长短时记忆网络)。使用lstm网络进行序列编码时,由于不同时序之间的计算本质是具有依赖关系的,譬如下面这个例子:城市开设了大量工厂,工期污染十分严重,这里的天空都是灰色的。当我们使用模型去预测最后一个词“灰色的”时,仅仅根据短期的依赖无法很好的解决这个问题。因为只根据“这里的天空”,最后一个词可以是蓝色的,或者是灰色的。而深层网络计算时,不同层是从不同的角度对特征进行提取,对比于lstm网络不同时序之间参数是共享的,而多层网络之间的参数是独立的,因此利用前层网络的信息更利于上层网络的计算,同时不同层网络对当前计算的影响也应该是不同的。因此本发明进一步的使用权重平均法进行聚合操作。

方法二、权重平均法具体为:

(1)定义一个维度为(lnum×lnum)的权值矩阵w,矩阵中每一行的数值表示之前各叠层对当前叠层计算的贡献度,其中lnum的大小是编码端或解码端总共的叠层数目;

该权值矩阵w是一个下三角矩阵,使用方法一进行矩阵参数的初始化,即初始化矩阵w0的每一行各个位置的值为初始化矩阵w0表示如下;

伴随着神经网络的训练,网络通过反向传播算法来不断更新网络中的参数,进而提升网络整体的表示能力,动态地调整权值矩阵中每一行不同位置权重的大小。

具体更新方式:在每一次训练步骤中包括网络的前向计算和反向更新梯度,本发明方法只修改了前向计算的方式,反向计算是网络自动进行的。在这里每一个计算步内,不同层使用的权值矩阵w都是对应其中的一行,但不同行之间相同位置的值是变化的。这里我们强调的是权值矩阵w在不同计算步骤是动态变化的。

(2)将记忆网络中存储的中间结果在第0维度进行拼接,得到一个融合的多层表示lstack:

lstack=stack(l0,l1,l2,…ln-1)

其中,l0代表记忆网络中存储的稠密向量(词向量与位置向量的累加),l1、l2、…ln-1代表记忆网络中存储的各个叠层的输出结果,这里使用函数stack将各个表示拼接成一个高维的向量表示;

例如:l0=[1,2]、l1=[3,4]、l2=[5,6],每一个向量的维度都是(1,2)。lstack经过函数变换得到[[1,2],[3,4],[5,6]],维度变为(3,2)。

(3)在进行第n层网络输入的计算时选取权值矩阵w的第n行wn与多层表示lstack进行点乘操作,之后将得到的ln在第0维度进行累加得到第n层网络的输入,公式如下所示:

其中wn,i代表权值矩阵w第n行第i列的权重,ln,i代表lstack中第n个语义向量。

由于最近一些研究人员通过实验对比分析在transformer模型中,编码端对性能的影响更大一些。因此本发明使用更深层的网络来对源语进行编码,同时在编码端与解码端使用基于权重的线性多步融合方式来强化多层网络之间的联系。由于解码端的网络层数不变,同时在推断过程中编码端只计算一次,因此该发明的推断速度并没有明显的下降。实验结果显示,在英德翻译任务上,相比较于基线系统,采用改进的深层连接方式的transformer神经机器翻译方法在newstest14测试集上能提升2.1个bleu值,同时在中英翻译任务上nist测试集上平均提升近2.4个bleu值,同时使用更大batch训练可以加速模型的收敛速度。

以上所述仅为本发明的较佳实施例,并不用以限制本发明的思想,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1