使用合成梯度来训练神经网络的制作方法

文档序号:17117326发布日期:2019-03-15 23:27阅读:196来源:国知局
使用合成梯度来训练神经网络的制作方法

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

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

一些神经网络是递归神经网络。递归神经网络是接收输入序列并且从该输入序列生成输出序列的神经网络。特别地,递归神经网络可在在当前时间步计算输出时使用来自先前时间步的网络的内部状态中的一些或全部。



技术实现要素:

本说明书描述作为计算机程序实现在一个或多个位置中的一个或多个计算机上的系统,所述系统在多个训练输入上训练神经网络,即,以通过优化目标函数来确定神经网络的参数的训练值。

一般而言,本说明书中描述的主题的一个创新方面可用由一个或多个计算机执行的用于通过优化目标函数来在多个训练输入上训练神经网络的方法加以具体实现,其中,神经网络被配置成接收网络输入并且处理该网络输入以生成网络输出;神经网络包括后面有第二子网络的第一子网络;并且第一子网络被配置成在通过神经网络对所述网络输入的所述处理期间,接收子网络输入,处理子网络输入以生成子网络激活,并且将子网络激活作为输入提供给第二子网络。方法包括使用神经网络来处理训练输入以为训练输入生成训练模型输出的动作,包括使用第一子网络来处理用于训练输入的子网络输入以根据第一子网络的参数的当前值来为训练输入生成子网络激活并且将子网络激活作为输入提供给第二子网络;通过使用合成梯度模型来根据合成梯度模型的参数的当前值处理子网络激活而确定用于第一子网络的目标函数的合成梯度;以及更新参数的当前值。

此方面的其它实施例可包括以下可选特征中的一个或多个。在一些实施方式中,合成梯度模型是与神经网络、第一子网络和第二子网络中的每一个不同的神经网络。在一些实施方式中,方法包括针对每个训练输入确定用于第一子网络的目标梯度并且基于目标梯度与合成梯度之间的误差更新合成梯度模型的参数的当前值的动作。

在一些实施方式中,确定用于第一子网络的目标梯度包括通过神经网络反向传播目标函数的实际梯度以确定目标梯度;或者通过第二子网络反向传播用于第二子网络的合成梯度以确定用于第一子网络的目标梯度。在一些实施方式中,第一子网络包括多个神经网络层,并且使用合成梯度来更新第一子网络的参数的当前值包括通过第一子网络反向传播合成梯度以更新第一子网络的参数的当前值。在一些实施方式中,神经网络是前馈神经网络,第一子网络是第一神经网络层,并且第二子网络是第二神经网络层。

在一些实施方式中,方法还包括以下步骤的动作:通过使用合成梯度模型来根据合成梯度模型的参数的当前值处理子网络激活而确定用于第一子网络的目标函数的至少一个将来的合成梯度的动作;以及基于每个将来的合成梯度与对应的目标将来的梯度之间的误差更新合成梯度模型的参数的当前值。在一些实施方式中,使用合成梯度来更新第一子网络的参数的当前值包括使用合成梯度代替实际的反向传播梯度来更新参数的当前值。在一些实施方式中,使用合成梯度来更新第一子网络的参数的当前值包括与更新第二子网络的参数的当前值异步地使用合成梯度来更新参数的当前值。

在一些实施方式中,第一子网络被实现在一个计算设备上并且第二子网络被实现在不同的计算设备上;以及训练可选地是跨越多个计算设备分布训练的分布式机器学习训练过程的一部分。在一些实施方式中,用于训练输入的子网络输入是合成子网络输入,并且方法包括使用被配置成处理训练输入以生成合成子网络输入的合成输入模型来处理训练输入的动作。在一些实施方式中,用于训练输入的子网络输入是实际的子网络输入。

