优化神经网络架构的制作方法

文档序号:18943072发布日期:2019-10-23 01:18阅读:142来源:国知局
优化神经网络架构的制作方法

本公开涉及训练神经网络。

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



技术实现要素:

通常,本说明书中描述的主题的一个创新方面可以体现在用于确定最优的神经网络架构的方法中。

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

本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。通过使用如本说明书中描述的给定机器学习任务的训练数据来优化神经网络架构,可以改进最终训练的神经网络在机器学习任务上的性能。具体地,神经网络的架构可以针对任务的训练数据而定制,而不受预先存在的架构的约束,从而改进训练的神经网络的性能。通过跨多个工作器计算单元分布架构的优化,可以搜索和评估的可能架构的搜索空间大大增加,导致在机器学习任务上具有改进的性能的最终优化的架构。另外,通过在架构的紧凑表示上操作而不是直接需要修改神经网络,优化处理的效率得到改进,导致优化的架构被更快地确定,同时使用例如更少存储器和处理能力或两者的更少的计算资源来确定。

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

附图说明

图1示出了示例神经网络架构优化系统。

图2是用于优化神经网络架构的示例处理的流程图。

图3是用于更新群体(populatoin)储存库中的紧凑表示的示例处理的流程图。

具体实施方式

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

神经网络架构优化系统100是这样的系统,其(即,从系统的用户)接收训练数据102,用于训练神经网络以执行机器学习任务,并使用训练数据102来确定用于执行机器学习任务的最优的神经网络架构,并训练具有最优的神经网络架构的神经网络以确定神经网络的参数的训练的值。

训练数据102通常包括多个训练示例和每个训练示例的相应的目标输出。给定训练示例的目标输出是应由训练的神经网络通过处理给定训练示例生成的输出。

系统100可以以各种方式中的任何方式接收训练数据102。例如,系统100可以通过数据通信网络,例如使用系统100可用的应用编程接口(api),从系统的远程用户接收作为上传的数据(upload)的训练数据。作为另一个示例,系统100可以从用户接收指定由系统100已经维持的数据应当用作训练数据102的输入。

神经网络架构优化系统100使用训练数据102生成指定训练的神经网络的数据152。数据152指定训练的神经网络的最优的架构和具有最优架构的训练的神经网络的参数的训练的值。

一旦神经网络架构优化系统100已经生成数据152,神经网络架构优化系统100就可以使用训练的神经网络数据152来实例化训练的神经网络,并使用训练的神经网络来处理新接收的输入以例如通过系统提供的api执行机器学习任务。也就是说,系统100可以接收要处理的输入,使用训练的神经网络来处理输入,并且响应于接收的输入提供由训练的神经网络生成的输出或从生成的输出导出的数据。替代地或另外地,系统100可以存储训练的神经网络数据152以稍后用于实例化训练的神经网络,或者可以将训练的神经网络数据152发送到另一系统以用于实例化训练的神经网络,或输出数据152给提交训练数据的用户。

机器学习任务是由将训练数据102提交给系统100的用户指定的任务。

在一些实现方式中,用户通过将识别任务的数据提交到具有训练数据102的神经网络架构优化系统100,明确地定义任务。例如,系统100可以在用户的用户设备上呈现用户界面,允许用户从系统100支持的任务列表中选择任务。也就是说,神经网络架构优化系统100可以维持机器学习任务的列表,例如像图像分类的图像处理任务、语音识别任务、像情绪分析的自然语言处理任务等。系统100可以允许用户通过选择用户界面中的任务之一来选择维持任务之一作为要使用训练数据的任务。

在一些其他实现方式中,用户提交的训练数据102指定机器学习任务。也就是说,神经网络架构优化系统100将任务定义为处理具有与训练数据102中的训练示例相同的格式和结构的输入、以便对于训练示例生成具有与目标输出相同的格式和结构的输出的任务。例如,如果训练示例是具有特定分辨率的图像并且目标输出是一千维向量,则系统100可以将任务识别为将具有特定分辨率的图像映射到一千维向量的任务。例如,一千维目标输出向量可以具有非零值的单个元素。非零值的位置指示训练示例图像属于1000个类中的哪一个。在该示例中,系统100可以识别该任务是将图像映射到一千维概率向量。每个元素表示图像属于相应类的概率。cifar-1000数据集由与从1000个可能类中选择的目标输出分类配对的50000个训练示例组成,所述cifar-1000数据集是这种训练数据102的示例。cifar-10是相关数据集,其中分类是十个可能的类之一。合适的训练数据102的另一示例是mnist数据集,其中训练示例是手写数字的图像,并且目标输出是这些表示的数字。目标输出可以表示为具有单个非零值的十维向量,其中非零值的位置指示相应的数字。

