首页 / 具有稀疏注意力机制的注意力神经网络

具有稀疏注意力机制的注意力神经网络实质审查 发明

技术内容

具有稀疏注意力机制的注意力神经网络 [0001] 相关申请的交叉引用 [0002] 本申请要求于2020年6月5日提交的美国临时申请第63/035,632号的优先权,其全部内容通过引用并入。 背景技术 [0003] 本说明书涉及使用神经网络对网络输入执行机器学习任务。 [0004] 神经网络是机器学习模型,其使用一层或多层非线性单元来预测接收输入的输出。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出用作网络中下一层——即下一个隐藏层或输出层——的输入。网络的每一层根据相应参数集的当前值从接收到的输入生成输出。 发明内容 [0005] 本说明书描述了在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统,该系统使用包括应用稀疏注意力的注意力子层的注意力神经网络对网络输入执行机器学习任务。 [0006] 可以实施本说明书中描述的主题的特定实施例以实现以下优点中的一个或多个。 [0007] 本说明书中描述的技术允许神经网络系统在训练期间和运行时,通过使用稀疏注意力机制比现有的基于注意力的网络更有效地处理输入序列、生成输出序列或两者,即在计算资源(例如,存储器、计算能力或两者)方面。 [0008] 一些现有的注意力神经网络中的注意力层采用点积注意力机制,该机制涉及为每个给定的查询计算该查询与所有键的相应点积。网络通常从可能是顺序的网络输入中得出这样的键或查询。因此,在对长度很大的序列数据应用点积注意力机制时,计算成本可能会很大。特别是,传统的自注意力层对序列长度具有二次依赖性,导致模型在操作或生成更长的序列时会消耗大量的计算资源。然而,所描述的技术通过应用稀疏注意力机制来解决这些问题,以有效地限制在每个注意力层执行的注意力计算的数量,同时保持与传统自注意力神经网络相当的输出质量。特别是,通过让大多数位置只注意其他位置的稀疏子集,同时让小得多的位置子集(与序列长度相比大小为O(1))注意所有位置(并由所有位置注意),系统可以有效地传播序列长的上下文并确保高质量的输出,同时即使对于非常长的序列也能保持计算效率。作为特定的示例,使用所描述的稀疏注意力,注意力神经网络甚至可以对于需要对具有超过4000个或更多词元的长范围依赖序列的序列进行操作的任务有效地执行,例如,同时具有少于注意整个序列的100个全局词元。因此,包括全局词元的位置的第一真子集可以被包括不超过与包括其他词元的第二真子集的一样多的词元的3/100。 [0009] 更具体地说,所描述的技术允许在存储器约束下部署自注意力神经网络,即,与在不采用所描述的技术时所需的存储器空间相比,在更有限的存储器空间内。作为特定的示例,执行自注意力机制所需的乘法的现代硬件芯片具有有限的片上存储器。作为另一个示例,边缘计算设备(例如移动电话)具有有限的设备存储器。通过稀疏化自注意力机制,所描述的技术允许注意力神经网络生成高质量的输出,同时在这个受限的存储器空间内操作,即,当注意力神经网络被部署时,注意力机制因此由一个或多个具有有限设备存储器的设备应用。特别地,通过仅针对输入位置的第一个真子集中的输入位置,使用给定输入位置处的查询来注意键序列中的所有键,同时对于输入位置的第二真子集中的输入位置,使用输入位置的查询仅注意输入位置的对应真子集处的键,所描述的技术大大减少了需要加载到受限存储器空间中以便计算第二子集中的输入位置的注意输入的键的数量。这允许所描述的自注意力机制在受限的存储器空间内有效地执行。但是,因为对于第一真子集中的位置,该位置的查询仍然用于注意所有输入位置处的所有键,而对于第二真子集中的输入位置,该位置的查询用于注意第一子集中的所有位置的所有键,系统仍然可以跨所有输入位置传播信息并确保高质量的输出。另外,当第二子集中任何给定位置的对应真子集包括(i)从第一真子集之外的输入位置中随机选择的一个或多个输入位置和(ii)在第二真子集中的输入位置的固定数量的位置的窗口内的每个输入位置时,即使在对应真子集中的位置数量相对于第二子集中的位置总数较少时,系统也可以生成高质量的输出,进一步减少为了将注意力机制应用于第二个子集中的位置,需要加载到存储器中的键数。此外,由于第二子集中的位置通常比第一子集中的位置多得多,因此需要加载到存储器中以便对整个层输入应用自注意力机制的键数的总体减少是显着的,同时仍然确保自注意力机制生成高质量的输出。 [0010] 本说明书的主题的一个或多个实施例的细节在附图和以下描述中阐述。本主题的其他特征、方面和优点将从说明书、附图和权利要求中变得显而易见。 附图说明 [0011] 图1示出了示例神经网络系统。 [0012] 图2A是正被应用的稀疏注意力机制的图示。 [0013] 图2B是其中查询和键被划分为块的稀疏注意力方案的图示。 [0014] 图3是用于应用稀疏注意力机制的示例过程的流程图。 [0015] 不同附图中相同的附图标记和名称表示相同的元件。 具体实施方式 [0016] 本说明书描述了在一个或多个位置的一个或多个计算机上实现为计算机程序的系统,该系统在网络输入上执行机器学习任务以生成用于机器学习任务的网络输出。 [0017] 机器学习任务可以是任何机器学习任务,其(i)对作为输入序列的网络输入进行操作,(ii)生成作为输出序列的网络输出,或(iii)两者。 [0018] 以下是系统可以被配置为执行的机器学习任务的一些示例。 [0019] 作为一个示例,该任务可以是神经机器翻译任务。例如,如果神经网络的输入是文本序列,例如,一种语言的词语、短语、字符或词语段的序列,则神经网络生成的输出可能是该文本序列到另一种语言的翻译,即是输入文本序列的翻译的另一种语言的文本序列。作为一个特定示例,该任务可以是多语言机器翻译任务,其中单个神经网络被配置为在多个不同的源语言——目标语言对——之间进行翻译。在这个示例中,源语言文本可以利用标识符增强,该标识符指示神经网络应该将源语言文本翻译成的目标语言。 [0020] 作为另一个示例,该任务可以是音频处理任务。例如,如果神经网络的输入是表示口头话语的序列,则神经网络生成的输出可以是文本段集合中的每一个文本段的分数,每个分数表示该文本段是话语的正确转录本的估计可能性。作为另一个示例,如果神经网络的输入是表示口头话语的序列,则神经网络生成的输出可以指示在话语中是否说出了特定的词语或短语(“热词”)。作为另一个示例,如果神经网络的输入是表示口头话语的序列,则神经网络生成的输出可以识别说出了该话语的自然语言。 [0021] 作为另一示例,任务可以是对某一自然语言的文本序列进行操作的自然语言处理或理解任务,例如,蕴涵任务、释义任务、文本相似性任务、情感任务、句子完成任务、语法任务等。 [0022] 作为另一个示例,任务可以是文本到语音的任务,其中输入是自然语言的文本或自然语言的文本特征,并且网络输出是频谱图、波形或定义用自然语言说出的文本音频的其他数据。 [0023] 作为另一个示例,该任务可以是健康预测任务,其中输入是从患者的电子健康记录数据得出的序列,并且输出是与患者未来健康相关的预测,例如应该给患者开处方的预测的治疗、患者将发生不良健康事件的可能性或患者的测预诊断。 [0024] 作为另一个示例,任务可以是文本生成任务,其中输入是文本序列,输出是另一个文本序列,例如,输入文本序列的完成、对在输入序列中提出的问题的响应或与第一文本序列指定的主题有关的文本序列。作为另一个示例,文本生成任务的输入可以是文本以外的输入,例如图像,并且输出序列可以是描述输入的文本。 [0025] 作为另一个示例,该任务可以是图像生成任务,其中输入是条件输入,输出是图像像素的强度值输入序列。 [0026] 作为另一个示例,该任务可以是智能体控制任务,其中输入是观察序列或其他表征环境状态的数据,并且输出定义要由智能体响应于序列中的最近数据而执行的动作。例如,智能体可以是真实世界或模拟机器人、工业设施的控制系统或控制不同类型智能体的控制系统。 [0027] 作为另一个示例,该任务可以是基因组学任务,其中输入是表示DNA序列或其他分子序列的片段的序列,而输出是用于下游任务的片段的嵌入——例如,通过对DNA序列片段的数据集合使用无监督学习技术——或下游任务的输出。下游任务的示例包括启动子位点预测、甲基化分析、预测非编码变体的功能效应等。 [0028] 在某些情况下,机器学习任务是多个单独的机器学习任务的组合,即,系统被配置为执行多个不同的单独的机器学习任务,例如,上述机器学习任务中的两个或更多个。例如,系统可以被配置为执行多个单独的自然语言理解任务,其中网络输入包括将在网络输入上执行的单独自然语言理解任务的标识符。 [0029] 为了执行机器学习任务,该系统包括包含多个注意力层的注意力神经网络。每个层对相应的输入序列进行操作,该输入序列包括在一个或多个位置中的每一个处的相应层输入。 [0030] 此外,每一层都包括注意力子层,并且可选地包括逐位置前馈子层。注意力子层接收该层的输入序列,并在该层的输入序列上应用注意力机制以生成注意输入序列。 [0031] 注意力子层应用的注意力机制取决于注意力神经网络的配置,如下面将更详细地描述的,然而,至少一个注意力子层应用使用稀疏注意力的注意力机制,如下面将进行描述的。 [0032] 当包括时,前馈子层然后对注意输入序列进行操作以生成该层的输出序列。 [0033] 当不包括前馈子层时,注意输入序列是该层的输出序列。 [0034] 通常,注意力神经网络中的层可以以多种配置中的任何一种进行排列。 [0035] 作为一个示例,当网络输入是输入序列时,注意力神经网络包括编码器神经网络,该编码器神经网络包括多个层的子集并且对输入序列进行编码以生成序列中每个输入的相应编码表示。在此示例中,编码器中层所应用的注意力机制是自注意力机制。在这个示例中,编码器中的一些或所有层可以应用下面将描述的稀疏注意力机制。 [0036] 作为另一示例,注意力神经网络包括解码器神经网络,该解码器神经网络包括多个层的不同子集并且处理网络输入或网络输入的编码表示以生成网络输出。在这些示例的一些中,当网络输出是输出序列时,解码器神经网络以自回归方式操作,并且解码器的一些或所有层内的注意力子层对部分生成的输出序列应用掩码自注意力。当神经网络包括编码器和解码器两者时,解码器中的一些层将交叉注意力应用于编码表示,而其他层将自注意力应用于输出序列,无论是掩码的还是不掩码的。 [0037] 当注意力神经网络包括直接在输入序列上操作的解码器神经网络时,解码器内的注意力层可以在输入序列上应用自注意力机制。在这个示例中,解码器中的一些或所有层可以应用下面将描述的稀疏注意力机制。 [0038] 解码器神经网络和编码器神经网络内的注意力层的具体情况在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,arXiv:1810.04805(Devlin等人,BERT:用于语言理解的深度双向转换器的预训练,arXiv: 1810.04805)中详细描述了,其全部内容通过引用整体并入本文。 [0039] 图1示出了示例性神经网络系统100。神经网络系统100是在一个或多个位置的一个或多个计算机上实现为计算机程序的系统的示例,其中可以实现下文描述的系统、组件和技术。 [0040] 神经网络系统100可以接收输入102并对输入102执行机器学习任务以生成输出 152。 [0041] 如上所述,神经网络系统100可以执行多种任务中的任一种,这些任务涉及(i)对作为输入序列的输入102进行操作、(ii)生成作为输出序列的输出152或(iii)两者。 [0042] 神经网络系统100包括包含多个注意力层的注意力神经网络150,所述多个注意力层中的至少一个是稀疏注意力层110。 [0043] 每个注意力层对输入序列104进行操作并生成对应的输出序列134。 [0044] 尽管为了方便在图1中描绘了一个注意力层,如上所述,但是注意力神经网络150通常包括包含其他注意力层的许多其他层,以及例如嵌入层和输出层。 [0045] 具体地,输入序列104以输入顺序在多个位置中的每一个处具有相应的输入,并且输出序列134在一个或多个位置中的每一个处具有相应的输出。也就是说,输入序列102具有根据输入顺序排列的一个或多个输入,并且输出序列134具有根据输出顺序排列的一个或多个输出。 [0046] 通常,输入序列104可以是注意力神经网络150在对输入102执行机器学习任务时生成的任何中间序列数据。 [0047] 例如,当注意力层110是神经网络中的第一注意力层时,输入序列104可以是由嵌入层生成的系统输入102的嵌入(即,数字)表示。 [0048] 作为另一个示例,输入序列104可以是由前面的注意力层或注意力神经网络150中的其他层生成的输出序列。 [0049] 为了从输入序列104生成输出序列134,稀疏注意力层110包括一个或多个注意力子层120(也称为“注意力头”),以及可选地包括一个或多个逐位置前馈子层130。 [0050] 一个或多个注意力子层120共同从输入序列104生成最终注意输入序列124,所述最终注意输入序列124包括在每个输入位置处的相应最终注意输入。 [0051] 每个注意力子层120接收层110的输入序列104并且在该层的输入序列上应用注意力机制以生成相应的注意输入序列。 [0052] 对于神经网络中的至少一些注意力层,每个子层120应用稀疏的注意力机制,即,替代使用传统的注意力。 [0053] 稀疏注意力机制可以是单个头注意力机制或多头注意力机制,在所述单个头注意力机制中注意力层仅包括在输入序列上应用单个稀疏注意力机制的单个头,即单个子层 120,在所述多头注意力机制中注意力层包括多个头,即多个注意力子层120,并且多个注意力头中的每一个在输入序列上并行应用相应的稀疏注意力机制以生成相应的注意输入序列。 [0054] 然后注意力层组合多个注意力头的输出,例如,通过拼接输出、对输出进行求和或对输出进行平均,并且可选地,通过线性层处理拼接的输出作为生成注意力层110的最终注意输入序列124的一部分。 [0055] 下面将参考图2更详细地描述应用稀疏注意力机制。 [0056] 如上所述,神经网络通常包括多个注意力层。所有的注意力层都可以应用稀疏注意力,或者一些注意力层可以应用稀疏注意力,而其他注意力层可以应用传统的多头或单个头注意力。通常,可以插入应用稀疏注意力的注意力层来代替在任何注意力神经网络架构中执行自注意力的任何传统注意力层,例如,在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,arXiv:1810.04805(Devlin等人,BERT:用于语言理解的深度双向转换器的预训练,arXiv:1810.04805)以及Kitaev,et al,Reformer:The Efficient Transformer,arXiv:2001.04451(Kitaev等人,重整器:高效转换器,arXiv:2001.04451)中描述的任何神经网络中,其全部内容通过引用整体并入本文。 [0057] 自注意力机制是在其中该机制使用的查询、键和值都是从对注意力子层的输入序列生成的注意力机制,即记忆向量的集合与层的输入序列相同。 [0058] 在一些情况下,从注意输入序列生成的组合注意输入序列是注意力机制的最终输出,即,是最终注意输入序列124。在一些其他情况下,注意力层对组合的注意输入序列应用一个或多个其他操作,例如残差连接、层归一化或两者,以生成序列124。 [0059] 当被包括时,一个或多个前馈子层130然后对最终注意输入序列124进行操作以通过对最终注意输入序列的每个注意输入并行应用一系列操作——例如,通过全连接神经网络处理每个注意输入然后可选地对全连接神经网络的输出应用层归一化、残差连接或两者——来为层110生成输出序列134。作为特定示例,全连接神经网络可以对每个注意输入并行应用一个线性变换,然后是激活函数,例如非线性逐元素激活函数,例如ReLU激活函数,然后是另一个线性变换。 [0060] 当不包括前馈子层130时,最终注意输入序列124是该层的输出序列134。 [0061] 通常,注意力神经网络内的层可以以多种配置中的任何一种来排列,并且注意力子层120所应用的注意力机制取决于注意力神经网络150的配置。 [0062] 作为一个示例,当网络输入是输入序列并且注意力神经网络150包括继而包括多个层的子集并且对输入序列进行编码以生成序列中每个输入的相应编码表示的编码器神经网络时,注意力子层120可以被包括在编码器的层中的一个层中。 [0063] 作为另一个示例,当网络输入是输入序列并且注意力神经网络150包括包含多个层的子集并且处理网络输入以生成网络输出的解码器神经网络时,注意力子层120可以被包括在解码器的层中的一个层中。 [0064] 如在本说明书中使用的,术语“学习”意味着在注意力神经网络150的训练期间已经调整了操作或值。 [0065] 图2A是应用于输入序列的稀疏注意力机制的图示200。如上所述,稀疏注意力机制可以由注意力子层的多个注意力头之一或具有单个注意力头的注意力子层应用。为了清楚起见,在图2A的示例中,稀疏注意力机制将被描述为由注意力子层执行,它可以对应于稀疏注意力层的单个注意力头或稀疏注意力层的多个注意力头之一。 [0066] 为了应用注意力机制,注意力子层获得(i)从对稀疏注意力层的输入序列得出的查询序列、(ii)从对稀疏注意力层的输入序列得出的键序列以及(iii)从对稀疏注意力层的输入序列得出的值输入序列。 [0067] 例如,子层可以通过对输入序列应用不同的学习线性变换来生成查询、键和值。 [0068] 换句话说,子层可以对输入序列应用相应的查询线性变换来生成子层的查询序列、对输入序列应用相应的键线性变换来生成稀疏注意力子层的键序列以及对输入序列应用值线性变换以生成稀疏注意力子层的值输入序列。每个线性变换可以包括将序列中的每个输入乘以对应的学习权重矩阵,并且可选地,添加对应的学习偏差。 [0069] 在图2A的示例中,输入序列包括十二个输入位置,输入位置的查询表示在y轴210上,而十二个输入位置的键表示在x轴220上。 [0070] 然后,子层生成注意输入序列,该序列包括在多个输入位置中的每一个处的相应注意输入。 [0071] 特别地,子层识别输入位置的第一真子集。在图2A的示例中,第一真子集包括十二个输入位置中的前两个。对于第一真子集中的每个输入位置,子层通过以下来在输入位置生成注意输入:首先使用输入位置处的查询来注意键序列中的所有键,以为所有输入位置生成相应的权重,然后根据相应的权重计算所有输入位置处的值输入的加权和。即,加权和中给定值输入的权重等于与给定值输入对应的输入位置的权重。 [0072] 更详细地说,第一子集中给定输入位置的权重可以等于评分函数——例如softmax或hardmax函数——的输出,所述评分函数应用于(i)对给定输入位置的查询与(ii)输入序列中所有输入位置的键矩阵的乘积。可选地,系统可以在计算评分函数之前将缩放因子应用于乘积。 [0073] 因此,第一真子集中每个输入位置的注意输入取决于输入位置的查询以及包括第一真子集之外的所有位置的序列中所有输入位置的键和值。 [0074] 该子层还识别输入位置的第二真子集,并且对于真子集中的每个输入位置,识别输入位置的对应真子集。特别地,子层可以将不在第一真子集中的位置识别为第二真子集,即可以将输入位置划分为第一真子集和第二真子集。因此,在图2A的示例中,第二真子集中的位置是不在第一真子集中的剩余十个位置。 [0075] 第二子集中的任何给定输入位置的对应真子集包括输入位置的第一真子集和输入位置的第一真子集之外的一个或多个输入位置。 [0076] 对于第二真子集中的每个输入位置,子层通过以下生成输入位置处的注意输入: 使用输入位置处的查询仅注意输入位置的对应真子集处的键来生成对应的真子集中的每个输入位置的相应权重,并根据输入位置的对应真子集的相应权重,计算输入位置的对应真子集处的值输入的加权和。即,加权和中的给定值输入的权重等于与给定值输入对应的输入位置的权重。 [0077] 更详细地说,第二子集中给定输入位置的权重可以等于评分函数——例如,softmax或hardmax函数——的输出,所述评分函数应用于(i)对给定输入位置的查询与(ii)输入位置的对应真子集的键矩阵的乘积。可选地,系统可以在计算评分函数之前将缩放因子应用于乘积。 [0078] 更具体地,对于第二真子集中的每个特定位置,第一真子集外的一个或多个输入位置包括从第一真子集外的输入位置中随机选择的一个或多个输入位置。 [0079] 在一些情况下,对于第二真子集中的每个特定位置,第一真子集外的一个或多个输入位置包括在第二真子集中特定输入位置中的固定数量的位置的窗口内的每个输入位置。 [0080] 因此,第二子集中位置的查询注意比输入序列中位置的所有键少得多。特别地,因为给定输入位置的查询只注意第一子集中的位置和第二子集中的少量位置的键,所以在第二个子集中存在给定输入位置的查询不注意的许多位置。 [0081] 这种注意力方案在图2A中说明。 [0082] 在图2A中,空白单元221表示在对应的查询和键之间没有发生注意力,全局单元 226说明包括第一子集中的位置之一的“全局注意力”,随机单元222说明在对第二子集中的位置的查询和用于第二子集中的其他位置的随机选择的键集合之间的“随机注意力”,并且窗口单元224说明了在第二子集中的位置的查询与在位置的窗口内的位置的键集合中的每一个键之间的“窗口注意力”。 [0083] 更具体地,如图2A所示,第一真子集包括序列中的前两个输入位置,并且第二真子集包括序列中剩余的十个输入位置。对于第二个子集中的每个位置,该位置的查询注意两个随机选择的键以及位于该位置的大小为3的窗口内的位置的所有键。 [0084] 系统可以以多种方式中的任一种选择一个或多个“全局位置”,即,在第一子集中的一个或多个位置。 [0085] 作为一个示例,当网络输入是在多个输入位置的每一个处具有相应词元的序列时,注意力神经网络可以通过在处理网络输入之前添加一个或多个预定全局词元例如到网络输入的开头来增强网络输入,输入位置的第一真子集可以对应于在其中添加一个或多个全局词元的位置。 [0086] 作为另一示例,当网络输入是在多个输入位置的每一个处具有相应词元的序列时,注意力神经网络被配置为指定固定数量的多个输入位置,例如,输入序列中的固定数量的初始位置或最终位置,或固定数量的初始位置和固定数量的最终位置,作为输入位置的第一真子集,即不使用任何额外的词元来增加网络输入。 [0087] 当在给定的稀疏注意力层中存在多个子层(“注意力头”)时,稀疏注意力层可以如上所述组合每个子层生成的注意输入序列,以生成最终的注意输入序列。 [0088] 此外,所描述的注意力方案旨在针对硬件加速器——例如,在硬件中执行矩阵乘法的图形处理单元(GPU)和张量处理单元(TPU)——上的执行进行优化。特别地,如上所述,所描述的注意力优于传统的注意力机制,因为仅位置的小子集注意序列中的所有位置,而位置的剩余子集仅注意位置的稀疏子集。 [0089] 通过适当地选择哪些位置在位置的第一子集中以及哪些位置在位置的第二子集中的每个位置的对应子集中,所描述的技术可以利用当使用一次加载连续字节块的合并存储器操作时由于GPU和TPU被设计为提供例如在延迟和吞吐量方面的额外计算优势而产生的额外优势。 [0090] 图2B是其中输入查询和键被划分为块的稀疏注意力方案的图示250。 [0091] 特别地,在图2B所示的示例中,同样存在十二个输入位置,查询表示在y轴210上,键表示在x轴220上,但是在这个示例中,查询被划分为固定大小的查询块并且键被划分为固定大小的块。在图2的示例中,固定大小等于二。 [0092] 然后,确定哪些位置在第一真子集中以及哪些位置在第二子集中的每个位置的对应的真子集中考虑了查询块和键块分配。 [0093] 对于全局注意力,系统选择与查询块或键块中的一个或多个对应的位置作为包含在第一真子集中的位置。在图2B的示例中,系统选择了与第一查询块对应的输入位置作为第一真子集中的位置。 [0094] 对于随机注意力,对于每个查询块,系统随机选择键块,然后将与所选键块对应的位置包含在查询块中输入位置的对应子集中。在图2B的示例中,系统为每个查询块随机选择一个键块。 [0095] 类似地,对于窗口注意力,对于每个查询块j,该查询块j中每个位置的对应的真子集包括与键块j‑(w‑1)/2到j+(w+1)/2对应的输入位置,其中w是正常数,它定义了查询块j中位置的窗口大小。在图2B的示例中,w等于1。 [0096] 与图2A类似,空白单元221指示在对应的查询和键之间没有发生注意力,全局单元 226说明包括第一子集中的位置之一的“全局注意力”,随机单元222说明在第二子集中的位置的查询和第二子集中的其他位置的随机选择的键集合之间的“随机注意力”,并且窗口单元224说明在对第二子集中的位置的查询与在位置的窗口中的位置的键集合中的每一个键之间的“窗口注意力”。然而,如图2B所示,对于给定查询块内的每个查询,空白单元、全局单元和窗口单元是相同的。 [0097] 通过将查询和键划分为块来选择用于计算每个查询的注意力的键,系统可以在加载查询和键以执行为硬件中的每个查询位置生成权重所需的乘法时确保硬件加速器,例如GPU或TPU,可以利用合并的存储器操作(其一次加载连续字节块),减少在一个或多个硬件加速器上部署时使用注意力神经网络执行推理的延迟。 [0098] 此外,虽然为了便于表示在图2A和图2B中仅说明了十二个位置,但是通常,子层的输入序列可以具有更多的输入位置,并且第一真子集中的位置数量可以显着小于输入序列中的位置总数。作为特定示例,输入序列可以具有4000个或更多个位置,同时在第一子集中具有注意整个序列的100到500个位置。因此,包括全局词元的位置的第一真子集可以包括不超过包括其他词元的第二真子集的15/100的词元。 [0099] 此外,第二子集中每个输入位置的对应子集的大小可以显着小于第二子集的总大小,使得第二子集中的那些位置的注意力非常稀疏。在上面的示例中,在输入序列具有4000个或更多个位置,而第二子集包括3500到3900个位置的情况下,第二子集中每个位置的对应子集只能具有大约300个位置,使得对第二子集中的每个位置的查询注意不超过第二子集中的位置的键的10/100。 [0100] 图3是用于应用稀疏注意力机制的示例过程300的流程图。为方便起见,过程300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当地编程的神经网络系统,例如图1的神经网络系统100,可以执行过程300。 [0101] 过程300可以由稀疏注意力层的每个子层执行,以生成该子层的相应注意输入序列。 [0102] 该系统接收(i)从对稀疏注意力层的输入序列得出的查询序列,该查询序列在多个输入位置的每一个处具有相应查询;(ii)从对稀疏注意力层的输入序列得出的键序列,该键序列在多个输入位置的每一个处具有相应键;以及(iii)从对稀疏注意力层的输入序列得出的值输入序列,该值输入序列在多个输入位置的每一个处具有相应值输入(步骤 302)。 [0103] 该系统然后生成在多个输入位置中的每一个处具有相应注意输入的注意输入序列(步骤304)。 [0104] 特别地,对于输入位置的第一真子集中的每个输入位置,系统通过注意输入序列中的所有位置来在该位置处生成注意输入(步骤306)。更具体地说,对于在第一真子集中的给定输入位置,系统通过首先使用该输入位置处的查询来注意键序列中的所有键以生成所有输入位置的相应权重,然后根据相应权重计算所有输入位置处的输入值的加权和来生成在给定输入位置处的注意输入。 [0105] 对于输入位置的第二真子集中的每个输入位置,系统通过注意输入序列中的输入位置的真子集(即,明显少于所有输入位置)生成在输入位置处的注意输入(步骤308)。 [0106] 更具体地说,对于在第二真子集中的给定输入位置,系统通过首先使用输入位置处的查询以仅注意输入位置的对应真子集处的键以为对应真子集中的每个输入位置生成相应的权重,然后根据输入位置的对应真子集的相应权重计算输入位置的对应真子集处的值输入的加权和来生成在给定输入位置处的注意输入。 [0107] 如上所述,第二真子集中的每个输入位置的输入位置的对应真子集包括输入位置的第一真子集;以及在输入位置的第一真子集之外的一个或多个输入位置。 [0108] 在给定网络输入的处理期间,对于注意力神经网络中的每个稀疏注意力层,系统可以执行过程300以更新对层的输入序列。通过对注意力神经网络中的所有注意力层重复执行该处理,然后通过使用一个或多个输出层(例如,可选地softmax层之后的一个或多个线性层或者更一般地说,多层感知器(MLP))处理由注意力神经网络中的最后一个注意力层生成的输出序列的至少一部分,系统可以为接收到的网络输入生成网络输出。 [0109] 也就是说,过程300可以作为预测针对输入的输出的一部分来执行,对于该输入,期望的输出——即,应该由系统为输入序列生成的输出——未知。 [0110] 过程300也可以作为处理从训练数据集合得出的输入——即,从对于其应该由系统生成的输出是已知的输入集合得出的输入——的一部分来执行,以便训练注意力神经网络来确定注意力神经网络的参数的训练值。该系统可以对从训练数据集合中选择的输入重复执行过程300作为传统机器学习训练技术的一部分,以训练神经网络的注意力层和输出层,例如,利用反向传播训练技术的梯度下降,其使用传统优化器(例如随机梯度下降、RMSprop或Adam优化器)来优化适合于注意力神经网络被配置执行的任务的目标函数。在训练期间,系统可以结合任何数量的技术来提高训练过程的速度、有效性或两者。例如,系统可以使用暂退法、标签平滑或两者来减少过度拟合。作为另一个示例,系统可以使用分布式架构执行训练,该架构并行训练注意力神经网络的多个实例。此外,该系统可以首先通过无监督学习在大型无监督数据集上预训练神经网络,例如,以最小化BERT损失或其他无监督损失,然后在特定任务的训练数据上微调神经网络以优化任务的目标函数。 [0111] 本说明书使用与系统和计算机程序组件相关的术语“配置”。对于配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已在其上安装软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中导致系统执行操作或动作。对于配置为执行特定操作或动作的一个或多个计算机程序,意味着该一个或多个程序包括指令,这些指令在由数据处理装置执行时使该装置执行操作或动作。 [0112] 本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件中实现,包括在本说明书中公开的结构和它们的结构等效物,或者它们中的一种或多种的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即,一个或多个计算机程序指令模块,其编码在有形的非暂时性存储介质上,用于由数据处理装置执行或控制数据处理装置的操作。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备,或者它们中的一种或多种的组合。替代地或附加地,程序指令可以在人工生成的传播信号上编码,例如机器生成的电、光或电磁信号,生成该信号以编码信息以传输到合适的接收器装置以供数据处理装置执行。 [0113] 术语“数据处理装置”指的是数据处理硬件并且涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一种或多种的组合的代码。 [0114] 计算机程序,也可以称为或描述为程序、软件、软件应用、应用程序、模块、软件模块、脚本或代码,可以用任何形式的编程语言编写,包括编译或解释性语言,或声明或过程语言;它可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或适用于计算环境的其他单元。程序可以但不必对应于文件系统中的文件。程序可以存储在包含其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本、专用于所讨论程序的单个文件或多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的文件。可以部署计算机程序以在一个计算机或位于一个站点或分布在多个站点并通过数据通信网络互连的多个计算机上执行。 [0115] 在本说明书中,术语“数据库”广泛用于指代任何数据合集:数据不需要以任何特定方式结构化,或者根本不需要结构化,它可以存储在一个或多个位置中的存储设备上。因此,例如,索引数据库可以包括多个数据合集,每个数据合集可以以不同方式组织和访问。 [0116] 类似地,在本说明书中,术语“引擎”广泛用于指代被编程为执行一个或多个特定功能的基于软件的系统、子系统或过程。通常,引擎将被实现为一个或多个软件模块或组件,其安装在一个或多个位置中的一个或多个计算机上。在某些情况下,一个或多个计算机将专用于特定引擎;在其他情况下,可以在同一个或多个计算机上安装和运行多个引擎。 [0117] 本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能来执行。过程和逻辑流程也可以由专用逻辑电路(例如FPGA或ASIC)或由专用逻辑电路和一个或多个编程计算机的组合来执行。 [0118] 适合执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。通常,计算机还将包括或可操作地耦合以从一个或多个用于存储数据的大容量存储设备(例如,磁、磁光盘或光盘)接收数据或向其传输数据或两者。然而,计算机不需要有这样的设备。此外,计算机可以嵌入到另一个设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如,通用串行总线(USB)闪存驱动器等。 [0119] 适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,例如包括半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;和CD ROM和DVD‑ROM磁盘。 [0120] 为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,其具有用于向用户显示信息的显示设备,例如,CRT(阴极射线管)或LCD(液晶显示器)监视器,和键盘和定点设备,例如鼠标或轨迹球,用户可以通过它们向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从其接收文档来与用户交互;例如,通过响应于从Web浏览器接收到的请求将网页发送到用户设备上的Web浏览器。此外,计算机可以通过将文本消息或其他形式的消息发送到个人设备(例如,运行消息传递应用的智能手机)然后接收来自用户的响应消息来与用户交互。 [0121] 用于实现机器学习模型的数据处理装置还可以包括例如专用硬件加速器单元,用于处理机器学习训练或生产(即推理、工作负载)的常见和计算密集型部分。 [0122] 机器学习模型可以使用机器学习框架来实现和部署,例如TensorFlow框架、Microsoft Cognitive Toolkit框架、Apache Singa框架或Apache MXNet框架。 [0123] 本说明书中描述的主题的实施例可以在计算系统中实现,所述计算系统包括后端组件(例如,作为数据服务器)或者包括中间件组件(例如,应用服务器)或者包括前端组件(例如,具有图形用户界面、web浏览器或app的客户端计算机,用户可以通过其与本说明书中描述的主题的实现进行交互)或一个或多个这样的后端、中间件或前端组件的任何组合。 系统的组件可以通过任何形式或介质的数字数据通信互连,例如通信网络。通信网络的示例包括局域网(LAN)和广域网(WAN),例如因特网。 [0124] 计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(例如HTML页面)传输到用户设备,例如,用于向与作为客户端的设备交互的用户显示数据和从用户接收用户输入的目的。在用户设备处生成的数据,例如用户交互的结果,可以在服务器处从设备接收。 [0125] 尽管本说明书包含许多具体的实施细节,但这些不应被解释为对任何发明的范围或可要求保护的范围的限制,而是对可能特定于特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实施。此外,尽管特征可能在上面描述为在某些组合中起作用,甚至最初被要求保护,但在某些情况下,来自要求保护的组合的一个或多个特征可以从组合中删除,并且要求保护的组合可以针对子组合或子组合的变化。 [0126] 类似地,虽然操作在附图中被描绘并且在权利要求中以特定顺序叙述,但这不应被理解为要求这样的操作以所示的特定顺序或按顺序执行,或者所有所示的操作都被执行,以达到理想的效果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中各个系统模块和组件的分离不应理解为在所有实施例中都需要这样的分离,而应该理解的是,所描述的程序组件和系统通常可以集成在单个软件产品中,或者打包成多个软件产品。 [0127] 已经描述了本主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行,但仍能达到期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或顺序来实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。

相关技术
机制注意力相关技术
注意力机制相关技术
乔舒亚·蒂莫西·安斯理发明人的其他相关专利技术