此方面的其它实施例包括对应的计算机系统、装置以及记录在一个或多个计算机存储设备上的计算机程序,各自被配置成执行方法的动作。一个或多个计算机的系统可被配置成借助于安装在系统上的软件、固件、硬件或其任何组合来执行特定操作或动作,所述软件、固件、硬件或其任何组合在操作中可以使系统执行动作。一个或多个计算机程序可被配置成借助于包括指令来执行特定操作或动作,所述指令当由数据处理装置执行时,使装置执行动作。

可在特定实施例中实现本说明书中描述的主题以便实现以下优点中的一个或多个。可使用近似目标函数的梯度的度量(即,在不使用损失函数的实际梯度的情况下针对子网络在本地计算出的度量)来更高效地训练神经网络。可缩放神经网络以包括多个子网络,同时由于其缩放后的大小而同时减少与训练那些神经网络相关联的计算时间成本和处理能力的增加。可更容易地使神经网络的子网络的训练并行化,因为一些子网络的训练将不取决于来自后续子网络的梯度的反向传播。训练技术可通过时间技术来根据比截断反向传播中使用的时间边界长度大得多的范围近似递归神经网络的梯度。可使用训练技术来训练包括时间分层或模块化模型的神经网络,所述训练技术允许近似误差信号在那些模型的时间边界或模块之间流动,同时仍然允许在不同的时间尺度下优化那些时间边界或模块。

在下面的附图和描述中阐述本说明书的主题的一个或多个实施例的细节。主题的其它特征、方面和优点将根据说明书、附图和权利要求书变得显而易见。

附图说明

图1示出示例神经网络系统。

图2a-2b是用于使用合成梯度来训练神经网络的子网络的过程的数据流程图。

图3是用于使用用于子网络的合成梯度来训练神经网络的子网络的示例过程的流程图。

图4是用于针对神经网络的子网络来训练合成梯度模型的示例过程的流程图。

在各个附图中相似的附图标记和名称指示相似的元件。

具体实施方式

图1示出示例神经网络系统100。神经网络系统100是作为计算机程序实现在一个或多个位置中的一个或多个计算机上的系统的示例,其中下面描述的系统、组件和技术可实现在所述一个或多个计算机中。

神经网络系统100包括神经网络110。神经网络110可被配置成执行任何种类的机器学习任务,即,接收任何种类的数字数据输入并且基于该输入生成任何种类的分数、分类或回归输出。

例如,如果神经网络的输入是图像或已经从图像中提取的特征,则由神经网络针对给定图像而生成的输出可以是针对对象类别集合中的每一种对象类别的分数,其中每个分数表示图像包含属于该类别的对象的图像的估计似然率。

作为另一示例,如果神经网络的输入是互联网资源(例如,web页面)、文档或文档的部分或者从互联网资源、文档或文档的部分中提取的特征,则由神经网络针对给定互联网资源、文档或文档的部分而生成的输出可以是针对主题集合中的每一个主题的分数,其中每个分数表示互联网资源、文档或文档部分与主题有关的估计似然率。

作为另一示例,如果神经网络的输入是针对特定交互内容(诸如包含到其它内容的超链接的内容)的印象场境的特征,则由神经网络生成的输出可以是表示特定内容将被点击或者与之交互的估计似然率的分数。

作为另一示例,如果神经网络的输入是针对用户的个性化推荐的特征,例如,表征针对推荐的场境的特征,例如,表征由用户采取的先前动作的特征,则由神经网络生成的输出可以是针对内容项集合中的每一个内容项的分数,其中每个分数表示用户将有利地对被推荐该内容项做出响应的估计似然率。

作为另一示例,如果神经网络的输入是一种语言的文本,则由神经网络生成的输出可以是针对另一语言的文本块集合中的每一个文本块的分数,其中每个分数表示另一语言的文本块是输入文本变成另一语言的适当翻译的估计似然率。

作为另一示例,如果神经网络的输入是口语发言、口语发言的序列或从两者之一导出的特征,则由神经网络生成的输出可以是针对文本块集合中的每一个文本块的分数,每个分数表示该文本块是针对发言或发言的序列的正确转录的估计似然率。

