一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经网络的深度并行训练的制作方法

2022-07-10 16:43:45 来源:中国专利 TAG:


1.本说明书涉及训练神经网络。


背景技术:

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


技术实现要素:

3.本说明书描述了实现为一个或多个位置的一个或多个计算机上的计算机程序的系统,该系统训练被配置成处理输入序列以生成输出序列的神经网络。具体地,该系统能够执行神经网络的深度并行训练。在本说明书中,如果训练系统在训练期间使用神经网络的相应不同神经网络层并行处理多个不同的网络输入,则该训练系统执行神经网络的深度并行训练。
4.该系统能够通过并行执行多个“前向传递”和多个“后向传递”来执行深度并行训练。在本说明书中,神经网络的“前向传递”指的是系统使用神经网络处理网络输入以生成对应于网络输入的网络输出的操作。在本说明书中,神经网络的“后向传递”指的是系统使用神经网络响应于网络输入而生成的网络输出中的误差来更新神经网络参数的操作。
5.使用现有技术,当训练包括多个神经网络层的神经网络时,在开始处理输入序列中的后续输入项之前,训练系统通常必须执行对应于输入项的全部前向传递和后向传递。这是因为,对于每个神经网络层,训练系统使用由神经网络层在前向传递期间生成的层输出,以便在后向传递期间更新神经网络层的参数。因此,如果神经网络包括n个神经网络层,则训练系统处理输入项需要大约2n个处理时间步(前向传递的n个处理时间步,以及后向传递的n个处理时间步),在此期间,训练系统不能处理输入序列中的任何其他输入项。因此,对于包括k个输入项的输入序列,训练系统需要大约2nk个处理时间步来处理输入序列。
6.使用本说明书中描述的技术,对于神经网络的每个神经网络层,训练系统能够使用对应于第二输入项的层输出来近似对应于第一输入项的层输出,该第二输入项在输入序列中比第一输入项晚。因此,在处理第二输入项之前,训练系统不需要等待直到第一输入项的完全前向传递和后向传递完成。具体地,在每个处理时间步,神经网络的每个神经网络层能够生成对应于输入序列的相应不同输入项的层输出。因此,训练系统能够在大约k 2n个处理时间步中处理具有k个输入项的输入序列。
7.能够实现本说明书中描述的主题的特定实施例,以便实现一个或多个以下优点。
8.如上所述,使用现有技术处理输入项的时间复杂度为o(nk),其中n是神经网络中神经网络层数,并且k是输入序列中输入项的数量。使用本说明书中描述的技术处理输入项的时间复杂度为o(n k)。这表示效率的显著提高,从而减少训练神经网络所需的时间。
9.使用本说明书中描述的技术,训练系统能够进一步减少训练神经网络的存储器需求。具体地,因为训练系统对于每个神经网络层使用对应于第一输入项的层输出以近似对应于第二输入项的层输出,所以训练系统不需要在存储器中存储对应于输入序列中每个输入项的相应层输出。此外,通过消除训练系统维护层输出的存储器存储并在需要时检索相应层输出的需求,本文中描述的技术能够进一步提高训练系统的计算和时间效率。
10.本说明书中描述的一些系统能够通过依赖于第一输入项和第二输入项相当相似的假设,使用对应于输入序列中的第二输入项的层输出来近似对应于输入序列中的第一输入项的层输出。对于在输入序列中彼此接近的两个输入项(例如,彼此在1、10或100个输入时间步内),这通常是有效的假设,从而允许系统生成神经网络层的高度准确的参数更新。
11.因此,所描述的系统的一些实施方式提供了利用了实际上局部的处理的对后向传播的替代,确定仅是近似的梯度,因为它们基于来自不同时间步的层输出,并且从而运用输入序列中的平滑度。与直觉相反地,这可以提供一些另外的正则化,帮助系统进行泛化。相应地,在要求系统参数快速适应的设置中,这通过避免由首先在前向方向上传播数据然后在后向方向上传播数据引入的固有延迟来实现。所描述的技术具有普遍适用性,但是该系统的一些实施方式对于处理时间序列是有用的,诸如包括视频或音频数据帧的输入项。
12.本说明书主题的一个或多个实施例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书,本主题的其他特征、方面和优点将变得明显。
附图说明
13.图1图示了示例现有技术训练系统的操作。
14.图2a和图2b图示了示例训练系统的操作。
15.图3是示例训练系统的框图。
16.图4是用于训练神经网络的示例过程的流程图。
17.不同附图中相同的附图标记和名称表示相同的元件。
具体实施方式
18.本说明书描述了一种训练系统,其将训练具有多个神经网络层的神经网络的操作并行化。神经网络被配置成接收在多个输入时间步具有相应输入项的输入序列,并处理输入序列以生成网络输出。
19.神经网络处理输入序列以生成输出序列,其中输出序列中的每个输出项对应于输入序列中的相应输入项。输出项有时也被称为对应于输入项的“项输出”。
20.在一些实施方式中,在处理输入序列中的每个输入项之后,神经网络使用相应的输出项生成网络输出。例如,网络输出能够是输出项的平均值。作为另一示例,网络输出能够是输出项中的一个,例如,最后输出项(即,对应于输入序列中的最后输入项的输出项)。在一些实施方式中,网络输出本身能够是序列,例如,生成的输出项的序列。因此,通常网络输出可以从输出项中的一个或多个生成。
21.输入序列能够由任何适当类型的输入项组成。
22.在一些实施方式中,输入序列是视频序列,其中输入项中的每一个是视频序列中的一帧。然后,可以训练网络输出来表征视频序列,例如,视频序列的静止或运动内容。例
如,神经网络能够被配置成生成视频序列的类别预测。作为特定示例,神经网络能够预测视频序列描绘了对象,例如,“狗”、“海洋”或“汽车”;或者识别的动作集中的一个;或者视频序列中描绘的识别的条件集中的一个或多个的存在(例如,一天中的时间、天气条件等);等等。在这个示例中,对应于视频序列中的给定帧的输出项能够是预测概率的向量,其中向量中的每个预测概率表征了在该帧中描绘对应的类别的可能性。神经网络输出也能够是预测概率的向量,其中向量中的每个预测概率表征了在视频序列中描绘对应的类别的可能性。在另一示例中,输出项能够包括视频序列的压缩表示。在另一示例中,输出项能够包括或被用于生成输出视频帧,例如,从输入视频序列的输入帧推断视频帧属性,诸如输入视频帧的图像深度或颜色。
23.在一些其他实施方式中,输入序列是人类语音的音频序列,其中每个输入项表示一个音频样本或音频样本组。例如,输入项能够各自包括数字化的原始音频数据或处理后的音频数据。作为另一示例,输入项能够各自是从原始音频数据计算的频谱图或者音频数据帧在时间-频率域中的表示。在一些实施方式中,神经网络能够生成音频序列中说出的音素或单词的预测;即,神经网络能够是“语音到文本”神经网络。
24.在一些其他实施方式中,输入序列是文本序列,其中每个输入项表示文本样本,例如,第一自然语言中的单词。例如,每个输入项能够是字符、音素或单词的嵌入。在一些实施方式中,神经网络能够生成对应于输入文本序列的音频;即,神经网络能够是“文本到语音:神经网络”。在一些其他实施方式中,神经网络能够生成对应于输入文本序列的输出文本序列,例如,将输入文本序列翻译成不同的第二自然语言。
25.在一些其他实施方式中,输入序列是特定患者的健康数据序列,其中每个输入项表示患者的医疗数据。然后,网络输出能够表征患者的健康状况或预测患者的未来健康状况。
26.在一些其他实施方式中,输入序列是随时间表征物理环境的数据序列。例如,数据序列能够包括激光雷达、雷达或超声波数据。在一些实施方式中,网络输出能够表征关于物理环境的预测。在一些其他实施方式中,网络输出能够标识在物理环境中操作和/或与物理环境交互的代理要采取的动作,例如,从可能的动作集中选择特定动作。
27.在一些其他实施方式中,输入序列是从诸如图像、音频或文本数据等输入样本中提取的数据序列,并且输出序列是输入样本的压缩或编码表示。例如,神经网络可以是编码器或者是编码器的一部分,例如,被训练为自动编码器系统的一部分,使得输出数据项表示输入数据项的压缩潜在变量表示。解码器,例如,自动编码器系统的解码器,然后可以被用于解码输出数据项以恢复输入数据项。
28.图1图示了示例现有技术训练系统的操作。现有技术的训练系统被配置成训练神经网络100,该神经网络100包括三层块110、120和130的堆叠(在图1中由圆圈表示)。神经网络100被配置成处理输入序列中的输入项,以生成每个输入项的相应输出项。每个层块110-130包括一个或多个神经网络层。
29.第一层块110被配置成处理输入序列中的输入项,以生成第一块输出。每个后续层块120和130被配置成处理层块堆叠中的先前层块的块输出,以生成相应的块输出。最后层块的块输出能够是对应的输入项的输出项。
30.图1图示了跨多个处理时间步141-147的神经网络的操作。如果在特定处理时间步
141-147对应于特定层块110-130的圆圈是白色的,这表明特定层块在特定时间步期间不执行操作。如果在特定处理时间步对应于特定层块110-130的圆圈是灰色阴影,这表明该特定层块执行对应于由灰色阴影标识的输入项的操作。具体地,第一输入项112由浅灰色标识,而第二输入项114由深灰色标识。
31.现有技术的训练系统一次使用输入序列的一个输入项来训练神经网络。具体地,在第一处理时间步141中,现有技术的训练系统使用第一层块110处理输入序列中的第一输入项112,以生成第一块输出。现有技术训练系统向第二层块120提供第一块输出(在图1中表示为实线箭头)。在第二处理时间步142中,现有技术训练系统处理第一块输出以生成第二块输出,并将第二块输出提供给第三层块130。在第三处理时间步132中,现有技术训练系统处理第二块输出以生成第一输出项132,其对应于第一输入项112。
32.在完成前向传递之后,在第三处理时间步143中,现有技术训练系统确定第一输出项132中的误差。现有技术训练系统然后根据第一输出项132中的误差确定对第三层块130的参数的更新。
33.在第四处理时间步144和第五处理时间步145中,现有技术的训练系统将第一输出项132中的误差分别后向传播到第二层块120和第一层块110(在图1中分别表示为虚线箭头)。例如,在第四处理时间步144中,现有技术训练系统能够使用在第三处理时间步143中计算的误差的梯度来确定对第二层块120的参数的更新,并且在第五处理时间步145中,现有技术训练系统能够使用在第四处理时间步144中计算的误差的梯度来确定对第一层块110的参数的更新。
34.值得注意的是,在第六处理时间步146中,只有在现有技术的训练系统已经完成第一输入项112的后向传递之后,现有技术的训练系统才能够开始第二输入项114的前向传递。这是因为,当后向传播第一输出项132中的误差时,现有技术的训练系统需要第二块输出来更新第二层块的参数(在第四处理时间步144中),并且需要第一块输出来更新第一层块的参数(在第五处理时间步145中)。因此,这些现有技术不允许同时使用多个输入项进行并行化训练,从而限制了能够训练神经网络的速度。
35.在第六处理时间步146中,现有技术的训练系统使用第一层块110处理第二输入项114,并在第七处理时间步147中和以后继续第二输入项114的前向传递。
36.图2a和图2b图示了使用本说明书中描述的技术训练神经网络的示例训练系统的操作。
37.训练系统被配置成训练神经网络200,该神经网络200包括三个层块210、220和230的堆叠(在图2中由圆圈表示)。神经网络200被配置成处理输入序列中的输入项,以生成每个输入项的相应输出项。
38.每个层块210-230包括一个或多个神经网络层。神经网络层能够是任何合适的类型。例如,每个层块210-230能够包括一个或多个卷积神经网络层、一个或多个前馈神经网络层和/或一个或多个递归神经网络层。每个层块210-230还能够包括一个或多个规范化层,例如,批量规范化层。
39.虽然在图2中描绘了三个层块,但是通常神经网络能够具有任意数量的层块。作为特定的示例,神经网络能够具有5、10或100个层块的堆叠。
40.如上所述,第一层块210被配置成处理输入序列中的输入项,以生成第一块输出。
每个后续层块220和230被配置成处理层块堆叠中的先前层块的块输出,以生成相应的块输出。最后层块的块输出能够是对应的输入项的输出项。作为特定的示例,如果层块包括单个神经网络层,则层块的块输出是神经网络层的层输出。
41.图2a图示了处理输入序列中前几个输入项的操作,并且图2b图示了处理输入序列中最后几个输入项的操作。
42.图2a图示了跨多个处理时间步241-247的神经网络的操作。如果在特定处理时间步241-247对应于特定层块210-230的圆圈是白色的,这表明特定层块在特定时间步期间不执行操作。如果在特定处理时间步对应于特定层块210-230的圆是灰色阴影,这表明特定层块在特定时间步执行由灰色阴影标识的输入项的前向传递。具体地,第一输入项212由浅灰色标识,而每个后续输入项由逐渐加深的灰色标识(直到第六输入项216,颜色循环回到浅灰色的时候)。
43.训练系统被配置成在每个时间步241-247处理相应前向传递中的多个不同输入项和相应后向传递中的多个不同输入项。即,每个层块在给定的处理时间步中是活动的;这不同于上述现有技术,在现有技术中,一次只有一个层块是活动的。
44.例如,在每个处理时间步241-247,训练系统能够执行“前向步”和“后向步”。在一些实施方式中,在每个处理时间步241-247,训练系统能够以任何顺序或者并行地执行前向步和后向步。
45.在给定处理时间步的前向步中,第一层块210处理新的输入项,并且层块堆叠中的每个后续层块220和230处理由层块堆叠中的先前层块在先前处理时间步生成的块输出。每个层块210-230正在处理源自不同处理时间步的输入。即,如果当前处理时间步是时间步t,则第一层块210处理对应于时间步t的输入序列中的项输入。第二层块220处理源自对应于时间步t-1的项输入的块输出。第三层块230处理源自对应于时间t-2的项输入的块输出。一般地,层块n处理源自对应于时间步t

