使用部分条件从输入序列生成目标序列的制作方法

文档序号:15308022发布日期:2018-08-31 21:19阅读:159来源:国知局

本申请主张2015年11月12日提交的美国临时申请第62/254,687号的优先权。该在先申请的公开内容被视为本申请的公开内容的一部分并且通过引用整体并入本申请的公开内容中。

本说明书总体上涉及用于使用神经网络生成输入序列的表示的系统、方法、装置和其他技术。



背景技术:

许多数据处理任务涉及将有序的输入序列转换成有序的输出序列。例如,机器翻译系统将一种语言的词语的输入序列翻译成另一种语言的词语的序列。作为另一示例,发音系统将字素的输入序列转唤成音素的目标序列。



技术实现要素:

本说明书描述了被实现为在一个或多个位置的一个或多个计算机上的计算机程序的系统。

所述系统是用于从输入序列生成目标序列的系统,所述目标序列包括在多个输出时间步中的每一个处的相应输出,所述输入序列包括在多个输入时间步中的每一个处的相应输入。

特别地,所述系统可以用于在线序列转换,原因是系统以观察到的部分输入序列(即,而不是以整个输入序列为条件)和迄今生成的部分目标序列为条件选择目标序列中的当前输出。

更特别地,对于由输入序列中的固定数量的输入时间步组成的每个块,所述系统使用编码器递归神经网络(recurrentneuralnetwork,rnn)来处理输入时间步的块中的每个输入以生成输入的相应特征表示。所述系统然后使用转换器rnn处理对于块中的输入的特征表示和在在前输出时间步处的在前输出,以选择对于紧随在前输出时间步的一个或多个输出时间步中的每一个的相应输出。这样,所述系统可以使用转换器rnn以在编码器rnn已经为输入序列中的所有输入生成特征表示之前开始选择对于目标序列的输出。

本文描述的主题的实施例可以可选地包括下列特征中的一个或多个。

对于所述输入序列中的初始块,在在前输出时间步处的在前输出可以是占位符序列开始输出。

使用转换器rnn来处理对于块中的输入的特征表示和在在前输出时间步处的在前输出以选择对于紧随在前输出时间步的一个或多个输出时间步中的每一个的相应输出可以包括:选择输出直到选择的输出是指定的块结束输出为止。

使用转换器rnn来处理对于块中的输入的特征表示和在在前输出时间步处的在前输出可以包括:使用转换器rnn来处理对于块中的输入的特征表示和在前输出,以选择对于紧随在前输出时间步的当前输出时间步的当前输出。当当前输出是指定的块结束输出时,所述系统可以限制以避免(refrainfrom)生成对于块的任何更多输出。当当前输出不是指定的块结束输出时,系统可以使用转换器rnn来处理对于块中的输入的特征表示和当前输出以选择对于紧随当前输出时间步的下一输出时间步的下一输出。

使用转换器rnn来处理对于块中的输入的特征表示和在在前输出时间步处的在前输出以选择对于紧随在前输出时间步的一个或多个输出时间步中的每一个的相应输出可以包括:选择输出直到转换器rnn的中间输出的指定部分指示选择的输出是块中的最后一个为止。

转换器rnn可以被配置为对于输入时间步的给定块并且为了选择对于给定输出时间步的输出,(i)使用第一rnn子网络处理在紧挨着给定输出时间步的在前输出时间步处的输出和对于紧挨着给定输出时间步的在前输出时间步的在前上下文向量,以更新第一rnn子网络的当前隐藏状态,(ii)使用上下文子网络来处理第一rnn子网络的更新的隐藏状态和对于输入时间步的给定块中的输入的特征表示,以确定当前上下文向量,(iii)使用第二rnn子网络来处理当前上下文向量和第一rnn子网络的更新的隐藏状态,以更新第二rnn子网络的当前隐藏状态,以及(iv)使用柔性最大值层来处理第二rnn子网络的当前隐藏状态,以生成对于可能的输出的库中的每个输出的相应分数。

上下文子网络可以是递归神经网络。

所述输入序列可以是第一语言的语音序列,并且目标序列可以是第一语言或者不同的第二语言的表示所述语音序列的音素的序列。

所述输入序列可以是第一语言的语音序列,并且目标序列可以是第一语言或者不同的第二语言的表示所述语音序列的词语或字符的序列。

在一些实施例中,计算机程序包括指令,在由计算设备执行时所述指令使计算设备执行任一上述方法。

