具有条件计算的注意力神经网络的制作方法


具有条件计算的注意力神经网络
1.相关申请的交叉引用
2.本技术要求于2020年6月30日提交的美国临时申请序列号第63/046,545号的优先权,该申请的全部内容通过引用并入本文中。


背景技术:



3.本说明书涉及使用神经网络对网络输入执行机器学习任务。
4.神经网络是机器学习模型,该机器学习模型采用一层或多层非线性单元来预测接收到的输入的输出。除了输出层之外,有些神经网络还包括一个或多个隐藏层。每个隐藏层的输出都被用作网络中的下一层——即,下一个隐藏层或输出层——的输入。网络的每一层都根据相应的参数集的当前值从接收到的输入生成输出。


技术实现要素:



5.本说明书描述了一种在一个或多个位置的一个或多个计算机上作为计算机程序实施的系统,该系统使用注意力神经网络对网络输入执行机器学习任务,该注意力神经网络包括采用条件计算的前馈子层。
6.本说明书中所描述的主题的特定实施例可以实施以实现以下一个或多个优点。
7.本说明书中所描述的技术允许自注意力神经网络(例如,具有基于转换器的架构的神经网络)的计算能力提高,而在使用神经网络执行推断时消耗的计算资源量不会有对应的显著增加。具体地,所描述的技术结合了自注意力神经网络中一个或多个前馈子层的条件计算,从而显著提高了为需要处理输入序列、生成输出序列或两者的任务生成的输出的质量,而不显著增加计算成本。此外,通过在本说明书中所描述的训练期间跨多个设备使所得自注意力神经网络并行化,可以有效地训练自注意力神经网络,尽管该自注意力神经网络具有比现有的自注意力网络明显更多的参数。附加地,通过在下述训练期间选择哪些专家用于任何给定位置的任何给定输入(也称为“词元”(“token”)),所描述的技术确保模型利用了条件计算所提供的增加的能力,并且可以实现上述显著的质量提高。
8.本说明书的主题的一个或多个实施例的细节在附图和下面的描述中进行说明。主题的其他特征、方面和优点通过说明书、附图和权利要求书将变得显而易见。
附图说明
9.图1示出了示例神经网络系统。
10.图2示出了常规层和具有条件计算子层的层的示例。
11.图3是使用条件计算子层处理受注意层输入序列的示例过程的流程图。
12.图4示出了跨多个硬件设备部署的注意力神经网络的示例编码器。
13.相同的参考数字和标记在各个图中都指示相同的元件。
具体实施方式
14.本说明书描述了一种在一个或多个位置的一个或多个计算机上作为计算机程序实施的系统,该系统对网络输入执行机器学习任务,为机器学习任务生成网络输出。
15.机器学习任务可以是任何机器学习任务,该机器学习任务(i)对作为输入序列的网络输入进行操作,(ii)生成作为输出序列的网络输出或(iii)进行这两者。
16.下面是机器学习任务的一些示例,系统可以配置为执行这些机器学习任务。
17.作为一个示例,任务可以是神经机器翻译任务。例如,如果神经网络的输入是一种语言的文本序列,例如,单词、短语、字符或单词片段的序列,则神经网络所生成的输出可以是文本序列到另一种语言的翻译,即,作为输入文本序列的翻译的另一语言的文本序列。作为特定示例,任务可以是多语言机器翻译任务,其中,单个神经网络配置为在多个不同的源语言——目标语言对——之间进行翻译。在这个示例中,源语言文本可以用标识符增强,该标识符指示神经网络应将源语言文本翻译成的目标语言。
18.作为另一个示例,任务可以是音频处理任务。例如,如果神经网络的输入是表示说出的话语的序列,则神经网络所生成的输出可以是文本片段集中的每个文本片段的分数,每个分数都表示该文本片段是话语的正确转录的估计可能性。作为另一个示例,如果神经网络的输入是表示说出的话语的序列,则神经网络所生成的输出可以指示话语中是否说出特定的单词或短语(“热词”)。作为另一个示例,如果神经网络的输入是表示说出的话语的序列,则神经网络所生成的输出可以口头话语到多个类别中的一个类别的分类,例如,说出话语的自然语言的身份。
19.作为另一个示例,任务可以是自然语言处理或理解任务,例如,蕴涵任务、释义任务、文本相似性任务、情感任务、句子完成任务、符合语法任务等等,该任务对某种自然语言的文本序列进行操作。
20.作为另一个示例,任务可以是文本到语音任务,其中,输入是自然语言文本或自然语言文本的特征,并且网络输出是频谱图、波形或定义用自然语言说出的文本的音频的其他数据。
21.作为示例,任务可以是健康预测任务,其中,输入是由患者的电子健康记录数据得到的序列,并且输出是与患者的未来健康相关的预测,例如,应向患者开处方的预测、患者将发生不良健康事件的可能性或对患者的预测诊断。例如,这种电子健康数据可以包括取自患者的一个或多个生理数据序列,其中,输出是与那些数据序列相关的对应预测。生理数据和对应预测的示例包括:血糖测量,其中,预测是预测的未来血糖测量或对高血糖或低血糖事件的预测;心率,其中,预测是存在或不存在心脏病或未来的心脏事件;血压测量,其中,预测是未来心脏病的风险,等等。
22.作为另一个示例,任务可以是文本生成任务,其中,输入是文本序列,并且输出是另一个文本序列,例如,输入文本序列的完成、对输入序列中提出的问题的回答或关于第一文本序列指定的主题的文本序列。作为另一个示例,文本生成任务的输入可以是文本之外的输入,例如,图像,并且输出序列可以是描述输入的文本。
23.作为另一个示例,任务可以是图像生成任务,其中,输入是条件输入,并且输出是图像的像素的强度值输入序列。
24.作为另一个示例,任务可以是智能体控制任务,其中,输入是观察或表征环境的状
态的其他数据的序列,并且输出定义智能体响应于序列中的最新数据要执行的动作。例如,智能体可以是真实的或模拟的机器人、工业设施的控制系统或控制不同种类的智能体的控制系统。观察可以包括由与智能体(例如,其部分)相关联的传感器捕获的传感器数据,例如,视觉数据、lidar数据、声呐数据、智能体配置数据(例如,节点角度)、智能体定向数据等。
25.作为另一个示例,任务可以是基因组学任务,其中,输入是表示dna序列或其他分子序列的段的序列,并且输出用于下游任务的段的嵌入——例如,通过对dna序列段的数据集使用无监督的学习技术——或下游任务的输出。下游任务的示例包括启动子部位预测、甲基化分析、预测非编码变体的功能效应等等。
26.在某些情况下,机器学习任务是多个独立机器学习任务的组合,即,系统配置为执行多个不同的独立机器学习任务,例如,上述机器学习任务中的两个或两个以上。例如,系统可以配置为执行多个独立的自然语言理解任务,其中,网络输入包括要对网络输入执行的独立的自然语言理解任务的标识符。
27.为了执行机器学习任务,系统包括注意力神经网络,该网络包括多个注意力层。每一层都对相应的输入序列进行操作,该相应的输入序列包括一个或多个位置中的每个位置处的对应层输入。
28.此外,每一层都包括注意力子层和前馈子层。注意力子层接收该层的输入序列,并且对该层的输入序列应用注意力机制,以生成受注意输入序列。注意力层所应用的注意力机制取决于注意力神经网络的配置,如下面将更详细地描述的。前馈子层然后对受注意输入序列进行操作,以生成该层的输出序列。
29.一般而言,注意力神经网络中的层可以以各种配置中的任何配置布置。
30.作为一个示例,当网络输入是输入序列时,注意力神经网络可以包括编码器神经网络,该编码器神经网络包括多个层的子集,并且对输入序列进行编码,以生成序列中每个输入的对应编码表示。在这个示例中,编码器中的层所应用的注意力机制是自注意力机制,例如,多头自注意力机制。
31.作为另一个示例,注意力神经网络可以包括解码器神经网络,该解码器神经网络包括多个层的不同子集,并且处理网络输入,或当注意力神经网络还包括编码器神经网络时,处理网络输入的编码表示,以生成网络输出。在这些示例中的一些示例中,当网络输出是输出序列时,解码器神经网络自回归地操作,并且解码器的一些或全部层中的注意力子层对部分生成的输出序列应用掩码的自注意力。当神经网络同时包括编码器和解码器时,解码器中的一些层将交叉注意力应用到编码表示中,而其他层对输出序列应用掩码或不掩码的自注意力。当注意力神经网络包括直接对输入序列操作的解码器神经网络时,解码器中的注意力层可以对输入序列应用自注意力机制。
32.解码器神经网络和编码器神经网络中注意力层的操作的细节在vaswani,et al,attention is all you need,arxiv:1706.03762(vaswani等人,注意力是你需要的,arxiv:1706.03762)、和raffel,et al,exploring the limits of transfer learning with a unified text-to-text transformer,arxiv:1910.10683(raffel等人,用统一的文本到文本转换器来探索迁移学习极限,arxiv:1910.10683)以及devlin et al,bert:pre-training of deep bidirectional transformers for language understanding,
efficient transformer,arxiv:2001.04451(kitaev等人,改革者:有效的转换器,arxiv:2001.04451)中进行了描述,它们的全部内容都通过应用并入本文中。
44.一般而言,如上所述,注意力神经网络中的层可以以各种配置中的任何配置布置,并且注意力子层120所应用的注意力机制取决于注意力神经网络150的配置。
45.作为一个示例,当网络输入是输入序列时,注意力神经网络150包括编码器神经网络,该编码器神经网络包括多个层的子集,并且对输入序列进行编码,以生成序列中每个输入的对应编码表示。在这个示例中,编码器中的注意力子层120所应用的注意力机制是自注意力机制,例如,多头自注意力机制,其中,查询、键和值全部都是从注意力子层的输入序列生成的。
46.作为另一个示例,注意力神经网络150包括解码器神经网络,该解码器神经网络包括多个层的不同子集,并且处理网络输入或网络输入的编码表示,以生成网络输出。在这些示例中的一些示例中,当网络输出是输出序列时,解码器神经网络自回归地操作,并且解码器的一些或全部层中的注意力子层120对部分生成的输出序列应用掩码的自注意力,其中,查询、键和值全部都是从注意力子层120的输入序列生成的。
47.当神经网络150包括编码器和解码器两者时,解码器中的一些层将交叉注意力应用到编码表示中,而其他层对输出序列应用掩码或不掩码的自注意力。在交叉注意力中,查询是从注意力子层120的输入序列生成的,而键和值是从网络输入的编码表示生成的。
48.当注意力神经网络150包括直接对输入序列操作的解码器神经网络时,解码器中的注意力子层120可以对输入序列应用自注意力机制。
49.如本说明书中所使用的,术语“学习”是指在注意力神经网络150的训练期间已经对操作或值进行了调整。
50.在某些情况下,受注意输入序列124是注意力机制的最终输出。在某些其他情况下,子层120将一个或多个其他操作——例如残差连接、层归一化或两者——应用于最终输出,以生成序列124。
51.前馈子层然后对受注意输入序列124进行操作,以生成层110的输出序列134。更具体地,对于注意力神经网络中的一些或全部层110,前馈子层是条件计算子层130,该条件计算子层130使用不同的组件来处理任何给定的受注意输入序列124中的不同的受注意层输入。
52.下面参照图2至图4更详细地描述前馈子层所执行的操作。
53.图2示出了包括常规前馈子层210的注意力神经网络层和包括条件计算子层250的注意力神经网络层的示例。
54.如上所述,两个层都包括注意力子层220,该注意力子层220将注意力机制(在图2的示例中,多头注意力)应用于层的输入序列,然后应用“求和&归一化”操作来生成受注意输入序列。“求和&归一化”操作包括残差连接,之后是层归一化操作。
55.前馈子层210和条件计算子层250都对受注意输入序列进行处理,以为注意力神经网络层250生成输出序列,该输出序列包括受注意输入序列中每个受注意层输入的相应输出。作为输入提供给给定子层的受注意层输入在本说明书中也将被称为“词元”。
56.前馈子层210配置为在受注意输入序列的每个位置单独地进行操作,即,以逐位置方式。具体地,对于每个输入位置,前馈子层130配置为接收在该输入位置处的受注意层输
入,并且将转换集应用于在该输入位置处的受注意层输入,为输入位置生成输出。子层130所应用的转换对于每个输入位置通常都是相同的(但是注意力神经网络中的不同前馈子层将应用不同的转换)。
57.更具体地,前馈子层210包括前馈神经网络(ffn),该ffn在受注意输入序列的每个位置单独地进行操作,即,以逐位置方式。例如,ffn可以是具有例如relu或gelu激活函数的完全连接层的多层——例如两层或三层——神经网络。
58.具体地,对于每个输入位置,前馈子层210配置为接收在该输入位置处的受注意层输入,并且使用ffn对受注意层输入进行处理,为输入位置生成初始输出。
59.因此,前馈子层210使用同一个ffn对每个受注意层输入都进行处理。
60.前馈子层210然后将“求和&归一化”操作应用于初始输出,为注意力层生成输出序列。
61.条件计算子层250也以逐位置方式进行操作,但是除了使用同一个ffn对每个受注意层输入都进行处理,还维护多个专家ffn 260(也称为“专家”)。
62.每个专家通常都具有相同的架构,但是由于注意力神经网络的训练,具有不同的参数值。例如,每个专家都可以是具有例如relu或gelu激活函数的完全连接层的多层,例如两层或三层,神经网络。
63.对于任何给定的输入位置,条件计算子层250在该位置将门控函数270应用于对应词元,为多个专家260中的每个专家都生成相应的门分数。
64.一般而言,门控函数260是具有学习的参数的函数,并且根据学习的参数将词元映射到相应的门分数。作为特定示例,门控函数270可以通过计算专家的学习向量与位置的受注意层输入之间的点积来为每个专家生成相应的初始分数,然后通过将softmax函数应用于初始分数来计算门分数。
65.对于每个词元,条件计算子层250然后至少基于相应的门分数从多个专家ffn中选择真子集。因此,子层250执行条件计算,即,对不同的词元执行不同的操作。
66.一般而言,条件计算子层250在e个专家中选择最多k个专家以处于真子集中,其中,k是相对于专家总数e较小的正整数。作为特定示例,k可以等于2或其他小于10的小整数,而e至少等于100。在某些情况下,e可以至少等于500。在这些情况中的某些情况下,e至少等于2000。因此,对于给定的受注意层输入,例如,子层最多选择百分之2的专家,并且在某些情况下,最多选择0.1%的专家。换言之,虽然保持大量的专家e使注意力神经网络承担显著的附加能力(并且增加了神经网络的参数总数),但是只有一小部分用于任何给定输入,从而允许使用神经网络对输入进行处理,以保持计算效率。
67.具体地,在对注意力神经网络进行训练之后,子层250可以选择前k个专家,即,具有最高的门分数的k个专家,作为真子集中的专家。
68.然而,在注意力神经网络的训练期间,子层250可以使用一个或多个附加标准来选择k个专家,以确保专家之间(以及实施专家的设备之间)的负载保持平衡,以便训练过程在规模上是有效的,即,当e是几千的数量级并且在给定的训练批量中需要处理数百万个受注意层输入(“词元”)时。
69.具体地,在训练期间,训练系统——例如图1的系统100或在一个或多个位置的一个或多个计算机上作为计算机程序实施的不同系统——重复训练神经网络是在每一个包
括网络输入和网络输入的目标输出的训练示例批量上进行的。具体地,系统可以执行常规机器学习训练技术,以训练注意力层、输出层以及神经网络的任何其他学习组件,例如,带有使用常规优化器的反向传播训练技术的梯度下降,例如,随机梯度下降、rmsprop或adam优化器,从而最小化适合于注意力神经网络被配置执行的任务的损失函数。在训练期间,训练系统可以结合任何数量的技术,以提高训练过程的速度、效率或两者。例如,系统可以使用丢弃、标签平滑或两者来减少过度拟合。作为另一个示例,系统可以使用分布式架构执行训练,该分布式架构并行训练注意力神经网络的多个实例。此外,系统可以首先通过无监督学习在大型无监督数据集上对神经网络进行预训练,例如,最小化bert损失或其他无监督损失,然后在任务特定的训练数据上对神经网络进行微调,以优化任务的损失函数。
70.为了对给定的训练批量中的所有网络输入都进行处理,条件计算子层250需要对总共n个词元进行处理,即,n是注意力子层跨越给定的训练批量中的所有网络输入生成的所有受注意输入序列中所包括的词元的总数。由于注意力神经网络所处理或所生成的网络输入、网络输出或两者的大小,n可以以百万计。
71.在给定的训练批量上对神经网络进行训练期间,子层可以将给定批量“中”的总共n个词元分成g个组,以便每组包含s=n/g个词元。然后,子层为每个组都分配最大数量(“容量”),并且为组中的每个词元选择专家,以便在组中的所有词元中最多可以向任何给定的专家分派最大数量的词元,同时仍然为每个词元选择最多k个专家。例如,当k等于2时,每组都可以被分配等于2n/(ge)的容量。更一般而言,容量可以等于o(n/ge)。这确保了在批量的所有n个词元中,没有专家被分配超过训练批量的词元中的o(n/ge)。
72.此外,系统可以独立地和并行地对每组中的词元执行处理。在每组中,系统可以顺序地执行专家的选择,以确保约束在每组中都得到满足。
73.下面参照图3更详细地描述在训练期间选择专家,以确保没有专家被分配超过训练批量的词元中的o(n/ge)。
74.然后,子层250使用真子集中的每个专家ffn对在给定位置处的相应的受注意层输入进行处理,即,不使用任何不在真子集中的专家ffn,以为真子集中的每个专家ffn都生成相应的专家输出。
75.然后,子层250组合相应的专家输出,以生成组合专家输出。具体地,子层可以为每个所选专家前馈神经网络生成相应的归一化门分数,并且计算相应的专家输出的加权和,其中,每个专家输出由生成专家输出的所选专家前馈神经网络的归一化门分数加权。子层可以通过对门分数最高的k个专家的门分数进行归一化使k个专家的门分数之和为1,来计算每个所选专家的相应的归一化门分数。
76.子层250从组合专家输出生成在位置处的相应的层输出。例如,前馈层可以使用在位置处的组合专家输出作为相应的层输出,或如图2所示,可以将“求和&归一化”操作应用于输入位置的组合专家输出,以生成相应的层输出。
77.在某些实施方式中,注意力神经网络层中的每个注意力层都具有前馈子层,该前馈子层是条件计算子层250。
78.在一些其他实施方式中,只有注意力神经网络层中的注意力层的真子集才有前馈子层,这些前馈子层是条件计算子层250。对于不在真子集中的每一层,前馈子层过程是常规前馈子层210,即,在该层的层输入中的每个位置处使用单个ffn对每个相应的受注意层
输入进行处理。
79.作为特定示例,注意力神经网络中的注意力层可以布置在序列中,并且序列中的每个第二层都可以具有是条件计算子层250的前馈子层。即,序列在具有常规前馈子层210的注意力层与具有条件计算子层250的注意力层之间交替。当注意力神经网络包括编码器和解码器两者时,编码器和解码器两者可以具有相同的布置,例如,每个其他注意力层或注意力层的一些其他真子集具有条件计算子层250。
80.图3是用于从受注意输入序列生成层输出的示例过程300的流程图。为了方便起见,过程300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书被适当地编程的神经网络系统(例如,图1的神经网络系统100)可以执行过程300。
81.一般而言,系统在注意力层中所包括的前馈子层处接收受注意输入序列,该受注意输入序列在多个位置中的每个位置处都包括相应的受注意层输入,并且从受注意输入序列生成注意力层的输出序列,该输出序列在一个或多个位置中的每个位置处都包括相应的层输出。
82.受注意输入序列由注意力层中的注意力子层生成,该注意力子层配置为接收在一个或多个位置中的每个位置处包括相应的层输入的注意力层的输入序列,并且至少部分地通过将注意力机制应用于层的输入序列来生成受注意输入序列。
83.如上所述,系统通过执行条件计算实施前馈子层的操作。具体地,系统可以对在受注意输入序列中的每个位置处的每个受注意层输入(“词元”)执行步骤302至312。
84.系统接收在该位置处的词元(步骤302)。
85.系统将门控函数应用于在该位置处的相应的受注意层输入,以为多个专家前馈神经网络(“专家”)中的每一个生成相应的门分数(步骤304)。如上所述,门控函数是具有学习的参数并且根据学习的参数将词元映射给相应的门分数的函数。
86.系统至少基于专家的相应的门分数从多个专家中选择专家的真子集(步骤306)。一般而言,系统在e个专家中最多选择k个专家属于真子集,其中,k是相对于专家总数e较小的正整数。
87.在对注意力神经网络的训练之后,系统可以选择前k个专家,即,具有最高的门分数的k个专家,作为真子集中的专家。
88.如上所述,在注意力神经网络的训练期间,系统可以使用一个或多个附加标准来选择k个专家,以确保负载跨专家(以及跨实施专家的设备)平衡,以便训练过程在规模上是有效的,即,当e是几千的数量级并且在给定的训练批量中需要处理数百万个受注意层输入(“词元”)时。
89.在给定的训练批量上对神经网络的训练期间,系统可以将给定批量“中”的总共n个词元分成g个组,以便每组都包含s=n/g个词元。然后,系统为每个组分配最大数量(“容量”),并且为组中的每个词元选择专家,以便在组中的所有词元中最多可以向任何给定的专家派发最大数量的词元,同时仍然为每个词元选择最多k个专家。例如,当k等于2时,每组都可以被分配等于2n/(ge)的容量。更一般而言,容量可以等于o(n/ge)。这确保了在批量的所有n个词元中,没有专家被分配超过训练批量的词元中的o(n/ge)。
90.此外,系统可以独立地和并行地对每组中的词元执行处理。在每组中,系统可以顺
序地执行对专家的选择,以确保约束在每组中都得到满足。因此,将词元分成组确保了顺序处理不会对注意力神经网络的训练造成瓶颈,即,与顺序地分配批量中的n个词元中的每个词元相反。
91.为了有效地为组中的每个词元选择专家,以便在组中的所有词元中最多向任何给定的专家派发最大数量的词元,同时仍然为每个词元选择最多k个专家,对于给定组中的给定词元,系统可以首先识别给定词元的门分数最高的k个专家。
92.系统可以确定对于k个识别出的专家,识别出的专家在组的处理期间是否已经被选择了最大数量的次数。
93.然后,只有当专家在组的处理期间还未被选择最大数量的次数时,系统才选择识别出的专家。
94.因此,当k个识别出的专家中的每个专家在组的处理期间被选择了最大数量的次数时,系统选择包括零个专家前馈神经网络的子集,并且将给定词元的组合输出设置为零。由于在生成组合输出之后应用的残差连接,系统通过将组合输出设置为零,有效地“跳过”专家前馈神经网络的计算。
95.在一些实施方式中,当k个识别出的专家中的至少一个专家在组的处理期间还未被选择最大数量的次数时,系统选择还未被选择最大数量的次数的k个识别出的专家中的每个专家针对词元作为真子集。
96.在一些其他实施方式中,系统应用一个或多个附加标准来选择子集。即,即使给定的识别出的专家还未被选择最大数量的次数,系统也会应用一个或多个附加标准,以确定是否将给定的识别出的专家针对词元包括在真子集中。
97.作为特定示例,系统可以以某个概率确定不包括k个专家中的一个或多个得分最低的专家,以节省专家的容量。因为如上所述,当计算组合专家输出时,所选专家的输出由对应专家的门分数所定义的权重加权,不包括一个或多个得分最低的专家可以节省容量,而不过度影响注意力神经网络所执行的计算。
98.更详细地,对于k个识别出的专家中的一个或多个专家,即,门分数最低的一个或多个专家,系统至少可以从专家前馈神经网络的门分数确定专家的概率,并且只有当(i)专家前馈神经网络在组的处理期间还未被选择最大数量的次数以及(ii)专家前馈神经网络的概率超过0到1之间的随机采样值(例如,从0到1之间的值的均匀分布中采样)时,才选择专家前馈神经网络。系统可以确定专家的概率,例如,通过对k个识别出的专家的门分数进行归一化,使得门分数之和为1,并且使用专家的归一化分数作为概率。
99.系统使用真子集中的每个专家对在位置处的词元进行处理,以为子集中的每个专家生成相应的专家输出(步骤308)。因此,系统不会使用不在真子集中的任何专家对词元进行处理。
100.系统组合相应的专家输出,以生成组合专家输出(步骤310)。
101.具体地,子层可以为每个所选专家前馈神经网络生成相应的归一化门分数,并且计算相应的专家输出的加权和,其中,每个专家输出都由生成专家输出的所选专家前馈神经网络的归一化门分数加权。子层可以通过对门分数最高的k个专家的门分数进行归一化使k个专家的门分数之和为1,来计算每个所选专家的相应的归一化门分数。
102.如上所述,当没有为词元选择词元时,系统将组合专家输出设置为零,即,全为零
的向量。
103.系统从组合专家输出生成在位置处的相应的层输出(步骤312)。例如,前馈层可以使用在位置处的组合专家输出作为相应的层输出,或可以将残差连接、归一化操作(例如,层归一化)或两者应用于输入位置的组合专家输出,以生成相应的层输出。
104.对于注意力神经网络中的每个注意力层,系统可以重复(即,在注意力层中所包括的一个或多个注意力子层中的每个注意力子层中)执行过程300,以更新对该层的输入序列,或如果注意力层具有常规前馈子层,则执行常规前馈子层的操作,以更新对改成的输入序列。通过对注意力神经网络中的所有注意力层执行过程300,并且然后使用一个或多个输出层对注意力神经网络中的最后一个注意力层所生成的输出序列的至少部分进行处理,系统可以为接收到的网络输入生成网络输出。
105.即,过程300可以作为预测输入的输出的部分来执行,该输入的期望输出(即,系统应当为输入序列生成的输出)是未知的。
106.如上所述,过程300还可以作为处理从训练数据集得到的输入(即,从输入集得到的输入,系统应该为该输入集生成的输出是已知的)的部分来执行,以便对注意力神经网络进行训练,从而确定注意力神经网络的参数的训练值。系统可以对选自训练数据集的输入重复执行过程300,作为常规机器学习训练技术的部分,以对神经网络的注意力层和输出层进行训练,例如,带有使用常规优化器的反向传播训练技术的梯度下降,例如,随机梯度下降、rmsprop或adam优化器,从而最小化适合于注意力神经网络被配置执行的任务的目标函数。在训练期间,系统可以结合任何数量的技术,以提高训练过程的速度、效率或两者。例如,系统可以使用丢弃、标签平滑或两者来减少过度拟合。作为另一个示例,系统可以使用分布式架构执行训练,该分布式架构并行训练注意力神经网络的多个实例。此外,系统可以首先通过无监督学习在大型无监督数据集上对神经网络进行预训练,例如,最小化bert损失或其他无监督损失,然后在任务特定的训练数据上对神经网络进行微调,以优化任务的目标函数。
107.在一些实施方式中,除了或代替上述直接影响训练期间选择如何发生的修改,系统还在包括项的损失函数上对自注意力神经网络进行训练,该项鼓励条件计算前馈子层针对组中总数量的受注意层输入中的受注意层输入的相同部分选择每个专家前馈神经网络。
108.换言之,对于注意力神经网络中的每个条件计算前馈子层,损失函数包括相应的损失项,所述损失项在给定组的词元的处理期间为相同数量的词元选择每个专家时被最小化。
109.更具体地,路由到任何给定专家的词元的部分是由不可微的操作得到的,即,为每一词元硬选择最多k个专家,因此无法直接由损失项测量。相反,损失项是路由到给定组的专家集的部分词元的平方的平均值的微分近似。更具体地,损失项等于对于每个专家(i)针对其选择了该专家的组中词元的部分和(ii)组中词元当中分配给该专家的门分数的平均值的乘积的平均值。因为平均门分数是可微计算,所以这个项的梯度可以是相对于门控函数的参数直接计算的,因此可以在神经网络的训练期间使用。
110.此外,如上所述,在一些实施方式中,在训练期间、在训练之后的推断期间或在这两者期间,系统通过跨多个硬件设备并行化神经网络来实施注意力神经网络。例如,系统可以跨多个硬件加速器——例如,张量处理单元(tpu)、图形处理单元(gpu)或两者——实施
注意力神经网络。
111.在这些情况下,系统可以将与注意力层的其他组件不同的条件计算子层分布在注意力神经网络中。
112.具体地,由于每个条件计算子层中所包括的大量专家神经网络,系统可以跨多个设备中的两个或两个以上的设备对每个条件计算子层进行分片,同时跨多个设备中的两个或两个以上的设备复制每个注意力子层。
113.跨两个或两个以上的设备复制层意味着两个或两个以上的设备中的每个设备都有该层的副本。
114.跨两个或两个以上的设备对层进行分片意味着该层的组件被划分到两个或两个以上的设备中,以便每个设备只执行该层所需的计算的部分。
115.图4示出了跨多个硬件设备部署的注意力神经网络的示例编码器400。
116.具体地,在图4的示例中,编码器400包括n/2个注意力层对410。每个注意力层对都包括带有条件子层的注意力层,之后是带有常规前馈子层的注意力层。
117.因此,编码器400接收嵌入集402,所述嵌入集402表示网络输入,并且是由网络输入中的独立输入的输入嵌入和对网络输入中的每个独立输入的位置进行编码的位置嵌入生成的。编码器400通过每个注意力层对410对该嵌入集402进行处理,以生成编码器输出450。
118.更具体地,编码器400分布在e个设备上。e个设备中的每个设备都接收一批量的多个网络输入中的网络输入的相应分片(例如,相应分区)的输入嵌入402,并且对输入嵌入402进行处理,以为相应分片中的每个网络输入生成编码器输出450。
119.对于每个注意力层对410,e个设备中的每个设备都运行(i)两个注意力层中的相应注意力子层的副本、(ii)该对中的第二注意力层中的常规前馈子层的副本以及(iii)条件计算子层的门控函数的副本。然而,e个设备中的每个设备都只运行条件计算子层的e个专家中的相应一个专家。因此,专家跨e个设备被分片。
120.为了计算给定词元的条件计算子层的输出,如上所述,被分配了词元的设备最多选择k个专家,然后将词元派发给部署了k个专家的设备(“多对多派发”)。然后,将k个专家的专家输出派发回给设备,该设备将这些专家输出组合,以如上所述生成条件计算子层的输出(“多对多组合”)。
121.因此,因为专家是跨多个设备进行分片的,所以需要跨设备通信来计算编码器输出450。然而,因为如上所述,仅为任何给定的词元选择稀疏的专家真子集,并且由于确保每个专家(以及每个设备)接收每批量词元的平衡负载的机制,所以跨设备通信不会对训练或推断造成瓶颈。更具体地,为了使负载平衡而描述的机制避免了大多数词元被派发给少数专家、只为一些(忙碌的)专家积累非常大的输入缓冲区以及留下其他专家未经训练,减慢了训练。
122.本说明书使用与系统和计算机程序组件有关的术语“配置”。对于要被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统具有安装在其上在运行时使系统执行操作或动作的软件、固件、硬件或它们的组合。对于要被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括指令,这些指令在由数据处理装置执行时使该装置执行操作或动作。
123.本说明书中所描述的主题和功能操作的实施例可以在数字电子电路系统中、在有形地体现的计算机软件或固件中、在包括本说明书中所公开的结构及其结构等同物的计算机硬件中或在它们中的一个或多个的组合中实施。本说明书中所描述的主题的实施例可以实施为一个或多个计算机程序,即,在有形的非暂时性存储介质上编码以由数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。可替代地或附加地,程序指令可以在人工生成的传播信号(例如,机器生成的电气、光学或电磁信号)上进行编码,生成这种信号是为了对信息进行编码,以传输给合适的接收器装置以供数据处理装置执行。
124.术语“数据处理装置”是指数据处理硬件,并且涵盖用于处理数据的所有种类的装置、设备和机器,例如,包括可编程处理器、计算机或多个处理器或计算机。装置还可以是或进一步包括专用逻辑电路系统,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件外,装置还可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
125.计算机程序(也可以被称为或被描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码)可以用任何形式的编程语言进行编写,包括编译或解译语言或陈述性或程序语言,并且它可以用任何形式进行部署,包括作为独立程序或作为模块、组件、子例程或适合用于计算环境的其他单元。程序可以,但不需要,对应于文件系统中的文件。程序可以存储在文件保存其他程序或数据的部分(例如,存储在标记语言文档中的一个或多个脚本)、专用于所讨论的程序的单个文件或多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中。计算机程序可以被部署为在一个计算机或位于一个站上或跨多个站分布并且由数据通信网络互连的多个计算机上执行。
126.在本说明书中,术语“数据库”被广泛用于指任何数据集合;数据不需要以任何特定方式结构化或根本不需要结构化,并且它可以存储在一个或多个位置的存储设备上。因此,例如,索引数据库可以包括多个数据集合,每个数据集合都可以以不同的方式组织和访问。
127.相似地,在本说明书中,术语“引擎”被广泛用于指被编程以执行一个或多个特定功能的基于软件的系统、子系统或过程。通常,引擎将作为安装在一个或多个位置的一个或多个计算机上的一个或多个软件模块或组件实施。在一些情况下,一个或多个计算机将专用于特定引擎;在其他情况下,多个引擎可以被安装在同一个或多个计算机上并且在其上运行。
128.本说明书中所描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过在输入数据上操作并且生成输出来执行功能。过程和逻辑流程还可以由专用逻辑电路系统(例如,fpga或者asic)或专用逻辑电路系统和一个或多个编程计算机的组合执行。
129.适合执行计算机程序的计算机可以是基于通用或专用微处理器或两者或任何其他种类的中央处理单元。一般而言,中央处理单元将接收来自只读存储器或随机存取存储器或两者的指令和数据。计算机的基本元件是用于进行或执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路系
统补充或并入专用逻辑电路系统中。一般而言,计算机还将包括用于存储数据的一个或多个海量存储设备(例如,磁盘、磁光盘或光盘)或可操作地耦合以接收来自该海量存储设备的数据或将数据传输给该海量存储设备或两者。然而,计算机不需要有这样的设备。此外,计算机可以嵌入另一设备中,例如,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备,例如,通用串行总线(usb)闪存驱动器,仅举几个例子。
130.适合存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如,包括半导体存储器设备(例如,eprom、eeprom和闪速存储器设备);磁盘(例如,内部硬盘或可移动盘);磁光盘;以及cd rom和dvd-rom盘。
131.为了提供与用户的交互,本说明书中所描述的主题的实施例可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器))以及键盘和指向设备,例如,鼠标或轨迹球,用户可以通过该键盘和该指向设备将输入提供给计算机。其他种类的设备还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式(包括声音输入、语音输入或触觉输入)接收。另外,计算机可以通过将文档发送给用户所使用的设备并且接收来自该设备的文档与用户交互,例如,通过响应于从web浏览器接收到的请求将网页发送给用户的设备上的web浏览器。同样,通过将文本消息或其他形式的消息发送给个人设备,例如,运行消息传递应用的智能电话,并且继而接收来自用户的响应消息,计算机可以与用户交互。
132.例如,用于实施机器学习模型的数据处理装置还可以包括专用硬件加速器单元,用于处理机器学习训练或生产的通用和计算密集型部分,即,推断、工作负载。
133.机器学习模型可以使用机器学习框架来实施和部署,例如,tensorflow框架、microsoft cognitive toolkit框架、apache singa框架或apache mxnet框架。
134.本说明书中所描述的主题的实施例可以在计算系统中实施,该计算系统包括后台组件(例如,作为数据服务器)、或包括中间件组件(例如,应用服务器)、或包括前端组件(例如,客户端计算机,该客户端计算机具有图形用户界面、web浏览器或应用,用户可以通过该图形用户界面、该web浏览器或该应用与本说明书中所描述的主题的实施方式进行交互)、或一个或多个这样的后台组件、中间件组件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)相互连接。通信网络的示例包括局域网(lan)和广域网(wan),例如,互联网。
135.计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,html页面)传输给用户设备,例如,为了向与充当客户端的设备交互的用户显示数据并且接收来自该用户的用户输入。在用户设备处生成的数据(例如,用户交互的结果)可以是在服务器处从设备接收的。
136.虽然本说明书包含许多具体实施细节,但是不应将这些细节视为对任何发明的范围或可能被要求的内容的范围的限制,而是作为可以特定于特定发明的特定实施例的特征的描述。本说明书中在单独的实施例的背景下所描述的某些特征还可以在单个实施例中组
合实施。相反,在单个实施例的背景下所描述的各种特征也可以在多个实施例中单独地或按照任何合适的子组合实施。此外,虽然特征在上面可以被描述为在某些实施例中起作用,甚至最初就被这样要求,但是来自所要求的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求的组合可以涉及子组合或子组合的变型。
137.相似地,虽然操作以特定顺序在附图中进行描绘并在权利要求中记载,但是这不应被理解为要求以所示的特定顺序或以相继顺序执行这样的操作,或者所有所示的操作都被执行来获得期望结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
138.主题的特定实施例已经进行了描述。其他实施例在以下权利要求书的范围内。例如,权利要求书中所记载的动作可以按照不同的顺序执行并且仍然实现期望结果。作为一个示例,附图中所描绘的过程不一定需要以所示的特定顺序或相继顺序来完成期望结果。在一些情况下,多任务处理和并行处理可以是有利的。