n 1的项输入的块输出。
46.在每个处理时间步的后向步中,神经网络200中的每个层块210-230对源自不同处理时间步的项输入执行后向传递。每个层块使用在处理时间步生成的层块的块输出,即,源自对应于时间步t

n 1的项输入的块输出,来确定参数更新。
47.具体地,在每个处理时间步的后向步中,第三层块230使用在处理时间步生成的输出项中的误差来确定参数更新。每个先前层块210和220使用i)由层块堆叠中的后续层块在先前处理时间步生成的先前梯度和ii)当前处理时间步中的层块的块输入(即,由层块堆叠中的先前层块在先前处理时间步的前向步中生成的块输出)来确定参数更新。
48.也就是说,层块堆叠中除了最后一个层块之外的每个层块使用源自对应于不同处理时间步的输入项的两个输入(先前梯度和先前块输出)来确定参数更新。因此,除了最后的层块之外的每个层块的参数更新是近似。
49.训练系统能够通过处理i)在处理时间步的前向步中生成的输出项和ii)与生成输出项的输入项相对应的目标或“基本事实”输出项,来计算在处理时间步的前向步中由最后层块230生成的输出项中的误差,以便确定输出项中的误差,在该示例中,最后层块230是第三层块。例如,训练系统能够计算均方误差或交叉熵损失。一般地,可以根据输出项或根据输出项确定的网络输出与目标输出项或网络输出之间的差异的测量值来确定误差。例如,当网络输出是分类输出时,使用标记输入序列来训练神经网络,可以监督训练;或者它可以
是无监督的,例如,当神经网络是自动编码器的一部分时。
50.训练系统然后能够确定输出项的计算误差相对于在处理时间步的最后块的块输入的第一梯度(即,由层块堆叠中的先前层块在处理时间步序列中的先前处理时间步生成的块输出),并将第一梯度传递到先前层块。训练系统还能够确定输出项的计算误差相对于最后层块的参数的第二梯度,并使用第二梯度来生成最后层块230的参数更新。例如,训练系统能够使用梯度下降,例如,随机梯度下降,来生成参数更新。
51.然后,在相应的后续处理时间步将误差后向传播到最后层块之前的每个特定层块(除了第一层块)期间,训练系统能够再次确定两个梯度:相对于后续处理时间步中特定层块的块输入的第一梯度,系统能够将该第一梯度传递到层块堆叠中的先前层块,以在下一个后续处理时间步中继续后向传播;以及相对于特定层块的参数的第二梯度,系统能够使用该第二梯度来生成特定层块的参数更新。
52.最后,为了将误差后向传播到第一层块,训练系统能够确定相对于第一层块的参数的单个梯度(对应于上述“第二”梯度),系统能够使用该单个梯度来生成第一层块的参数更新。即,训练系统不确定相对于第一层块的输入的梯度(对应于上述的“第一”梯度),因为在第一层块之前没有将这种梯度传递到其的层块。
53.为了方便起见,在下面的描述中,层块的“第一”梯度是指相对于在当前处理时间步的层块的块输入的梯度。层块的“第二”梯度是指相对于层块的参数的梯度。
54.通常,如果当前处理时间步是时间步t,并且在神经网络200中有d个层块,则最后层块d确定在时间步t的前向步中生成的输出项的误差(其中输出项源自对应于时间步t

d 1的输入序列中的输入项)。最后层块d能够确定相对于最后层块d的块输入的误差的第一梯度和相对于最后层块d的参数的误差的第二梯度。最后层块d能够使用该第二梯度来根据误差确定参数更新。
55.在处理时间步t,层块d