神经网络110可以是前馈神经网络或递归神经网络(rnn)。前馈神经网络是不包括循环的神经网络,然而rnn是包括循环的神经网络110。一般地,rnn被配置成在多个时间步中的每个时间步处理用于该时间步的输入值以生成更新的隐藏状态以提供给多个时间步中的下一个时间步。因此,当被展开时,rnn包括多个执行级,其中每个执行级与rnn的执行中的不同时间步相对应,即,每个执行级与处理rnn的输入期间的不同时间步相对应。

神经网络110包括多个子网络,例如,第一子网络111和第二子网络112。神经网络110中的每个子网络可包括rnn的一个或多个前馈神经网络层或一个或多个时间步。在前馈神经网络的场境中,每个子网络可包括神经网络的一个或多个层。在rnn的场境中,每个子网络可包括处理rnn的输入期间的一个或多个时间步。

神经网络110的子网络根据子网络的执行的特定次序被排序。例如,前馈神经网络可具有在特定次序上作为其第一子网络的输入层、在特定次序上作为其第二子网络的第一隐藏层以及在特定次序上作为其最后子网络的输出层。rnn可具有在特定次序上作为其第一子网络的第一时间步、在特定次序上作为其子网络的第二时间步,依此类推。

在神经网络110中除在子网络的特定次序上的最后子网络以外的每个子网络可接收子网络输入并处理该子网络输入以生成子网络激活,并且将该子网络激活提供给神经网络110的子网络的特定次序上的下一子网络。例如,第一子网络111生成子网络激活112并且将该子网络激活121提供给第二子网络112。

由特定子网络生成的子网络激活包括值,所述值是由该特定子网络通过根据参数值集合处理其输入并且对该处理的结果应用非线性变换函数来生成的。子网络激活的示例包括由前馈神经网络中的层所生成的激活值或在rnn的执行中的时间步期间生成的隐藏状态值。

为了改进神经网络110执行机器学习任务的能力,神经网络系统100通过更新神经网络110的子网络的参数来训练神经网络110以优化在特定任务上测量神经网络110的性能(例如,基于训练数据中的目标输出与神经网络的一个或多个输出之间的差异的度量)的目标函数,例如,损失函数、奖励函数、效用函数等。

在一些训练算法中,神经网络系统100通过相对于神经网络110的参数计算目标函数的梯度来更新神经网络110的子网络的参数。因为目标函数取决于神经网络110的输出并且神经网络110的输出又取决于神经网络110的子网络的输出,所以神经网络系统100可仅在神经网络系统100已针对在神经网络110的子网络的特定次序上在特定子网络之后的每一子网络计算了目标函数的梯度之后相对于每个特定子网络的参数计算目标函数的梯度。这要求将输出值从特定子网络向前传播到神经网络110中的子网络的特定次序上的最后子网络并且要求将目标函数的梯度从最后子网络向后传播到特定子网络。这实质上将特定子网络的训练锁定到在神经网络110的子网络的特定次序上在特定子网络之后的所有子网络的训练。

不是使用目标函数的梯度来训练特定子网络,而是神经网络系统100可使用用于特定子网络的合成梯度来训练特定子网络。用于特定子网络的合成梯度是基于由特定子网络生成的子网络激活来计算的用于特定子网络的目标函数的梯度的近似值。

用于特定子网络的合成梯度由用于特定子网络的合成梯度模型来生成。用于特定子网络的合成梯度模型接收特定子网络的子网络激活作为输入并且根据参数集来处理输入以生成用于特定子网络的合成梯度。一旦被训练,合成梯度模型就可在不使用用于特定子网络的损失梯度的情况下生成合成梯度。

用于特定子网络的合成梯度模型它本身可以是神经网络。在一些实施方式中,合成梯度模型包括线性层。在一些实施方式中,合成梯度模型是多层感知器神经网络。在一些实施方式中,合成梯度模型是卷积神经网络。