在一些实施例中,计算机存储介质可以编码有指令,当由一个或多个计算机执行时,所述指令使所述一个或多个计算机执行用于从输入序列生成目标序列的操作,所述目标序列包括在多个输出时间步中的每一个处的相应输出,所述输入序列包括在多个输入时间步中的每一个处的相应输入。所述操作可以包括例如在本部分中描述的任意前述操作。

在一些实施例中,一种包括一个或多个计算机和存储指令的一个或多个存储装置的系统,当由所述一个或多个计算机执行时,所述指令能够操作成使所述一个或多个计算机执行用于从输入序列生成目标的操作,所述目标序列包括在多个输出时间步的每一个处的相应输出,所述输入序列包括在多个输入时间步的每一个处的相应输入。所述操作可以包括例如在本部分中描述的任意前述操作。

附图说明

图1是针对输入序列的输入时间步的每个块生成输出序列的相应部分的递归神经网络的概念图。

图2是被配置为使用至今接收的输入和生成的输出的部分条件来执行在线序列到序列转换的示例递归神经网络的框图。

图3是执行下一步预测以生成与输入时间步的块处的输入对应的目标序列的输出的递归神经网络的概念图。

图4是用于使用递归神经网络利用部分条件处理针对输入时间步的块的输入并生成输出序列的示例过程的流程图。

图5是用于使用转换器rnn来利用对输入序列中的输入和针对输出序列中的一个或多个在前时间步的输出的部分条件来选择输出序列中的当前输出的示例过程的流程图。

各附图当中同样的标记和标识符指示同样的元件。

具体实施方式

本文总体上描述了用于使用递归神经网络(rnn)系统来从输入的输入序列生成输出的目标序列的系统、方法、装置和其他技术。输入序列可以包括在一系列输入时间步的每一个处的相应输入,并且输出的目标序列可以包括在一系列输出时间步的每一个处的相应输出。所述系统可以被配置为执行各种认务,例如将记录的语音转换为表述该语音的音素的序列,将字素的输入序列转换为音素的目标序列,将一种语言的词语的输入序列翻译为另一种语言的词语或字符的对应序列,将记录的语音转换为另一种语言的词语或字符的翻译的序列,或预测一种语言(例如,语言模型)的词语的输入序列之后的词语的目标序列。

更特别地,本文描述了所述系统如何可以仅以输入序列的一部分(例如,输入序列的迄今已经被观察到的部分)为条件,并且以进一步以目标序列的迄今已经被生成的一部分为条件来选择目标序列中的在当前时间步处的输出。因此,所述系统可以适于执行在已经观察到整个输入序列之前提供输出的在线任务。例如,在语音识别器中,rnn系统可以用于实时地将语音转换为音素的目标序列,以使得甚至在用户完全说出整个语音输入之前就可以为用户生成并呈现语音的转写(transcription)。

参考图1,概念图示出了rnn系统100,其处理输入序列106以使用对直到当前时间步所观察到的输入的块的部分条件(partialconditioning)(例如,而不是在开始选择目标序列的输出之前对整个输入序列的条件)来生成目标输出序列108。

rnn系统100可以被实现为在一个或多个位置的一个或多个计算机上的一个或多个计算机程序。rnn系统100包括编码器rnn102和转换器(transducer)rnn104。编码器rnn102和转换器rnn104两者都是神经网络,并且特别地是递归神经网络(rnn)。

神经网络是利用非线性单元的一个或多个层来预测针对接收的输入的输出的机器学习模型。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作到网络中的一个或多个其他层(例如,下一隐藏层或输出层)的输入。网络的每个层根据相应一组参数的当前值从接收的输入生成输出。

rnn(例如编码器rnn102和转换器rnn104)是被配置为接收输入序列并且从输入序列生成输出序列的神经网络。rnn将来自先前时间步的网络的一些或所有内部状态用于计算当前时间步处的输出。rnn的示例为长短期(lstm)神经网络。

rnn系统100从输入序列106的输入的块生成目标输出序列108。输入的每个块表示整个输入序列106的相应一部分。特别地,每个块由输入序列106的在一组连续的时间步处的输入组成。一般来说,输入的块不重叠,以使得每个输入时间步仅被分配给一个块。例如,图1中描绘了三个块106a、106b和106c。第一输入块106a包括对于输入序列106的第一组输入的输入,即输入x(1)1至x(1)w;第二输入块106b包括对于输入序列106的紧随第一组输入的下一组输入的输入,即输入x(2)1至x(2)w;并且第三输入块106c包括对于输入序列106的紧随第二组输入的再另一组输入的输入,即输入x(3)1至x(3)w。在一些实现方式中,输入序列106的每个块中输入时间步的数量是固定的,使得所有块具有相同长度。在其他实现方式中,块的长度可以不固定,使得输入序列106的特定块具有不同长度,例如,具有与输入序列106的一个或多个其他块不同的时间步数量的输入。