神经网络架构优化系统100包括群体储存库110和多个工作器120a-n,它们彼此独立地操作以更新存储在群体储存库中的数据。

在训练期间的任何给定时间,群体储存库110被实现为一个或多个物理位置中的一个或多个存储设备,并存储指定候选神经网络架构的当前群体的数据。

具体地,群体储存库110对当前群体中的每个候选神经网络架构存储定义该架构的紧凑表示。可选地,群体储存库110还可以为每个候选架构存储具有该架构的神经网络的实例、具有该架构的神经网络的参数的当前值、或者表征该架构的附加元数据。

给定架构的紧凑表示是对该架构的至少一部分进行编码的数据,即,可用于生成具有该架构或可被神经网络架构优化系统100修改的神经网络架构的至少一部分的神经网络的数据。具体地,给定架构的紧凑表示紧凑地识别架构中的每个层以及架构中的层之间的连接,即,在由神经网络处理输入期间的层之间的数据流。

例如,紧凑表示可以是表示由有向边缘连接的节点图的数据。通常,图中的每个节点表示架构中的神经网络组件,例如神经网络层、神经网络模块、长短期存储器单元(lstm)中的门、lstm单元或其他神经网络组件,并且图中的每个边缘将相应的流出节点连接到相应的进入节点,并表示由流出节点表示的组件生成的输出的至少一部分被提供作为由进入节点表示的层的输入。节点和边缘具有标签,其表征数据如何通过架构的各种组件进行变换。

在卷积神经网络的示例中,图中的每个节点表示架构中的神经网络层,并且具有指定由节点表示的层的输入的大小和(如果有的话)由节点表示的层应用的激活函数的类型的标签,并且对于每个边缘的标签指定由进入节点表示的层应用于由流出节点表示的层生成的输出的变换,例如由全连接层应用的卷积或矩阵乘法。

作为另一示例,紧凑表示可以是以反映架构中的组件之间的连接的顺序排列的架构中的组件的标识符列表。

作为又一示例,紧凑表示可以是用于构造上述节点和边缘的图的规则集合,即,在执行时导致生成表示该架构的节点和边缘的图的规则集合。

在一些实现方式中,紧凑表示还编码指定用于训练具有编码的架构的神经网络的超参数的数据,例如学习速率、学习速率衰减等。

为了开始训练处理,神经网络架构优化系统100利用一个或多个初始神经网络架构的紧凑表示来预填充(pre-populate)群体储存库,以用于执行用户指定的机器学习任务。

每个初始神经网络架构是接收符合机器学习任务的输入(即,具有训练数据102中的训练示例的格式和结构的输入)、并且生成符合机器学习任务的输出(即,具有训练数据102中的目标输出的格式和结构的输出)的架构。

具体地,神经网络架构优化系统100维持识别多个预先存在的神经网络架构的数据。

在用户可选择机器学习任务的实现方式中,系统100还维持将每个预先存在的神经网络架构与其架构被配置为执行的任务相关联的数据。然后,系统可以使用被配置为执行用户指定的任务的预先存在的架构预填充群体储存库110。

在系统100从训练数据102确定任务的实现方式中,系统100确定在维持的数据中识别的哪些架构接收符合的输入并生成符合的输出,并选择那些架构作为用于预填充群体储存库100的架构。

在一些实现方式中,预先存在的神经网络架构是用于执行特定机器学习任务的基本架构。在其他实现方式中,预先存在的神经网络架构是在被训练之后已经发现在特定机器学习任务上表现良好的架构。

工作器120a-120n中的每一个被实现为部署为在相应计算单元上执行的一个或多个计算机程序和数据。计算单元被配置为使得它们可以彼此独立地操作。在一些实现方式中,例如,仅实现操作的部分独立性,因为工作器共享一些资源。计算单元可以是例如计算机、具有多个核的计算机内的核、或计算机内能够独立地为工作器执行计算的其他硬件或软件。

工作器120a-120n中的每一个迭代地更新群体储存库102中的可能的神经网络架构的群体以改进群体的适合度。