1使用以下确定第一和第二梯度:i)由层块d在时间步t

1中生成的先前梯度,层块d源自对应于时间步t

d的输入序列中的输入项;和ii)在时间步t-1的前向步期间生成的层块d

2的块输出,其中块输出源自对应于时间步t

d 2的输入序列中的输入项。一般地,层块n,其中1《n《d,使用以下确定第一和第二梯度:i)由层块n 1在时间步t

1中生成的先前梯度,层块n 1源自对应于时间步t

2d n 1的输入序列中的输入项;和ii)在时间步t-1的前向步期间生成的层块n-1的块输出,其中块输出源自输入对应于时间步t

n 1的序列中的输入项。
56.返回参考图2a,在第一处理时间步241的前向步中,第一层块210处理第一输入项211以生成第一块输出,并将第一块输出提供给第二层块220(图示为实线箭头)。为了清楚,在图2a中仅图示了对应于第一输入项211的箭头,尽管应该理解,类似的箭头可以被图示用于每个其他输入项212-217。
57.没有第一处理时间步241的后向步,因为没有生成输出项,并且因此不能计算误差、梯度或参数更新。
58.在第二处理时间步242的前向步中,第二层块220处理先前处理时间步241中生成的第一块输出(对应于第一输入项211)以生成第二块输出。第一层块220处理第二输入项212以生成新的第一块输出。
59.没有第二处理时间步242的后向步。
60.在第三处理时间步243的前向步中,第三层块230处理先前处理时间步242中生成的第二块输出(对应于第一输入项211)以生成第一输出项231。第二层块220处理在先前处理时间步242生成的第一块输出(对应于第二输入项212)以生成新的第二块输出。第一层块220处理第三输入项213以生成新的第一块输出。
61.在第三处理时间步243的后向步中,第三层块230确定第一输出项231中的误差。第三层块230能够确定误差的第一梯度,并将第一梯度提供给第二层块220(图示为虚线箭头)。第三层块230能够确定误差的第二梯度,并且使用第二梯度来根据误差确定参数更新。在第三处理时间步243的后向步中,第二层块220和第一层块210都不活动,因为梯度还没有后向传播到它们。
62.在第四处理时间步244的前向步中,第三层块230处理先前处理时间步243中生成的第二块输出(对应于第二输入项212)以生成第二输出项232。第二层块220处理先前处理时间步243生成的第一块输出(对应于第三输入项213)以生成新的第二块输出。第一层块220处理第四输入项214以生成新的第一块输出。
63.在第四处理时间步244的后向步中,第三层块230确定第二输出项232中的误差。第三层块230使用该误差确定对应的第一和第二梯度。第二层块220使用以下确定对应的第一和第二梯度:i)由第三层块230在第三时间步243中生成的先前第一梯度(对应于第一输入项211)和ii)在第三处理时间步243的前向步期间生成的第一层块210的块输出(对应于第三输入项213)。第一层块210在第四处理时间步244的后向步中不活动。
64.在第五处理时间步245的前向步中,第三层块230处理先前处理时间步244中生成的第二块输出(对应于第三输入项213)以生成第三输出项233。第二层块220处理在先前处理时间步244生成的第一块输出(对应于第四输入项214)以生成新的第二块输出。第一层块220处理第五输入项215以生成新的第一块输出。
65.在第五处理时间步245的后向步中,第三层块230确定第三输出项233中的误差。第三层块230使用该误差确定对应的第一和第二梯度。第二层块220使用以下确定对应的第一和第二梯度:i)由第三层块230在第四时间步244中生成的先前第一梯度(对应于第二输入项212)和ii)在第四处理时间步244的前向步期间生成的第一层块210的块输出(对应于第四输入项214)。第一层块210使用由第二层块220在第四时间步244中生成的先前第一梯度来确定对应的第二梯度(对应于第一输入项211)。
66.该过程继续用于第六输入项216和输入序列中的每个后续输入项。
67.因此,在实施方式中,来自一个输入项的层输出与根据先前输入项确定的梯度相结合;并且随着该过程的继续,来自多个输入项的数据可以被组合。
68.在一些实施方式中,训练系统能够通过在当前处理时间步计算层块相对于层块的块输入的第一雅可比矩阵来确定层块的第一梯度(即,将被传递到层块堆叠中的先前层块的梯度)。对于最后层块,训练系统能够确定第一梯度为第一雅可比矩阵。对于层块堆叠中的每个先前层块,训练系统能够通过将第一雅可比矩阵与由层块堆叠中的后续层块在先前处理时间步生成的接收到的先前第一梯度相乘来生成第一梯度。然后,训练系统能够将第一梯度层块提供给堆叠中的先前层块,以在后续处理时间步中继续后向传播。
69.类似地,在一些实施方式中,训练系统能够通过计算层块相对于层块的参数的当前值的第二雅可比矩阵来确定层块的第二梯度(即,将被用于更新层块的参数的梯度)。对
于最后层块,训练系统能够将第二梯度确定为第二雅可比矩阵。对于层块堆叠中的每个先前层块,训练系统然后能够通过将第二雅可比矩阵与由后续层块在先前处理时间步中生成的接收到的先前第一梯度相乘来生成第二梯度。训练系统然后能够使用第二梯度生成参数更新。
70.也就是说,在对应于第k个输入项的后向传递期间,训练系统能够通过计算下式来确定层块i的第一梯度(即,将被传递到层块堆叠中的先前层块i-1的梯度):
[0071][0072]
其中在神经网络中有d个层块,是由后续层块i 1在先前处理时间步中生成的接收的先前第一梯度,hi是由层块i表示的函数,是在当前处理时间步用于层块i的块输入(即,由先前层块i-1在先前处理时间步中生成的并且对应于第(k 2d-2n)个输入项的块输出),θi是层块i的当前参数值集,并且jh是相对于块输入的雅可比矩阵,即
[0073]
此外,在对应于第k个输入项的后向传递期间,训练系统能够通过计算下式来确定层块i的第二梯度(即,将被用于确定对层块i的参数θi的更新的梯度):
[0074][0075]
其中j
θ
是相对于参数θi的雅可比矩阵。
[0076]
图2b图示了神经网络跨对应于输入序列的最后五个处理时间步251-255的操作。具体地,图2b图示,在一些实施方式中,在对应于第k个和最后输入项218的块输出已经由相应的层块生成之后,使用对应于第k个和最后输入项218的块输出来执行由层块堆叠中的后续层块执行的每个后续处理时间步的后向步。
[0077]
具体地,在第k个处理时间步251的前向步中,第三层块230处理在先前第(k-1)个处理时间步中生成的第二块输出(对应于第(k-2)个输入项)以生成第(k-2)个输出项236。第二层块220处理在先前第(k-1)个处理时间步(对应于第(k-1)个输入项)生成的第一块输出,以生成新的第二块输出。第一层块220处理第k个输入项218以生成新的第一块输出。
[0078]
在第k个处理时间步251的后向步中,第三层块230确定第(k-2)个输出项236中的误差。第三层块230使用该误差确定对应的第一和第二梯度。第二层块220使用以下确定对应的第一和第二梯度:i)由第三层块230在先前第(k-1)个时间步中生成的先前第一梯度(对应于第(k-3)个输入项)和ii)在先前第(k-1)个处理时间步250的前向步期间生成的第一层块210的块输出(对应于第(k-1)个输入项)。第一层块210使用由第二层块220在先前第(k-1)个时间步中生成的先前第一梯度来确定对应的第二梯度(对应于第(k-4)个输入项)。
[0079]
在第(k 1)个处理时间步252的前向步中,第三层块230处理在先前第k个处理时间步251中生成的第二块输出(对应于第(k-1)个输入项)以生成第(k-1)个输出项237。第二层块220处理在先前第k个处理时间步251生成的第一块输出(对应于第k个输入项)以生成新的第二块输出。第一层块不处理任何输入项,因为输入序列中没有剩下的输入项。
[0080]
在第(k 1)个处理时间步252的后向步中,第三层块230确定第(k-1)个输出项237中的误差。第三层块230使用该误差确定对应的第一和第二梯度。第二层块220使用以下确
定对应的第一和第二梯度:i)由第三层块230在先前第k个时间步251中生成的先前第一梯度(对应于第(k-2)个输入项)和ii)在先前第k个处理时间步251的前向步期间生成的第一层块210的块输出(对应于第k个输入项218)。第一层块210使用由第二层块220在先前第k个时间步251中生成的先前第一梯度来确定对应的第二梯度(对应于第(k-3)个输入项)。
[0081]
在第(k 2)个处理时间步253的前向步中,第三层块230处理在先前第(k 1)个处理时间步252中生成的第二块输出(对应于第k个输入项)以生成第k个和最后输出项238。在第(k 2)个处理时间步253的前向步期间,第二层块和第一层块都不活动。
[0082]
在第(k 2)个处理时间步253的后向步中,第三层块230确定第k个输出项238中的误差。第三层块230使用该误差确定对应的第一和第二梯度。第二层块220使用以下确定对应的第一和第二梯度:i)由第三层块230在先前第(k 1)个时间步252中生成的先前第一梯度(对应于第(k-1)个输入项)和ii)在第k个处理时间步251的前向步期间生成的第一层块210的块输出(对应于第k个输入项219)。第一层块210使用由第二层块220在先前第(k 1)个时间步252中生成的先前第一梯度来确定对应的第二梯度(对应于第(k-2)个输入项)。
[0083]
没有第(k 3)个处理时间步254的前向步,因为已经生成了第k个和最后输出项238。
[0084]
在第(k 3)个处理时间步254的后向步中,第二层块220使用以下确定对应的第一和第二梯度:i)由第三层块230在先前第(k 2)个时间步253中生成的先前的第一梯度(对应于第k个输入项)和ii)在第k个处理时间步251的前向步期间生成的第一层块210的块输出(对应于第k个输入项218)。即,计算的梯度不是近似,而是精确的计算。第一层块210使用由第二层块220在先前第(k 2)个时间步253中生成的先前第一梯度来确定对应的第二梯度(对应于第(k-1)个输入项)。第三层块230在第(k 3)个处理时间步254的后向步中不活动。
[0085]
没有第(k 4)个处理时间步255的前向步。
[0086]
在第(k 4)个处理时间步255的后向步中,第一层块210使用由第二层块220在先前第(k 3)个时间步253中生成的先前第一梯度来确定对应的第二梯度(对应于第k个输入项)。即,计算的梯度不是近似,而是精确的计算。在第(k 4)个处理时间步255的后向步中,第三层块230和第二层块220都不活动。
[0087]
参考图2a和图2b,注意,对于一些处理时间步241-247和251-255,不是每个层块都执行前向步和后向步。具体地,能够有五个阶段的处理时间步。
[0088]
在第一阶段(在该示例中,对应于处理时间步241-242),输入序列中的第一输入项的前向传递尚未完成;因此,只有一些层块执行前向步(具体地,层块堆叠中的前m个层块在时间m执行前向步,其中1≤m《d),而没有层块执行后向步。
[0089]
在第二阶段(在该示例中,对应于处理时间步243-244),输入序列中的第一输入项的前向传递已经完成,但是第一输入项的后向传递尚未完成;因此,每个层块执行一个前向步,而只有层块中的一些执行后向步(具体地,层块堆叠中的最后r个层块在时间r d

1执行后向步,其中1《r《d),其中d是神经网络中层块的数量。
[0090]
在第三阶段(在该示例中,对应于处理时间步245-247和251),如上所述,每个层块执行前向步和后向步。
[0091]
在第四阶段(在该示例中,对应于处理时间步252-253),输入序列中最后输入项的前向传递已经开始,但尚未完成;因此,只有层块中的一些执行前向步(具体地,如果系统已
经完成了最后输入项的前向传递的d-p个步,则层块堆叠中的最后p个层块执行前向步),而每个层块执行后向步。
[0092]
在第五阶段(在该示例中,对应于处理时间步254-255),输入序列中最后输入项的后向传递已经开始,但尚未完成;因此,没有层块执行前向步,而只有层块中的一些执行后向步(具体地,如果系统已经完成了最后输入项的后向传递的d-q个步,则层块堆叠中的前q个层块执行后向步)。
[0093]
在第四和第五阶段期间,层块堆叠中的层块中的一些执行后向步,即使层块堆叠中的相应先前层块在先前处理时间步中没有执行前向步。为了做到这一点,给定的层块能够使用先前层块生成的最近的块输出(即,由先前层块在先前层块执行的最后前向步期间生成的块输出)来计算对应的第一和第二梯度。
[0094]
在一些实施方式中,训练系统能够使用相应计算的参数更新在每个处理时间步更新每个层块。在一些其他实施方式中,系统能够首先使用神经网络处理整个输入序列;然后,对于每个层块,训练系统能够组合为对应于输入序列中的相应输入项的层块而计算的参数更新,并且使用组合参数更新来更新层块的参数。
[0095]
作为特定示例,训练系统能够使用参数更新的平均值来更新层块的参数,即,为每个层块i计算:
[0096]
其中k是输入序列中输入项的数量。
[0097]
图3是示例训练系统300的框图。训练系统300是示例。训练系统300是实现为一个或多个位置中的一个或多个计算机上的计算机程序的系统的示例,其中实现了下述系统、组件和技术。
[0098]
训练系统300被配置成训练神经网络接收输入序列并处理输入序列以生成输出序列。具体地,训练系统300被配置成通过并行执行多个前向传递和多个后向传递来训练神经网络,每个后向传递对应于输入序列中的相应输入项,如以上参考图2a和图2b所述。训练系统包括训练数据存储装置310、训练引擎320和参数存储装置330。
[0099]
训练数据存储装置310被配置成存储用于训练神经网络的训练示例。每个训练示例能够包括训练输入序列和基本事实输出序列,该基本事实输出序列表示神经网络响应于处理输入序列而应该生成的输出序列。
[0100]
参数存储装置330被配置成存储神经网络参数的当前值。
[0101]
训练引擎320被配置成执行神经网络的训练,即,确定对神经网络参数的更新。具体地,在多个训练时间步的每一个,训练引擎320从训练数据存储装置中获得i)训练输入序列302和ii)对应于训练输入序列302的基本事实输出序列304。训练引擎320还能够从参数存储装置330获得神经网络参数的当前值332。
[0102]
在多个处理时间步中的每一个处,如以上参考图2a和图2b所述,训练引擎320并行处理训练输入序列302的多个输入项,并且根据i)由神经网络生成的输出项和ii)在基本事实输出序列304中标识的基本事实输出项之间的差异,确定对神经网络的参数的当前值332的更新。
[0103]
在一些实施方式中,训练引擎320在每个处理时间步更新神经网络的参数。在一些其他实施方式中,训练引擎320在多个处理时间步的批次中更新神经网络的参数。即,对于
神经网络的多个层块中的每一个,训练引擎320能够使用在该批处理时间步中的每个处理时间步确定的相应更新来确定该层块的组合参数更新。例如,训练引擎320能够确定跨该批处理时间步的平均参数更新。
[0104]
在处理训练输入序列302并更新神经网络的参数之后,训练引擎320能够将更新的参数值322提供给参数存储装置330。
[0105]
在训练完成之后,训练系统300能够输出神经网络参数的最后训练值334。在一些实施方式中,训练系统300能够在处理预定数量的训练示例之后确定完成训练。在一些其他实施方式中,训练系统300能够在神经网络的性能度量(例如,验证或测试数据集的预测精度)超过预定阈值之后确定完成训练。在一些其他实施方式中,训练系统300能够在跨多个训练时间步的神经网络的性能度量的增量提高下降到预定阈值以下之后,即,在神经网络的性能不再显著提高之后,确定完成训练。
[0106]
例如,训练系统300能够向推断系统提供训练后的参数值334,该推断系统被配置成接收输入序列并使用训练后的神经网络来处理输入序列以生成网络输出。在一些实施方式中,推断系统能够被部署在用户的本地设备上。在一些其他实施方式中,推断系统能够被部署在云系统上,即,在一个或多个位置具有多个计算节点,例如,数百或数千个计算节点的分布式计算系统。
[0107]
图4是用于训练神经网络的示例过程400的流程图。为了方便,过程400将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的训练系统,例如,图3描绘的训练系统300,能够执行过程400。
[0108]
该神经网络被配置成处理输入序列,该输入序列包括在多个输入时间步中的每一个处的相应输入项,并且生成该输入序列的网络输出。具体地,神经网络生成输入序列中的每个输入项的相应的输出项。神经网络包括层块的堆叠,其中每个层块包括一个或多个神经网络层。
[0109]
系统获得输入序列(步骤402)。
[0110]
在处理时间步序列中的多个处理时间步中的每一个处,系统执行步骤404-414。处理时间步序列能够对应于上面参考图2a和图2b描述的第三阶段。
[0111]
系统使用层块堆叠中的第一层块来处理对应于当前处理时间步的输入项,以生成第一块输出(步骤404)。
[0112]
对于不是第一层块的层块堆叠中的每个层块,系统处理由层块堆叠中的先前层块在先前处理时间步生成的块输出,以生成块输出(步骤406)。由层块堆叠中的最后层块生成的块输出可以是对应于先前输入时间步的输入项的输出项。
[0113]
系统计算i)由最后层块在当前处理时间步生成的输出项中的误差,和ii)最后层块的误差梯度(步骤408)。
[0114]
系统根据输出项中的当前误差生成最后层块的参数更新(步骤409)。
[0115]
对于不是最后层块的每个层块,系统使用i)由层块堆叠中的后续层块在先前处理时间步生成的先前梯度,和ii)由层块堆叠中的先前层块在处理时间步序列中的先前处理时间步生成的块输出来计算梯度(步骤410)。
[0116]
对于不是最后层块的每个层块,系统根据由层块堆叠中的后续层块在先前处理时间步生成的先前梯度来生成该层块的参数更新(步骤412)。
[0117]
系统确定当前处理时间步是否是处理时间步序列中的最后处理时间步(步骤414)。
[0118]
如果当前处理时间步是最后处理时间步,则系统终止过程400。
[0119]
如果当前处理时间步不是最后处理时间步,则系统在处理时间步序列中的后续处理时间步返回到步骤404。
[0120]
本说明书结合系统和计算机程序组件使用术语“配置”。对于一个或多个计算机的系统被配置成执行特定操作或动作,意味着该系统上已经安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中使该系统执行这些操作或动作。对于一个或多个计算机程序被配置成执行特定的操作或动作,意味着一个或多个程序包括指令,当由数据处理装置执行时,这些指令使该装置执行这些操作或动作。
[0121]
本说明书中描述的主题和功能操作的实施例能够被实现在数字电子电路、有形具体实施的计算机软件或固件、计算机硬件中,包括本说明书中公开的结构及其结构等同物,或者它们中的一个或多个的组合中。本说明书中描述的主题的实施例能够被实现为一个或多个计算机程序,即,编码在有形非暂时性存储介质上的计算机程序指令的一个或多个模块,以用于由数据处理装置执行或控制数据处理装置的操作。计算机存储介质能够是机器可读存储设备、机器可读存储基板、随机或串行存取存储设备,或者它们中的一个或多个的组合。替代地或另外,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息,以用于传输到合适的接收器装置,以供数据处理装置执行。
[0122]
术语“数据处理装置”指的是数据处理硬件,并且涵盖用于处理数据的所有种类的装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。该装置还能够是或进一步包括专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置能够可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
[0123]
计算机程序,其也可以被称为或描述为程序、软件、软件应用、应用、模块、软件模块、脚本或代码,能够以任何形式的编程语言编写,包括编译或解释语言,或者声明性或过程性语言;并且它能够以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适用于计算环境的其他单元。程序可以但不需要对应于文件系统中的文件。程序能够被存储在保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本,存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件中,例如,存储一个或多个模块、子程序或代码部分的文件。计算机程序能够被部署为在一个计算机或位于一个地点或分布在多个地点并通过数据通信网络互连的多个计算机上被执行。
[0124]
在本说明书中,术语“数据库”被广泛地用于指代任何数据集合:数据不需要以任何特定的方式被结构化,或者根本不需要被结构化,并且它能够被存储在一个或多个位置的存储设备上。因此,例如,索引数据库能够包括多个数据集合,数据集合中的每一个可以被不同地组织和访问。
[0125]
类似地,在本说明书中,术语“引擎”被广泛地用于指代被编程为执行一个或多个特定功能的基于软件的系统、子系统或过程。通常,引擎将被实现为安装在一个或多个位置的一该或多个计算机上的一个或多个软件模块或组件。在某些情况下,一个或多个计算机
将专用于一个特定的引擎;在其他情况下,多个引擎能够在同一个或多个计算机上安装和运行。
[0126]
本说明书中描述的过程和逻辑流程能够由一个或多个可编程计算机来执行,该一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。这些过程和逻辑流程也能够由专用逻辑电路,例如,fpga或asic,来执行,或者由专用逻辑电路和一个或多个编程计算机的组合来执行。
[0127]
适于执行计算机程序的计算机能够基于通用或专用微处理器或两者,或者任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理器和用于存储指令和数据的一个或多个存储设备。中央处理单元和存储器能够由专用逻辑电路补充或被并入其中。通常,计算机还将包括或被可操作地耦合到一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,以从该大容量存储设备接收数据或向其传送数据,或两者。然而,计算机不必须有这样的设备。此外,计算机能够被嵌入在另一设备中,例如,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备,例如,通用串行总线(usb)闪存驱动器,仅举几个示例。
[0128]
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备,例如,eprom、eeprom和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;和cd rom和dvd-rom盘。
[0129]
为了提供与用户的交互,本说明书中描述的主题的实施例能够被实现在计算机上,该计算机具有用于向用户显示信息的显示设备,例如,crt(阴极射线管)或lcd(液晶显示器)监视器,和用户能够通过其向计算机提供输入的键盘和定点设备,例如,鼠标或轨迹球。也能够使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且能够以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机能够通过向由用户使用的设备发送文档和从由用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求,向用户设备上的网络浏览器发送网页。此外,计算机能够通过向个人设备(例如,运行消息应用程序的智能手机)发送文本消息或其他形式的消息并接收来自用户的响应消息来与用户交互。
[0130]
用于实现机器学习模型的数据处理装置还能够包括,例如,专用硬件加速器单元,其用于处理机器学习训练或生产的通用和计算密集型部分,即,推断工作负荷。
[0131]
能够使用机器学习框架来实现和部署机器学习模型,例如,tensorflow框架、微软认知工具包框架、apache singa框架或apache mxnet框架。
[0132]
本说明书中描述的主题的实施例能够被实现在计算系统中,该计算系统包括后端组件,例如,作为数据服务器,或者包括中间件组件,例如,应用服务器,或者包括前端组件,例如,具有图形用户界面、网络浏览器或用户能够通过其与本说明书中描述的主题的实施方式交互的应用的客户端计算机,或者一个或多个这样的后端组件、中间件组件或前端组件的任何组合。该系统的组件能够通过任何形式或介质的数字数据通信,例如,通信网络,来互连。通信网络的示例包括局域网(lan)和广域网(wan),例如,互联网。
[0133]
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通
过通信网络进行交互。客户端和服务器的关系是借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器向用户设备传输数据,例如,html页面,例如,为了向与充当客户端的设备交互的用户显示数据并从该用户接收用户输入的目的。能够在服务器处从设备接收在用户设备处生成的数据,例如,用户交互的结果。
[0134]
除了上述实施例之外,以下实施例也是创新的:
[0135]
实施例1是一种训练神经网络的计算机实现的方法,该神经网络被配置成处理输入序列并生成该输入序列的网络输出,其中:
[0136]
该神经网络生成输入序列中的多个输入项中的每一个的相应输出项,并且
[0137]
该神经网络包括层块的堆叠,每个层块包括一个或多个神经网络层,层块的堆叠包括第一层块和最后层块,
[0138]
其中训练包括:
[0139]
接收输入序列,该输入序列包括在多个输入时间步中的每一个处的相应输入项;和
[0140]
在处理时间步序列中的多个处理时间步中的每一个处:
[0141]
使用第一层块处理对应于处理时间步的输入时间步的输入项,以生成第一块输出;
[0142]
对于不是第一层块的每个特定层块,使用特定层块处理由层块堆叠中的先前层块在处理时间步序列中的先前处理时间步生成的块输出,以生成当前块输出,其中由最后层块生成的当前块输出是比对应于处理时间步的输入时间步更早的输入时间步的输入项的输出项;
[0143]
计算i)在处理时间步由最后层块生成的输出项中的当前误差,和ii)最后层块的当前误差的当前梯度;
[0144]
根据输出项中的当前误差生成最后层块的参数更新;
[0145]
对于不是最后层块的每个特定层块,根据以下计算该特定层块的当前梯度:i)由层块堆叠中的后续层块在处理时间步序列中的先前处理时间步计算的先前梯度,和ii)由层块堆叠中的先前层块在处理时间步序列中的先前处理时间步生成的先前块输出;以及
[0146]
对于不是最后层块的每个特定层块,根据由层块堆叠中的后续层块在处理时间步序列中的先前处理时间步计算的先前梯度,生成特定层块的参数更新。
[0147]
实施例2是实施例1的方法,进一步包括,在第二处理时间步序列中的多个第二处理时间步的每一个处:
[0148]
使用第一层块处理对应于第二处理时间步的输入时间步的输入项,以生成第一块输出;以及
[0149]
对于不是第一层块的每个特定层块,使用特定层块处理由层块堆叠中的先前层块在第二处理时间步序列中的先前第二处理时间步生成的块输出,以生成当前块输出,其中由最后层块生成的当前块输出是比对应于第二处理时间步的输入时间步更早的输入时间步的输入项的输出项;
[0150]
计算i)由最后层块在第二处理时间步生成的输出项中的当前误差,和ii)最后层块的当前误差的当前梯度;
[0151]
根据输出项中的当前误差生成最后层块的参数更新;以及
[0152]
对于不是最后层块的每个特定层块,其中针对所述特定层块由层块堆叠中的后续层块在第二处理时间步序列中的先前第二处理时间步计算了先前梯度:
[0153]
根据i)由后续层块在先前的第二处理时间步计算的先前梯度和ii)由层块堆叠中的先前层块在先前的第二处理时间步生成的当前块输出,计算层块堆叠中的特定层块的当前梯度;以及
[0154]
根据由后续层块在先前的第二处理时间步计算的先前梯度,生成层块堆叠中的特定层块的参数更新,
[0155]
其中第二处理时间步序列在处理时间步序列之前。
[0156]
实施例3是实施例1或2中的任一项的方法,进一步包括,在第三处理时间步序列中的多个第三处理时间步的每一个处:
[0157]
对于以下的每个特定层块,i)在第三处理时间步序列中的先前第三处理时间步生成先前块输出,和ii)不是最后层块,使用层块堆叠中的后续层块来处理由特定层块在先前第三处理时间步生成的先前块输出,以生成当前块输出,其中由最后层块生成的当前块输出是比对应于第三处理时间步的输入时间步更早的输入时间步的输入项的输出项;
[0158]
计算i)由最后层块在第三处理时间步生成的输出项中的当前误差,和ii)最后层块的当前误差的当前梯度;
[0159]
根据输出项中的当前误差生成最后层块的参数更新;
[0160]
对于不是最后层块的每个特定层块,根据i)由层块堆叠中的后续层块在处理时间步序列中的先前处理时间步计算的先前梯度,和ii)由特定层块在处理时间步生成的当前块输出,计算该特定层块的当前梯度;以及
[0161]
对于不是最后层块的每个特定层块,根据由层块堆叠中的后续层块在处理时间步序列中的先前处理时间步计算的先前梯度,生成特定层块的参数更新,
[0162]
其中第三处理时间步序列在处理时间步序列之后。
[0163]
实施例4是实施例1至3中的任一项的方法,进一步包括,在第四处理时间步序列中的多个第四处理时间步的每一个处:
[0164]
对于不是最后层块的每个特定层块,其中针对所述特定层块所述层块堆叠中的后续层块在第四处理时间步序列中的先前第四处理时间步计算了先前梯度:
[0165]
根据i)由后续层块在先前第四处理时间步计算的先前梯度和ii)由层块堆叠中的先前层块最近生成的块输出,计算层块堆叠中的特定层块的当前梯度;以及
[0166]
根据由后续层块在先前的第二处理时间步计算的先前梯度,生成层块堆叠中的特定层块的参数更新,
[0167]
其中第四处理时间步序列在处理时间步序列之后。
[0168]
实施例5是实施例1至4中的任一项的方法,其中计算不是最后层块的特定层块的当前梯度包括:
[0169]
计算特定层块相对于由层块堆叠中的先前层块在先前处理时间步生成的块输出的第一雅可比矩阵;以及
[0170]
将该第一雅可比矩阵与由层块堆叠中的后续层块在处理时间步序列中的先前处理时间步计算的先前梯度相乘。
[0171]
实施例6是实施例1至5中的任一项的方法,其中计算最后层块的当前梯度包括:
[0172]
计算最后层块相对于由层块堆叠中的先前层块在先前处理时间步生成的块输出的第一雅可比矩阵。
[0173]
实施例7是实施例1至6中的任一项的方法,其中生成不是最后层块的特定层块的参数更新包括:
[0174]
生成特定层块的第二梯度,包括:
[0175]
计算特定层块相对于特定层块的参数的当前值的第二雅可比矩阵;以及
[0176]
将第二雅可比矩阵与由层块堆叠中的后续层块在处理时间步序列中的先前处理时间步计算的先前梯度相乘;以及
[0177]
根据第二梯度生成参数更新。
[0178]
实施例8是实施例1至7中的任一项的方法,其中生成最后层块的参数更新包括:
[0179]
生成最后层块的第二梯度,包括:
[0180]
计算最后层块相对于最后层块的参数的当前值的第二雅可比矩阵;以及
[0181]
根据第二梯度生成参数更新。
[0182]
实施例9是实施例1至8中的任一项的方法,其中生成参数更新包括使用随机梯度下降来生成参数更新。
[0183]
实施例10是实施例1至9中的任一项的方法,进一步包括,对于每个层块:
[0184]
组合在多个相应处理时间步生成的层块的参数更新,以生成组合参数更新,以及
[0185]
使用组合参数更新来更新层块的参数。
[0186]
实施例11是一种系统,包括:一个或多个计算机和存储指令的一个或多个存储设备,当由一个或多个计算机执行时,该指令可操作以使一个或多个计算机执行实施例1至10中的任一项的方法。
[0187]
实施例12是利用计算机程序编码的一个或多个非暂时性计算机存储介质,该计算机程序包括指令,当由数据处理设备执行时,该指令可操作以使数据处理设备执行实施例1至10中的任一项的方法。
[0188]
虽然本说明书包含许多具体的实施细节,但是这些不应该被解释为对任何发明的范围或可能要求保护的范围的限制,而是特定于特定发明的特定实施例的特征的描述。本说明书中在分开的实施例的上下文中描述的某些特征也能够在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也能够在多个实施例中分开地或以任何合适的子组合实现。此外,尽管特征可以在上面被描述为在某些组合中起作用,并且甚至最初被如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下能够从该组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。
[0189]
类似地,尽管在附图中以特定顺序描绘了操作,并且在权利要求中以特定顺序叙述了操作,但是这不应该被理解为要求这些操作以所示的特定顺序或连续顺序来执行,或者要求所有图示的操作都被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应该理解,所描述的程序组件和系统通常可以一起被集成在单个软件产品中或者包装成多个软件产品。
[0190]
已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利
要求中所述的动作能够以不同的顺序执行,并且仍然实现可期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献