例如,为了训练第一子网络111,第一子网络111除了将子网络激活121发送到第二子网络112之外还将其子网络激活121发送到合成梯度模型113。合成梯度模型113处理子网络激活121以生成用于第一子网络113的合成梯度122。神经网络系统100可使用合成梯度122(例如,根据梯度下降算法并且代替目标函数的实际梯度)来更新第一子网络111的参数。

因此,特定子网络可使用用于特定子网络的合成梯度来训练,所述用于特定子网络的合成梯度是在不使用目标函数的梯度的情况下并且因此在无需计算实际梯度所需的前向传播和后向传播的情况下计算的用于特定子网络的目标函数的梯度的近似值。因此,使用合成梯度来训练特定子网络可避免将神经网络110中的特定子网络的训练锁定到子网络的特定次序上的后续子网络的训练并且因此使训练神经网络110在速度和/或计算复杂度/处理能力两者方面变得更高效。效率方面的这种增益对具有大量子网络的神经网络110来说特别重要。

为了改进合成梯度模型估计用于对应子网络的损失梯度的能力,神经网络系统100使用模型训练引擎114来训练合成梯度。

模型训练引擎114通过根据从用于特定子网络的目标梯度126导出的结论更新合成梯度模型的参数来训练用于特定子网络的合成梯度模型。模型训练引擎114可计算用于特定子网络的目标梯度126与由用于特定子网络的合成梯度模型所生成的合成梯度之间的误差的度量并且根据误差的度量(例如,使用与反向传播一起使用梯度下降的训练算法)来更新合成梯度模型的参数。

模型训练引擎114从目标梯度引擎116接收目标梯度126。目标梯度引擎116可为神经网络110中的任何特定子网络生成目标梯度126。

模型训练引擎114可在使用特定训练数据集训练第一子网络111期间训练合成梯度模型。例如,当合成梯度模型113生成合成梯度时,模型训练引擎114可存储该值,并且在它获得与用于从目标梯度引擎116生成存储的合成梯度的子网络激活相对应的目标梯度之后,模型训练引擎114可计算所存储的合成梯度与所获得的目标梯度之间的误差的度量并且根据所计算的误差的度量来更新合成梯度模型114的参数。因此,模型训练引擎114可在神经网络110的训练期间更新合成梯度模型的参数的值。

在下面参考图3更详细地描述为神经网络100的子网络生成目标梯度并且使用那些目标梯度来训练子网络。

特定子网络的子网络输入可以是训练输入、基于神经网络110的在神经网络110的子网络的特定次序上的先前子网络的输出而确定的输入或合成输入。

用于特定子网络的合成输入是在神经网络110的子网络的特定次序上在特定子网络之前的子网络的激活值的近似值。可使用用于子网络的合成输入模型来生成用于特定子网络的合成输入。

用于神经网络110中的特定子网络的合成模型被配置成接收用于神经网络110的训练输入,根据参数值集合来处理该训练输入,并且生成用于特定子网络的合成输入127。例如,合成输入模型117被配置成根据参数值集合来处理神经网络110的训练输入以生成用于第二子网络112的合成输入127。用于特定子网络的合成输入模型可以是单独的神经网络。

用于特定子网络的合成输入通过使用神经网络110的训练输入并且在不使用先前子网络的子网络激活的情况下近似在神经网络110的子网络的特定次序上的先前子网络的子网络激活。因此,向特定子网络供应合成输入而不是先前子网络的子网络激活可避免将特定子网络的执行锁定到在神经网络110的子网络的特定次序上的先前子网络的执行,并且因此可改进神经网络110的推理和/或训练的速度。

神经网络系统100可通过根据由合成输入模型生成的合成输入与用于特定子网络的目标输入之间的误差的度量(例如,使用运用梯度下降和反向传播的训练算法)来更新合成输入模型的参数而训练用于特定子网络的合成输入模型。用于特定子网络的目标输入可以是在特定子网络之前得以执行的神经网络110的子网络的子网络激活或在子网络之前基于根据先前子网络的参数值集合针对先前输入处理合成输入而得以执行的先前子网络的输出。