对于输入的每个块,系统100被配置为使用编码器rnn102处理块中的每个时间步处的输入。编码器rnn102为块中的每个输入生成特征表示,然后该特征被转换器rnn104用于生成针对目标序列的输入。在一些实现方式中,对于给定输入的特征表示是由处理在当前时间步处的输入而产生的编码器102的当前隐藏状态。例如,块中的第一输入可以被编码器rnn102处理以更新编码器rnn102的当前隐藏状态。系统100然后使用编码器rnn102的更新的隐藏状态作为第一输入的特征表示(例如,系统可以生成表征编码器102的更新的隐藏状态的值的向量)。然后,块中的第二输入可以被编码器rnn102处理以再次更新编码器rnn102的当前隐藏状态。系统100使用编码器102的最近被更新的隐藏状态作为第二输入的特征表示。块中的每个额外输入被编码器rnn102以类似的方式顺序地处理。另外,在输入序列的每个时间步处,编码器rnn102可以实际上以来自输入序列的所有先前时间步的输入为条件,原因是系统100限制以避免重置来自任何在前时间步的隐藏状态。例如,编码器102对于第一块之后的每个块的第一输入的隐藏状态从由处理紧挨着的在前块的最后输入而产生的更新的隐藏状态继续下去。

举例来说,由于编码器102是递归性的,所以编码器102在任何给定时间步的当前隐藏状态不仅以在该时间步处的相应输入为条件,而且还以在输入序列106的一个或多个(例如,所有)在先时间步处的输入为条件。在一些实现方式中,编码器rnn102的隐藏状态部分地以来自输入序列106的先前块的输入为条件。例如,当编码器rnn102处理第二块106b的第一输入x(2)1时,编码器rnn102的当前隐藏状态以来自第一块106a的输入为条件。因此,编码器102的隐藏状态在块之间没有被重置。

一旦系统100已经生成对于块中的所有输入的特征表示,系统100就使用转换器rnn104来处理输入的特征表示和在在前输出时间步的在前输出,以选择对于紧随该在前输出时间步的一个或多个输出时间步中的每一个的相应输出。举例来说,可以使用转换器rnn104来处理对于第一块106a的输入的特征表示110a以生成目标序列108的输出的第一块108a。转换器rnn104通过使用输入的第一块106a的特征表示110a以转换器的隐藏状态为条件来生成输出的第一块108a,并且基于在前时间步的输出并且根据转换器104的当前隐藏状态来计算第一输出块108a中每个输出时间步处的输出。在一些实现方式中,可以使用对于第一块106a的输入的特征表示110a和占位符序列开始标记<s>(例如,而不是使用在前输出,原因是无在前输出可用)来生成目标序列108的在第一时间步处的输出y(1)1。可以通过根据转换器rnn104(其作为在每个输出时间步处的处理的结果而被更新)的当前参数(即,当前隐藏状态)处理在前输出来生成对于第一输出块108a中的时间步的每个后续输出y(1)2至y(1)e。

转换器rnn104继续生成给定输出块的额外输出,直到系统100识别块结束条件出现为止。输出块中时间步的总数可以是固定的或预先限定的,并且在目标序列108的任何两个输出块中的时间步的数量可以彼此相同或不同。另外,在输出块中的输出时间步的数量可以与对应输入块的输入时间步的数量相同或不同。

在一些实现方式中,转换器rnn104继续生成对于额外输出时间步的输出,直到生成的输出是指定的块结束输出为止。如果系统100识别对于当前时间步的输出是指定的块结束输出,则系统100限制以避免使用转换器rnn104来生成对于该块的任何更多输出。如果系统识别出对于当前时间步的输出不是指定的块结束输出时,系统100使用转换器rnn来选择对于紧随当前输出时间步的下一输出时间步的下一输出。在其他实现方式中,转换器rnn104继续生成对于额外输出时间步的输出,直到转换器rnn104的中间输出的指定部分指示选择的输出是块中的最后一个为止。例如,转换器rnn104可以通过对转换器rnn104的隐藏状态或转换器rnn104的一部分的隐藏状态应用逻辑(logistic)函数来产生中间输出。取决于当前步是否是块中的最后一步,逻辑函数的目标(即,中间输出)可以是0或1。系统100可以检查在每个输出时间步处的中间输出,以确定是否为该块继续生成额外时间步的输出。