具体地,在每次迭代时,给定工作器120a-120n从群体储存库中对父代紧凑表示122进行采样,从父代紧凑表示122生成子代紧凑表示124,训练具有由子代紧凑表示124定义的架构的神经网络,并且将子代紧凑表示124与具有该架构的训练的神经网络的适合度的度量相关联地存储在群体储存库110中。

在满足训练的终止标准之后,神经网络架构优化系统100从群体中剩余的架构中选择最优神经网络架构,或者在一些情况下,在训练期间的任何一点从群体中的所有架构中选择最优神经网络架构。

具体地,在一些实现方式中,神经网络架构优化系统100选择群体中具有最佳适合度度量的架构。在其他实现方式中,神经网络架构优化系统100甚至在从群体中移除那些架构之后跟踪架构的适合度的度量,并且使用所跟踪的适合度的度量来选择具有最佳适合度度量的架构。

为了生成指定训练的神经网络的数据152,神经网络架构优化系统100然后可以从群体储存库110获得具有最优神经网络架构的训练的神经网络的参数的训练的值,或训练具有最优架构的神经网络以确定神经网络的参数的训练的值。

图2是用于确定用于执行机器学习任务的最优神经网络架构的示例处理200的流程图。为方便起见,处理200将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的神经网络架构优化系统,例如图1的神经网络架构优化系统100,可以执行处理200。

系统获得训练数据以用于训练神经网络以执行用户指定的机器学习任务(步骤202)。系统将接收的训练数据划分为训练子集、验证子集和可选的测试子集。

系统利用一个或多个默认神经网络架构初始化群体储存库(步骤204)。具体地,系统通过将每个默认神经网络架构的紧凑表示添加到群体储存库来初始化群体储存库。

默认神经网络架构是用于执行机器学习任务的预定架构,即接收符合由训练数据指定的输入并生成符合由训练数据指定的输出的架构。

系统使用多个工作器迭代地更新群体储存库中的架构(步骤206)。

具体地,多个工作器中的每个工作器独立地执行架构修改处理的多次迭代。在该处理的每次迭代中,每个工作器更新群体储存库中的紧凑表示以更新候选神经网络架构的群体。每次工作器更新群体储存库以为新的神经网络架构添加新的紧凑表示时,工作器还将具有神经网络架构的训练的神经网络的适合度的度量与新的紧凑表示相关联地储存在群体储存库中。下面参考图3描述执行架构修改处理的迭代。

系统选择最佳适合的候选神经网络架构作为要用于执行机器学习任务的优化神经网络架构(步骤208)。也就是说,一旦工作器完成了执行迭代并且已经满足终止标准,例如,在已经执行了多于阈值数量的迭代之后或者在群体储存库中的最佳适合的候选神经网络具有超过阈值的适合度之后,系统选择最佳适合的候选神经网络架构作为用于执行机器学习任务的最终的神经网络架构。

在系统从训练数据生成测试子集的实现方式中,系统还测试在测试子集上具有优化的神经网络架构的训练的神经网络的性能,以确定在用户指定的机器学习任务上的训练的神经网络的适合度的度量。然后,系统可以提供适合度的度量用于呈现给提交训练数据的用户,或者与训练的神经网络的参数的训练的值相关联地存储适合度的度量。

使用所描述的方法,得到的训练的神经网络能够实现与现有技术的手工设计模型相竞争或超过现有技术的手工设计模型的机器学习任务的性能,同时需要很少或不需要来自神经网络设计者的输入。具体地,所描述的方法自动地优化所得到的神经网络的超参数。

图3是用于更新群体储存库中的紧凑表示的示例处理300的流程图。为方便起见,处理300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的神经网络架构优化系统,例如图1的神经网络架构优化系统100,可以执行处理300。

作为确定用于执行机器学习任务的最优神经网络架构的一部分,处理300可以由多个工作器的每个工作器重复独立地执行。

工作器从群体储存库获得多个父代紧凑表示(步骤302)。具体地,工作器,随机且独立于每个其他工作器,从群体储存库中采样两个或更多个紧凑表示,其中每个采样的紧凑表示编码不同的候选神经网络架构。