技术特征:


1.一种用于对网络输入执行机器学习任务以生成网络输出的系统,所述系统包括一个或多个计算机以及存储指令的一个或多个存储设备,所述指令在由所述一个或多个计算机执行时使所述一个或多个计算机实施:被配置为执行所述机器学习任务的注意力神经网络,所述注意力神经网络包括多个层,每个层包括注意力子层和前馈子层,所述注意力子层被配置为:接收所述层的输入序列,所述输入序列在一个或多个位置中的每个位置处包括相应的层输入;以及至少部分地通过将注意力机制应用于所述层的所述输入序列来生成受注意输入序列,所述受注意输入序列包括在所述一个或多个位置中的每个位置处的相应的受注意层输入,以及所述前馈层被配置为:接收所述受注意输入序列;以及从所述受注意输入序列生成所述层的输出序列,所述输出序列包括在所述一个或多个位置中的每个位置处的相应的层输出,其中,对于所述多个层中的至少一个层,所述前馈子层是条件计算子层,所述条件计算子层(i)包括多个专家前馈神经网络,并且(ii)被配置为通过执行以下操作生成所述层的所述输出序列,对于所述层的输入序列中的每个所述位置,所述操作包括:接收在该位置处的所述相应的受注意层输入;将门控函数应用于在该位置处的所述相应的受注意层输入,以为所述多个专家前馈神经网络中的每个生成相应的门分数;至少基于所述相应的门分数来从所述多个专家前馈神经网络中选择真子集;使用所述真子集中的每个所述专家前馈神经网络对在该位置处的所述相应的受注意层输入进行处理,以为每个所述专家前馈神经网络生成相应的专家输出;组合所述相应的专家输出,以生成组合专家输出;以及从所述组合专家输出生成在所述位置处的所述相应的层输出。2.根据权利要求1所述的系统,其中,只有所述注意力神经网络中的所述层的真子集具有作为条件计算子层的前馈子层。3.根据权利要求2所述的系统,其中,对于不在所述真子集中的每个层,所述前馈子层使用单个前馈神经网络处理在对该层的层输入中的每个所述位置处的每个相应的受注意层输入。4.根据权利要求1或权利要求2中任一项所述的系统,其中,所述多个层中的所述层被布置在序列中,以及其中,所述序列中的每个第二层具有作为条件计算子层的前馈子层。5.根据权利要求4所述的系统,其中,所述序列包括多个编码器层,之后是多个解码器层。6.根据任一项前述权利要求所述的系统,其中,所述系统包括多个硬件设备,以及其中,实施所述注意力神经网络包括:跨所述多个设备中的两个或两个以上设备对每个条件计算子层进行分片。7.根据权利要求6所述的系统,其中,实施所述注意力神经网络包括:跨所述多个设备中的两个或两个以上设备复制每个注意力子层。8.根据任一项前述权利要求所述的系统,其中,从所述组合专家输出生成所述层输出
包括:将残差连接和归一化应用于在所述位置处的所述组合专家输出,以生成所述输出序列。9.根据任一项前述权利要求所述的系统,其中,至少基于所述相应的门分数来从所述多个专家前馈神经网络中选择真子集包括:在所述多个专家前馈神经网络中最多选择总数量e的专家前馈神经网络中的k个专家前馈神经网络。10.根据权利要求9所述的系统,其中,k为2。11.根据权利要求9或权利要求10中任一项所述的系统,其中,e为至少100。12.根据权利要求11所述的系统,其中,e为至少500。13.根据权利要求12所述的系统,其中,e为至少2000。14.根据权利要求9至13中任一项所述的系统,其中,在对所述注意力神经网络进行训练之后,从所述多个专家前馈神经网络中选择真子集包括:选择具有所述k个最高门控分数的所述k个专家。15.根据权利要求9至14中任一项所述的系统,其中,在所述注意力神经网络的训练期间,所述注意力层输入是受注意层输入的组中的一个受注意层输入,并且从所述多个专家前馈神经网络中选择真子集包括:识别具有所述k个最高门控分数的所述k个专家前馈神经网络;以及对于所述k个专家前馈神经网络中的每个专家前馈神经网络:确定在所述组的所述处理期间该专家前馈神经网络是否已经被选择了最大数量的次数,以及只有在所述组的所述处理期间该专家前馈神经网络还未被选择最大数量的次数时,才选择该专家前馈神经网络。16.根据权利要求15所述的系统,其中,在所述注意力神经网络的训练期间,从所述多个专家前馈神经网络中选择真子集还包括:对于所述k个专家前馈神经网络中的一个或多个专家前馈神经网络:至少从所述专家前馈神经网络的所述门控分数确定所述专家前馈神经网络的概率;只有当(i)在所述组的所述处理期间所述专家前馈神经网络还未被选择最大数量的次数和(ii)所述专家前馈神经网络的所述概率超过在0到1之间随机采样的值时,才选择所述专家前馈神经网络。17.根据权利要求15或权利要求16中任一项所述的系统,其中,注意力层输入的所述组包括从在训练示例的批量中的所述网络输入的真子集生成的注意力层输入。18.根据权利要求15至17中任一项所述的系统,其中,所述自注意力神经网络在包括项的损失函数上被训练,所述项鼓励所述条件计算前馈子层针对所述组内的总数量的受注意层输入当中的受注意层输入的相同部分选择每个专家前馈神经网络。19.根据权利要求15至18中任一项所述的系统,其中,在所述注意力神经网络的训练期间,所述受注意层输入是受注意层输入的组中的一个受注意层输入,并且从所述多个专家前馈神经网络中选择真子集包括:在所述组的所述处理期间所述k个识别的专家前馈神经网络中的每个识别的专家前馈
神经网络已被选择最大数量的次数时,选择包括零个专家前馈神经网络的子集并且将所述组合输出设置为零。20.根据任一项前述权利要求所述的系统,其中,组合所述相应的专家输出以生成组合专家输出包括:为每个所选择的专家前馈神经网络生成相应的归一化门分数;以及计算所述相应的专家输出的加权和,其中每个专家输出由生成所述专家输出的所选择的专家前馈神经网络的所述归一化门分数加权。21.根据任一项前述权利要求所述的系统,其中,所述机器学习任务是多语言神经机器翻译,所述网络输入是源语言的文本序列和识别目标语言的数据,并且所述网络输出是所述目标语言的文本序列,所述目标语言的文本序列是所述源语言文本到所述目标语言的翻译。22.一个或多个存储指令的计算机存储介质,所述指令在被一个或多个计算机执行时,使所述一个或多个计算机实施根据权利要求1至21中任一项所述的注意力神经网络。23.一种方法,包括:接收网络输入;以及使用根据任一项前述权利要求所述的注意力神经网络对所述网络输入进行处理,以为所述网络输入生成网络输出。

技术总结


用于对网络输入执行机器学习任务以生成网络输出的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。在一个方面中,系统中的一个包括注意力神经网络,所述注意力神经网络被配置为执行机器学习任务,注意力神经网络包括一个或多个注意力层,每个注意力层包括注意力子层和前馈子层。注意力层中的一些或全部具有前馈子层,所述前馈子层将条件计算应用于对子层的输入。用于对子层的输入。用于对子层的输入。


技术研发人员:

德米特里

受保护的技术使用者:

谷歌有限责任公司

技术研发日:

2021.06.30

技术公布日:

2022/12/23

本文发布于:2024-09-21 18:56:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/48141.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:神经网络   多个   所述   注意力
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议