合成输入模型可以是单独的神经网络。合成输入模型可以具有任何特定架构,例如,包括一个或多个前馈全连接层、一个或多个前馈卷积层和一个或多个递归层中的至少一个的神经网络架构。

训练引擎可在使用特定训练数据集合训练特定子网络期间训练用于特定子网络的合成输入梯度模型。例如,当合成输入模型生成合成输入时,训练引擎可以存储该值,并且在它获得与来自神经网络101的子网络的特定次序上的先前子网络的合成输入相对应的目标输入之后,训练引擎可计算所存储的合成输入与所获得的目标输入之间的误差的度量并且根据所计算的误差的度量来更新合成输入模型的参数。因此,训练引擎可在神经网络110的训练期间更新合成输入梯度模型的参数的值。

图2a-2c是用于使用合成梯度来训练神经网络的子网络的过程的数据流程图。

图2a描绘前馈神经网络的两个子网络(例如,层),即,子网络i201和子网络i+1202,所述两个子网络各自通过对应的函数f来识别。合成梯度模型mi203接收由子网络i201生成的子网络激活作为输入hi,并且处理该输入以生成δ'i,用于子网络i201的合成梯度。合成梯度是δi的近似值,即用于子网络i201的损失梯度。可使用δi与δ'i之间的误差的度量来训练合成梯度模型203。

图2b描绘展开递归神经网络的四个子网络,每个子网络与由rnn处理输入期间的相应的时间步相对应,即,子网络j210、子网络j+1211、子网络j+2212和子网络j+3213。每个子网络产生输出,即yn,其中n是子网络的标识符,并且产生诸如隐藏状态的子网络激活,即hn,其中n是子网络的标识符,所述子网络激活被作为输入供应给神经网络中的下一个子网络,即,用于在下一个时间步处理输入时使用。

每个子网络将其子网络激活提供给对应的合成梯度模型,即,用于子网络j210的合成梯度模型220、用于子网络j+1211的合成梯度模型221、用于子网络j+2212的合成梯度模型222和用于子网络j+3213的合成梯度模型223。每个合成梯度模型处理对应的子网络的子网络激活以生成用于对应的子网络的合成梯度并且将该合成梯度提供给特定子网络。训练引擎(例如,图1的神经网络系统的训练引擎)使用从对应的合成梯度模型接收到的合成梯度来更新合成梯度模型的参数。

可使用由合成梯度模型生成的合成梯度与用于特定子网络的目标梯度之间的误差的度量(即,δn,其中n是特定子网络的标识符)来训练用于特定子网络的每个合成梯度模型。

在用于特定子网络的合成梯度模型的训练期间,每个合成梯度模型可被配置成生成将来的合成梯度,即将来的梯度δ”j+t。用于特定子网络的将来的合成梯度是基于用于特定子网络的子网络激活对用于在神经网络中的子网络的特定次序上在特定子网络之后的预先确定的后续子网络的目标函数的预测梯度的预测。例如,用于特定子网络的将来的合成梯度可以是在包括特定子网络的时间边界(诸如通过诸如包括特定子网络的截断反向传播通过时间算法的截断训练算法所定义的时间边界)上对用于最后子网络的合成梯度的预测。

训练引擎可连同用于特定子网络的合成梯度一起使用用于特定子网络的将来的合成梯度来训练用于特定子网络的合成梯度模型。训练引擎可计算将来的合成梯度与作为用于特定网络之后的特定后续子网络的目标函数的梯度(即,目标梯度δj+t)的目标梯度之间的误差的度量,并且更新合成梯度模型的参数以使误差的度量最小化。

训练引擎可训练用于特定子网络的合成梯度模型以在特定网络的训练期间生成用于特定子网络的将来的合成梯度模型。因此,训练引擎可在神经网络的训练期间更新用于神经网络的子网络的合成梯度模型的参数的值。

图3是用于使用用于子网络的合成梯度来训练神经网络的子网络的示例过程300的流程图。为了方便,过程300将被描述为由位于一个或多个位置中的一个或多个计算机的系统来执行。例如,根据本说明书适当地编程的神经网络系统(例如,图1的神经网络系统100)可执行过程300。