因此,系统100被配置为基于迄今观察到的输入的部分输入序列来生成部分输出序列。当观察到输入的其他块时,系统100处理每个块以生成扩展输出序列108的额外输出。这样,系统100基于来自第一输入块106a的输入生成第一输出块108a中的输出y(1)1至y(1)e,然后基于来自第二输入块106b的输入生成第二输出块108a中的输出y(2)1至y(2)e。然而,当转换器rnn104开始处理来自第二输入块106b的输入的特征100b时,转换器rnn104的隐藏状态部分地以转换器104的来自第一输出块108a中的在前输出时间步的隐藏状态为条件。另外,除了来自第二输入块106b的输入的特征之外,转换器rnn104还处理来自第一输出块108的在前输出y(1)e,以生成第二输出块108b的第一输出y(2)1,从而使得第二块108b中的输出部分地以迄今观察到的输入和迄今生成的输出为条件。系统100可以以同样方式处理输入序列106的后续块,以在观察到整个输入序列106之前生成目标序列108a的额外块。例如,可以使用转换器rnn104通过处理第三输入块106c的输入x(3)1至x(3)w的特征110c和在前输出来生成第三输出块(未示出)。

在一些实现方式中,系统100被配置为使用编码器rnn102以与输入序列106的输入被接收的速率基本相同的速率来生成输入的特征。系统100然后可以在系统100继续接收输入序列106的其他部分时实时地生成并呈现对目标序列108的扩展。

图2描绘了用于从输入序列生成目标序列的示例rnn系统200。rnn系统200包括编码器rnn202和转换器rnn204。转换器rnn204包括上下文子网络206、第一rnn子网络208、第二rnn子网络210和柔性最大值(softmax)层212。

rnn系统200可以被配置为在观察到输入的额外块时生成输出的块。系统200以由编码器rnn202针对输入的块计算的特征和转换器rnn204在先前块的最后步处的递归状态为条件,通过使用生成对输出的目标序列的局部扩展的转换器rnn204来生成对于输入的每个块的输出。转换器rnn204通过使用到先前时间步和块的递归连接而在输入的块之间保持其状态。通过在每个时间步处处理紧挨着在前的时间步的相应输出来实现以在给定块中产生的输出的历史为条件。由转换器rnn204通过使用其在块之间的递归连接来实现以迄今产生的输出的整个历史为条件。通过编码器rnn202的递归状态通过信息的传播来实现以迄今看到的整个部分输入为条件。

特别地,编码器rnn202被配置为为输入的块中的每个输入生成特征表示。在一些实现方式中,对于给定输入的特征表示是由处理输入而产生的编码器rnn202的更新的隐藏状态。

在已经产生对于块中的输入的特征表示之后,转换器rnn204使用特征表示来生成输出的块。更特别地,对于给定输出时间步,转换器rnn204使用上下文子网络206、第一rnn子网络208、第二rnn子网络210和柔性最大值层212来确定可能的输出的库(dictionary)中每个输出的分数。基于分数来从可能的输出的库中选择对于该时间步的输出(例如,系统200选择具有最高分数的输出作为对于该时间步的输出或根据其相应的分数来对来自可能的输出的输出进行采样)。

特别地,上下文子网络206处理对于输入时间步的块中的输入的特征表示和第一rnn子网络208的更新的隐藏状态来确定对于给定输出时间步的当前上下文向量。通过处理在紧挨给定输出时间步的在前的输出时间步处的选择的输出和紧挨给定的输出时间步的在前的输出时间步的在前上下文向量来确定第一rnn子网络208的更新的隐藏状态。系统200使用第二rnn子网络210来处理当前上下文向量和第一rnn子网络208的更新的隐藏状态,以更新第二rnn子网络210的当前隐藏状态,然后系统200使用柔性最大值层212来处理第二rnn子网络210的当前隐藏状态,以生成对于可能的输出的库中的每个输出的相应分数。

由下述步骤序列表示用于根据转换器rnn204的参数θ对给定输出时间步m的可能的输出进行评分的由转换器rnn204执行的某些操作:

sm=frnn(sm-1,[cm-1;ym-1];θ)(式1)