在一些实现方式中,每个工作器总是从群体储存库中采样相同的预定数量的父代紧凑表示,例如,总是采样两个父代紧凑表示或总是采样三个紧凑表示。在一些其他实现方式中,每个工作器从群体储存库中采样相应的预定数量的父代紧凑表示,但是预定数量对于不同的工作器是不同的,例如,一个工作器可以总是采样两个父代紧凑表示而另一个工作器总是采样三个紧凑表示。在其他实现方式中,每个工作器维持定义多个可能数量中的每一个的可能性的数据,并根据由数据定义的可能性选择在每次迭代时采样的紧凑表示的数量。

工作器从父代紧凑表示生成子代紧凑表示(步骤304)。

具体地,工作器评估由父代紧凑表示编码的每个架构的适合度,并确定编码最不适合的架构的父代紧凑表示,即,编码具有最差适合度度量的架构的父代紧凑表示。

也就是说,工作器比较与群体储存库中的每个父代紧凑表示相关联的适合度度量,并识别与最差适合度度量相关联的父代紧凑表示。

如果父代紧凑表示之一与储存库中的适合度度量不相关联,则工作器评估具有由该父代紧凑表示编码的架构的神经网络的适合度,如下所述。

然后,工作器从剩余的父代紧凑表示(即那些具有更好适合度度量的表示)生成子代紧凑表示。对给定数量的项目进行采样并选择那些表现更好的项目可以称为“比赛选择”。可以从群体储存库中移除具有最差适合度度量的父代紧凑表示。

出于至少下面阐述的原因,工作器能够在上述实现方式中异步操作。由于每个工作器对有限数量的父代紧凑表示进行采样,因此给定工作器通常不会受到对群体储存库中包含的其他父代紧凑表示的修改的影响。有时,另一个工作器可修改给定工作器正在操作的父代紧凑表示。在这种情况下,受影响的工作器可以简单地放弃并再次尝试,即从当前群体中采样新的父代紧凑表示。异步操作的工作器能够在大规模并行、无锁的架构上操作。

如果存在单个剩余的父代紧凑表示,则工作器变异父代紧凑表示以生成子代紧凑表示。

在一些实现方式中,工作器通过变异神经网络处理父代紧凑表示来变异父代紧凑表示。变异神经网络是已经被训练以接收包括一个紧凑表示的输入并且生成定义与输入紧凑表示不同的另一紧凑表示的输出的神经网络。

在一些其他实现方式中,工作器维持识别可以应用于紧凑表示的可能的变异的集合的数据。工作器可以随机选择可能的变异之一并将变异应用于父代紧凑表示。

该可能的变异的集合可以包括表示从神经网络添加、移除或修改组件、或者用于训练神经网络的超参数的改变的各种紧凑表示修改中的任何一种。

例如,该可能的变异的集合可以包括从父代紧凑表示中移除节点、从而从由父代紧凑表示编码的架构中移除组件的变异。

作为另一个示例,该可能的变异的集合可以包括将节点添加到父代紧凑表示、并因此将组件添加到由父代紧凑表示编码的架构中的变异。

作为另一个示例,该可能的变异的集合可以包括一个或多个变异,其改变紧凑表示中的现有节点或边缘的标签,并因此修改由父代紧凑表示编码的架构中的现有组件执行的操作。例如,一个变异可能会改变卷积神经网络层的滤波器大小。作为另一个示例,另一个变异可能改变卷积神经网络层的输出通道的数量。

作为另一个示例,该可能的变异的集合可以包括修改用于训练具有该架构的神经网络的学习速率、或修改用于训练具有该架构的神经网络的学习速率衰减的变异。

在这些实现方式中,一旦系统选择了应用于紧凑表示的变异,系统就确定紧凑表示中的有效位置,随机选择一个有效位置,然后在随机选择的有效位置应用变异。有效位置是如果在该位置应用变异、则紧凑表示仍将编码有效架构的位置。有效的架构是仍然执行机器学习任务(即,处理符合的输入以生成符合的输出)的架构。

如果存在多个剩余的父代紧凑表示,则工作器重组父代紧凑表示以生成子代紧凑表示。

在一些实现方式中,工作器通过使用重组神经网络处理父代紧凑表示来重组父代紧凑表示。重组神经网络是这样的神经网络,其已经被训练以接收包括父代紧凑表示的输入并且生成定义作为父代紧凑表示的重组的新紧凑表示的输出。

