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

增强基于注意力的神经网络以选择性地关注过去的输入的制作方法

2022-05-11 19:57:53 来源:中国专利 TAG:

增强基于注意力的神经网络以选择性地关注过去的输入
1.相关申请的交叉引用
2.本技术要求于2019年9月25日提交的美国临时申请第62/906,078号的优先权。在先申请的公开内容被认为是本技术的公开内容的一部分,并且通过引用并入本技术的公开内容中。
技术领域
3.本说明书涉及神经网络。


背景技术:

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


技术实现要素:

5.本说明书描述了一种在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统,该系统实现被配置成对网络输入执行机器学习任务以生成网络输出的神经网络。值得注意的是,神经网络是与一个或多个存储器设备进行数据通信的记忆增强注意力神经网络,该一个或多个存储器设备维护(i)短期粒度记忆,也被称为事段记忆(episodic memory),其存储在执行任务时由神经网络的一个或多个层中的每个层生成的相对最近(例如,在时间、序列或位置方面)的信息,以及(ii)长期粗略记忆,也被称为压缩记忆,其存储在执行任务时由神经网络的所述一个或多个层中的每个层生成的较旧信息。当由网络输入生成网络输出时,系统可以利用存储在两种类型的存储器处的信息。
6.一般而言,本说明书中描述的主题的一个创新方面可以体现在用于使用神经网络处理网络输入序列以生成网络输出的方法中,其中每个网络输入在多个输入位置中的每个输入位置处具有相应的输入,所述神经网络具有多个注意力层,每个注意力层各自对层输入应用注意力机制,所述层输入包括在所述多个输入位置中的每个输入位置处的相应的隐藏状态,以针对每个输入位置生成相应的激活。所述方法包括,针对所述序列中的每个特定网络输入:针对所述神经网络中的每个注意力层:维护对应的事段记忆数据,所述对应的事段记忆数据包括由所述注意力层针对所述序列中的所述特定网络输入之前的第一部分先前网络输入而处理的相应的隐藏状态;维护对应的压缩记忆数据,所述对应的压缩记忆数据包括由所述注意力层针对所述序列中的所述第一部分先前网络输入之前的第二部分先前网络输入而处理的相应的隐藏状态的压缩表示;在使用所述神经网络处理所述特定网络输入期间,接收要由所述注意力层处理的层输入;以及对(i)用于所述层的所述压缩记忆数据中的所述压缩表示、(ii)用于所述层的所述事段记忆数据中的所述隐藏状态,以及(iii)所述特定网络输入中的所述多个输入位置中的每个输入位置处的相应的隐藏状态应用注
意力机制,以生成针对所述层输入中的每个输入位置的相应的激活。
7.所述方法还可以包括:更新所述事段记忆数据以包括所述特定网络输入中的每个输入位置的相应的隐藏状态;以及更新所述压缩记忆数据以包括所述第一部分先前网络输入中的最早网络输入的相应的隐藏状态的压缩表示。更新所述压缩记忆数据以包括所述第一部分先前网络输入中的最早网络输入的相应的隐藏状态的压缩表示可以包括:确定压缩率;根据所述压缩率压缩所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态,以生成压缩表示;以及修改所述压缩记忆数据以包括所生成的压缩表示。所述方法还可以包括从所述事段记忆数据中移除所述第一部分先前网络输入中的最早网络输入的相应的隐藏状态。根据所述压缩率压缩所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态可以包括:将最大池化函数应用于所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态,其中步幅等于所述压缩率。根据所述压缩率压缩所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态可以包括:将平均池化函数应用于所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态,其中步幅等于所述压缩率。根据所述压缩率压缩所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态可以包括:以与所述最早网络输入和所述第二部分先前网络输入中的多个输入位置相关联的相应的激活权重的降序,对所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态进行排序;以及丢弃所述最早网络输入中的位置的相应的隐藏状态以及由所述注意力层针对所述第二部分先前网络输入进行了处理的与最低激活权重相关联的相应的隐藏状态。根据所述压缩率压缩所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态可以包括:确定用于1d卷积函数的内核大小;以及将所述1d卷积函数应用于所述最早网络输入的相应的隐藏状态以及由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态,其中步幅等于所述压缩率并且内核大小等于所确定的内核大小。根据所述压缩率压缩所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态可以包括:将多层扩张1d卷积函数应用于所述最早网络输入的相应的隐藏状态和由所述注意力层针对所述第二部分先前网络输入进行了处理的相应的隐藏状态。所述特定网络输入是在所述序列中、之前有至少预定阈值数量的网络输入的输入。所述方法还可以包括:对于之前有少于所述预定阈值数量的网络输入的多个较早网络输入中的每个较早网络输入:针对所述神经网络中的每个注意力层:维护对应的事段记忆数据,所述对应的事段记忆数据包括要由所述注意力层针对在所述较早网络输入之前的先前网络输入处理的相应的隐藏状态;在使用所述神经网络处理所述较早网络输入期间,接收要由所述注意力层处理的层输入;对(i)所述层的事段记忆数据中的隐藏状态以及(ii)所述较早网络输入中的多个输入位置中的每个输入位置处的相应的隐藏状态应用注意力机制,以生成针对所述层输入中的每个输入位置的相应的激活;以及更新事段记忆数据以包括所述较早网络输入中的每个输入位置的相应的隐藏状态。在一些实现方式中,所述预定阈值数量的网络
输入由所述事段记忆数据的大小的预定阈值定义。在一些实现方式中,将用于所述特定网络输入中的每个输入位置的事段记忆数据和相应的隐藏状态表示为相应的多维数组;并且更新所述事段记忆数据以包括所述特定网络输入中的每个输入位置的相应的隐藏状态包括:沿着所述多维数组的相同维度级联所述两个多维数组。在一些实现方式中,所述神经网络还可以包括一个或多个全连接层、一个或多个层归一化层、一个或多个激活层或一个或多个卷积层。所述方法还可以包括:在训练数据上训练所述神经网络以重复地更新网络参数的当前值,其中,在训练期间:在每两次连续更新之间逐渐增加训练神经网络输入的数量。所述方法还可以包括在训练期间:将停止梯度应用于(i)用于所述层的所述压缩记忆数据中的所述压缩表示和(ii)用于所述层的所述事段记忆数据中的所述隐藏状态。
8.该方面的其它实施例包括对应的计算机系统、装置和记录在一个或多个计算机存储设备上的计算机程序,每个计算机系统、装置和计算机程序被配置成执行方法的动作。一个或多个计算机的系统可以被配置成借助于安装在系统上的软件、固件、硬件或它们的任何组合来执行特定操作或动作,所述软件、固件、硬件或它们的任何组合在操作中可以使系统执行动作。一个或多个计算机程序可以被配置成通过包括当由数据处理装置执行时使装置执行动作的指令来执行特定操作或动作。
9.可以实现本说明书中描述的主题的特定实施例,以便实现以下优点中的一个或多个。
10.一般而言,训练神经网络以捕获网络输入序列内的长期依赖性可能是困难的。解决该限制的常规方法包括在神经网络的每个注意力层处维护记忆,该记忆包括先前网络输入的每个输入位置的相应的隐藏状态的表示,因此使得注意力层能够关注更长的网络输入序列。然而,维护(即,存储和更新)这样的记忆数据具有各种问题。第一是它消耗大量的计算资源(例如,存储器、计算能力或两者)。第二是一旦达到存储器的最大大小,就必须丢弃存储器中的最旧表示,从而限制了网络可以关注的表示的量。
11.然而,本说明书中描述的技术允许系统在神经网络的每个注意力层处维护压缩记忆数据,该压缩记忆数据包括用于最旧网络输入的每个输入位置的相应的隐藏状态的压缩表示。也就是说,该技术允许系统有效地将用于最旧网络输入的每个输入位置的相应的隐藏状态压缩到压缩记忆中。
12.通过压缩最旧的隐藏状态而不是丢弃它们,该技术允许神经网络考虑上下文,即使上下文发生在相对于当前正在处理的输入的遥远的过去。因为最旧的隐藏状态被压缩,所以该附加上下文以最小的计算开销可用。神经网络的实现能够保留过去的显著信息。
13.在附图和以下描述中阐述了本说明书的主题的一个或多个实施例的细节。主题的其它特征、方面和优点根据说明书、附图和权利要求书将变得显而易见。
附图说明
14.图1示出了示例注意力神经网络系统。
15.图2是用于生成注意力层输出的示例过程的流程图。
16.图3是用于更新与注意力层相关联的压缩记忆的示例过程的流程图。
17.图4是维护与注意力层相关联的记忆的图示。
18.各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
19.本说明书描述了一种在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统,其对网络输入执行机器学习任务。
20.机器学习任务可以是以下任何机器学习任务:(i)对作为输入序列(即,各自在多个输入位置中的每个输入位置处具有相应输入的输入序列)的网络输入进行操作,(ii)生成作为输出序列的网络输出,或(iii)两者。
21.系统可以被配置成执行的机器学习任务的一些示例如下。
22.作为一个示例,机器学习任务可以是神经机器翻译,其中,到神经网络的输入是一种语言的文本序列,并且由神经网络生成的输出可以是另一种语言的文本片段集合中的每个文本片段的分数,其中,每个分数表示另一种语言的文本片段是输入文本到另一种语言的适当翻译的估计可能性。因此,例如,每个输入位置可以从一种语言的单词导出,并且网络输出可以包括提供单词到另一种语言的翻译的输出序列,例如,其具有对应于输入位置的输出位置,并且其中输出位置提供另一种语言的单词的数据。
23.作为另一示例,任务可以是音频处理任务。例如,如果到神经网络的输入是表示口头话语的序列,则由神经网络生成的输出可以是针对文本片段集合中的每个文本片段的分数,每个分数表示该文本片段是话语的正确转录的估计可能性。作为另一示例,如果对神经网络的输入是表示口头话语的序列,则由神经网络生成的输出可以指示在话语中是否说出特定单词或短语(“热词”)。作为另一示例,如果对神经网络的输入是表示口头话语的序列,则由神经网络生成的输出可以识别说出话语的自然语言。因此,一般而言,网络输入可以包括用来执行音频处理任务的音频数据,而网络输出可以提供音频处理任务的结果,例如,以识别单词或短语或者将音频转换为文本。
24.作为另一示例,任务可以是对某种自然语言的文本序列进行操作的自然语言处理或理解任务,例如,蕴涵任务、释义任务、文本相似性任务、情感任务、句子完成任务、语法任务等。
25.作为另一示例,任务可以是文本到语音任务,其中,输入是自然语言的文本或自然语言的文本的特征,而网络输出定义频谱图或包括定义以自然语言说出的文本的音频的其它数据。
26.作为另一示例,任务可以是健康预测任务,其中,输入是从患者的电子健康记录数据导出的序列,而输出是与患者的未来健康相关的预测,例如,应该为患者开处方的预测治疗、患者将发生不利健康事件的可能性或患者的预测诊断。
27.作为另一示例,任务可以是文本生成任务,其中,输入是文本序列,而输出是另一文本序列,例如,输入文本序列的完成、对输入序列中提出的问题的响应、或者关于由第一文本序列指定的主题的文本序列。作为另一示例,文本生成任务的输入可以是除文本之外的输入,例如图像,而输出序列可以是描述输入的文本。
28.作为另一示例,任务可以是图像生成任务,其中,输入是调节输入,而输出是图像的像素的强度值序列。
29.作为另一示例,任务可以是智能体控制任务,其中,输入是观测序列或表征环境的状态的其它数据,例如视频序列,而输出定义智能体响应于序列中的最近数据而执行的动作。智能体可以是机械智能体,例如真实世界或模拟机器人、用于工业设施的控制系统或控
制不同种类的智能体的控制系统。
30.为了执行机器学习任务,系统包括包含多个层的注意力神经网络。每个层对包括一个或多个位置中的每个位置处的相应输入向量的相应输入序列进行操作。
31.此外,一些或所有层中的每个层包括注意力层,并且在一些实现方式中,包括前馈层。如本文所使用的,注意力层是包括注意力机制的神经网络层,其可选地可以是自注意力机制、掩蔽注意力机制和/或多头注意力机制。注意力层接收用于该层的输入序列,并对用于该层的输入序列应用注意力机制以生成关注的输入序列。
32.由注意力层应用的确切注意力机制取决于注意力神经网络的配置,但是一般而言,注意力机制将查询和键-值对集合映射到输出,其中,查询、键和值都是向量。输出被计算为值的加权和,其中,分配给每个值的权重由查询与对应键的兼容性函数计算。更具体地,每个注意力层可以应用缩放点积注意力机制。在缩放的点积注意力中,针对给定查询,注意力层计算查询与所有键的点积,将每个点积除以缩放因子,例如,除以查询和键的维度的平方根,然后对缩放的点积应用softmax函数以获得值的权重。然后,注意力层根据这些权重计算值的加权和。因此,针对缩放的点积注意力,兼容性函数是点积,并且兼容性函数的输出通过缩放因子进一步缩放。
33.注意力机制的使用允许神经网络将单个序列的不同位置相关联,以便计算序列的表示,从而在训练期间有效地学习远距离位置之间的依赖性。这可以在执行需要顺序网络输入的各种机器学习任务时使用神经网络来提高系统的准确性。
34.当包括前馈层时,然后,该前馈层对关注的输入序列进行操作以生成该层的输出序列。
35.一般而言,注意力神经网络内的层可以以各种配置中的任何一种来排列。
36.作为一个示例,当网络输入是输入序列时,注意力神经网络可以包括编码器神经网络,该编码器神经网络包括多个层的子集并且对输入序列进行编码以生成序列中的每个输入的相应编码表示。在该示例中,由编码器中的层应用的注意力机制是自注意力机制,例如多头自注意力机制。在自注意力机制中,由注意力机制操作的输入向量和记忆向量是相同的,即,该层的输入序列中的向量。
37.作为另一示例,注意力神经网络包括解码器神经网络,该解码器神经网络包括多个层的不同子集,并且处理网络输入或网络输入的编码表示以生成网络输出。
38.在这些示例中的一些示例中,当网络输出是输出序列时,解码器神经网络自回归地操作以生成输出序列中的输出,并且解码器的一些或所有层内的注意力子层对部分生成的输出序列应用掩蔽的自注意力。在掩蔽的自注意力中,由注意力机制操作的输入向量和记忆向量是相同的,但是注意力机制被掩蔽,使得输入序列中的任何给定位置不关注输入序列中的给定位置之后的任何位置。
39.当神经网络包括编码器和解码器两者时,解码器中的一些层将交叉注意力应用于编码表示,而其它层将自注意力应用于被掩蔽或未被掩蔽的输出序列。当应用交叉注意力时,输入向量是从输入序列到层,而记忆向量是由编码器生成的编码表示。
40.当注意力神经网络包括直接对输入序列操作的解码器神经网络(即,仅包括解码器而不包括编码器)时,解码器内的注意力层可以对输入序列应用自注意力机制。
41.在jacob devlin,ming-wei chang,kenton lee,和kristina toutanova.bert:
pre-training of deep bidirectional transformers for language understanding(用于语言理解的深度双向转换器的预训练)中描述了包括多个注意力层并且可以被修改为包括本说明书中描述的类型的注意力层的基于注意力的神经网络的架构的特定示例。在proceedings of the 2019conference of the north american chapter of the association for computational linguistics:human language technologies(计算语言学协会北美分会2019年会议论文集:人类语言技术),volume 1(long and short papers),pp.4171

