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

稀疏注意力神经网络的制作方法

2022-05-18 05:31:19 来源:中国专利 TAG:


1.本说明书涉及使用神经网络来对网络输入执行机器学习任务。


背景技术:

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


技术实现要素:

3.本说明书描述一种作为计算机程序实现在一个或多个位置中的一个或多个计算机上的系统,该系统使用包括注意力(attention)层的注意力神经网络来对网络输入执行机器学习任务,这些注意力层中的至少一个是稀疏注意力层。
4.稀疏注意力层是在处理该层的任何给定输入时仅使用该层的权重的一小部分例如不到一半的注意力层。
5.所描述的稀疏注意力层通过减少从存储器访问层权重以便通过神经网络处理输入所需要的时间来减少神经网络的解码时延,即,因为不需要从存储器访问未在使用的层权重。因此,如在下面更详细地描述的,这些技术允许高性能注意力神经网络,即在质量上与包括常规而不是稀疏注意力层的注意力神经网络相当的注意力神经网络,其被部署在具有受限存储器空间的设备上或在需要低解码时延的设备上,例如,在诸如移动设备、智能扬声器或其他物联网(iot)设备的边缘设备上或者与机器人或其他物理系统一起嵌入。
6.能够实现本说明书中描述的主题的特定实施例以便实现以下优点中的一个或多个。
7.大型基于注意力的神经网络,例如具有transformer架构的神经网络,在许多机器学习任务上产生给人深刻印象的结果。然而,这些大型模型难以训练,并且即使当被成功地训练时,也消耗大量计算资源并且可能消耗专用硬件上的大量周期。此外,在解码时,即当被部署用于生产目的以在被训练之后执行推理时,这些大型模型非常慢并且在产生输出时导致显著时延,即使当被部署在专用硬件上时也如此。所描述的技术以不会显著地使由这些模型产生的输出的质量降级的方式对此类模型中的注意力块的各种组件强加稀疏。特别地,通过强加稀疏,解码变得比标准transformer快几个数目级,然而性能在各种任务中的任一个上与标准transformer的性能匹配。
8.本说明书还描述了对transformer的架构的要从解码器中移除交叉注意力的修改,当与所描述的稀疏技术组合时,这产生在甚至非常长的序列上实现高质量性能的神经网络,同时相对于常规方法大大减少计算资源消耗和时延。
9.在以下附图和描述中阐述本说明书的主题的一个或多个实施例的细节。主题的其他特征、方面和优点将从描述、附图和权利要求中变得显而易见。
附图说明
10.图1示出示例神经网络系统。
11.图2示出稀疏前馈子层的操作。
12.图3示出稀疏注意力子层的操作。
13.图4a是用于使用稀疏注意力子层来处理输入的示例过程的流程图。
14.图4b是用于使用稀疏前馈子层来处理输入的示例过程的流程图。
15.图5示出不包括任何交叉注意力子层的示例解码器的示例。
16.在各个附图中相似的附图标记和名称指示相似的元件。
具体实施方式
17.本说明书描述一种作为计算机程序实现在一个或多个位置中的一个或多个计算机上的系统,该系统对网络输入执行机器学习任务以针对该机器学习任务生成网络输出。
18.机器学习任务可以是操作如下的任何机器学习任务:(i)对作为输入序列的网络输入进行操作,(ii)生成作为输出序列的网络输出,或者(iii)以上两者。
19.系统能够被配置成执行的机器学习任务的一些示例如下。
20.作为一个示例,任务可以是神经机器翻译任务。例如,如果神经网络的输入是文本序列,例如,一种语言中的单词、短语、字符或词条的序列,则由神经网络生成的输出可以是该文本序列变成另一语言的翻译,即作为对输入文本序列的翻译的另一语言的文本序列。作为特定示例,任务可以是多语言机器翻译任务,其中单个神经网络被配置成在多种不同的源语言-目标语言对之间翻译。在此示例中,源语言文本可以被扩增有指示神经网络应该将源语言文本翻译成的目标语言的标识符。
21.作为另一示例,任务可以是音频处理任务。例如,如果神经网络的输入是表示口语话语的序列,则由神经网络生成的输出可以是针对一组文本段中的每一个的分数,每个分数表示该文本段是针对话语的正确转录的估计可能性。作为另一示例,如果神经网络的输入是表示口语话语的序列,则由神经网络生成的输出能够指示在话语中是否讲出了特定单词或短语(“热词”)。作为另一示例,如果神经网络的输入是表示口语话语的序列,则由神经网络生成的输出能够标识讲出话语所用的自然语言。
22.作为另一示例,任务可以是自然语言处理或理解任务,例如,对某些自然语言的文本序列进行操作的蕴涵任务、释义任务、文本相似性任务、情感任务、句子完成任务、语法任务等。
23.作为另一示例,任务可以是文本至语音任务,其中输入是自然语言的文本或自然语言的文本的特征,并且网络输出是频谱图、波形、或定义用自然语言讲出的文本的音频的其他数据。
24.作为另一示例,任务可以是健康状态预测任务,其中输入是根据患者的电子健康状态记录数据导出的序列,并且输出是与患者的将来健康状态相关的预测,例如,应该给患者开药方的预测治疗、患者将发生不良健康状态事件的可能性、或针对患者的预测诊断。
25.作为另一示例,任务可以是文本生成任务,其中输入是文本序列,并且输出是另一文本序列,例如,输入文本序列的完成、对在输入序列中提出的问题的响应、或关于由第一文本序列指定的话题的文本序列。作为另一示例,文本生成任务的输入可以是除文本以外
的输入,例如图像,并且输出序列可以是描述输入的文本。
26.作为另一示例,任务可以是用于依照一组训练图像的分布来生成图像的图像生成任务,其中输入是条件输入,例如,文本序列、来自较低分辨率图像的强度值的序列、或针对所生成的图像标识目标对象类的输入,并且输出是图像的像素的强度值的序列。
27.作为另一示例,任务可以是代理控制任务,其中输入是表征环境的状态的观察结果或其他数据的序列,并且输出定义要由代理响应于序列中的最近数据而执行的动作。例如,代理可以是真实世界或模拟机器人、用于工业设施的控制系统、或控制不同种类的代理的控制系统。
28.作为另一示例,任务可以是基因组学任务,其中输入是表示dna 序列或其他分子序列的片段的序列,并且输出是用于在下游任务中使用的分段的嵌入(例如,通过对dna序列片段的数据集利用无监督学习技术)或下游任务的输出。下游任务的示例包括启动子位点预测、甲基化分析、预测非编码变体的功能效应等。
29.在一些情况下,机器学习任务是多个单独机器学习任务的组合,即,系统被配置成执行多个不同的单独机器学习任务,例如,上面提及的机器学习任务中的两个或多个。例如,系统能够被配置成执行多个单独自然语言理解任务,其中网络输入包括要对网络输入执行的单独自然语言理解任务的标识符。
30.为了执行机器学习任务,系统包括包含多个注意力层的注意力神经网络。每个层对相应输入序列进行操作,该相应输入序列包括一个或多个位置中的每一个位置处的相应层输入。
31.此外,每个层包括一个或多个注意力子层和前馈子层。注意力子层接收该层的输入序列并且在该层的输入序列上应用注意力机制以生成受注意(attended)输入序列。由注意力层应用的注意力机制取决于注意力神经网络的配置,如将在以下更详细地描述的。然后,前馈子层对受注意输入序列进行操作以生成该层的输出序列。
32.对于每一个注意力层,前馈子层和可选地注意力层是“稀疏”层。稀疏层是对由该层执行的操作强加稀疏的层,即,使得对于由该层处理的任何给定输入,仅该层的权重的小子集是活动的。
33.通常,能够以各种配置中的任一种布置注意力神经网络内的层。
34.作为一个示例,当网络输入是输入序列时,注意力神经网络能够包括编码器神经网络,该编码器神经网络包括多个层的子集并且对输入序列进行编码以生成序列中的每个输入的相应编码表示。在此示例中,由编码器中的层应用的注意力机制是自注意力机制,例如,多头自注意力机制。
35.作为另一示例,注意力神经网络能够包括解码器神经网络,该解码器神经网络包括多个层的不同子集并且处理网络输入,或者当注意力神经网络还包括编码器神经网络时,处理网络输入的编码表示以生成网络输出。在这些示例中的一些中,当网络输出是输出序列时,解码器神经网络自回归地操作并且在解码器的一些或所有层内的注意力子层对部分地生成的输出序列应用掩蔽自注意力。当神经网络包括编码器和解码器这两者时,解码器中的一些层将交叉注意力应用到编码表示中,然而其他层对输出序列应用自注意力,要么掩蔽要么不掩蔽。当注意力神经网络包括直接对输入序列进行操作的解码器神经网络时,解码器内的注意力层能够对输入序列应用自注意力机制。
36.解码器神经网络和编码器神经网络内的注意力层的操作的详情在vaswani等人的“注意力就是你所需要的(attentionisallyouneed)”,arxiv:1706.03762,以及raffel等人的“使用统一的文本到文本转换器探索转换学习的极限(exploringthelimitsoftransferlearningwithaunifiedtext-to-texttransformer)”,arxiv:1910.10683,和devlin等人的“bert:用于语言理解的深度双向转换器的预训练(bert:pre-trainingofdeepbidirectionaltransformersforlanguageunderstanding)”,arxiv:1810.04805中被更详细地描述,其全部内容特此通过引用整体地并入本文。
37.在以下描述当神经网络包括编码器和解码器这两者并且自回归地操作时的注意力神经网络的另一示例配置。特别地,在此配置中,解码器不包括交叉注意力,并且解码器中的注意力层替代地处理编码器的输出和从网络输出中任何已生成元素所生成的序列的组合。在这些配置中的一些中,解码器中的注意力层包括两个注意力机制,这两个注意力机制各自应用掩蔽自注意力,即,包括两个注意力机制而不是单一注意力机制。
38.图1示出示例神经网络系统100。神经网络系统100是作为计算机程序实现在一个或多个位置中的一个或多个计算机上的系统的示例,其中能够实现以下系统、组件和技术。
39.神经网络系统100可以接收输入102并且对输入102执行机器学习任务以生成输出152。
40.如上所述,神经网络系统100能够执行各种任务中的任一个,这些任务涉及(i)对作为输入序列的输入102进行操作,(ii)生成作为输出序列的输出152,或者(iii)以上两者。
41.神经网络系统100包括包含多个注意力层110的注意力神经网络150,所述多个注意力层中的至少一个是稀疏注意力层。
42.每个注意力层110对输入序列104进行操作并且生成对应的输出序列134。
43.尽管为了方便在图1中描绘一个注意力层110,但是如上所述,注意力神经网络150通常包括许多其他层,包括例如嵌入层、输出层和其他注意力层。
44.具体地,输入序列104在输入次序中的多个输入位置中的每一个处具有相应输入,并且输出序列134在输入次序中的每一个位置处具有相应输出。也就是说,注意力层针对输入序列104中的每个输入位置生成相应输出。
45.一般而言,输入序列104可以是由注意力神经网络150在对输入102执行机器学习任务时生成的任何中间顺序数据。
46.例如,输入序列104可以是由嵌入层生成的系统输入102的嵌入(即,数值)表示,可选地通过将每个嵌入与位置嵌入相加或逐元素相乘来修改。
47.作为另一示例,输入序列104可以是由注意力神经网络150中的前一个注意力层或其他层生成的输出序列。
48.作为另一示例,当神经网络150自回归地生成网络输出时,输入序列140可以是(i)截至当前时间步的当前生成的网络输出的嵌入表示,可选地通过将每个嵌入与位置嵌入相加或逐元素相乘来修改,或者是(ii)系统输入102的一组编码表示和截至当前时间步的当前生成的网络输出的级联的嵌入表示,可选地被一个或多个分隔符标记分隔并且进一步可选地通过将每个嵌入与位置嵌入相加或逐元素相乘来修改。
49.为了从输入序列104生成输出序列134,每个注意力层包括注意力子层和前馈子
层。可选地,每个注意力层还能够在注意力子层之后、在前馈子层之后、或者既在注意力子层之后又在前馈子层之后包括加法 归一化操作。
50.注意力子层接收该层的输入序列104并且在该层的输入序列上应用注意力机制以生成受注意输入序列124。
51.通常,为了应用注意力机制,子层120使用一个或多个注意力头。每个注意力头生成查询集、键集和值集,然后使用查询、键和值来应用查询-键-值(qkv)注意力的各种变体中的任一个来生成输出。在一些情况下,键和值是相同的,即,是通过对相同输入应用共享变换来生成的,然而在其他情况下,键和值是不同的,即,是通过对相同输入应用不同变换、或者对不同输入应用不同变换、或者对不同输入应用相同变换来生成的。当存在多个注意力头时,子层120然后组合多个注意力头的输出,例如,通过级联输出并且可选地通过线性层来处理级联输出。qkv注意力变体的示例在vaswani等人的“注意力就是你所需要的(attention is all you need)”,arxiv:1706.03762,raffel等人的“使用统一的文本到文本transformers探索转换学习的极限 (exploring the limits of transfer learning with a unified text-to-texttransformer)”,arxiv:1910.10683,devlin等人的“bert:用于语言理解的深度双向transformers的预训练(bert:pre-training of deepbidirectional transformers for language understanding)”, arxiv:1810.04805,dai等人的“transformer-xl:超越固定长度上下文的注意力语言模型(transformer-xl:attentive language models beyonda fixed-length context)”,arxiv:1901.02860以及kitaev等人的“改革者:高效的transformer(reformer:the efficient transformer)”,arxiv: 2001.04451和kitaev等人的“改革者:高效的transformer(reformer: the efficient transformer)”,arxiv:2001.04451中有所描述,其全部内容特此通过引用整体地并入本文。
52.通常,如上所述,能够以各种配置中的任一种布置注意力神经网络内的层,并且由注意力子层120应用的注意力机制取决于注意力神经网络150的配置。
53.作为一个示例,当网络输入是输入序列时,注意力神经网络150 包括编码器神经网络,该编码器神经网络包括多个层的子集并且对输入序列进行编码以生成序列中的每个输入的相应编码表示。在此示例中,由编码器中的注意力子层120应用的注意力机制是自注意力机制,例如多头自注意力机制,其中查询、键和值都是从到注意力子层的输入序列生成的。
54.作为另一示例,注意力神经网络150能够包括解码器神经网络,该解码器神经网络包括多个层的不同子集并且处理网络输入或网络输入的编码表示以生成网络输出。在这些示例中的一些中,当网络输出是输出序列时,解码器神经网络自回归地操作,并且在解码器的一些或所有层内的注意力子层120对部分地生成的输出序列应用掩蔽自注意力,其中查询、键和值都是从到注意力子层120的输入序列生成的。
55.在一些实现方式中,当神经网络150包括编码器和解码器这两者时,解码器中的一些层将交叉注意力应用到编码表示中,然而其他层对输出序列应用自注意力,要么掩蔽要么不掩蔽。在交叉注意力中,查询是从到注意力子层120的输入序列生成的,然而键和值是从网络输入的编码表示生成的。
56.当注意力神经网络150包括直接对输入序列进行操作的解码器神经网络时,解码
器内的注意力子层120能够对输入序列应用自注意力机制。
57.如本说明书中使用的,术语“学习(learned)”意味着在注意力神经网络150的训练期间已调整了操作或值。
58.在一些情况下,受注意输入序列124是注意力机制的最终输出。在一些其他情况下,子层120应用加法 归一化操作,该操作对注意力机制的输出应用残差连接和层归一化或另一类型的归一化以生成受注意输入序列。
59.然后,前馈子层对受注意输入序列进行操作以生成层110的输出序列134。
60.前馈子层被配置成单独地即以逐位置方式对受注意输入序列中的每个位置进行操作。特别地,对于每个输入位置,前馈子层被配置成接收输入位置处的受注意层输入并且对输入位置处的受注意层输入应用一组变换以生成输入位置的输出。由子层应用的变换对每个输入位置来说通常是相同的(但是注意力神经网络中的不同前馈子层将应用不同变换)。
61.更具体地,在常规transformer即常规注意力神经网络中,前馈子层包括单独地即以逐位置方式对受注意输入序列中的每个位置进行操作的前馈神经网络(ffn)。ffn可以是例如具有例如relu或gelu 激活函数的全连接层的多层(例如两层或三层)神经网络。
62.特别地,对于每个输入位置,前馈子层被配置成接收输入位置处的受注意层输入并且使用ffn来处理受注意层输入以生成输入位置的初始输出。
63.因此,前馈子层使用相同ffn来处理每个受注意层输入。
64.可选地,然后,注意力层110能够对初始输出应用加法 归一化操作以生成注意力层110的输出序列134。
65.通常,如上面所指示的,注意力神经网络内的一些或所有注意力层是稀疏注意力层110。例如,每一个注意力层可以是稀疏注意力层110,注意力神经网络内的每隔一个注意力层可以是稀疏注意力层110,或者注意力神经网络内的每三个注意力层可以是稀疏注意力层110。
66.稀疏注意力层110是操作如下的注意力层:(i)用稀疏注意力子层替换常规注意力子层,(ii)用稀疏前馈子层替换常规前馈子层,或者(iii)以上两者。当仅子层的参数的小真子集被用于由子层处理的任何给定输入时,子层是“稀疏的”。
67.在以下参考图2描述稀疏全连接子层。
68.在以下参考图3描述稀疏注意力子层。
69.在使用神经网络150来为机器学习任务生成新输出之前,系统100 或另一训练系统在训练数据上训练神经网络。通常,能够在适于神经网络150被配置成使用常规机器学习训练技术来执行的任务的任何损失函数上训练神经网络150。能够被使用的损失函数的示例包括交叉熵损失、困惑损失、均方误差损失、负对数似然损失等。机器学习训练技术的示例包括随机梯度下降、adam、rmsprop、adafactor等。
70.在一些实现方式中,在训练期间,在训练后推理期间,或者在这两者期间,系统100通过跨多个硬件设备并行化神经网络来实现注意力神经网络150。例如,系统100能够跨多个硬件加速器例如张量处理单元(tpu)、图形处理单元(gpu)或这两者来实现注意力神经网络。
71.在一些实现方式中,在训练神经网络150之后,系统100能够使用神经网络150来训
练通过蒸馏执行机器学习任务的另一更小神经网络。然后,系统100能够将更小的神经网络用于推理。例如,更小的神经网络可以是不具有稀疏注意力层但是与神经网络150相比具有更少参数的注意力神经网络。
72.图2示出稀疏前馈子层200在处理来自由子层200处理的受注意输入序列的受注意层输入(“激活向量”)202时的操作。
73.虽然在图2中示出仅单个输入202,但是在实践中子层200被配置成并行地处理受注意输入序列中的每个层输入以生成输出序列,该输出序列包括受注意输入序列中的每一个位置处的相应层输出。
74.特别地,在常规transformer,即具有常规注意力层而不是稀疏注意力层的transformer中,解码速度,即在推理时(即在训练之后)为更多输入的批输入中的每个网络输入生成相应网络输出所需要的时间量由transformer的注意力层内的前馈子层的执行成本支配。特别地,如上所述,每个前馈子层具有在中间具有relu非线性的两个全连接稠密层。因此,每当需要在训练之后(即在推理时)计算子层的输出时,需要从上面部署有子层的设备的存储器加载两个全连接层的权重矩阵中的所有权重。这将显著时延引入到解码过程中。
75.例如,在许多transformer中,前馈子层内的两个全连接层之间的激活向量的维数d_ff通常是子层的输入向量和输出向量的维数 d_model的4倍或8倍。因此,使用子层来执行推理需要从设备的存储器加载2*d_ff*d_model个权重值。考虑到子层内的维数增加,从存储器加载这么多权重值需要大量时间并且将显著时延引入到解码过程中。
76.通过利用所描述的子层200,对于每次推理需要从存储器加载仅权重值的一小部分,从而大大减小在层的处理能够开始之前等待加载权重的时延。
77.特别地,对于每个受注意层输入202,子层200基于受注意层输入202来选择中间输出220中被约束成具有零值的元素的真子集。也就是说,所选择的真子集被约束成具有零值并且中间输出220的其他元素(即不在真子集中的元素)未被约束成具有零值。
78.换句话说,在通过任何一个全连接层处理输入202之前,层200 从输入202生成控制器输出210,该控制器输出210指定中间输出220 中子层200将约束为零的元素的真子集。在控制器输出210中被约束为零的元素用0标记,而不受约束的元素用1标记。
79.更具体地,中间输出的元素被分区成多个块并且子层200基于受注意层输入202从每个块中选择相应元素,并且对于每个块,将该块中的每个元素而不是来自该块的相应所选择的元素约束成具有零值。在图2的示例中,中间输出220各自具有四个元素的两个块,并且控制器输出210指定第一块中的第一元素、第二元素和第四元素被约束为零,而第二块中的第一元素、第二元素和第三元素被约束为零。
80.能够由子层200执行以针对输入202选择真子集的处理的示例被示出在图2的右侧。
81.如能够从图2看到的,子层200使用学习变换来投射受注意层输入202以生成具有与中间输出相同的维数的投射层输入。
82.特别地,为了处理是计算便宜的,子层200使用低秩瓶颈稠密层作为线性变换。更具体地,子层200首先计算输入202与第一低秩矩阵260之间的乘积以生成具有小于d_model的维数低秩的瓶颈表示262,并且然后计算瓶颈表示262与第二低秩矩阵270之间的乘积以
生成具有维数d_ff(即与中间输出220相同的维数)的投射层输入272。
83.对于投射层输入272的每个块,子层200选择块中的任何元素当中具有最高值的元素,并且将中间输出中的对应块中的每个元素而不是与所选择的元素相对应的元素约束成具有零值。
84.虽然能够在推理时采用这种离散选择,但是此操作是不可微分的,因此,在训练期间,子层200使用gumbel-softmax技巧以能够按退火温度使用可微分softmax操作进行近似的方式来选择块中的最大元素,并且允许子层200使用直通gumbel-softmax估计器来通过选择反向传播梯度。
85.一旦中间输出220的将被约束为零的元素被选择,然后子层200 就通过前馈神经网络层来处理受注意层输入202以生成中间输出220,同时将真子集中的元素约束成具有零值。
86.特别地,如能够在图2的示例中看到的,前馈神经网络层具有权重矩阵209和relu非线性。因此,子层计算输入202与权重矩阵209 之间的乘积以生成初始稀疏中间输出212,然后将relu应用于初始中间输出212以生成中间输出220。
87.虽然可能通过计算控制器输出220与作为权重矩阵209与输入202 之间的全稠密乘法的输出的初始中间输出211之间的逐元素乘积来原本应用对中间输出220的约束,但是子层200替代地以显著地减少需要从存储器加载的数据量并由此减少解码时延的方式来执行乘法。
88.特别地,子层使用仅前馈神经网络的权重矩阵209的对应于中间输出的未被约束为零的元素的列来计算受注意层输入202与前馈神经网络层的权重矩阵209之间的乘积。也就是说,如能够从图2看到的,中间输出220的每个非零元素对应于权重矩阵209的单个列。因此,在计算初始中间输出112时不需要使用对应于零元素的列。因此,子层能够通过从存储器仅加载前馈神经网络的权重矩阵209的对应于中间输出220的未被约束为零的元素的列来计算乘积。在图2的示例中,这导致仅需要从存储器加载八列中的两列,即,导致需要从存储器加载以便计算此乘积的值的数目减少75%。
89.子层200然后对中间输出220应用线性变换以生成变换输出232。特别地,子层200使用仅线性变换的权重矩阵230的对应于中间输出的未被约束为零的元素的行来计算线性变换的权重矩阵230与中间输出220之间的乘积。也就是说,如能够从图2看到的,中间输出220 的每个非零元素对应于权重矩阵230的单个行。因此,在计算变换输出220时不需要使用对应于零元素的行。因此,子层200能够通过从存储器仅加载权重矩阵230的对应于中间输出220的未被约束为零的元素的行来计算乘积。在图2的示例中,这导致仅需要从存储器加载八行中的两行,即,导致需要从存储器加载以便计算此乘积的值的数目减少75%。
90.子层200然后从变换输出232生成该位置处的层输出。例如,子层230能够对各位置处的变换输出应用残差连接、层归一化或这两者以生成输出序列中的层输出。
91.然而,不管需要被加载的权重减少,所描述的稀疏前馈子层仍然维持与常规前馈子层相当的性能。特别地,因为常规层在两个矩阵乘积之间应用relu激活函数,所以relu的应用在常规中间输出中产生大量零,即,因为relu将任何负值映射到零。因此,常规子层“浪费”计算能力,这导致元素被映射为零或者对作为零的元素进行操作。通过去除这种浪费,所描述的层在维持性能的同时实现显著更小的时延。
92.图3示出常规注意力子层310以及稀疏注意力子层320和330的两个变体的操作。
93.常规注意力子层310应用基线查询-键-值(qkv)自注意力方案。
94.在此方案中,子层310对输入序列302应用第一稠密矩阵312以针对每一个注意力头生成查询q,对输入序列302应用第二稠密矩阵 314以针对每一个注意力头生成键k,对输入序列302应用第三稠密矩阵316以针对每一个注意力头生成值v,然后,对于每个注意力头,将查询-键-值注意力机制317应用于针对注意力头的q、k和v以针对该注意力头生成相应输出。子层然后级联这些输出并且使用另一稠密矩阵318来处理级联输出以生成注意力机制的输出(其然后通过残差连接与输入序列组合)。
95.因此,执行此基线方案需要从存储器为每一个上述权重矩阵加载 d_model*d_model个参数,从而显著地影响解码时延。
96.为了对该时延进行改进,稀疏变体320用相应乘法稠密层322、 324、326和328替换稠密矩阵312、314、316和318。
97.乘法稠密层是执行能够表示对任何给定层输入的任何任意置换的操作但是与将给定层输入乘以稠密矩阵的其他等效稠密层相比具有更少参数的层。也就是说,乘法稠密层能够生成与将给定输入乘以稠密矩阵312至318中的一个但是具有少于d_model*d_model个参数的输出。
98.特别地,为了应用乘法稠密层,稀疏变体320将层输入的维数 d_model划分成s个模块,每个模块的大小为m=d_model/s,其中s 等于子层的注意力头的数目并且m等于查询、键和值的维数。乘法稠密层然后从具有维数d_model的输入向量x生成大小为s x m的输出矩阵y,其中y的每个条目y
s,m
等于:
99.y
s,m
=∑ix
idi
,se
i,m