系统接收用于子网络的训练输入(310)并且使用子网络来处理该训练输入以生成子网络激活(320)。

系统使用合成梯度模型来处理子网络激活以生成用于子网络的合成梯度(330)。

合成梯度模型使用参数集来处理合成梯度。合成梯度模型使用参数集来变换子网络激活以生成近似用于子网络的损失梯度的合成梯度值。

可通过训练合成梯度模型来更新合成梯度模型的参数集。在下面参考图4更详细地描述训练合成梯度模型。

例如,用于子网络的合成梯度模型可以是包括两个或更多个层的前馈神经网络,所述前馈神经网络根据每个层的节点的参数来通过层处理子网络激活。合成梯度模型的最后层可生成用于子网络的合成梯度。

系统使用合成梯度模型来更新子网络的参数的当前值(340)。例如,如果系统获得用于子网络i的合成梯度,则系统可通过执行以下基于梯度的更新规则的操作来更新在神经网络的子网络的特定次序上在子网络i之前的子网络n的当前值:

其中θn是包括子网络n的参数的数据结构,a是学习速率,δ'j是用于子网络i的合成梯度,是子网络i相对于子网络n的参数的输出的梯度。

上面指出的执行更新规则的操作不要求输出值的完全前向传播和梯度值在神经网络中的反向传播,因为可在子网络的执行之后计算该规则的所有项,而无需神经网络的完全前向传播和后向传播。这与包括通常用神经网络的完全前向传播和后向传播来计算的损失梯度项的现有基于梯度的更新规则相反。通过用更高效的合成梯度项替换昂贵的梯度损失项,以上更新规则可提高训练神经网络的子网络的整体效率。

如果子网络包括多个层或时间步,则为了确定对子网络中除顶层或时间步以外的层或时间步的参数值的更新,训练引擎可能需要从顶层或时间步起通过子网络中的层或时间步来反向传播合成梯度。

图4是用于针对神经网络的子网络来训练合成梯度模型的示例过程400的流程图。为了方便,过程400将被描述为由位于一个或多个位置中的一个或多个计算机的系统来执行。例如,根据本说明书适当地编程的神经网络系统(例如,图1的神经网络系统100)可执行过程400。

系统获得用于特定子网络的合成梯度(410)和目标梯度(420)。

在一些实施方式中,系统通过经由神经网络反向传播损失函数的实际梯度来计算目标梯度。换句话说,用于子网络的目标梯度是许多训练算法通过反向传播来计算以用于直接地训练子网络的损失梯度。

在一些其它实施方式中,系统通过反向传播用于下一个子网络的合成梯度来计算目标梯度,所述用于下一个子网络的合成梯度在特定子网络之后通过下一个子网络来执行。换句话说,目标梯度它本身是基于后续子网络的合成梯度而生成的合成地生成的值。

系统确定目标梯度与合成梯度之间的误差的度量(诸如误差的l2距离度量)(430)并且基于误差的度量更新合成梯度模型的参数(440)。在一些实施方式中,系统基于使用反向传播和梯度下降的训练算法来更新合成梯度模型的参数。

本说明书中描述的主题和功能操作的实施例可用数字电子电路、用有形地具体实现的计算机软件或固件、用计算机硬件(包括本说明书中公开的结构及其结构等同物)或者用它们中的一个或多个的组合加以实现。本说明书中描述的主题的实施例可作为一个或多个计算机程序(即,编码在有形非暂时性程序载体上以供由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块)被实现。可替选地或此外,可将程序指令编码在人工生成的传播信号(例如,机器生成的电、光或电磁信号)上,所述信号被生成来对信息进行编码以便传输到适合的接收器装置以供由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备,或它们中的一个或多个的组合。然而,计算机存储介质不是传播信号。

术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。装置可包括专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。装置除了包括硬件之外,还可包括为所述计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。

