本申请涉及人工智能技术领域,特别涉及一种翻译方法及装置、翻译模型的训练方法及装置、计算设备和计算机可读存储介质。
背景技术:
随着计算机运算能力的提升,神经网络的应用越来越广泛,例如构建翻译模型,以实现源语言到目标语言的转换。一般地,翻译模型的架构包括:编码层(encoder)—解码层(decoder)。编码层实现对待翻译的源语句进行编码生成向量,解码层实现对源语句的向量进行解码生成对应的目标语句。
翻译模型是利用训练集进行优化,获得一个对于全体训练集数据的训练好的模型,然后使用训练好的翻译模型对新输入的语句进行编码和解码,从而获得新输入的语句对应的翻译语句。
传统的翻译模型大多会使用卷积神经网络(convolutionalneuralnetworks,cnn)模型或循环神经网络(recurrentneuralnetworks,rnn)模型作为编码层—解码层的模型基础。谷歌的基于注意力机制的翻译模型并没有用任何cnn或者rnn的结构,该模型可以高度并行地工作,所以在提升翻译性能的同时训练速度也特别快。
参见图1,图1为现有的一种谷歌翻译模型的架构。谷歌翻译模型分为编码层和解码层两部分。编码层由6个相同的编码堆栈层叠加于一起,解码层由6个相同的解码堆栈层叠加于一起。最底层的编码堆栈层接收输入的语句向量,其他的编码堆栈层的输入向量源自于上一个编码堆栈层的输出向量。将最后一个编码堆栈层的输出向量作为解码层的输入向量输入至每个解码堆栈层。
现有技术的方法,解码层生成的解码向量只依赖于编码层输出的单个编码向量,对于其他蕴含有丰富的语义语法信息的编码向量,却无法被有效利用,这会对最终的翻译效果造成不利的影响。
技术实现要素:
有鉴于此,本申请实施例提供了一种翻译方法及装置、翻译模型的训练方法及装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
本申请实施例公开了一种翻译方法,用于翻译模型,所述翻译模型包括编码层和解码层,所述方法包括:
将待翻译语句输入编码层,得到n个编码向量,其中,n为大于1的正整数;
将所述n个编码向量中的m个编码向量输入至解码层,得到解码层输出的解码向量,并根据所述解码向量得到翻译语句,其中,1<m≤n。
可选地,所述编码层包括第一隐藏层和n个第一堆栈层,且n个第一堆栈层顺次连接;
将待翻译语句输入编码层,得到n个编码向量,包括:
s102、将所述待翻译语句输入至所述第一隐藏层,生成第一向量;
s104、将所述第一向量输入至第1个第一堆栈层,得到第1个所述第一堆栈层的输出向量;
s106、将第i-1个所述第一堆栈层的输出向量输入至第i个第一堆栈层,得到第i个所述第一堆栈层对应的输出向量,其中2≤i≤n;
s108、将i自增1,判断自增1后的i是否大于n,若是,则执行步骤s110,若否,继续执行步骤s106;
s110、根据n个第一堆栈层的输出向量,得到每个第一堆栈层对应的编码向量。
可选地,将所述n个编码向量中的m个编码向量输入至解码层,包括:
将n个第一堆栈层中的后m个第一堆栈层对应的编码向量输入至解码层。
可选地,将第i-1个所述第一堆栈层的输出向量输入至第i个第一堆栈层,得到第i个所述第一堆栈层对应的输出向量,包括:
将第i-1个所述第一堆栈层的输出向量输入至第i个第一堆栈层,得到第i个所述第一堆栈层的初始输出向量;
根据第i个第一堆栈层的初始输出向量和第i-1个第一堆栈层的输出向量,得到第i个所述第一堆栈层对应的输出向量。
可选地,所述翻译模型包括:线性层、全连接层和归一化层;
根据n个第一堆栈层的输出向量,得到每个第一堆栈层对应的编码向量,包括:
将n个第一堆栈层的输出向量经过线性层处理,得到n个第一堆栈层的线性向量;
将n个第一堆栈层的线性向量经过全连接层处理,得到每个第一堆栈层对应的全连接向量;
将每个第一堆栈层对应的全连接向量经过归一化层处理,得到每个第一堆栈层对应的编码向量。
可选地,所述解码层包括第二隐藏层和p个第二堆栈层组,且所述p个第二堆栈层组顺次连接,其中,p≥2;
将所述n个编码向量中的m个编码向量输入至解码层,得到解码层输出的解码向量,包括:
将所述n个编码向量中的m个编码向量输入至所述p个第二堆栈层组,得到每个第二堆栈层组的输出向量,并根据所述p个第二堆栈层组的输出向量得到解码层的解码向量。
可选地,将所述n个编码向量中的m个编码向量输入至所述p个第二堆栈层组,得到每个第二堆栈层组的输出向量,包括:
s202、将所述待翻译语句对应的参考向量输入至所述第二隐藏层,生成第二向量;
s204、将所述第二向量以及m个编码向量中的至少一个编码向量输入至第1个所述第二堆栈层组,得到第1个所述第二堆栈层组的输出向量;
s206、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的至少一个编码向量输入至第j个所述第二堆栈层组,得到第j个第二堆栈层组的输出向量,其中,2≤j≤p;
s208、将j自增1,判断自增1后的j是否大于p,若是,则结束,若否,继续执行步骤s206。
可选地,根据所述p个第二堆栈层组的输出向量得到解码层的解码向量,包括:将p个第二堆栈层组的输出向量进行聚合,得到解码层的解码向量。
可选地,每个第二堆栈层组包括a个第二堆栈层分组;
所述步骤s204包括:
s302、将所述第二向量以及m个编码向量中的至少一个编码向量输入第1个第二堆栈层分组,得到第1个第二堆栈层分组的输出向量;
s304、将m个编码向量中的至少一个编码向量和第b-1个第二堆栈层分组的输出向量输入第b个第二堆栈层分组,得到第b个第二堆栈层分组的输出向量,其中,2≤b≤a;
s306、将b自增1,判断自增1后的b是否大于a,若是,则执行步骤s308,若否,继续执行步骤s304;
s308、将a个第二堆栈层分组的输出向量进行聚合,得到第1个第二堆栈层组的输出向量。
可选地,每个第二堆栈层分组包括c个第二堆栈层;
步骤s302包括:
s402、将所述第二向量以及m个编码向量中的其中一个输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s404、将m个编码向量中的其中一个和第d-1个第二堆栈层的输出向量输入第d个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s406、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s408,若否,继续执行步骤s404;
s408、将c个第二堆栈层的输出向量进行聚合,得到第1个第二堆栈层分组的输出向量。
可选地,每个第二堆栈层组包括a个第二堆栈层分组;
所述步骤s206包括:
s502、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的至少一个编码向量输入第1个第二堆栈层分组,得到第1个第二堆栈层分组的输出向量;
s504、将m个编码向量中的至少一个编码向量和第b-1个第二堆栈层分组的输出向量输入第b个第二堆栈层分组,得到第b个第二堆栈层分组的输出向量,其中,2≤b≤a;
s506、将b自增1,判断自增1后的b是否大于a,若是,则执行步骤s508,若否,继续执行步骤s504;
s508、将a个第二堆栈层分组的输出向量进行聚合,得到第j个第二堆栈层组的输出向量。
可选地,每个第二堆栈层分组包括c个第二堆栈层;
步骤s502包括:
s602、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的其中一个编码向量输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s604、将m个编码向量中的其中一个编码向量和第d-1个第二堆栈层的输出向量输入第d个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s606、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s608,若否,继续执行步骤s604;
s608、将c个第二堆栈层的输出向量进行聚合,得到第1个第二堆栈层分组的输出向量。
可选地,每个第二堆栈层分组包括c个第二堆栈层;
将m个编码向量中的至少一个编码向量和第b-1个第二堆栈层分组的输出向量输入第b个第二堆栈层分组,得到第b个第二堆栈层分组的输出向量,包括:
s702、将m个编码向量中的其中一个编码向量和第b-1个第二堆栈层分组的输出向量输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s704、将m个编码向量中的其中一个编码向量和第d-1个第二堆栈层分组的输出向量输入第k个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s706、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s708,若否,继续执行步骤s704;
s708、将c个第二堆栈层的输出向量进行聚合,得到第b个第二堆栈层分组的输出向量。
本申请实施例公开了一种翻译模型的训练方法,包括:
将目标语料中的第一语句输入至翻译模型的编码层,得到n个编码向量,其中,n为大于1的正整数;
将与第一语句对应的翻译后的第二语句以及所述n个编码向量中的m个编码向量输入至所述翻译模型的解码层,得到解码层输出的解码向量,并根据解码向量得到解码向量的误差;
根据所述解码向量的误差继续训练所述翻译模型,直至达到训练停止条件。
可选地,所述解码向量的误差通过以下方法得到:将所述解码向量与预设的向量验证集进行对比,得到所述解码向量的误差。
可选地,所述训练停止条件包括:误差的变化率小于稳定阈值。
本申请实施例公开了一种翻译装置,设置于翻译模型,所述翻译模型包括编码层和解码层,所述装置包括:
编码模块,被配置为将待翻译语句输入编码层,得到n个编码向量,其中,n为大于1的正整数;
解码模块,被配置为将所述n个编码向量中的m个编码向量输入至解码层,得到解码层输出的解码向量,并根据所述解码向量得到翻译语句,其中,1<m≤n。
本申请实施例公开了一种翻译模型的训练装置,包括:
编码训练模块,被配置为将目标语料中的第一语句输入至翻译模型的编码层,得到n个编码向量,其中,n为大于1的正整数;
解码训练模块,被配置为将与第一语句对应的翻译后的第二语句以及所述n个编码向量中的m个编码向量输入至所述翻译模型的解码层,得到解码层输出的解码向量,并根据解码向量得到解码向量的误差;
训练模块,被配置为根据所述解码向量的误差继续训练所述翻译模型,直至达到训练停止条件。
本申请实施例公开了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现如上所述的翻译方法或翻译模型的训练方法的步骤。
本申请实施例公开了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如上所述的翻译方法或翻译模型的训练方法的步骤。
本申请实施例公开了一种芯片,其存储有计算机指令,该指令被处理器执行时实现如上所述的翻译方法或翻译模型的训练方法的步骤。
本申请提供的翻译方法及装置,通过将待翻译语句输入编码层,得到n个编码向量,然后将n个编码向量中的m个编码向量输入至解码层,得到解码层输出的解码向量,从而将多个编码向量输入至解码层,有效利用了编码层输出的编码向量的语句信息,并且使解码层在解码过程中融合了多个编码向量的语句信息,最终提升翻译模型的翻译性能。
另外,对于每个第一堆栈层的编码向量,并非仅与该第一堆栈层的输出向量有关,而是根据n个第一堆栈层的输出向量经由线性层、全连接层和归一化层的处理而得,从而有利于多个第一堆栈层之间的语句信息的融合,有利于提升翻译模型的翻译性能。
本申请提供的翻译模型的训练方法及装置,通过将目标语料中的第一语句输入至翻译模型的编码层,得到至少两个编码向量;将与第一语句对应的翻译后的第二语句以及至少两个编码向量输入至翻译模型的解码层,得到解码层输出的解码向量,并根据解码向量得到解码向量的误差训练翻译模型,从而可以在模型训练阶段,有效利用了编码层输出的至少两个编码向量的语句信息,有助于提高翻译模型在使用阶段的翻译性能。
附图说明
图1是现有的一种谷歌翻译模型的架构示意图;
图2是本申请一实施例的计算设备的结构示意图;
图3是本申请一实施例的翻译方法的流程示意图;
图4是本申请一实施例的翻译方法的流程示意图;
图5是本申请一实施例的翻译方法的流程示意图;
图6是本申请一实施例的翻译方法的流程示意图;
图7是本申请一实施例的翻译方法的流程示意图;
图8是本申请一实施例的一种翻译模型的架构示意图;
图9是本申请一实施例的翻译模型的解码向量的生成示意图;
图10是本申请一实施例的翻译模型的训练方法的流程示意图;
图11是本申请一实施例的翻译装置的结构示意图;
图12是本申请一实施例的翻译模型的训练装置的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
翻译模型:其主要思想是将待翻译语句经过编码层(encoder)编码成为一个编码向量,然后利用解码层(decoder)对编码向量进行解码,得到解码向量,然后将解码向量翻译成为对应的翻译语句。
谷歌翻译模型(googletransformer):谷歌提出的一种神经网络架构,用于机器翻译。
编码(encoder):将待翻译语句由文字转化为编码向量;
解码(decoder):将编码向量转化为翻译语句的语言文字。
在本申请中,提供了一种翻译方法及装置、翻译模型的训练方法及装置、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图2是示出了根据本说明书一实施例的计算设备200的结构框图。该计算设备200的部件包括但不限于存储器210和处理器220。处理器220与存储器210通过总线230相连接,数据库250用于保存数据。
计算设备200还包括接入设备240,接入设备240使得计算设备200能够经由一个或多个网络260通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备240可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
在本说明书的一个实施例中,计算设备200的上述部件以及图2中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图2所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备200可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备200还可以是移动式或静止式的服务器。
其中,处理器220可以执行图3所示方法中的步骤。图3是示出了根据本申请一实施例的翻译方法的示意性流程图,用于翻译模型,该翻译模型包括编码层和解码层。其中,编码层包括第一隐藏层和多个第一堆栈层,且多个第一堆栈层顺次连接;解码层包括第二隐藏层和多个第二堆栈层组,且所述多个第二堆栈层组顺次连接,每个第二堆栈层组包括至少两个第二堆栈层分组,每个第二堆栈层分组包括至少两个第二堆栈层。
本申请一实施例的翻译方法包括下述步骤302~304:
302、将待翻译语句输入编码层,得到n个编码向量,其中,n为大于1的正整数。
具体地,参见图4,步骤302包括下述步骤402~410:
402、将所述待翻译语句输入至所述第一隐藏层,生成第一向量。
404、将所述第一向量输入至第1个第一堆栈层,得到第1个所述第一堆栈层的输出向量。
具体地,步骤404包括:将第一向量输入至第1个第一堆栈层,得到第1个第一堆栈层的初始输出向量,并将第1个第一堆栈层的初始输出向量作为输出向量。
406、将第i-1个所述第一堆栈层的输出向量输入至第i个第一堆栈层,得到第i个所述第一堆栈层对应的输出向量,其中2≤i≤n。
具体地,步骤406包括:
s4062、将第i-1个所述第一堆栈层的输出向量输入至第i个第一堆栈层,得到第i个第一堆栈层的输出向量。
s4064、根据第i个第一堆栈层的输出向量和第i-1个第一堆栈层的输出向量,得到第i个第一堆栈层对应的输出向量。
通过步骤s4062~s4064,与将第1个第一堆栈层的初始输出向量作为输出向量的方式不同,对于除去第1个之外的其他第i个第一堆栈层的输出向量,需要根据第i个第一堆栈层的初始输出向量以及第i-1个第一堆栈层的输出向量而得。
具体地,可以将第i个第一堆栈层的初始输出向量以及第i-1个第一堆栈层的输出向量聚合,得到第i个第一堆栈层的输出向量。
408、将i自增1,判断自增1后的i是否大于n,若是,则执行步骤410,若否,继续执行步骤406。
410、根据n个第一堆栈层的输出向量,得到每个第一堆栈层对应的编码向量。
具体地,翻译模型包括:线性层、全连接层和归一化层,步骤410包括:
s4102、将n个第一堆栈层的输出向量经过线性层处理,得到n个第一堆栈层的线性向量。
s4104、将n个第一堆栈层的线性向量经过全连接层处理,得到每个第一堆栈层对应的全连接向量。
需要说明的是,全连接层的每个节点分别与线性层的所有节点相连接。对于全连接层的每个节点的输出,需要将线性层的所有节点的输出分别乘以对应的权重系数、求和,并加上偏置系数得到。
对于本步骤s4104,每个第一堆栈层对应的全连接向量为将n个第一堆栈层的线性向量分别乘以权重系数,然后加上一个偏置系数得到。
s4106、将每个第一堆栈层对应的全连接向量经过归一化层处理,得到每个第一堆栈层对应的编码向量。
其中,归一化层的主要作用是将接收到的输入归一化到0到1之间。
通过步骤s4102~s4106,将n个第一堆栈层的输出向量经由线性层、全连接层和归一化层的处理,得到每个第一堆栈层对应的编码向量。
304、将所述n个编码向量中的m个编码向量输入至解码层,得到解码层输出的解码向量,并根据所述解码向量得到翻译语句,其中,1<m≤n。
需要解释的是,对于顺次连接的多个第一堆栈层,位置越靠前,即越接近起始的第一堆栈层,其编码向量则包含更多的语义信息;位置越靠后,即越接近最后的第一堆栈层,其编码向量则包含更多的语法信息。本实施例通过将n个编码向量中的m个编码向量输入至解码层,一方面可以在后续的解码过程中更加合理地利用语义和语法的信息,另一方面可以通过层编码向量的信息融合,增强解码层的解码能力。
本实施例中,m个编码向量的选择可以有多种方式,例如:将n个第一堆栈层中的后m个第一堆栈层对应的编码向量输入至解码层。又例如,将n个第一堆栈层中的前m-1个第一堆栈层对应的编码向量以及第n个第一堆栈层对应的编码向量输入至解码层。
本实施例中,将所述n个编码向量中的m个编码向量输入至解码层可以有多种方法,前提是保证解码层的每个第二堆栈层均可以接收到输入的编码向量。例如,在一个具体实施方案中,n为6,m为2,解码层的第二堆栈层为6个,则本步骤的方法为将2个编码向量输入至6个第二堆栈层。
具体应用中,可以将第1个编码向量输入至前3个第二堆栈层,将第2个编码向量输入至后3个第二堆栈层;也可以将第1个编码向量输入至前5个第二堆栈层,将第2个编码向量输入至后1个第二堆栈层……本实施例便不再作具体限定。
具体地,解码层包括第二隐藏层和p个第二堆栈层组,且所述p个第二堆栈层组顺次连接,其中,p≥2,步骤304包括:将n个编码向量中的m个编码向量输入至p个第二堆栈层组,得到每个第二堆栈层组的输出向量,并根据p个第二堆栈层组的输出向量得到解码层的解码向量。
参见图5,将所述n个编码向量中的m个编码向量输入至所述p个第二堆栈层组,得到每个第二堆栈层组的输出向量,包括:
502、将所述待翻译语句对应的参考向量输入至所述第二隐藏层,生成第二向量。
需要说明的是,对于待翻译语句,包括至少一个待翻译词语。在翻译的过程中,依次得到至少一个待翻译词语对应的翻译词语。对于每个翻译词语,可以作为参考向量输入至第二嵌入层。
具体地,对于初始的第一个待翻译词语,参考向量为设定的初始值,可以为0;对于除去第一个待翻译词语的其他待翻译词语,参考向量为当前待翻译词语的前一个待翻译词语所对应的翻译词语。
例如对于“我爱中国”,如果当前待翻译词语为“爱”,那么参考向量为“我”对应的翻译词语“i”。
504、将所述第二向量以及m个编码向量中的至少一个编码向量输入至第1个所述第二堆栈层组,得到第1个所述第二堆栈层组的输出向量。
506、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的至少一个编码向量输入至第j个所述第二堆栈层组,得到第j个第二堆栈层组的输出向量,其中,2≤j≤p。
508、将j自增1,判断自增1后的j是否大于p,若是,则结束,若否,继续执行步骤506。
以每个第二堆栈层组包括a个第二堆栈层分组为例,参见图6,步骤504包括:
602、将所述第二向量以及m个编码向量中的至少一个编码向量输入第1个第二堆栈层分组,得到第1个第二堆栈层分组的输出向量;
604、将m个编码向量中的至少一个编码向量和第b-1个第二堆栈层分组的输出向量输入第b个第二堆栈层分组,得到第b个第二堆栈层分组的输出向量,其中,2≤b≤a;
606、将b自增1,判断自增1后的b是否大于a,若是,则执行步骤608,若否,继续执行步骤604;
608、将a个第二堆栈层分组的输出向量进行聚合,得到第1个第二堆栈层组的输出向量。
通过上述步骤602~608,可以得到第1个第二堆栈层组的输出向量。
更为具体的,以每个第二堆栈层分组包括c个第二堆栈层为例,步骤602包括:
s6022、将所述第二向量以及m个编码向量中的其中一个输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s6024、将m个编码向量中的其中一个和第d-1个第二堆栈层的输出向量输入第d个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s6026、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s6028,若否,继续执行步骤s6024;
s6028、将c个第二堆栈层的输出向量进行聚合,得到第1个第二堆栈层分组的输出向量。
以每个第二堆栈层分组包括c个第二堆栈层为例,步骤604包括:
s6042、将m个编码向量中的其中一个编码向量和第b-1个第二堆栈层分组的输出向量输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s6044、将m个编码向量中的其中一个编码向量和第d-1个第二堆栈层分组的输出向量输入第k个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s6046、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s6048,若否,继续执行步骤s6044;
s6048、将c个第二堆栈层的输出向量进行聚合,得到第b个第二堆栈层分组的输出向量。
以每个第二堆栈层组包括a个第二堆栈层分组为例,参见图7,步骤506包括:
702、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的至少一个编码向量输入第1个第二堆栈层分组,得到第1个第二堆栈层分组的输出向量;
704、将m个编码向量中的至少一个编码向量和第b-1个第二堆栈层分组的输出向量输入第b个第二堆栈层分组,得到第b个第二堆栈层分组的输出向量,其中,2≤b≤a;
706、将b自增1,判断自增1后的b是否大于a,若是,则执行步骤708,若否,继续执行步骤704;
708、将a个第二堆栈层分组的输出向量进行聚合,得到第j个第二堆栈层组的输出向量。
通过上述步骤702~708,可以得到除去第1个第二堆栈层组之外的其他第二堆栈层组的输出向量。
以每个第二堆栈层分组包括c个第二堆栈层为例,步骤702包括:
s7022、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的其中一个编码向量输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s7024、将m个编码向量中的其中一个编码向量和第d-1个第二堆栈层的输出向量输入第d个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s7026、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s7028,若否,继续执行步骤s7024;
s7028、将c个第二堆栈层的输出向量进行聚合,得到第1个第二堆栈层分组的输出向量。
以每个第二堆栈层分组包括c个第二堆栈层为例,步骤704包括:
s7042、将m个编码向量中的其中一个编码向量和第b-1个第二堆栈层分组的输出向量输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s7044、将m个编码向量中的其中一个编码向量和第d-1个第二堆栈层分组的输出向量输入第k个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s7046、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s7048,若否,继续执行步骤s7044;
s7048、将c个第二堆栈层的输出向量进行聚合,得到第b个第二堆栈层分组的输出向量。
由上可见,本实施例中,将解码层的多个第二堆栈层划分为三个等级:第二堆栈层组、第二堆栈层分组和第二堆栈层。通过第二堆栈层的输出向量,可以得到第二堆栈层分组的输出向量;通过第二堆栈层分组的输出向量,可以得到第二堆栈层组的输出向量;通过第二堆栈层组的输出向量,可以得到解码层的解码向量。
当然,在实际应用时,还可以根据第二堆栈层的个数划分为更多的等级。
在获得p个第二堆栈层组的输出向量后,然后根据p个第二堆栈层组的输出向量得到解码层的解码向量。
可选地,可以根据向量聚合的方式,将p个第二堆栈层组的输出向量进行聚合,得到解码层的解码向量。
具体地,解码层包括线性层和归一化层,将p个第二堆栈层组的输出向量经由线性层聚合,然后经过归一化层进行归一化处理,得到解码层的解码向量。
本实施例的翻译方法,通过将待翻译语句输入编码层,得到n个编码向量,然后将n个编码向量中的m个编码向量输入至解码层,得到解码层输出的解码向量,从而将多个编码向量输入至解码层,有效利用了编码层输出的编码向量的语句信息,并且使解码层在解码过程中融合了多个编码向量的语句信息,最终提升翻译模型的翻译性能。
另外,本实施例通过将n个编码向量中的m个编码向量输入至解码层,一方面可以在后续的解码过程中更加合理地利用语义和语法的信息,另一方面可以通过层编码向量的信息融合,增强解码层的解码能力。
再次,对于每个第一堆栈层的编码向量,并非仅与该第一堆栈层的输出向量有关,而是根据n个第一堆栈层的输出向量经由线性层、全连接层和归一化层的处理而得,从而有利于多个第一堆栈层之间的语句信息的融合,有利于提升翻译模型的翻译性能。
为了便于理解本实施例的技术方案,下面结合图8,以一具体翻译模型的对本实施例进行示意性的说明。
参见图8,图8所示的翻译模型,包括编码层和解码层,编码层包括6个第一堆栈层,解码层包括8个第二堆栈层。其中,将8个第二堆栈层进行如下划分:解码层共包括2个第二堆栈层组,每个第二堆栈层组包括2个第二堆栈层分组,每个第二堆栈层分组包括2个第二堆栈层。
基于本翻译模型的翻译方法包括:
s802、将所述待翻译语句输入至所述第一隐藏层,生成第一向量。
s804、将所述第一向量输入至第1个第一堆栈层,得到第1个第一堆栈层的输出向量;然后将第1个第一堆栈层的输出向量输入至第2个第一堆栈层,得到第2个第一堆栈层对应的输出向量;将第2个第一堆栈层的输出向量输入至第3个第一堆栈层,得到第3个第一堆栈层对应的输出向量……依次类推,得到6个第一堆栈层对应的输出向量,然后根据6个第一堆栈层的输出向量,得到每个第一堆栈层对应的编码向量。
s806、将第4~6个第一堆栈层对应的编码向量输入至解码层。
具体地,将第6个第一堆栈层对应的编码向量输入至第3~8个第二堆栈层,将第5个第一堆栈层对应的编码向量输入至第2个第二堆栈层,将第4个第一堆栈层对应的编码向量输入至第1个第二堆栈层。
s808、计算得到解码层输出的解码向量。
具体地参见图9,图9示出了解码向量的生成过程示意图。步骤s808包括:
1)将待翻译语句对应的参考向量输入至第二隐藏层,生成第二向量。
2)将所述第二向量以及3个编码向量输入至第1个第二堆栈层组,得到第1个第二堆栈层组的输出向量。
其中,第1个第二堆栈层组的输出向量生成的过程包括:
将第二向量以及第4~5个第一堆栈层对应的编码向量输入第1个第二堆栈层分组,得到第1个第二堆栈层分组的输出向量;
将第6个第一堆栈层对应的编码向量和第1个第二堆栈层分组的输出向量输入第2个第二堆栈层分组,得到第2个第二堆栈层分组的输出向量。
更为具体地,将第二向量以及第4个第一堆栈层对应的编码向量输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
将第5个第一堆栈层对应的输出向量和第1个第二堆栈层的输出向量输入第2个第二堆栈层,得到第2个第二堆栈层的输出向量。
将第1~2个第二堆栈层的输出向量进行聚合,得到第1个第二堆栈层分组的输出向量,然后将第6个第二堆栈层的输出向量和第1个第二堆栈层分组的输出向量输入第3个第二堆栈层,得到第3个第二堆栈层的输出向量。
将第6个第一堆栈层对应的输出向量和第3个第二堆栈层的输出向量输入第4个第二堆栈层,得到第4个第二堆栈层的输出向量。
将第3~4个第二堆栈层的输出向量进行聚合,得到第2个第二堆栈层分组的输出向量。
3)将第6个第一堆栈层对应的编码向量以及第1个第二堆栈层组的输出向量输入至第2个第二堆栈层组,得到第2个第二堆栈层组的输出向量。
其中,第2个第二堆栈层组的输出向量生成的过程包括:
将第6个第一堆栈层对应的编码向量以及第1个第二堆栈层组的输出向量输入第3个第二堆栈层分组,得到第3个第二堆栈层分组的输出向量。
将第6个第一堆栈层对应的编码向量和第3个第二堆栈层分组的输出向量输入第4个第二堆栈层分组,得到第4个第二堆栈层分组的输出向量。
其中,第3个第二堆栈层分组的输出向量为第5~6个第二堆栈层的输出向量聚合而得,第4个第二堆栈层分组的输出向量为第7~8个第二堆栈层的输出向量聚合而得。
对于第2个第二堆栈层组的每个第二堆栈层的输出向量的具体过程,和第1个第二堆栈层组的每个第二堆栈层的输出向量的过程类似,本实施例便不再赘述。
4)将第1~2个第二堆栈层组的输出向量经由线性层聚合、归一化层处理,得到解码向量。
s810、根据解码向量得到翻译语句。
上述实施例为对本申请的翻译方法的示意性说明。本申请另一实施例公开了一种翻译模型的训练方法,参见图10,包括步骤1002~1006:
1002、将目标语料中的第一语句输入至翻译模型的编码层,得到n个编码向量,其中,n为大于1的正整数。
本实施例中,目标语料中包括多个第一语句和多个第二语句,第一语句和第二语句一一对应。例如,第一语句为“我爱中国”,第二语句为“ilovechina”;第一语句为“我吃苹果”,第二语句为“ieatapple”。
具体地,步骤1002包括:
s1022、将第一语句输入至所述第一隐藏层,生成第一向量。
例如,第一语句为“我爱中国”,生成的第一向量x=(x0,x1,x2,x3),其中,x0=“我”,x1=“爱”,x2=“中”,x3=“国”。
s1024、将第一向量输入至第1个第一堆栈层,得到第1个第一堆栈层对应的输出向量。
s1026、将第i-1个所述第一堆栈层的输出向量输入至第i个第一堆栈层,得到第i个所述第一堆栈层对应的输出向量,其中2≤i≤n。
s1028、将i自增1,判断自增1后的i是否大于n,若是,则执行步骤s1030,若否,继续执行步骤s1026。
s1030、根据n个第一堆栈层的输出向量,得到每个第一堆栈层对应的编码向量。
1004、将与第一语句对应的翻译后的第二语句以及所述n个编码向量中的m个编码向量输入至所述翻译模型的解码层,得到解码层输出的解码向量,并根据解码向量得到解码向量的误差。
可选地,解码层包括第二隐藏层和p个第二堆栈层组,且p个第二堆栈层组顺次连接,其中,p≥2;
将与第一语句对应的翻译后的第二语句以及n个编码向量中的m个编码向量输入至解码层,得到解码层输出的解码向量,包括:
s1042、将第二语句输入至所述第二隐藏层,生成第二向量;
s1044、将所述第二向量以及m个编码向量中的至少一个编码向量输入至第1个所述第二堆栈层组,得到第1个所述第二堆栈层组的输出向量;
s1046、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的至少一个编码向量输入至第j个所述第二堆栈层组,得到第j个第二堆栈层组的输出向量,其中,2≤j≤p;
s1048、将j自增1,判断自增1后的j是否大于p,若是,则结束,若否,继续执行步骤s1046。
具体地,对于第二堆栈层组的输出向量的获取,前述实施例已经详述,在此便不再赘述。
1006、根据所述解码向量的误差继续训练所述翻译模型,直至达到训练停止条件。
具体地,解码向量的误差通过以下方法得到:将解码向量与预设的向量验证集进行对比,得到解码向量的误差。
需要说明的是,本实施例中,得到的解码向量并不直接与原始的已翻译语句对应的向量进行对比计算误差,而是引入了一个向量验证集。如果将解码向量直接与原始的已翻译语句对应的向量进行对比计算误差,会导致过拟合,导致翻译模型在其他的语句翻译中的表现变差,翻译效果反而适得其反。
其中,训练停止条件包括:误差的变化率小于稳定阈值。
稳定阈值可以根据实际需求而设定,例如设置为1%。这样,误差趋于稳定,就可以认为模型训练完毕了。
本申请提供的翻译模型的训练方法,通过将目标语料中的第一语句输入至翻译模型的编码层,得到至少两个编码向量;将与第一语句对应的翻译后的第二语句以及至少两个编码向量输入至翻译模型的解码层,得到解码层输出的解码向量,并根据解码向量得到解码向量的误差训练翻译模型,从而可以在模型训练阶段,有效利用了编码层输出的至少两个编码向量的语句信息有助于提高翻译模型在使用阶段的翻译性能。
上述为本实施例的翻译方法和翻译模型的训练方法的示例性说明,下面对本实施例的翻译装置和翻译模型的训练装置进行示例性的说明。
本申请实施例还公开了一种翻译装置,参见图11,设置于翻译模型,所述翻译模型包括编码层和解码层,所述装置包括:
编码模块1102,被配置为将待翻译语句输入编码层,得到n个编码向量,其中,n为大于1的正整数;
解码模块1104,被配置为将所述n个编码向量中的m个编码向量输入至解码层,得到解码层输出的解码向量,并根据所述解码向量得到翻译语句,其中,1<m≤n。
可选地,编码层包括第一隐藏层和n个第一堆栈层,且n个第一堆栈层顺次连接,编码模块1102包括:
第一向量生成模块1122,被配置为将所述待翻译语句输入至所述第一隐藏层,生成第一向量;
第一输出向量生成模块1124,被配置为将所述第一向量输入至第1个第一堆栈层,得到第1个所述第一堆栈层的输出向量;
第二输出向量生成模块1126,被配置为将第i-1个所述第一堆栈层的输出向量输入至第i个第一堆栈层,得到第i个所述第一堆栈层对应的输出向量,其中2≤i≤n;
判断模块1128,被配置为将i自增1,判断自增1后的i是否大于n,若是,则执行编码向量生成模块1130,若否,继续执行第二输出向量生成模块1126;
编码向量生成模块1130,被配置为根据n个第一堆栈层的输出向量,得到每个第一堆栈层对应的编码向量。
可选地,解码模块1104具体被配置为:将n个第一堆栈层中的后m个第一堆栈层对应的编码向量输入至解码层。
可选地,第二输出向量生成模块1126具体被配置为:将第i-1个所述第一堆栈层的输出向量输入至第i个第一堆栈层,得到第i个第一堆栈层的初始输出向量;
根据第i个第一堆栈层的初始输出向量和第i-1个第一堆栈层的输出向量,得到第i个第一堆栈层对应的输出向量。
可选地,所述翻译模型包括:线性层、全连接层和归一化层;
所述编码向量生成模块1130具体被配置为:将n个第一堆栈层的输出向量经过线性层处理,得到n个第一堆栈层的线性向量;将n个第一堆栈层的线性向量经过全连接层处理,得到每个第一堆栈层对应的全连接向量;将每个第一堆栈层对应的全连接向量经过归一化层处理,得到每个第一堆栈层对应的编码向量。
可选地,所述解码层包括第二隐藏层和p个第二堆栈层组,且所述p个第二堆栈层组顺次连接,其中,p≥2;解码模块1104具体被配置为:
第三输出向量生成模块1142,被配置为将所述n个编码向量中的m个编码向量输入至所述p个第二堆栈层组,得到每个第二堆栈层组的输出向量,
解码向量生成模块1144,被配置为根据所述p个第二堆栈层组的输出向量得到解码层的解码向量。
可选地,第三输出向量生成模块1142具体被配置为:
s202、将所述待翻译语句对应的参考向量输入至所述第二隐藏层,生成第二向量;
s204、将所述第二向量以及m个编码向量中的至少一个编码向量输入至第1个所述第二堆栈层组,得到第1个所述第二堆栈层组的输出向量;
s206、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的至少一个编码向量输入至第j个所述第二堆栈层组,得到第j个第二堆栈层组的输出向量,其中,2≤j≤p;
s208、将j自增1,判断自增1后的j是否大于p,若是,则结束,若否,继续执行步骤s206。
可选地,解码向量生成模块1144具体被配置为:将p个第二堆栈层组的输出向量进行聚合,得到解码层的解码向量。
可选地,每个第二堆栈层组包括a个第二堆栈层分组,第三输出向量生成模块1142具体被配置为:
s302、将所述第二向量以及m个编码向量中的至少一个编码向量输入第1个第二堆栈层分组,得到第1个第二堆栈层分组的输出向量;
s304、将m个编码向量中的至少一个编码向量和第b-1个第二堆栈层分组的输出向量输入第b个第二堆栈层分组,得到第b个第二堆栈层分组的输出向量,其中,2≤b≤a;
s306、将b自增1,判断自增1后的b是否大于a,若是,则执行步骤s308,若否,继续执行步骤s304;
s308、将a个第二堆栈层分组的输出向量进行聚合,得到第1个第二堆栈层组的输出向量。
可选地,每个第二堆栈层分组包括c个第二堆栈层,第三输出向量生成模块1142具体被配置为:
s402、将所述第二向量以及m个编码向量中的其中一个输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s404、将m个编码向量中的其中一个和第d-1个第二堆栈层的输出向量输入第d个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s406、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s408,若否,继续执行步骤s404;
s408、将c个第二堆栈层的输出向量进行聚合,得到第1个第二堆栈层分组的输出向量。
可选地,每个第二堆栈层组包括a个第二堆栈层分组;第三输出向量生成模块1142具体被配置为:
s502、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的至少一个编码向量输入第1个第二堆栈层分组,得到第1个第二堆栈层分组的输出向量;
s504、将m个编码向量中的至少一个编码向量和第b-1个第二堆栈层分组的输出向量输入第b个第二堆栈层分组,得到第b个第二堆栈层分组的输出向量,其中,2≤b≤a;
s506、将b自增1,判断自增1后的b是否大于a,若是,则执行步骤s508,若否,继续执行步骤s504;
s508、将a个第二堆栈层分组的输出向量进行聚合,得到第j个第二堆栈层组的输出向量。
可选地,每个第二堆栈层分组包括c个第二堆栈层;第三输出向量生成模块1142具体被配置为:
s602、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的其中一个编码向量输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s604、将m个编码向量中的其中一个编码向量和第d-1个第二堆栈层的输出向量输入第d个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s606、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s608,若否,继续执行步骤s604;
s608、将c个第二堆栈层的输出向量进行聚合,得到第1个第二堆栈层分组的输出向量。
可选地,每个第二堆栈层分组包括c个第二堆栈层;第三输出向量生成模块1142具体被配置为:
s702、将m个编码向量中的其中一个编码向量和第b-1个第二堆栈层分组的输出向量输入第1个第二堆栈层,得到第1个第二堆栈层的输出向量;
s704、将m个编码向量中的其中一个编码向量和第d-1个第二堆栈层分组的输出向量输入第k个第二堆栈层,得到第d个第二堆栈层的输出向量,其中,2≤d≤c;
s706、将d自增1,判断自增1后的d是否大于c,若是,则执行步骤s708,若否,继续执行步骤s704;
s708、将c个第二堆栈层的输出向量进行聚合,得到第b个第二堆栈层分组的输出向量。
本申请提供的翻译装置,通过将待翻译语句输入编码层,得到n个编码向量,然后将n个编码向量中的m个编码向量输入至解码层,得到解码层输出的解码向量,从而将多个编码向量输入至解码层,有效利用了编码层输出的编码向量的语句信息,并且使解码层在解码过程中融合了多个编码向量的语句信息,最终提升翻译模型的翻译性能。
另外,对于每个第一堆栈层的编码向量,并非仅与该第一堆栈层的输出向量有关,而是根据n个第一堆栈层的输出向量经由线性层、全连接层和归一化层的处理而得,从而有利于多个第一堆栈层之间的语句信息的融合,有利于提升翻译模型的翻译性能。
本申请实施例还公开了一种翻译模型的训练装置,参见图12,包括:
编码训练模块1202,被配置为将目标语料中的第一语句输入至翻译模型的编码层,得到n个编码向量,其中,n为大于1的正整数;
解码训练模块1204,被配置为将与第一语句对应的翻译后的第二语句以及所述n个编码向量中的m个编码向量输入至所述翻译模型的解码层,得到解码层输出的解码向量,并根据解码向量得到解码向量的误差;
训练模块1206,被配置为根据所述解码向量的误差继续训练所述翻译模型,直至达到训练停止条件。
可选地,解码训练模块1204具体被配置为:将所述解码向量与预设的向量验证集进行对比,得到所述解码向量的误差。
其中,训练停止条件包括:误差的变化率小于稳定阈值。
可选地,解码层包括第二隐藏层和p个第二堆栈层组,且p个第二堆栈层组顺次连接,其中,p≥2;解码训练模块1204具体被配置为:
s1042、将第二语句输入至所述第二隐藏层,生成第二向量;
s1044、将所述第二向量以及m个编码向量中的至少一个编码向量输入至第1个所述第二堆栈层组,得到第1个所述第二堆栈层组的输出向量;
s1046、将第j-1个所述第二堆栈层组的输出向量以及m个编码向量中的至少一个编码向量输入至第j个所述第二堆栈层组,得到第j个第二堆栈层组的输出向量,其中,2≤j≤p;
s1048、将j自增1,判断自增1后的j是否大于p,若是,则结束,若否,继续执行步骤s1046。
具体地,对于第二堆栈层组的输出向量的获取,前述实施例已经详述,在此便不再赘述。
本申请提供的翻译模型的训练装置,通过将目标语料中的第一语句输入至翻译模型的编码层,得到至少两个编码向量;将与第一语句对应的翻译后的第二语句以及至少两个编码向量输入至翻译模型的解码层,得到解码层输出的解码向量,并根据解码向量得到解码向量的误差训练翻译模型,从而可以在模型训练阶段,有效利用了编码层输出的至少两个编码向量的语句信息,有助于提高翻译模型在使用阶段的翻译性能。
本申请一实施例还提供一种芯片,其存储有计算机指令,该指令被处理器执行时实现如前所述翻译方法或翻译模型的训练方法的步骤。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述翻译方法或翻译模型的训练方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的翻译方法或翻译模型的训练方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述翻译方法或翻译模型的训练方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。