100.其中,和从1到d_model,矩阵d是层的d_model x s权重矩阵,并且 e是层的d_model x m权重矩阵。
101.因此,尽管乘法稠密层是执行能够表示对任何给定层输入的任何任意置换的操作的层,但是该层具有d_model*d_model/s d_model* s个参数,即,与等效稠密矩阵的d_model*d_model个参数比显著更少的参数。因此,稀疏变体320能够使用比常规子层310更少的参数来执行qkv注意力机制。
102.然而,执行此基线方案仍然需要从存储器为每一个上述乘法稠密层加载d_model*d_model/s d_model*s个参数。
103.稀疏变体330通过使每注意力头具有单个乘法稠密层332、后面有用于生成查询q的卷积层334、用于生成键k的卷积层336、以及用于生成值v的卷积层338来在这之上进行进一步改进。
104.每个卷积层是在长度维度(序列中的层输入的数目)之上进行卷积即分别处理长度维度(序列中的层输入的数目)和模块数s(例如图像的高度和宽度)的二维卷积层。此层使用m个滤波器和k
×
k的核大小,使得每个滤波器查看最后k个标记(“长度”轴线)的k个模块(在“s”轴线中)。用这样的卷积替换标准稠密层甚至相对于变体320减少注意力子层的参数计数和计算时间。同时,通过在“长度”轴线之上进行卷积,变体330能够将更多上下文并入到此计算中,从而提高注意力机制的质量。
105.在一些情况下,在变体330中,注意力头的级联输出被作为注意力机制的输出提
供,即,而不是使用另一稠密矩阵或乘法层。
106.因此,通过利用乘法层,变体320并且特别是变体330相对于常规变体310显著地减少需要从存储器加载的值的数目。然而,由于乘法层能够表示任何任意置换的特性,变体320和330的性能与常规变体310的性能相当,并且在一些情况下,超过常规变体310的性能。
107.图4a是用于使用稀疏注意力子层来处理层输入序列的示例过程 400的流程图。为了方便,过程400将被描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,依照本说明书适当地编程的包括稀疏注意力层的神经网络系统,例如图1的神经网络系统100,能够执行过程400。
108.系统使用乘法稠密层来处理输入序列中的相应层输入以针对每个相应层输入来生成相应拆分输入,该相应拆分输入包括大小为m的s 个模块,其中s和m都是大于1的整数(步骤402)。如上所述,乘法稠密层能够使用比稠密矩阵更少的参数来针对每个层输入生成相应s xm矩阵。
109.系统使用第一二维卷积层来处理包括序列中的相应层输入的相应拆分输入的张量以生成每个注意力头的相应查询集(步骤404)。也就是说,每一个s模块能够对应于不同的注意力头并且针对每个注意力头的相应查询集对应于对应模块的卷积层的输出。
110.系统使用第二二维卷积层来处理张量以针对每个注意力头生成相应值集(步骤406)。也就是说,s个模块中的每一个能够对应于不同的注意力头并且针对每个注意力头的相应键集对应于对应模块的卷积层的输出。
111.系统使用第三二维卷积层来处理张量以针对每个注意力头生成相应键集(步骤408)。也就是说,s个模块中的每一个能够对应于不同的注意力头并且针对每个注意力头的相应值集对应于对应模块的卷积层的输出。
112.对于每个注意力头,系统对针对该注意力头的相应查询、键和值集应用查询-键-值(qkv)注意力以生成受注意输出(步骤410)。
113.系统然后组合来自注意力头的受注意输出以生成注意力机制的输出(步骤412)。例如,系统能够级联来自注意力头的受注意输出,然后提供级联输出作为注意力机制的输出。
114.图4b是用于使用稀疏前馈层来处理受注意层输入的示例过程450 的流程图。为了方便,过程450将被描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,依照本说明书适当地编程的包括稀疏注意力层的神经网络系统,例如图1的神经网络系统100,能够执行过程450。
115.系统能够针对注意力层的输入序列中的每个位置,即针对序列中的每个位置处的每个受注意层输入并行地执行过程450。
116.系统获得受注意层输入(步骤452)。
117.系统基于受注意层输入来选择子层的中间输出中被约束成具有零值的元素的真子集(步骤454)。也就是说,仅元素的真子集被约束成具有零值,而受注意层输入的不在真子集中的其他元素未被约束成具有零值。中间输出是通过经由前馈神经网络层处理受注意层输入来生成的输出,所述前馈神经网络层具有权重矩阵并且应用逐元素非线性激活函数,例如relu非线性。
118.系统在将真子集中的元素约束成具有零值的同时通过前馈神经网络层来处理受
注意层输入以生成中间输出(456)。
119.系统对中间输出应用线性变换以生成变换输出(步骤458)。
120.系统从变换输出生成该位置处的层输出(步骤460)。
121.例如,系统能够对各位置处的变换输出应用残差连接、层归一化或这两者以生成输出序列中的层输出。
122.作为另一示例,系统还能够通过将递归块并入到前馈子层中来将递归添加到前馈子层。也就是说,注意力层还将包括被配置成处理受注意输入序列以生成更新的受注意序列的递归块,然后注意力层从经更新的受注意序列和由前馈子层生成的变换输出生成层输出。
123.例如,系统能够将每个受注意层输入从d_model投射到更小维度,然后对投射输入应用递归单元,例如简单递归单元(sru),然后将sru 的输出投射回到d_model的维数,并且将结果添加到从同一受注意层输入生成的变换输出。这种低秩递归能够帮助神经网络在训练之后泛化到看不见的输入。
124.如上所述,在一些情况下,当神经网络包括编码器和解码器这两者时,解码器中的注意力层不包括任何交叉注意力(如常规transformer 中的情况那样)。
125.图5示出不包括任何交叉注意力子层的示例解码器500的示例。更具体地,图5示出解码器500在生成输出序列期间在给定时间步处的操作。特别地,在图5的示例中,已经生成了三个标记并且在给定时间步处正生成第四标记。
126.如上所述,不是将交叉注意力并入到解码器500中,而是解码器 500替代地处理以下各项的级联:(i)编码器嵌入,即由编码器生成的网络输入的编码表示,以及(ii)在较早时间步处生成的已经生成的标记。
127.特别地,由于注意力和前馈子层的稀疏,使解码器自注意力和编码器-解码器注意力(“交叉注意力”)分离从效率视角来看可能不再是必要的,并且解码器500能够通过简单地处理图5所示的级联输入来实现可接受的效率。
128.此外,不是简单地去除交叉注意力,而是在一些情况下,解码器 500能够在每个解码器块中的前馈子层之前包括两个自注意力子层,其中的每一个执行自注意力,以向解码器500添加附加计算能力。
129.在这些情况下,解码器中的注意力层至少部分地通过对注意力层的输入序列的至少一部分应用第一注意力机制510来从输入序列生成初始受注意输入序列,然后至少部分地通过对初始受注意输入序列的至少一部分应用第二注意力机制520来从初始受注意输入序列生成受注意输入序列。在一些情况下,如图5所示,注意力层在应用第二注意力机制之前对初始受注意输入序列应用层归一化530,在应用第一注意力机制之前对该层的初始输入序列应用层归一化540,或者这两者。
130.虽然在图5中未示出,但是在一些情况下,能够将编码器、解码器或这两者中的注意力层实现为可逆层以协助大批训练并且允许在单个机器上甚至对大模型进行微调。
131.可逆注意力层是在注意力层内具有可逆残差连接(“可逆交换”) 代替残差连接的注意力层。
132.例如,当注意力层在解码器中并且包括两个注意力机制时,该层包括在第一注意力机制之后的第一可逆交换、在第二注意力机制之后的第二可逆交换、以及在前馈子层之
后的第三可逆交换。
133.当注意力层包括仅一个注意力机制时,该层包括在注意力机制之后的第一可逆交换和在前馈子层之后的第二可逆交换。
134.可逆层对被分区成一对输入分区的层输入进行操作,然后对该对输入分区进行操作以生成一对输出分区。在神经网络内,即在任何可逆注意力层之前的初始可逆残差连接层能够执行分区,例如,通过对层输入应用二进制掩蔽。例如,掩蔽可以是在空间输入坐标之和为奇数的情况下具有值1否则具有值0的棋盘图案掩蔽。作为另一示例,掩蔽可以是对于输入通道维度的前半部分具有值1而对于后半部分具有值0的逐通道掩蔽。
135.因此,当注意力层在解码器中并且包括两个注意力机制时,第一注意力机制对第一分区应用注意力,然后第一可逆交换将注意力机制的输出与第二分区相加以生成初始受注意分区,第二注意力机制对第二初始受注意分区应用注意力以生成受注意分区并且第二可逆交换将第一分区与受注意分区相加以生成最终受注意分区,前馈子层对最终受注意分区进行操作以生成层输出分区并且第三可逆交换将层输出分区与第二初始受注意分区相加以生成最终层输出分区。该层的输出然后是最终层输出分区和最终受注意分区。
136.当注意力层包括仅一个注意力机制时,注意力机制对第一分区应用注意力,然后第一可逆交换将注意力机制的输出与第二分区相加以生成受注意分区,前馈子层对受注意分区进行操作以生成层输出分区并且第二可逆交换将层输出分区与第一分区相加以生成最终层输出分区。该层的输出然后是最终层输出分区和受注意分区。
137.可选地,能够在层中的任何可逆交换之前或之后应用层归一化。
138.因此,当给定稀疏注意力层是可逆稀疏注意力层时,对给定输入序列应用注意力机制应该被理解为是指对给定输入序列的对应分区应用注意力机制。类似地,对给定受注意输入序列进行操作的前馈子层应该被理解为是指对整体受注意输入序列的对应分区进行操作。
139.包括这些可逆注意力层允许训练系统在反向传播期间按需重新计算每个层的输入,而不是将其存储在存储器中,从而在训练期间产生显著存储器节省并且允许端到端训练或者甚至在单个机器上对大模型进行微调。
140.可逆层在nikitakitaev,kaiser和anselmlevskaya的“改革者:高效的transformer(reformer:theefficienttransformer)”,arxivpreprintarxiv:2001.04451,2020中被更详细地描述,其全部内容特此通过引用整体地并入。
141.本说明书连同系统和计算机程序组件一起使用术语“被配置”。对于要被配置成执行特定操作或动作的一个或多个计算机的系统意味着该系统已在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中使该系统执行操作或动作。对于要被配置成执行特定操作或动作的一个或多个计算机程序意味着该一个或多个程序包括指令,当由数据处理装置执行时,这些指令使装置执行操作或动作。
142.本说明书中描述的主题和功能操作的实施例能够用数字电子电路系统、用有形地体现的计算机软件或固件、用计算机硬件(包括本说明书中公开的结构及其结构等同物)或者用它们中的一个或多个的组合加以实现。能够将本说明书中描述的主题的实施例实现为一个或多个计算机程序,即,在有形非暂时性存储介质上编码以供由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是
机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备,或它们中的一个或多个的组合。替换地或另外,程序指令能够被编码在人工生成的传播信号,例如机器生成的电、光或电磁信号上,该信号被生成来对信息进行编码以供传输到合适的接收器装置以由数据处理装置执行。
143.术语“数据处理装置”是指数据处理硬件并且包含用于处理数据的所有种类的装置、设备和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路系统,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还能够可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
144.计算机程序(其还可以被称为或描述为程序、软件、软件应用、 app、模块、软件模块、脚本或代码)能够用任何形式的编程语言编写,所述编程语言包括编译或解释语言或声明或过程语言;并且它能够以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合于在计算环境中使用的其他单元。程序可以但不必对应于文件系统中的文件。能够在保持其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、在专用于有问题的程序的单个文件中、或者在多个协调文件(例如,存储一个或多个模块、子程序或代码的各部分的文件)中存储程序。能够将计算机程序部署成在一个计算机上或在位于一个站点处或跨越多个站点分布并通过数据通信网络互连的多个计算机上执行。
145.在本说明书中,术语“数据库”被广泛地用于指代任何数据合集:数据不需要被以任何特定方式结构化,或者根本不需要被结构化,并且它能够被存储在一个或多个位置中的存储设备上。因此,例如,索引数据库能够包括多个数据合集,每个数据合集可以被不同地组织和访问。
146.类似地,在本说明书中术语“引擎”被广泛地用于指代基于软件的系统、子系统或被编程来执行一个或多个特定功能的过程。通常,引擎将被实现为安装在一个或多个位置中的一个或多个计算机上的一个或多个软件模块或组件。在一些情况下,一个或多个计算机将专用于特定引擎;在其他情况下,能够在同一个或多个计算机上安装和运行多个引擎。
147.本说明书中描述的过程和逻辑流程能够通过一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出执行功能来执行。过程和逻辑流程还能够由专用逻辑电路系统(例如,fpga或asic)执行,或者由专用逻辑电路系统和一个或多个编程计算机的组合执行。
148.适合于执行计算机程序的计算机能够基于通用微处理器或专用微处理器或这两者,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的必要元件是用于执行或运行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器能够由专用逻辑电路系统补充,或者并入在专用逻辑电路系统中。通常,计算机还将包括或在操作上耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)接收数据,或者向该大容量存储设备转移数据,或者兼而有之。然而,计算机不需要具有此类设备。此外,计算机能够被嵌入在例如以下各项的另一设备中:移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏机、全球定位系统(gps)接收器或便携式存储设备,例如,通用串行总线(usb) 闪存驱动器,仅举几例。
149.适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,作为示例包括半导体存储器设备,例如eprom、eeprom和闪存存储器设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及cd rom和dvd-rom盘。
150.为了提供与用户的交互,能够在计算机上实现本说明书中描述的主题的实施例,该计算机具有用于向用户显示信息的显示设备,例如, crt(阴极射线管)或lcd(液晶显示器)监视器,并且具有用户能够通过其向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。还能够使用其他种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且能够以任何形式接收来自用户的输入,包括声学、语音或触觉输入。另外,计算机能够通过向由用户使用的设备发送文档并且从由用户使用的设备接收文档来与用户交互;例如,通过响应于从web 浏览器接收到的请求而向用户设备上的web浏览器发送web页面。另外,计算机能够通过向个人设备(例如,正在运行消息传送应用的智能电话)发送文本消息或其他形式的消息并且作为回报接收来自用户的响应消息来与用户交互。
151.用于实现机器学习模型的数据处理装置还能够包括例如用于处理机器学习训练或生产(即,推理)工作负载的常见计算稠密部分的专用硬件加速器单元。
152.机器学习模型能够使用机器学习框架,例如tensorflow框架、microsoft cognitive toolkit框架、apache singa框架或apache mxnet 框架来实现和部署。
153.能够在计算系统中实现本说明书中描述的主题的实施例,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户能够通过其与本说明书中描述的主题的实现方式交互的图形用户界面、web浏览器或 app的客户端计算机),或者包括一个或多个此类后端、中间件或前端组件的任何组合。系统的组件能够通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(lan)和广域网(wan),例如因特网。
154.计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络来交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,例如,出于向与作为客户端的设备交互的用户显示数据并且从该用户接收用户输入的目的,服务器向用户设备传送数据 (例如,html页面)。能够在服务器处从设备接收在用户设备处生成的数据,例如用户交互的结果。
155.虽然本说明书包含许多特定实现方式细节,但是这些不应该被解释为对任何发明的范围或对可能要求保护的范围构成限制,而是相反被解释为可能特定于特定发明的特定实施例的特征的描述。还能够在单个实施例中相结合地实现在本说明书中在单独实施例的上下文中描述的某些特征。相反地,还能够单独地在多个实施例中或在任何合适的子组合中实现在单个实施例的上下文中描述的各种特征。此外,尽管特征可以在上面被描述为按某些组合行动并且甚至最初被如此要求保护,但是能够在一些情况下从组合中除去来自要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。
156.类似地,虽然在附图中描绘并且在权利要求中以特定次序叙述操作,但是这不应该被理解为要求此类操作被以所示特定次序或以顺序次序执行,或者要求执行所有图示的
操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中要求这种分离,并且应该理解,所描述的程序组件和系统通常能够被一起集成在单个软件产品中或者包装到多个软件产品中。
157.已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中叙述的动作能够被以不同次序执行并且仍然实现所希望的结果。作为一个示例,附图中描绘的过程不一定要求所示特定次序或顺序次序以实现所希望的结果。在一些情况下,多任务处理和并行处理可以是有利的。
再多了解一些

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

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

相关文献