cm=fcontext(sm,h((b-1)w+1…bw;θ)(式2)

h’m=frnn(h’m-1,[cm;sm];θ)(式3)

p(ym|x1…bw,y1…(m-1))=fsoftmax(ym;h’m;θ)(式4)

在这些式子中,变量s,c,h’和y分别表示第一rnn子网络208的隐藏状态、上下文向量、第二rnn子网络210的隐藏状态和对于该输出时间步的选择的输出。第一,第一rnn子网络210评估frnn函数以通过处理来自在前输出时间步的选择的输出ym-1和来自在前输出时间步的上下文向量cm-1来确定更新的隐藏状态sm(式1)。函数frnn是递归神经网络函数,例如lstm、s形(sigmoid)或双曲正切rnn。

第二,上下文子网络206评估fcontext函数以通过处理第一rnn子网络210的更新的隐藏状态sm和当前输入块b中的输入的特征表示h((b-1)w+1…bw来确定当前输出时间步的上下文向量(式2)。可以以两步来计算上下文向量cm——首先从第一rnn子网络210的状态sm计算归一化注意力向量(attentionvector)am,接下来使用a线性组合当前输入块b中的输入的特征表示h((b-1)w+1…bw并且将其用作上下文向量。为了计算am,多层感知器(perception)计算对于每对转换器状态sm和编码器h(b-1)w+j的标量值ejm。根据标量值ejm,j=1…w计算注意力向量,其中w是块大小,例如,转换器发出输出标记的周期性。这可以在形式上被表达为如下:

ejm=fattention(sm,h(b-1)w+j;θ)(式5)

am=softmax([e1m;e2m;…ewm])(式6)

第三,第二rnn子网络210评估frnn函数以通过处理对于当前输出时间步的上下文向量cm和第一rnn子网络208对于当前输出时间步的更新的隐藏状态sm来确定第二rnn子网络210的更新的隐藏状态h’m。函数frnn是递归神经网络函数,例如lstm、s形(sigmoid)或双曲正切rnn。

第四,转换器204使用柔性最大值层212来对输出的库中的每个可能的输出ym进行评分。对于给定的可能的输出ym的分数可以指示给定的可能的输出ym是目标序列中在当前输出时间步处的真实(期望)输出的概率。分数可以以迄今观察到的整个输入序列和迄今生成的部分输出序列为条件。柔性最大值层212通过处理第二rnn子网络210的当前隐藏状态来生成柔性最大值分布。

在一些实现方式中,上下文子网络206使用编码器的隐藏状态作为上下文向量cm,从而避免在前述方式中所描述的生成cm的计算成本。

图3是执行下一步预测以生成目标序列的输出块的示例rnn系统300的概念图。在一些实现方式中,rnn系统300以与在本文中其他地方描述的rnn系统300(例如,rnn系统100(图1)或rnn系统200(图2))同样的方式来配置。特别地,图3示意了rnn系统可以如何处理来自输入时间步303b的特定块的输入302以生成对于输出时间步的对应块的输出。输入时间步303b的块表示整个输入序列302的适当部分,并且输出时间步的块表示整个输出(目标)序列308的适当部分。

rnn系统300包括编码器rnn304和转换器rnn306。编码器rnn304被配置为处理来自输入序列302的输入,并且基于编码器rnn304内的递归连接来保持隐藏状态。系统300在每个输入时间步按顺序将输入馈送到编码器rnn304。举例来说,图3示出了纪录的语音的音频信号301,其被采样以生成输入序列302。对于输入时间步303a的第一块示出最后的输入x(b-1)w。对于输入时间步303b的第二块示出了输入x(b-1)w+1至xbw,并且对于输入时间步303c的第三块示出了第一输出xbw+1。

由标示为h的块表示编码器304在每个时间步处的隐藏状态。在每个时间步处,通过处理对于该时间步的相应输入来更新编码器304的隐藏状态h。例如,h(b-1)w+1表示编码器rnn304在处理输入x(b-1)w+1时的隐藏状态,并且hbw表示编码器rnn304在处理输入xbw时的隐藏状态。通过编码器rnn304的递归连接来实现跨越由编码器304看到的时间步直到当前时间步的输入之间的依赖关系。

系统300处理编码器rnn304在每个输入时间步处的相应的隐藏状态,以确定对于在该输入时间步处的相应输入的特征表示。系统300然后将对于块303b的输入的特征表示提供到转换器rnn306以开始生成与输入块303b对应的输出308。

转换器rnn306包括上下文子网络310、第一rnn子网络312、第二rnn子网络314和柔性最大值层316。上下文子网络310处理对于输入x(b-1)w+1至xbw的特征表示,以生成上下文向量c。在一些实现方式中,上下文子网络310进一步处理第一rnn子网络312的隐藏状态s以生成上下文向量c。第一rnn子网络312的隐藏状态s和第二rnn子网络314的隐藏状态h’可以基于由转换器rnn在时间步之间(时间步的一个块内和时间步的块之间)保持的递归连接而部分地以迄今观察到的输入和迄今生成的输出为条件。

对于给定的输出时间步,可以通过下述来从可能的输出的库中选择输出y:(i)使用第一rnn子网络312处理来自紧挨着在前的时间步的输出和来自紧挨着在前的时间步的上下文向量以更新第一rnn子网络312的隐藏状态,(ii)使用上下文子网络310处理来自输入时间步的当前块的输入的特征表示和第一rnn子网络312的更新的隐藏状态s来生成当前上下文向量c,(iii)使用第二rnn子网络314来处理当前上下文向量c和第一rnn子网络312的更新的隐藏状态s,以更新第二rnn子网络314的隐藏状态h’,以及(iv)使用柔性最大值层316来处理第二rnn子网络314的更新的隐藏状态h’,以生成对于可能的输出的库中的每个输出的相应评分。转换器rnn306在给定时间步产生的输出y可以基于所述分数从可能的输出的库中进行选择。

图4是用于使用rnn系统来从输入序列生成目标输出序列的示例过程400的流程图,其中目标输出序列包括对于一系列输出时间步中的每一个的相应输出,并且输入序列包括对于一系列输入时间步中的每一个的相应的输入。在一些实现方式中,可以在在线环境(context)中由rnn系统执行过程400,在所述在线环境中,在观察到整个输入序列之前生成部分输出序列。过程400可以例如由rnn系统100(图1)、200(图2)或300(图3)来执行。

在阶段402,rnn系统开始获得输入序列。rnn系统可以相对慢地接收输入序列,以使得在接收到输入序列的帧时以及在接收到整个序列之前系统可以处理输入序列的帧。

在阶段404,rnn系统将输入序列分成输入时间步的块。在一些实现方式中,每个块由固定数量的w个连续的时间步组成。在一些实现方式中,给定块中连续时间步的数量可以不固定,而是可以基于信号而动态地选择,所述信号例如促进与由输入序列中的输入表示的内容特征(例如,音素、字素、词语)的块对齐。

在阶段406,rnn系统从输入序列选择要处理的输入时间步的第一块。

在阶段408,rnn系统的编码器rnn处理来自输入时间步的块的输入的序列。所述系统将来自块的输入一次一个地按照它们在输入序列中出现的顺序馈送到编码器rnn。在每个输入时间步,编码器rnn处理相应的输入并且更新编码器rnn的隐藏状态。相应输入的特征表示可以从编码器rnn在每个输入时间步处的更新的隐藏状态导出。例如,特征表示可以形成为表征编码器rnn的更新的隐藏状态的值的向量。

在阶段410,rnn系统在与输入时间步的选择的块对应的输出时间步的块中从对于当前输出时间步的可能的输出的库中选择当前输出。可以通过处理来自输入时间步的选择的块的输入的特征表示和在目标序列中对于紧挨着当前输出时间步的在前输出时间步的选择的输出来确定选择的输出。对于输出时间步的块中的第一输出时间步,转换器rnn处理来自选择的块的输入的特征表示和对于输出时间步的在前块的最后输出时间步的选择的输出。转换器rnn通过使用到先前时间步的递归连接而在块之间以及给定块内的时间步之间保持其状态。因此,对于当前时间步的选择的输出还以迄今生成的目标序列的整个部分为条件。在图5的流程图中表示以及在下面讨论了关于转换器rnn对对于给定时间步的输出的选择的额外细节。

在阶段412,rnn系统检查对于与输入时间步的选择的块对应的输出时间步的当前块是否要选择额外输出。在一些实现方式中,转换器rnn继续生成对于额外输出时间步的输出,直到生成的输出是指定的块结束输出为止。在一些实现方式中,转换器rnn继续生成对于额外输出时间步的输出,直到转换器rnn的中间输出的指定部分指示选择的输出是块中的最后一个为止。

如果rnn系统确定当前输出时间步不是对于当前块的最后时间步,则过程400前进到下一时间步并且返回到阶段410以确定对于下一时间步的输出。一旦系统在迭代中检测到当前输出时间步是对于当前块的最后时间步(例如,系统识别出该输出是指定的块结束输出),则过程前进到阶段414。

在阶段414,系统检查是否还有要进行处理的输入时间步的额外块。如果还有其他输入块,则过程400前进到阶段416,在阶段416,系统选择输入序列中时间步的下一块,然后返回到阶段408以选择对于与新选择的输入时间步的块对应的输出时间步的下一块的输出。一旦没有要进行处理的其他输入块,过程400前进到阶段418并且完成输出序列。这样,rnn系统可以使用转换器rnn执行过程400以在转换器rnn已经为输入序列中的所有输入生成特征表示之前开始选择对于目标序列的输出。

参考图5,示出了用于使用rnn系统的转换器rnn来选择对于目标序列的给定输出时间步的输出的示例过程500的流程图。在一些实现方式中,对于目标序列中的每个输出时间步执行过程500。过程500可以例如由如同本文讨论过的那些转换器rnn和rnn系统的转换器rnn和rnn系统(例如,转换器rnn104和rnn系统100(图1),转换器rnn204和rnn系统200(图2),或转换器rnn306和rnn系统300(图3))来执行。

在阶段502,转换器rnn使用转换器rnn的第一rnn子网络处理对于紧挨着在前的输出时间步的输出和来自紧挨着在前的输出时间步的上下文向量以更新第一rnn子网络对于当前时间步的当前隐藏状态。

在阶段504,转换器rnn使用转换器rnn的上下文子网络处理第一rnn子网络的更新的隐藏状态和对于输入时间步的当前块的输入的特征表示以确定对于当前输出时间步的更新的上下文向量。

在阶段506,转换器rnn使用转换器rnn的第二rnn子网络处理对于当前输出时间步的更新的上下文向量和第一rnn子网络对于当前输出时间步的更新的隐藏状态,以更新第二rnn子网络的隐藏状态。

在阶段508,转换器rnn使用转换器rnn的柔性最大值层处理第二rnn子网络的更新的隐藏状态以确定对于输出的库当中一组可能的输出中的每一个的相应分数。所述分数可以构成在表示可能的输出中的每一个是在当前输出时间步处对于目标序列的真实输出的相对概率的所述一组可能的输出上的柔性最大值分布。

在阶段510,系统选择要发出的输出,作为目标序列中对于当前输出时间步的输出。可以基于在阶段508确定的分数来选择选择的输出。在一些实现方式中,选择具有确定的分数当中的最高分数(例如,指示对应的输出是目标序列的真实输出的最大可能性的分数)的输出作为对于当前输出时间步的输出。

在一些实现方式中,可以对于其期望输出(即,应当由系统针对输入序列生成的输出序列)为未知的序列执行过程400和500。系统还可以对一组训练数据中的输入(例如,对于其已知应当被系统预测的输出序列的一组输入序列)执行过程400和500,以便训练系统,例如以确定对于rnn系统的层(例如,编码器rnn和转换器rnn的层)的参数的训练值,以及可选地,对于词语到词语向量的映射的训练值。特别地,可以重复地对从一组训练数据中选择的输入序列执行过程400和500,作为常规机器学习训练技术的一部分以训练rnn系统的层,例如通过时间训练技术的具有反向传播的随机梯度下降。

在一些实现方式中,执行过程400和500以将记录的语音转换为表示语音的音素的序列。在一些实现方式中,执行过程400和500以实时地将语音转换为音素的目标序列,以使得甚至在用户完全说出整个语音输入之前就可以为用户生成并呈现语音的转写。

在一些实现方式中,执行过程400和500以将字素的输入序列转换为音素的目标序列。

在一些实现方式中,执行过程400和500以将一种语言的词语的输入序列翻译为另一种语言的词语的对应序列。

在一些实现方式中,执行过程400和500以预测一种语言(例如,语言模型)的词语的输入序列之后词语的目标序列。

在一些实现方式中,本文讨论的编码器是卷积、递归或完全连接深度神经网络。

本说明书中描述的主题和功能操作的实施例可以在数字电子电路、在有形地实现的计算机软件或固件、在计算机硬件(包括本说明书中公开的结构以及其结构等效物)或在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即编码在有形非暂态程序载体上以供数据处理设备执行或控制数据处理设备的操作的计算机程序指令的一个或多个模块。替代地或额外地,程序指令可以编码在人工生成的传播的信号(例如,机器生成的电、光或电磁信号,其被生成为编码信息以传输到合适的接收器设备以供数据处理设备执行)上。计算机存储介质可以是机器可读存储装置、机器可读存储基片、随机或串行存取存储装置或它们中一个或多个的组合。但是,计算机存储介质不是传播的信号。

术语“数据处理设备”涵盖用于处理数据的所有种类的设备、装置和机器,举例来说包括可编程处理器、计算机或多处理器或计算机。所述设备可以包括特殊目的的逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,所述设备还可以包括代码,该代码为所讨论的计算机程序创建执行环境,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中一种或多种的组合的代码。

计算机程序(其也被称为或被描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可以以任何形式的编程语言写成,包括编译或解释型语言、陈述性或过程语言,并且其可以以任何形式部署,包括以独立程序的形式或以模块、组件、子例程或其他适于用在计算环境中的单元。计算机程序可以但不必与文件系统中的文件对应。程序可以存储在保持其他程序或数据的文件的一部分(例如,存储在标记语言文件中的一个或多个脚本)中、在专用于所讨论的单个文件中或在多个协作的文件(例如,存储一个或多个模块、子程序或代码的一些部分的文件)中。计算机程序可以部署为在一个计算机上或在多个计算机上执行,这些计算机位于一个站点或分布在多个站点之间并通过通信网络互连。

当在本说明书中使用时,“引擎”或“软件引擎”指提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是功能的编码块,例如库、平台、软件开发套件(“sdk”)或对象。每个引擎可以被实现在包括一个或多个处理器和计算机可读介质的任何适当类型的计算装置(例如,服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、pda、智能电话或其他固定或便携式装置)上。另外,引擎中的两个或更多个可以实现在相同计算装置上或在不同的计算装置上。

本说明书中描述的过程和逻辑流可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,从而通过对输入数据进行操作并生成输出来实现功能。过程和逻辑流也可以由特殊目的的逻辑电路(例如fpga(现场可编程门阵列)或asic(专用集成电路))来执行,并且设备可以被实现为特殊目的的逻辑电路。

适用于执行计算机程序的计算机举例来说包括、可以基于通用或专用微处理器或二者,或者任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或二者接收指令和数据。计算机的必要元件是用于执行或运行指令的中央处理单元和用于存储指令和数据的一个或多个存储器装置。一般来说,计算机将也包括用于存储数据的一个或多个大容量存储装置(例如、磁盘、磁光盘或光盘)或可以操作性地耦接以以从一个或多个大容量存储装置接收数据或将数据传输到一个或多个大容量存储装置或者接收和传输这二者。然而,计算机不必具有这样的装置。另外,计算机可以嵌入到另一装置(例如,仅举例几个,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储装置(例如通用串行总线(usb)快闪驱动器))中。

适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,举例来说,包括半导体存储设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及cd-rom和dvd-rom盘。处理器和存储器可以由特殊目的的逻辑电路来补充或可以结合到其中。

为了提供与用户的交互,本说明书中描述的主题的实施例可以实现在具有显示装置及键盘和指向装置的计算机上,显示装置例如用于为用户显示信息的crt(阴极射线管)或lcd(液晶显示)监视器,用户可以通过键盘和指向装置向计算机提供输入,指向装置例如为鼠标或轨迹球。也可以使用其他种类的装置来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声学、语音或触觉输入。此外,通过向由用户使用的装置发送文件和接收来自该装置的文件,计算机可以与用户交互;例如,通过响应于从网络浏览器接收的请求而将网页发送到用户的客户端装置上的网络浏览器。

本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件(例如作为数据服务器)或包括中间件组件(例如应用服务器)或包括前端组件(例如具有图形用户界面或网络浏览器的客户端计算机,用户可通过其与本说明书中描述的主题的实施方式进行交互),或者一个或多个这样的后端、中间件或前端组件的任意组合。可以通过数字数据通信的任意形式或媒介(例如通信网络)将系统的组件互连。通信网络的实例包括局域网(“lan”)和广域网(“wan”),例如互联网。

计算系统可以包括客户端和服务器。一般来说,客户端和服务器彼此远离,并且通常通过通信网络交互。通过运行在各个计算机并且彼此具有客户端-服务器关系的计算机程序而产生客户端和服务器的关系。

尽管本说明书包含许多具体的实现细节,但是这些细节不应当被解释为对任何发明或请求保护的范围进行限制,而应该被解释为可能特定于特定发明的特定实施例的特征的描述。在本说明书中在不同实施例的上下文中描述的某些特征也可以以组合方式实现在单个实施例中。相反,在单个实施例的上下文中描述的各种特征也可以在多个实例名中分开实现或在任何合适的子组合中实现。此外,尽管特征可以如上所述描述为在某些组合中起作用并且甚至最初也这样要求保护(claim),但在一些情况下,来自所要求保护的组合的一个或多个特征可以从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。

类似地,尽管在附图中以特定顺序描绘了操作,但是这不应当被理解为需要以示出的特定顺序或以相继的顺序来执行这样的操作或者要执行所有示意的操作来取得合意的结果。在某些情形中,多任务和并行处理可为有利。另外,在上述实施例中对各种系统模块和部件的分离不应当被理解为在所有实施例中要求这样的分离,而是应当要理解,所描述的程序部件和系统可一般地在单个软件产品中被集成在一起或者被封装成多个软件产品。

已经描述了主题的特定实施例。其他实施例在下述权利要求的范围内。例如,记载在权利要求中的动作可以以不同的顺序执行而仍然取得合意的结果。作为一个示例,附图中描绘的过程不一定需要所示出的特定顺序或者连续顺序来实现期望的结果。在某些实现方式中,多任务和并行处理可为有利。

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