在一些其他实现方式中,系统通过联合父代紧凑表示来重组父代紧凑表示以生成子代紧凑表示。例如,系统可以通过向子代紧凑表示添加节点来联合紧凑表示,该子代紧凑表示通过进入边缘连接到父代紧凑表示中的输出节点,并且表示组合由父代紧凑表示的输出节点所表示的组件的输出的组件。作为另一个示例,系统可以从每个父代紧凑表示中移除输出节点,然后将节点添加到子代紧凑表示,该子代紧凑表示通过进入边缘连接到通过流出边缘连接到父代紧凑表示中的输出节点的节点,并表示组合由父代紧凑表示中的那些节点表示的组件的输出的组件。

在一些实现方式中,工作器还从当前群体中移除最不适合的架构。例如,工作器可以将数据与用于将紧凑表示指定为非活动的架构的紧凑表示相关联,或者可以从储存库中删除紧凑表示和任何相关联的数据。

在一些实现方式中,系统维持在任何给定时间定义可以在群体中的最大架构数量的最大群体大小参数、在任何特定时间定义可以在群体中的最小架构数量的最小群体大小参数、或两者兼而有之。群体大小参数可以由用户定义,或者可以由系统例如基于系统可用的存储资源自动地确定。

如果群体中的当前架构数量低于最小群体大小参数,则工作器可以避免从群体中移除最不适合的架构。

如果当前架构数量等于或超过最大群体大小参数,则工作器可以避免生成子代紧凑表示,即,可以从群体中移除最不适合的架构而不用新的紧凑表示替换它,并且不执行处理300的步骤306-312。

工作器通过解码子代紧凑表示来生成子代神经网络(步骤306)。也就是说,工作器生成具有由子代紧凑表示编码的架构的神经网络。

在一些实现方式中,工作器将子代神经网络的参数初始化为随机值或预定初始值。在其他实现方式中,工作器将用于生成子代紧凑表示的一个或多个父代紧凑表示中也包括的子代神经网络的那些组件的参数的值初始化为来自相应父代神经网络的训练的参数的值。基于包括在一个或多个父代紧凑表示中的那些组件的参数的值来初始化参数的值可以被称为“权重继承”。

工作器训练子代神经网络以确定子代神经网络的参数的训练的值(步骤308)。期望子代神经网络被完全训练。然而,至少对于较大的神经网络,在处理300的每次迭代中训练子代神经网络以完成可能需要不合理的时间量和计算资源。权重继承可以通过使后续迭代上的子代网络能够被完全训练、或者至少接近完全训练,同时限制处理300的每次迭代所需的训练量,解决这种困境。

具体地,工作器使用适合于机器学习任务的神经网络训练技术,例如,具有反向传播的随机梯度下降、或者在子代神经网络是递归神经网络的情况下的反向传播通过时间训练技术,在训练数据的训练子集上训练子代神经网络。在训练期间,工作器根据由子代紧凑表示编码的任何训练超参数来执行训练。

在一些实现方式中,工作器例如通过在每轮训练之前随机排序训练子集中的训练示例,在每次工作器训练新神经网络时修改训练子集中的训练示例的顺序。因此,每个工作器通常在相同的训练示例上训练神经网络,但是排序依据工作器而不同。

工作器评估训练的子代神经网络的适合度(步骤310)。

具体地,系统可以在验证子集上,即,在与工作器用于训练子代神经网络的训练子集不同的子集上,确定训练子代神经网络的适合度。

工作器通过使用用于那些训练示例的目标输出来在验证子集中的训练示例上评估由训练的神经网络生成的模型输出的适合度,评估训练的子代神经网络的适合度。

在一些实现方式中,用户指定用于评估训练的子代神经网络的适合度的适合度的度量,例如,准确度度量、回调度量、曲线度量下的面积,平方误差度量、困惑度量等等。

在其他实现方式中,系统维持将相应的适合度度量与系统支持的每个机器学习任务相关联(例如,相应适合度度量与用户可选择的每个机器学习任务相关联)的数据。在这些实现方式中,系统指示每个工作器使用与用户指定的机器学习任务相关联的适合度度量。

工作器将子代紧凑表示和训练的子代神经网络的适合度的度量存储在群体储存库中(步骤312)。在一些实现方式中,工作器还将训练的神经网络的参数的训练的值与子代紧凑表示相关联地存储在群体库中。

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

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

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

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

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

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

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

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

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

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

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

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

已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的处理不一定需要所示的特定顺序或按顺序来实现期望的结果。在一些情况下,多任务处理和并行处理可能是有利的。

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