4186,2019;zihang dai,zhilin yang,yiming yang,jaime carbonell,quoc le,和ruslan salakhutdinov.transformer-xl:attentive language models beyond a fixed-length context(transformer-xl:超越固定长度上下文的注意力语言模型)中。在proceedings of the 57th annual meeting of the association for computational linguistics(计算语言学协会第57届年会论文集),pp.2978

2988,florence,italy,july 2019.association for computational linguistics.doi:10.18653/v1/p19-1285.url https://www.aclweb.org/anthology/p19-1285;和ashish vaswani,noam shazeer,niki parmar,jakob uszkoreit,llion jones,aidan n.gomez,lukasz kaiser,和illia polosukhin.attention is all you need(注意力就是你全部所需要的).advances in neural information processing systems(神经信息处理系统的进展),pp.5998

6008,2017.url https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf中。这些的全部公开内容通过引用整体并入本文。
42.图1示出了示例神经网络系统100。神经网络系统100是在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例,其中,可以实现下面描述的系统、组件和技术。
43.神经网络系统100可以接收输入102并对输入102执行机器学习任务以生成输出152。
44.如上所述,神经网络系统100可以执行各种任务中的任何一种,该各种任务涉及(i)对作为输入序列的输入102进行操作,(ii)生成作为输出序列的输出152,或(iii)两者,并且更具体地,需要对长程序列(例如长程文档,例如,多个连续文章或全长书籍或在智能体与环境交互时生成的长观测序列)推理的任务。
45.神经网络系统100包括注意力神经网络110,该注意力神经网络110包括注意力层120。注意力层120对输入序列112进行操作并生成对应的输出序列122。
46.在实现方式中,输入102包括网络输入的序列,每个网络输入在多个输入位置中的每个输入位置处具有相应的输入。因此,可以从该网络输入导出输入序列112。一般而言,网络输出152取决于来自一个或多个注意力层的输出序列122。网络输出152可以提供对应于每个输入位置的输出。例如,在自然语言处理系统中,这可以用于确定例如用于输入的翻译的词,或者在强化学习系统中用于确定要在一个时间步处执行的动作。在强化学习系统中,每个输入位置可以对应于接收观测的时间步。
47.然而,在一些实现方式中,网络输出152可以提供对应于多个或所有输入位置的输出。例如,输入102可以包括音频或视频输入,输入位置可以由音频的样本或视频的帧定义,并且网络输出152可以表征(例如,分类)音频或视频输入中的信息,例如以识别诸如单词的声音,或者由视频描绘的动作或一个或多个对象。
48.尽管为了方便,如上所述在图1中描绘了一个注意力层,但是注意力神经网络110可以包括其它层,包括例如嵌入层、(一个或多个)输出层和更多注意力层。可以包括的其它层是(非线性)激活层、全连接层和层归一化层(arxiv:1607:06450)。
49.一般而言,输入序列112可以是当对输入102执行机器学习任务时由注意力神经网络110生成的任何中间顺序数据。每个输入序列112可以是系统输入102的一部分或从系统输入102导出的整体序列的片段。当系统通过处理系统输入102的不同部分来执行机器学习任务而移动时,可以导出不同的输入序列112。例如,输入序列112可以是由嵌入层或更一般地嵌入神经网络生成的系统输入102或系统输入102的片段的嵌入(即,数字)表示。可选地,输入序列的嵌入表示可以与相应输入位置的编码相组合。作为另一示例,输入序列112可以是由在前注意力层或注意力神经网络110中的另一层生成的输出序列。
50.具体地,输入序列112按输入顺序在多个输入位置中的每个输入位置处具有相应的隐藏状态输入,并且输出序列122按输出顺序在多个输出位置中的每个输出位置处具有相应的激活输出。也就是说,输入序列102具有根据输入顺序排列的多个隐藏状态输入,并且输出序列122具有根据输出顺序排列的多个激活输出。因此,在注意力神经网络包括多个注意力层的堆叠的情况下,每个注意力层的输入序列中的隐藏状态通常可以是由该堆叠中、在注意力神经网络110中的注意力层之前的在前注意力层生成的输出激活。
51.基于注意力的神经网络(即使是利用存储在处理序列中的先前网络输入时生成的可重用信息(例如,每个网络层处的过去激活输出)的存储器增强的那些神经网络)的一个常见弱点是捕获网络输入序列内的长期依赖性的能力。一般而言,在注意力神经网络的每个注意力层处,对任意长的长度的输入序列(例如,从包括具有数千或数百万个字符的长程文档(例如,全长书)的系统输入102导出的输入序列)应用注意力机制可能非常昂贵,因此受到容量限制。这是由于关注任意长的序列中的每个输入的计算成本,以及由于在使用存储器的情况下,保留该大记忆的存储成本。
52.因此,为了帮助注意力层120处理输入序列112,神经网络系统100(例如,在一个或多个物理或逻辑存储设备处)维护事段记忆130和压缩记忆140。在注意力神经网络110包括多个注意力层的情况下,神经网络系统100可以为所有注意力层维护单个记忆,即事段记忆130或压缩记忆140,或者为不同的注意力层维护不同的记忆。这些记忆可以但不必具有相同的结构,例如,类似先进先出(fifo)的结构。
53.事段记忆130可以被实现为一个或多个逻辑或物理存储设备,并且存储当系统在系统输入102的较早部分上操作时由注意力层120进行了处理的先前层输入。例如,当系统输入102是输入序列时,系统输入102的较早部分可以包括序列中的当前系统输入之前的第一部分先前系统输入,以及可以从第一部分先前系统输入导出注意力层120的一个或多个较早输入序列。也就是说,事段记忆130存储“事段记忆数据”,例如短期粒度数据,该事段记忆数据在相应的事段记忆槽处包括从一个或多个较早输入序列到紧接在当前输入序列112之前的注意力层120的隐藏状态124。
54.压缩记忆140存储第二部分先前层输入,该第二部分先前层输入在系统正在操作系统输入102的较早部分之前的系统输入102的最早部分时由注意力层120处理。在上述示例之后,系统输入102的最早部分可以包括作为输入序列的、进一步在系统输入102中的第一部分先前系统输入之前的第二部分先前系统输入,并且可以从第二部分先前系统输入导
出注意力层120的一个或多个最早输入序列。也就是说,事段记忆130存储“压缩记忆数据”,该“压缩记忆数据”在相应的压缩记忆槽处包括来自到注意力层120的一个或多个最早输入序列的隐藏状态134,该一个或多个最早输入序列进一步在到注意力层120的一个或多个较早输入序列之前,该一个或多个较早输入序列紧接在当前输入序列112之前。
55.当系统100通过处理系统输入102的不同部分来执行机器学习任务而移动时,系统100可以通过利用压缩引擎160,由当前存储在事段记忆130处的隐藏状态、已经存储在压缩记忆140处的隐藏状态或两者来确定新的压缩记忆数据,其中该压缩引擎160可以被实现为例如注意力神经网络110的压缩层,即,被配置成将压缩函数应用于层输入以输出层输入的压缩表示的网络层。
56.下面将参考图2至图4更详细地描述在利用存储在事段记忆和压缩记忆处的相应的隐藏状态128和138的同时处理当前输入序列112中的多个网络输入中的每个网络输入。
57.简而言之,为了从当前输入序列112和从存储在记忆处的隐藏状态生成当前输出序列122,注意力层120被配置成:将已学习的查询线性变换应用于当前输入序列中的每个输入位置处的每个隐藏状态,以生成针对每个输入位置的相应的查询q;将已学习的键线性变换应用于(i)每个输入位置处的每个隐藏状态和(ii)事段记忆和压缩记忆内的每个槽处的每个隐藏状态,以针对每个输入位置和每个记忆槽生成相应的键k;并且将已学习的值线性变换应用于(i)每个输入位置处的每个隐藏状态和(ii)事段记忆和压缩记忆内的每个槽处的每个隐藏状态,以针对每个输入位置和每个记忆槽生成相应的值v。然后,注意力层120使用这些查询、键和值来应用上述注意力机制,以确定输入序列104的输出序列122。输出序列122通常包括用于每个输入位置处的每个隐藏状态输入的相应关注向量。一般而言,查询q、键k和值v都是向量。如本说明书中所使用的,术语“已学习”是指在系统训练期间已经调整了运算或值。
58.在一些实现方式中,为了允许注意力层共同关注来自不同位置处的不同表示子空间的信息,注意力层采用多头注意力。
59.为了实现多头注意力,注意力层120并行地应用h个不同的注意力机制。换句话说,注意力层包括h个不同的注意力子层,同一注意力层内的每个注意力子层接收相同的原始查询q、原始键k和原始值v。
60.每个注意力子层被配置成使用已学习的线性变换来变换原始查询、键和值,然后将注意力机制应用于所变换的查询、键和值。每个注意力子层通常将从同一注意力层中的其它注意力子层相互学习不同的变换。
61.具体地,每个注意力子层被配置成将已学习的查询线性变换应用于每个原始查询以针对每个原始查询生成层特定的查询,将已学习的键线性变换应用于每个原始键以针对每个原始键生成层特定的键,以及将已学习的值线性变换应用于每个原始值以针对每个原始值生成层特定的值。然后,注意力子层使用这些层特定的查询、键和值来应用上述注意力机制,以生成针对注意力子层的初始输出。
62.然后,注意力层组合注意力子层的初始输出以生成注意力层的最终输出。具体地,注意力层可以计算注意力子层的输出的级联,并将已学习的线性变换应用于级联的输出,以生成作为输出的关注输入序列124。在一些情况下,由注意力层应用的已学习的变换降低了原始键和值以及可选地查询的维度。例如,当原始键、值和查询的维度为d并且在注意力
层中存在h个注意力子层时,注意力层可以将原始键、值和查询的维度降低到d/h。这将使得多头注意力机制的计算成本保持成类似于以全维度执行注意力机制一次的成本,而同时增加注意力层的代表能力。
63.图2是用于生成注意力层输出的示例过程200的流程图。为方便起见,过程200将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的神经网络系统(例如,图1的神经网络系统100)可以执行过程200。
64.系统可以针对层输入的每个序列重复执行过程200。为了方便起见,步骤202-208中的每个步骤将被描述为由注意力神经网络中的每个注意力层并且针对层输入的“当前”序列执行。
65.一般而言,层输入序列包括在多个输入位置中的每个输入位置处的相应的隐藏状态输入。如上类似所述,层输入序列可以是当对系统输入执行机器学习任务以生成系统输出时由注意力神经网络生成的任何中间顺序数据。当系统通过处理系统输入的不同部分来执行机器学习任务而移动时,可以导出不同的层输入序列。
66.例如,层输入序列可以是由嵌入层生成的系统输入嵌入的表示。作为另一示例,层输入序列可以是由在前注意力层或注意力神经网络中的其它层生成的输出序列。例如,序列中的相应的隐藏状态输入可以是由注意力神经网络中紧接在给定注意力层之前的注意力层堆叠中的在前注意力层生成的多个激活输出。
67.系统为注意力神经网络中的注意力层维护对应的事段记忆数据(202),该对应的事段记忆数据包括当系统对系统输入的较早部分进行操作时由注意力层处理的相应的隐藏状态。
68.例如,系统输入的较早部分可以包括序列中的系统输入的当前部分之前的第一部分先前系统输入。例如,系统可以通过维护具有固定大小的事段记忆来这样做,该事段记忆在以下位置处存储相应的隐藏状态,所述位置是当对第一部分系统输入操作时(即,在处理当前层输入序列之前)已经由注意力层处理的一个或多个在前层输入序列中的多个输入位置中的每个输入位置。
69.系统为注意力神经网络中的注意力层维护对应的压缩记忆数据(204),该对应的压缩记忆数据包括当系统在系统输入的最早部分上操作时由注意力层处理的相应的隐藏状态的压缩表示。
70.例如,系统输入的最早部分可以包括进一步在第一部分系统输入之前的第二部分先前系统输入。例如,系统可以通过维护压缩记忆来这样做,该压缩记忆在一个或多个最早层输入序列中的多个输入位置中的每个输入位置处存储相应的隐藏状态,该一个或多个最早层输入序列进一步在隐藏状态被存储在事段记忆中的一个或多个较早层输入序列之前。
71.如下文将参考图3至图4所述的,系统可以使用各种技术中的任何一种来从一个或多个较早层输入序列的所有输入位置中选择多个输入位置(要从事段记忆中移除的隐藏状态)。例如,总是移除该一个或多个较早层输入序列内的最旧输入序列中的隐藏状态,并且将最旧输入序列中的隐藏状态的压缩表示存储在压缩记忆中。共同地,要存储在压缩记忆处的所选择的隐藏状态被称为由注意力层针对第二部分先前系统输入处理的相应的隐藏状态的压缩表示。
72.当对系统输入的当前部分执行机器学习任务时,系统在注意力神经网络中的注意
力层处接收要由注意力层处理的当前层输入序列以使用注意力神经网络生成系统输出(206)。当前层输入序列可以在多个输入位置中的每个输入位置处具有相应的隐藏状态输入。
73.对于事段记忆或压缩记忆,如果当前层输入序列是当对网络输入执行机器学习任务时由注意力神经网络处理的第一序列,则在记忆处维护的相应的隐藏状态可以各自具有相应的预定初始值,例如零、负或正无穷大或一些其它预定数值。然后,当系统通过处理新的输入序列执行机器学习任务而移动时,逐渐用由系统生成的相应的隐藏状态指定的更新值替换这些预定初始值。
74.系统对(i)压缩记忆中的相应的隐藏状态的压缩表示、(ii)事段记忆中的相应的隐藏状态,以及(iii)当前层输入序列中的多个输入位置处的相应的隐藏状态应用注意力机制,以确定当前层输入序列的对应层输出序列(208)。
75.更详细地,系统可以例如通过使用注意力层或另一系统组件:对当前输入序列中的每个输入位置处的每个隐藏状态应用已学习的查询线性变换,以生成针对每个输入位置的相应的查询q;将已学习的键线性变换应用于(i)每个输入位置处的每个隐藏状态和(ii)事段记忆和压缩记忆内的每个槽处的每个隐藏状态的级联表示,以生成针对每个输入位置和每个记忆槽的相应的键k;以及将已学习的值线性变换应用于(i)每个输入位置处的每个隐藏状态和(ii)事段记忆和压缩记忆内的每个槽处的每个隐藏状态的级联表示,以生成针对每个输入位置和每个记忆槽的相应的值v。在各种实现方式中,每个表示可以呈多维数组(例如,向量)的形式,并且可以通过沿着该多维数组的相同维度级联两个多维数组来获得级联表示。然后,该系统可以使用这些查询、键和值来应用上述注意力机制,以确定输入序列的关注输入序列。输出序列通常包括当前层输入序列中的每个输入位置处的每个隐藏状态的相应关注向量。
76.当注意力层实现多头注意力时,注意力层中的每个注意力子层被配置成:将已学习的查询线性变换应用于当前输入序列中的每个输入位置处的每个层输入,以针对每个输入位置生成相应的查询q;将已学习的键线性变换应用于(i)每个输入位置处的每个隐藏状态和(ii)事段记忆和压缩记忆内的每个槽处的每个隐藏状态的级联表示,以针对每个输入位置和每个记忆槽生成相应的键k;将已学习的值线性变换应用于(i)每个输入位置处的每个隐藏状态和(ii)事段记忆和压缩记忆内的每个槽处的每个隐藏状态的级联表示,以生成针对每个输入位置和每个记忆槽的相应的值v;然后使用查询、键和值来应用注意力机制(即,上述缩放点积注意力机制),以确定用于每个输入位置和每个记忆槽的初始注意力子层输出。然后,如上所述,注意力层组合注意力子层的初始输出。
77.在每个注意力层继而包括前馈层的实现方式中,系统可以使用前馈层来对关注的输入序列进行操作以生成针对注意力层的输出序列。可替代地,系统可以将关注的输入序列提供为用于注意力层的输出序列。
78.然后,该系统继续更新事段记忆,并且可选地,基于层输入序列更新压缩记忆。具体地,该系统可以首先更新事段记忆以在当前层输入序列中包括相应的隐藏状态,然后确定事段记忆是否“满”,即,作为执行过程200一次或多次迭代的结果,是否已经使用当前层输入序列中的隐藏状态的相应的值更新了事段记忆内的所有可用记忆槽。
79.响应于否定确定,即,在当前层输入序列之前有小于预定阈值数量的层输入序列
的情况下,系统可以继续更新事段记忆数据。在一些实现方式中,预定阈值数量由事段记忆的大小的预定阈值限定(例如,在可用记忆槽方面,每个记忆槽可操作以存储对应的隐藏状态值)。
80.具体地,系统可以通过更新相应的事段记忆槽以在当前层输入序列中包括已经由注意力层处理的隐藏状态的值以生成对应的层输出序列来这样做。
81.可替代地,响应于肯定确定,即,在当前层输入序列之前有多于预定阈值数量的层输入序列的情况下,系统可以进行到过程300以更新压缩记忆数据,即,除了在执行过程200之后更新事段记忆之外。
82.图3是用于更新与注意力层相关联的压缩记忆的示例过程的流程图。为方便起见,过程300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的神经网络系统(例如图1的神经网络系统100)可以执行过程300。
83.系统确定压缩率c(302),该压缩率通常定义由压缩运算产生的数据表示的大小的相对减小的度量。压缩率的值越高通常导致要压缩的事段记忆数据的所选部分的大小(即,在隐藏状态的数量方面)的减小越大。例如,系统可以例如通过系统可用的应用编程接口(api),从系统用户接收指定压缩率的值的输入。作为另一示例,系统可以例如根据预定义的压缩方案来选择压缩率的值。
84.系统根据压缩率c执行压缩运算fc,以压缩当对第一部分系统输入进行操作时由注意力层处理的一个或多个较早层输入序列中的相应的隐藏状态,以生成压缩表示(304)。具体地,系统可以基于压缩运算、事段记忆或压缩记忆的大小或它们的组合来确定该一个或多个较早层输入序列的子集的确切大小(即,要从事段记忆中移除多少隐藏状态)。一旦确定,系统就可以使用各种技术中的任何一种来执行压缩运算,更新压缩记忆以包括压缩表示,然后从事段记忆中移除对应的隐藏状态。
85.在一些实现方式中,系统可以将最大池化函数应用于由注意力层针对该一个或多个较早层输入序列的子集处理的相应的隐藏状态,其中,步幅等于压缩率。也就是说,压缩运算可以是最大池化运算,并且压缩表示是使用存储在事段记忆处的隐藏状态计算的最大池化函数的输出。
86.在一些实现方式中,系统可以将平均池化函数应用于由注意力层针对该一个或多个较早层输入序列的子集处理的相应的隐藏状态,其中,步幅等于压缩率。
87.在一些实现方式中,系统可以以与该一个或多个较早层输入序列中的多个输入位置相关联的隐藏状态的相应的值的降序,对由注意力层针对该一个或多个较早层输入序列的子集进行处理的相应的隐藏状态进行排序,此后,丢弃该一个或多个较早层输入序列的子集中与最低隐藏状态值相关联的位置的相应的隐藏状态。
88.在一些实现方式中,系统可以确定1-d卷积函数的内核大小,然后将1-d卷积函数应用于由注意力层针对该一个或多个较早层输入序列的子集进行处理的相应的隐藏状态,其中,步幅等于压缩率,并且内核大小等于所确定的内核大小。
89.在一些实现方式中,系统可以替代地将传统卷积函数(例如,扩张的1-d卷积函数)的求导应用于由注意力层针对该一个或多个较早层输入序列的子集进行处理的相应的隐藏状态。
90.在这些实现方式中的一些实现方式中,系统可以替代地压缩,即,通过对(i)该一
个或多个较早层输入序列中的相应的隐藏状态和(ii)该一个或多个最早层输入序列中的已经由注意力层处理的相应的隐藏状态两者,或者更具体地,当系统对(进一步在第一部分系统输入之前的)第二部分系统输入操作时由注意力层处理的由注意力层处理的相应的隐藏状态应用压缩运算来进行压缩。在这样的实现方式中,系统可以确定分别存储在事段记忆和压缩记忆处的隐藏状态和先前压缩的隐藏状态的整体压缩表示。
91.系统修改压缩记忆数据以包括压缩表示(306),即,通过用由从步骤304生成的压缩表示指定的更新的隐藏状态值来替换存储在压缩记忆槽处的相应的当前值。然后从事段记忆中丢弃基于其生成压缩表示的对应的隐藏状态,以为即将到来的层输入序列中的新隐藏状态腾出空间。当新压缩的隐藏状态在系统的操作期间变得可用时,可以从压缩记忆中丢弃先前压缩的隐藏状态,例如首先丢弃最旧的隐藏状态。然而,在实现方式中,在机器学习任务的整个执行期间,压缩隐藏状态中的一些或全部被保留在压缩记忆中。
92.图4是维护与注意力层相关联的记忆的图示。在图4的示例中,注意力神经网络包括三个注意力层,每个注意力层被配置成接收长度ns=3的序列,即,按输入顺序在三个输入位置中的每个输入位置处具有相应的隐藏状态的输入序列410(“当前序列”)。每个注意力层与大小nm=6的事段记忆420(即,被配置成在六个记忆槽中的每个记忆槽处存储相应的事段隐藏状态的记忆)和大小n
cm
=6的压缩记忆430(即,被配置成在六个记忆槽中的每个记忆槽处存储相应的压缩隐藏状态的记忆)相关联。在图4的示例中,压缩率c=3,即,每三个事段隐藏状态被压缩成单个压缩隐藏状态。
93.对于每个注意力层,从处理当前序列生成的三个隐藏状态的集合被移动到事段记忆420内的相应记忆槽中。然后,根据层特定的压缩函数fc将已经维护在事段记忆420处的事段隐藏状态(由矩形框包围)压缩,并将其移动到压缩记忆430内的单个记忆槽。
94.下面示出了用于维护与注意力层相关联的记忆的示例算法。
95.[0096][0097]
在上面所示的示例算法中,nm和n
cm
是注意力神经网络的每个注意力层中的相应的记忆和压缩记忆槽的数量。整个输入序列s=x1,x2,...,x
|s|
表示对系统的输入(例如,来自书的标记)。这些被分成大小为ns的固定大小的窗口,以供注意力神经网络并行处理。注意力神经网络在时间t接收(在图4中被称为“当前序列”410)。当注意力神经网络移动到下一序列时,其ns个隐藏状态被推入固定大小的先进先出(fifo)记忆(在图4中称为“事段记忆”420)。记忆中最旧的ns个隐藏状态被移除,使用压缩运算∫c:进行处理,将ns个最旧记忆映射到要存储在辅助fifo记忆(在图4中称为“压缩记忆”430)中的个压缩记忆。d表示隐藏状态的隐藏大小。c是指压缩率,其中,更高的值指示更粗粒度的压缩记忆。
[0098]
可以对每个层输入序列执行过程200或300,以生成层输入序列的层输出序列,可以从该层输出序列导出系统输出。层输入的序列可以是期望输出(即,应当由注意力层针对输入序列生成的输出序列)是未知的序列。系统还可以对训练数据集中的输入(即,应当由注意力层预测的输出是已知的输入集)执行过程200或300,以便训练系统,即,确定注意力神经网络的参数的训练值,并且在一些实现方式中,确定维护与网络相关联的一个或多个记忆所需的任何附加参数。
[0099]
在注意力神经网络的训练期间,可以对从训练数据集合中选择的输入重复执行过程200或300,作为常规机器学习训练技术的一部分,以训练注意力神经网络,例如adam或通过时间训练具有反向传播的adam,其通常涉及基于目标函数的所计算的梯度来迭代地更新注意力神经网络的相应参数值。
[0100]
在一些实现方式中,除了惩罚系统生成不正确的系统输出的一个或多个项之外,正被优化的目标函数还包括惩罚系统由压缩引起的信息丢失的一个或多个项。以这种方式,可以训练注意力神经网络以通过对系统输入内或对从系统输入导出的相应输入有效地推理来生成高质量的系统输出。例如,目标函数包括评估辅助压缩损失的一个或多个项。例如,这种辅助压缩损失可以是在压缩记忆内容的重构与原始的未压缩的事段记忆内容之间的差异方面测量的无损压缩目标。作为另一示例,这样的辅助压缩损失可以是在基于内容的注意力(即,从对事段记忆内容进行关注而生成的关注层输出)和基于记忆的注意力(即,
从对压缩记忆内容进行关注而生成的关注层输出)之间的差异方面测量的有损压缩目标。
[0101]
具体地,使用惩罚系统不正确的系统输出的目标函数训练系统和使用惩罚系统由于次优压缩策略而丢失注意力信息的目标函数训练系统可以联合地执行,例如,通过将压缩损失梯度反向传播到注意力神经网络的网络参数中,或者单独地执行,例如,将停止梯度算子应用于在注意力层的压缩记忆中维护的压缩表示、在该层的事段记忆数据中维护的隐藏状态或两者。停止梯度算子防止压缩损失相关的梯度传递到注意力神经网络的网络参数中,从而专注于注意力神经网络的任务相关训练。
[0102]
系统还可以与在挂钟时间或计算资源(例如,存储器、计算能力或两者)方面被(例如,被系统操作者)认为有利的各种其它训练技术中的任何一种一起执行过程200或300。例如,系统可以根据动态参数更新频率训练系统,例如,通过在每两个连续参数值更新之间逐渐增加要由注意力神经网络处理的训练神经网络输入的数量。系统的一些实现方式可以在训练期间限幅梯度和/或可以使用学习速率时间表,该学习速率时间表具有预热阶段,当预热阶段增加时,然后是衰减阶段。
[0103]
下面示出了用于计算评估注意力-重构损失的目标函数以在系统的训练中使用的示例算法。
[0104][0105]
本说明书结合系统和计算机程序组件使用术语“被配置”。对于要被配置成执行特定操作或动作的一个或多个计算机的系统,是指系统已经在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中使系统执行操作或动作。对于要被配置成执行特定操作或动作的一个或多个计算机程序,是指一个或多个程序包括当由数据处理装置执行时使装置执行操作或动作的指令。
[0106]
本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件中实现,包括本说明书中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即,在有形非暂时性存储介质上编码的计算机程序指令的一个或多个模
块,用于由数据处理装置执行或控制数据处理装置的操作。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。可替代地或另外地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以对信息进行编码以传输到合适的接收器装置以供数据处理装置执行。
[0107]
术语“数据处理装置”是指数据处理硬件,并且涵盖用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置还可以是或还包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
[0108]
计算机程序,其也可以被称为或描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码,可以用任何形式的编程语言编写,包括编译或解释语言,或者声明或过程语言;并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。程序可以但不必对应于文件系统中的文件。程序可以存储在保存其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可以被部署为在一个计算机上或在位于一个站点处或分布在多个站点上并通过数据通信网络互连的多个计算机上执行。
[0109]
在本说明书中,术语“数据库”广泛地用于指代任何数据集合:数据不需要以任何特定方式结构化,或者根本不需要结构化,并且它可以被存储在一个或多个位置中的存储设备上。因此,例如,索引数据库可以包括多个数据集合,每个数据集合可以被不同地组织和访问。
[0110]
类似地,在本说明书中,术语“引擎”广泛地用于指代被编程为执行一个或多个特定功能的基于软件的系统、子系统或过程。一般而言,引擎将被实现为安装在一个或多个位置中的一个或多个计算机上的一个或多个软件模块或组件。在一些情况下,一个或多个计算机将专用于特定引擎;在其它情况下,可以在相同的一个或多个计算机上安装和运行多个引擎。
[0111]
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如fpga或asic)执行,或由专用逻辑电路和一个或多个编程计算机的组合执行。
[0112]
适合于执行计算机程序的计算机包括,例如可以基于通用或专用微处理器或两者,或者任何其它类型的中央处理单元。一般而言,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。一般而言,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘或光盘),或者可操作地耦合以从一个或多个大容量设备接收数据或将数据传输到一个或多个大容量设备或两者。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(pda)、移动
音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备,例如通用串行总线(usb)闪存驱动器,仅举几例。
[0113]
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cd rom和dvd-rom盘。
[0114]
为了提供与用户的交互,可在计算机上实现本说明书中描述的主题的实施例,所述计算机具有用于向用户显示信息的显示设备(例如crt(阴极射线管)或lcd(液晶显示器)监视器)以及用户用来向该计算机提供输入的键盘和定点设备(例如鼠标或轨迹球)。其它种类的设备也可以被用来提供与用户的交互(例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈);并且可以以任何形式接收来自用户的输入,包括声、语音或触觉输入。此外,计算机可以通过向由用户使用的设备发送文档并从由用户使用的设备接收文档(例如,通过响应于从web浏览器接收到请求而向用户的设备上的web浏览器发送网页)来与用户交互。此外,计算机可以通过向个人设备(例如,正在运行消息传送应用的智能电话)发送文本消息或其它形式的消息并且作为回报从用户接收响应消息来与用户交互。
[0115]
用于实现机器学习模型的数据处理装置还可以包括例如专用硬件加速器单元,用于处理机器学习训练或生产的公用和计算密集型部分,即推断、工作负载。
[0116]
可以使用机器学习框架(例如,tensorflow框架、microsoft cognitive toolkit框架、apache singa框架或apache mxnet框架)来实现和部署机器学习模型。
[0117]
本说明书中描述的主题的实施例可以在计算系统中实现,所述计算系统包括后端组件(例如作为数据服务器);或者包括中间件组件(例如应用服务器);或者包括前端组件(例如具有用户可以通过其与本说明书中描述的主题的实现方式交互的图形用户界面、web浏览器或app的客户端计算机;或者包括一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)(例如互联网)。
[0118]
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,html页面)传输到用户设备,例如,为向与充当客户端的设备交互的用户显示数据和从其接收用户输入的目的。可以在服务器处从设备接收在用户设备处生成的数据,例如,用户交互的结果。
[0119]
虽然本说明书包含许多具体实现方式细节,但是这些不应当被解释为对任何发明的范围或可能要求保护的范围的限制,而是应当解释为可能特定于特定发明的具体实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管特征在上文可能被描述为以某些组合起作用并且甚至初始如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变型。
[0120]
类似地,虽然在附图中以特定顺序描绘了并且在权利要求中记载了操作,但是这不应当被理解为要求以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操
作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应当被理解为在所有实施例中都需要这种分离,并且应当理解到,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
[0121]
已经描述了主题的特定实施例。其它实施例在以下权利要求书的范围内。例如,权利要求中记载的动作可以以不同的顺序执行,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或相继顺序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。
再多了解一些

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

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

相关文献