计算机程序(其也可以被称为或者描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可用任何形式的编程语言编写,所述编程语言包括编译或解释语言或声明或过程语言,并且它可被以任何形式部署,包括作为独立程序或者作为模块、组件、子例行程序或适合于在计算环境中使用的其它单元。计算机程序可以但不必对应于文件系统中的文件。可在保持其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、在专用于所述程序的单个文件中或者在多个协同文件(例如,存储一个或多个模块、子程序或代码的各部分的文件)中存储程序。可将计算机程序部署成在一个计算机上或者在位于一个站点处或者分布在多个站点上并且通过通信网络互连的多个计算机上执行。

如本说明书中所使用的,“引擎”或“软件引擎”指代提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是功能性的编码块,诸如库、平台、软件开发套件(“sdk”)或对象。可在包括一个或多个处理器和计算机可读介质的任何适当类型的计算设备上实现每个引擎,所述计算设备例如服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、pda、智能电话或其它固定或便携式设备。附加地,可以在相同的计算设备上或者在不同的计算设备上实现两个或更多个引擎。

本说明书中描述的过程和逻辑流程可通过一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能而被执行。过程和逻辑流程也可由专用逻辑电路执行,并且装置也可作为专用逻辑电路被实现,所述专用逻辑电路例如fpga(现场可编程门阵列)或asic(专用集成电路)。

作为示例,适合于执行计算机程序的计算机可基于通用微处理器或专用微处理器或两者,或任何其它种类的中央处理单元。一般地,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行或者实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。一般地,计算机还将包括或者在操作上耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)接收数据或者将数据传送到用于存储数据的一个或多个大容量存储设备,或者兼而有之。然而,计算机不必具有此类设备。此外,计算机可被嵌入在另一设备(例如,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪速驱动器)等)中。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,作为示例包括半导体存储器设备,例如,eprom、eeprom和闪速存储器设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;以及cdrom和dvd-rom盘。处理器和存储器可由专用逻辑电路补充,或者并入专用逻辑电路。

为了提供与用户的交互,可在计算机上实现本说明书中描述的主题的实施例,所述计算机具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器)以及用户可用来向该计算机提供输入的键盘和指针设备,例如,鼠标或轨迹球。其它种类的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声学、语音或触觉输入。此外,计算机可通过向由用户使用的设备发送文档并且从由用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收到的请求而向用户的客户端设备上的web浏览器发送web页面。

可在计算系统中实现本说明书中描述的主题的实施例,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可用来与本说明书中描述的主题的实施方式交互的图形用户界面或web浏览器的客户端计算机),或者包括一个或多个此类后端、中间件或前端组件的任何组合。系统的组件可通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”),例如,互联网。

计算系统可包括客户端和服务器。客户端和服务器一般地彼此远离并且通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。

虽然本说明书包含许多具体实施方式细节,但是这些不应该被解释为对任何发明的或可以要求保护的范围构成限制,而是相反被解释为可能特定于特定发明的特定实施例的特征的描述。也可在单个实施例中相结合地实现在本说明书中在单独的实施例的场境中描述的某些特征。相反地,也可在多个实施例中单独地或者按照任何适合的子组合实现在单个实施例的场境中描述的各种特征。此外,尽管特征可以在上面被描述为按照某些组合起作用并且甚至最初如此要求保护,但是可在一些情况下从该组合中去除来自要求保护的组合的一个或多个特征,并且所要求保护的组合可致力于子组合或子组合的变化。

类似地,虽然在附图中按照特定次序描绘操作,但是这不应该被理解为要求按照所示特定次序或者按照顺序次序执行此类操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述的实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中要求这种分离,并且应该理解的是,所描述的程序组件和系统通常可一般地被一起集成在单个软件产品中或者包装到多个软件产品中。

已经描述了主题的特定实施例。其它实施例在以下权利要求的范围内。例如,权利要求中叙述的动作可被按照不同的次序执行并仍然实现所希望的结果。作为一个示例,附图中描绘的过程不一定要求所示的特定次序或顺序次序来实现期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1