前馈生成式神经网络
[0001] 本申请是申请日为2018年05月22日、中国申请号为201880027095.2、发明名称为“前馈生成式神经网络”的发明专利申请的分案申请。
背景技术
[0002] 本说明书涉及生成式神经网络。
[0003] 神经网络是采用一层或多层非线性单元来预测所接收的输入的输出的机器学习模型。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一层(即下一个隐藏层或输出层)的输入。网络的每一层根据相应的一组参数的当前值从所接收的输入中生成输出。
发明内容
[0004] 总的来说,本说明书描述了前馈生成式神经网络。前馈生成式神经网络是在单个神经网络推理中生成包括多个特殊类型的输出样本的输出示例的神经网络。可选地,生成可以以上下文输入为条件。例如,前馈生成式神经网络可以生成语音波形,语音波形是以文本片段的语言特征为条件的输入文本片段的语言化。
[0005] 因此,在一个实施方案中,本说明书描述了一种训练前馈生成式神经网络的方法,该前馈生成式神经网络具有多个前馈参数,并且被配置为生成以第二类型的上下文输入为条件的第一类型的输出示例。每个输出示例包括在多个生成时间步骤的每一个处的相应的输出样本。前馈生成式神经网络被配置为接收包括上下文输入的前馈输入,并被配置为处理前馈输入以生成前馈输出,对于生成时间步骤中的每一个,该前馈输出定义在该生成时间步骤处的输出样本的可能值的相应的似然性分布。该训练包括获得训练上下文输入;根据前馈参数的当前值,使用前馈生成式神经网络处理包括该训练上下文输入的训练前馈输入,以生成训练前馈输出;以及使用经训练的自回归生成式神经网络处理训练上下文输入。
对于多个生成时间步骤中的每一个,经训练的自回归生成式神经网络已被训练为自回归地生成自回归输出,该自回归输出定义了在该生成时间步骤处的以前一生成时间步骤处的输出样本为条件的输出样本的可能值的似然性分布。该方法还包括确定相对于前馈参数的第一梯度,以使散度损耗最小化。对于生成时间步骤中的每一个,散度损耗取决于来自由自回归输出定义的、该生成时间步骤的似然性分布和由训练前馈输出定义的、该生成时间步骤的似然性分布(由自回归输出定义的、该生成时间步骤的似然性分布和由训练前馈输出定义的、该生成时间步骤的似然性分布之间)的第一散度。该方法还包括至少部分基于第一梯度确定对前馈参数的当前值的更新。
[0006] 此类方法的优点将稍后描述。通常,但并不一定,前馈输入还包括在生成时间步骤中的每一个处的相应的噪声输入。在一些实施方案中,这便于以并行方式生成一组样本的输出分布,因此这比自回归方法快得多。
[0007] 例如,第一散度可以是KL散度或Jensen‑Shannon散度。散度损耗可以至少部分地取决于在时间步骤中的每一个处的第一散度的总和。
[0008] 该训练可以还包括获得训练上下文输入的真值输出示例,并且通过从概率分布采样来根据训练前馈输出生成预测的输出示例。预测的输出示例可以用于确定训练的另一梯度。
[0009] 因此,真值输出示例和预测的输出示例可以定义诸如语音波形的波形。然后,训练可以还包括生成真值输出示例的第一幅度谱;生成预测的输出示例的第二幅度谱;以及确定相对于前馈参数的第二梯度,以使取决于第一与第二幅度谱之间的差异的幅度损耗最小化。确定对前馈参数的当前值的更新可以包括至少部分地基于第二梯度来确定更新。幅度谱可以包括例如定义波形的振幅、能量或类似幅度谱(例如,表示不同频带中的功率)的数据。
[0010] 附加地或可替换地,训练可以包括使用经训练的特征生成神经网络处理真值输出示例,以获得真值输出示例的特征。经训练的特征生成神经网络可以是以波形为输入的经预先训练的神经网络。该训练可以还包括使用经训练的特征生成神经网络处理预测的输出示例,以获得预测的输出示例的特征。然后,该方法可以包括确定相对于前馈参数的第三梯度,以使感知损耗最小化。感知损耗可以被定义为取决于真值输出示例的特征与预测的输出示例的特征之间的差异的量度的损耗。确定对前馈参数的当前值的更新可以包括至少部分地基于第三梯度来确定更新。
[0011] 该特征生成神经网络可以包括语音识别神经网络,特别是当输出示例包括语音波形时。更一般地,该特征生成神经网络可以包括经训练的自回归生成式神经网络。在这些和其他实施方案中,这些特征可以是在特征生成网络中的中间层的输出。
[0012] 该训练可以附加地或可替代地包括获得不同的上下文输入;使用经训练的自回归生成式神经网络处理不同的上下文输入,以获得多个生成时间步骤中的每一个的相应的不同自回归输出;以及确定相对于前馈参数的第四梯度,以使对比损耗最大化。广义而言,此处,对比损耗定义了两种分布之间的相似性度量。因此,对于生成时间步骤中的每一个,对比损耗可以被定义为至少部分取决于来自由不同自回归输出定义的、该生成时间步骤的似然性分布和由训练前馈输出定义的、该生成时间步骤的似然性分布的第二散度的损耗。确定对前馈参数的当前值的更新可以包括至少部分地基于第四梯度来确定更新。
[0013] 这里还描述了生成输出示例的方法。该方法可以包括接收上下文输入并通过使用已经使用如上所述的方法训练的前馈生成式神经网络处理包括上下文输入的前馈网络输入来生成输出示例。前馈网络输入可以包括噪声输入。
[0014] 这里还描述了一种方法,该方法包括接收生成波形的请求,该波形包括以调节张量为条件的多个样本,调节张量表示文本输入的特征;获得包括多个样本中的每一个的噪声值的随机噪声向量;以及使用前馈生成式神经网络处理随机噪声向量,以生成波形。前馈生成式神经网络可以包括一系列的卷积神经网络层群组。每个群组可以以调节张量为条件。每个群组可以被配置为接收输入波形,并将以调节张量为条件的波形转换成输出波形。
[0015] 第一卷积神经网络层群组的输入波形可以是随机噪声向量。除第一群组之外的每个卷积神经网络层群组的输入波形可以是紧接在该群组之前的群组的输出波形。所生成的波形可以是最后一个卷积神经网络层群组的输出。
[0016] 在一些实施方案中,卷积神经网络层群组可以包括具有由调节张量门控的激活函数的一个或多个层。例如,激活函数可以是调节张量与一个或多个可学习权重的卷积的函数。每个卷积层群组可以包括一个或多个残差块,一个或多个残差块各自包括一个或多个扩张卷积层,便于模拟长期因果相关性。例如,在一些实施方案中,每个卷积层群组可以具有类似于WaveNet(稍后引用)的结构,但是采用随机噪声向量作为输入。该系列的卷积神经网络层(convolutional neural network,CNN)群组可以包括输入和输出之间的一串CNN层群组。
[0017] 前馈生成式神经网络可以生成定义多个样本中的每一个样本的可能值的相应似然性分布的输出。该处理可以还包括使用相应的概率分布为样本中的每一个选择值。
[0018] 这里还描述了一种计算机实施的前馈生成式神经网络(110),被配置为生成语音波形(112),所述语音波形包括以表示文本输入(102)的特征的调节张量为条件以生成波形,使得所述语音波形是所述文本输入的语言化的多个样本;其中,所述前馈生成式神经网络包括一系列卷积神经网络层群组;其中,每个群组以所述调节张量为条件;其中,每个群组被配置为接收输入波形并将以所述调节张量为条件的波形转换成输出波形;其中,除第一群组之外的每个卷积神经网络层群组的输入波形是紧接在所述群组之前的群组的输出波形,其中,所生成的波形由最后一个卷积神经网络层群组的输出定义;以及用于生成随机噪声向量(104)的装置,所述随机噪声向量包括用于所述多个样本中的每个样本的噪声值;
其中,第一卷积神经网络层群组的输入波形是所述随机噪声向量。
[0019] 这里还描述了一种移动设备或智能扬声器,包括根据本公开实施例的任何前馈生成式神经网络。
[0020] 这里还描述了一种使用根据本公开实施例的前馈生成式神经网络和用于生成随机噪声向量的装置来生成语音波形的计算机实施的方法,所述方法包括:接收表示文本的特征的上下文输入;接收生成语音波形(112)的请求,所述语音波形包括以表示所述文本的特征的调节张量(102)为条件的多个样本;使用所述用于生成随机噪声向量的装置来获得包括用于所述多个样本中的每个样本的噪声值的随机噪声向量;以及在所述前馈生成式神经网络已经被训练之后,使用所述前馈生成式神经网络处理所述随机噪声向量,包括使每个群组以所述调节张量为条件,以生成所述语音波形。
[0021] 这里还描述了一个或多个存储指令的计算机存储介质,当所述指令被一个或多个计算机执行时,使得所述一个或多个计算机实施根据本公开实施例的系统或执行根据本公开实施例的方法的操作。
[0022] 本说明书结合系统和计算机程序组件使用术语“配置”。一个或多个计算机的系统被配置为执行特殊的操作或动作意味着系统已经在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中导致系统执行操作或动作。一个或多个计算机程序被配置为执行特定操作或动作的意味着一个或多个程序包括指令,当这些指令由数据处理装置执行时使得该装置执行操作或动作。
[0023] 本说明书中描述的主题的特定实施例可以被实施以便实现以下优点中的一个或多个。
[0024] 自回归神经网络通过在每个时间步骤处执行前向传递来生成跨多个时间步骤的输出示例。在给定的时间步骤,自回归神经网络生成要包括在以已经生成的输出样本为条件的输出示例中的新输出样本。这可以产生高质量的输出示例,但是会消耗大量的计算资源并花费大量的时间,即,因为处理需要以在较早的时间步骤处执行的处理为条件的大量的时间步骤来执行。
[0025] 另一方面,如本说明书中描述的前馈生成式神经网络可以比自回归生成式神经网络更快地生成输出示例,同时保持生成的输出示例的高质量。
[0026] 具体地,所描述的前馈生成式神经网络在单个推理步骤中生成输出示例,即,利用通过神经网络的单个前向传递。相对于自回归神经网络消耗的时间,这大大减少了生成输出示例所需的时间和计算资源量。
[0027] 附加地,由于前馈神经网络的结构、神经网络的训练方式或两者,前馈生成式神经网络可以生成与由经训练的自回归神经网络生成的那些输出示例质量相当的输出示例。
[0028] 具体地,前馈神经网络可以接收噪声向量作为输入,并且通过多个卷积神经网络层群组(其以上下文输入为条件)处理噪声。由于这种架构,神经网络可以有效地以上下文输入为条件来生成高质量的输出示例。附加地,前馈神经网络可以具有比自回归神经网络更少的参数,并且在计算方面较不复杂。例如,自回归神经网络也可以是卷积神经网络,但是是比前馈神经网络具有更多参数的计算更复杂的神经网络。例如,自回归神经网络可以包括前馈神经网络中不存在的跳过连接、比前馈神经网络具有更多数量的隐藏单元、或者两者。尽管如此,由于本说明书中描述的技术,前馈神经网络仍然可以产生质量相当的输出示例。
[0029] 此外,通过训练前馈神经网络以匹配由经训练的自回归神经网络生成的输出,前馈神经网络可以被训练成在很短时间内生成与经训练的自回归神经网络质量相当的样本。
前馈神经网络的训练可以可选地使用其他损耗(例如,幅度损耗、感知损耗或对比损耗中的一个或多个)来进一步增强,以改善经训练的前馈神经网络的性能,而不增加前馈神经网络的计算量。
[0030] 这可以允许前馈神经网络用于在需要生成具有低延迟的高质量输出示例的环境中或者当可用于执行神经网络的计算资源量有限时生成输出示例。例如,当神经网络被部署在具有有限处理能力和存储器的移动设备或专用个人计算设备(例如,智能扬声器或其他智能设备)上时,这可能发生。
[0031] 本说明书中的主题的一个或多个实施例的细节在附图和以下描述中阐述。从描述、附图和权利要求书中,主题的其他特征、方面和优点将变得显而易见。
附图说明
[0032] 图1示出了示例神经网络系统。
[0033] 图2是用于生成输出示例的示例过程的流程图。
[0034] 图3是用于训练前馈生成式神经网络的示例过程的流程图。
[0035] 图4是用于确定前馈参数的当前值的更新的示例过程的流程图。
[0036] 图5是用于训练前馈生成式神经网络110的自回归生成式神经网络130的图。
[0037] 各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
[0038] 图1示出了示例神经网络系统100。神经网络系统100是在一个或多个位置的一个或多个计算机上实施为计算机程序的系统的示例,其中可以实施下面描述的系统、组件和技术。
[0039] 神经网络系统100接收上下文输入102和噪声104作为输入,并以上下文输入102和噪声104为条件生成输出示例112。
[0040] 例如,上下文输入102可以是文本的语言特征,并且输出示例112可以是被语言化(即被讲出)的文本的波形。也就是说,输出示例可以是表征波形的一系列值,即一系列幅度值或者压缩或压扩幅度值。
[0041] 作为另一示例,上下文输入102可以是文本,并且输出示例112可以是由文本描述的图像。
[0042] 作为又一示例,上下文输入102可以是一系列视频帧,并且输出示例112可以是在该系列视频帧的最后一帧之后的视频帧。
[0043] 具体地,神经网络系统100包括前馈生成式神经网络110。
[0044] 前馈生成式神经网络110是被配置为接收上下文输入102和噪声104并生成定义输出示例112的前馈输出的神经网络。
[0045] 输出示例112包括多个输出样本,即数值,并且前馈生成式神经网络110生成前馈输出,该前馈输出在单个推理步骤中(即在通过前馈生成式神经网络110的单个前向传递中)定义多个数值中的每一个,并且具体地,不以神经网络110在任何较早的推理步骤中执行的任何处理为条件。
[0046] 通常,噪声是随机噪声向量,其包括输出示例中的样本中的每一个的噪声值。
[0047] 具体地,对于输出示例112中的每个样本,前馈输出定义样本的可能值的相应概率分布。
[0048] 例如,对于每个样本,前馈输出可以包括样本的预测值和/或样本的可能值的分布的参数。例如,参数可以是样本的可能值的逻辑分布的平均值和标准差。因此,在一些实施方案中,对于每个样本,前馈输出包括样本的预测值以及逻辑分布的平均值和标准差。其中,如下所述,CNN层群组按顺序堆叠,仅样本可以从一个层群组传递到下一个层群组,并且总的平均值和标准差可以根据每个群组输出的各个平均值和标准差来确定。在一些其他实施方案中,前馈输出可以不明确地包括预测样本值,但是预测样本值可以根据可能样本值的分布的参数来确定。例如,预测的样本值可以被确定为(i)样本的相对应的噪声值与样本的分布的平均值的乘积和(ii)样本的标准差的和。
[0049] 当输出示例是波形时,前馈生成式神经网络110通常包括一系列的卷积神经网络层群组。每个群组以调节张量为条件,即以上下文输入102为条件,例如,提供语音和持续时间信息的语言特征。每个群组被配置为接收输入波形,并以调节张量为条件将输入波形转换成输出波形。在WAVENET:AGENERATIVE MODEL FOR RAW AUDIO(https://arxiv.org/pdf/
1609.03499.pdf处可获得)中描述了在调节张量上调节卷积层,其全部内容通过引用结合于此。因此,对于第一卷积层群组,输入波形是随机噪声向量,并且对于最后一个卷积层群组,输出是定义输出示例的前馈输出。
[0050] 下面参考图5更详细地描述前馈生成式神经网络110的示例架构。下面参考图2更详细地描述使用前馈生成式神经网络110生成输出示例。
[0051] 为了训练前馈生成式神经网络110以生成精确的前馈输出,神经网络系统100还包括训练子系统120,该训练子系统训练前馈生成式神经网络110以确定前馈生成式神经网络
110的参数(在本说明书中称为“前馈参数”)的训练值。
[0052] 一旦已经训练了前馈生成式神经网络110,网络110就可以被部署并用于为新接收的上下文输入生成输出示例。例如,网络110可以在具有有限的计算资源或者需要以极低的延迟生成语音的用户设备(例如,移动设备或专用智能设备)上实施。
[0053] 具体地,训练子系统120使用经训练的自回归生成式神经网络130来训练前馈生成式神经网络110。
[0054] 自回归生成式神经网络130还被配置为接收与前馈生成式神经网络110相同类型的上下文输入,并生成与由前馈生成式神经网络110生成的输出示例相同类型的输出示例。
然而,自回归生成式神经网络130被配置为在多个时间步骤上以自回归方式生成输出示例中的值,即,以在较早时间步骤中生成的输出示例中的先前样本的值为条件生成输出示例中的每个样本。
[0055] 例如,当输入是语言特征并且输出是波形时,自回归生成式神经网络130可以是自回归卷积神经网络。这种自回归神经网络的示例在https://arxiv.org/pdf/
1609.03499.pdf.处可获得的WAVENET:A GENERATIVE MODEL FOR RAW AUDIO中更详细地进行了描述。
[0056] 通常,自回归生成式神经网络130一旦被训练,就能够生成非常高质量的输出。然而,因为前馈神经网络110在单个传递中生成输出示例,所以前馈神经网络110能够生成延迟比自回归神经网络130低得多的输出示例。
[0057] 如下文将更详细描述的,当使用自回归生成式神经网络130训练前馈神经网络110时,训练子系统保持自回归神经网络130的参数值固定,并且使用由自回归神经网络130生成的输出来评估在训练期间由前馈神经网络110生成的输出的质量。
[0058] 下面参考图5更详细地描述自回归生成式神经网络130的示例架构。
[0059] 可选地,训练子系统120还使用特征生成神经网络140来训练前馈生成式神经网络
110。
[0060] 特征生成神经网络140是这样的神经网络,即其被配置为接收与由前馈生成式神经网络110和自回归生成式神经网络130生成的输出示例的类型相同的输入,并且作为处理输入的一部分生成输入的特征。特征生成神经网络140通常可以是处理输入以基于输入生成分数、分类或回归输出的任何神经网络。
[0061] 具体地,训练子系统120在前馈生成式神经网络110的训练中使用由特征生成神经网络140生成的特征。这些特征可以是网络140的输出层的输出、网络140的中间层的输出、或者网络140的两层或更多层的输出的组合。
[0062] 例如,特征生成神经网络140可以是将与输出示例的类型相同的输入转换成与上下文输入的类型相同的输出的神经网络,并且特征可以是特征生成神经网络140的一个或多个隐藏层的输出。
[0063] 也就是说,当输出示例是波形并且上下文数据是文本时,特征生成神经网络140可以是将话语的波形转换成话语的转录的语音识别神经网络。
[0064] 作为另一示例,特征生成神经网络140和自回归生成式神经网络130可以是相同的神经网络,并且特征可以是自回归生成式神经网络130的隐藏一个或多个层的输出,即,而不是自回归生成式神经网络130的输出层的输出的似然性分布。
[0065] 特征生成神经网络140和自回归生成式神经网络130在用于前馈神经网络110的训练之前都经过了充分的训练。
[0066] 下面参考图3和图4更详细地描述训练前馈生成式神经网络110。
[0067] 图2是用于使用前馈生成式神经网络生成输出示例的示例过程200的流程图。为了方便,过程200将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,适当编程的神经网络系统(例如,图1的神经网络系统100)可以执行过程200。
[0068] 系统接收呈调节张量形式的上下文输入(步骤202)。
[0069] 系统获得用于生成输出示例的噪声(步骤204)。具体地,噪声是随机噪声向量,其包括输出示例中的样本中的每一个的噪声值。例如,系统可以从预定分布(例如,逻辑分布)中采样噪声向量中的每个噪声值。
[0070] 系统使用前馈生成式神经网络处理噪声向量,以生成输出示例(步骤206)。也就是说,在神经网络以调节张量为条件的同时,系统使用前馈生成式神经网络处理噪声向量。当前馈生成式神经网络包括一系列的多个卷积层群组时,每个群组接收输入波形并将输入波形映射到定义输出波形的输出。对于第一群组,输入波形是噪声向量,对于其他群组,输入波形是由该系列中的前一群组的输出定义的波形。
[0071] 图3是用于训练前馈生成式神经网络的示例过程300的流程图。为了方便,过程300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,适当编程的神经网络系统(例如,图1的神经网络系统100)可以执行过程300。
[0072] 系统获得指定经训练的自回归生成式神经网络的数据(步骤302)。
[0073] 可选地,系统获得指定特征生成神经网络的数据(步骤304)。如上所述,特征生成神经网络可以是与自回归神经网络相同的网络或不同的网络。
[0074] 该系统使用经训练的自回归生成式神经网络以及(可选地)经训练的特征生成神经网络来训练前馈生成式神经网络(步骤306)。
[0075] 具体地,该系统训练前馈生成模型,以通过优化至少部分取决于由前馈生成模型生成的概率分布和由经训练的自回归生成式神经网络生成的概率分布之间的散度的目标函数,来根据前馈参数的初始值确定前馈参数的训练值。
[0076] 在训练期间,系统在保持自回归参数的训练值固定以及(如果使用的话)特征生成参数的训练值固定的同时,调整前馈参数的值。
[0077] 具体地,该系统训练前馈生成式神经网络以最小化损耗函数,该损耗函数包括散度损耗,并且可选地包括幅度损耗、感知损耗或对比损耗中的一个或多个。当损耗函数包括多个损耗时,损耗函数可以是损耗的加权和。下面将参考图4更详细地描述各个损耗。
[0078] 图4是用于确定前馈参数的当前值的更新的示例过程400的流程图。为了方便,过程400将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,适当编程的神经网络系统(例如,图1的神经网络系统100)可以执行过程400。
[0079] 系统可以通过反复调整前馈参数的值,反复执行过程400来训练前馈生成式神经网络。
[0080] 系统获得训练上下文输入(步骤402)。例如,系统可以对一批训练上下文输入进行采样,并且所获得的训练上下文输入可以是该批中的输入中的一个。
[0081] 该系统根据前馈参数的当前值,使用前馈生成式神经网络处理包括训练上下文输入的训练前馈输入,以生成定义输出示例的训练前馈输出(步骤404)。如上所述,训练前馈输出包括生成时间步骤中的每一个的相应似然性分布的参数。
[0082] 系统使用经训练的自回归生成式神经网络处理训练上下文输入,以生成多个生成时间步骤中的每一个的相应自回归输出(步骤406)。如上所述,给定生成时间步骤的自回归输出还定义了该时间步骤的似然性分布。在每个时间步骤,系统在由前馈神经网络生成的输出示例的相对应的部分上调节自回归生成式神经网络,即,使得经训练的自回归生成式神经网络用于对由前馈神经网络生成的输出示例评分。也就是说,当生成对应于输出示例中的给定样本的自回归输出时,自回归生成式神经网络以训练上下文输入为条件并且以输出示例中的给定样本之前的、由前馈神经网络生成的样本为条件。这在图5中以图形方式描述,并且在所附描述中更详细地描述。
[0083] 该系统确定相对于前馈参数的散度损耗的梯度,即使散度损耗最小化的梯度。对于生成时间步骤中的每一个,散度损耗取决于从由自回归输出定义的、该生成时间步骤的似然性分布到由训练前馈输出定义的、该生成时间步骤的似然性分布的散度(步骤408)。具体地,散度损耗可以是生成时间步骤中的每一个的散度的总和。该系统可以使用多种散度度量中的任何一个来度量一个概率分布与另一概率分布的发散程度。例如,散度可以是KL(Kullback‑Leibler)散度。作为另一示例,散度可以是Jensen‑Shannon散度。
[0084] 通过最小化这种散度损耗,系统训练前馈网络去尝试在由生成式神经网络已经学习到的分布下匹配其自身样本的概率。
[0085] 在采用KL散度DKL的情况下,实际上可以通过从前馈分布和自回归分布的交叉熵HFA减去前馈模型分布的熵HF来计算散度损耗,DKL=HFA‑HF,其中,HF由下式给出:
[0086]
[0087] 对于T个样本,其中,s(z