首页> 中国专利> 使用散列的神经网络中的大规模分类

使用散列的神经网络中的大规模分类

摘要

本发明涉及使用散列的神经网络中的大规模分类。方法、系统和装置,包括在计算机存储介质上编码的计算机程序,用于使用神经网络分类。一种用于通过神经网络的多层中的每一层来处理输入以生成输出的方法,其中,神经网络的多层中的每一层包括相应的多个节点,对多层中的特定层,所述方法包括:由分类系统接收激活向量以用作特定层的输入,使用激活向量和将数值映射到特定层中的节点的散列表来选择一个或多个节点,并且使用所选择的节点来处理激活向量以生成用于特定层的输出。

著录项

  • 公开/公告号CN105719001A

    专利类型发明专利

  • 公开/公告日2016-06-29

    原文格式PDF

  • 申请/专利权人 谷歌公司;

    申请/专利号CN201510954701.3

  • 申请日2015-12-17

  • 分类号G06N3/08(20060101);

  • 代理机构11219 中原信达知识产权代理有限责任公司;

  • 代理人周亚荣;安翔

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 15:49:54

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-24

    授权

    授权

  • 2018-02-06

    著录事项变更 IPC(主分类):G06N3/08 变更前: 变更后: 申请日:20151217

    著录事项变更

  • 2017-05-10

    实质审查的生效 IPC(主分类):G06N3/08 申请日:20151217

    实质审查的生效

  • 2016-06-29

    公开

    公开

说明书

技术领域

本说明书涉及使用神经网络的图像识别。

背景技术

具有若干级和层次的特征的深度神经网络可以具有非常大的学习能力并且可用在语音或图像识别中。深度神经网络通常在输入和输出空间之间,具有以前馈方式连接的若干层的单元。深度神经网络中的每一层可以执行特定功能,例如,卷积、池、归一化或矩阵乘法和非线性激活。

发明内容

在一些实施方式中,系统使用矩阵乘法来确定用于神经网络中的特定层的输出。例如,矩阵乘法是激活向量(例如,用于特定层的输入)和权重矩阵(例如用于特定层中的一些节点的权重)的组合。神经网络使用快速局部敏感散列技术来接近矩阵乘法的结果,以允许神经网络生成用于大量,例如几百万输出类的评分。

当神经网络使用散列技术时,神经网络可以近似计算用于神经网络中的特定层的权重W和激活向量x的矩阵乘积,使得特定层中的节点数目,例如输出维度可以增加若干数目级。在一些示例中,特定层可以是用来确定神经网络的输入的分类的神经网络中的输出层,例如最终分类层。

通常,在本说明书中所述的主题的一个创新方面能以一种通过神经网络的多层的每一个来处理输入来生成输出的方法实现,其中,神经网络的多层中的每一层包括相应的多个节点,针对多层中的特定层,所述方法包括如下动作:由分类系统接收激活向量作为用于特定层的输入;使用激活向量和将数值映射到特定层中的节点的散列表来选择特定层中的一个或多个节点;以及使用所选择的节点来处理激活向量以生成用于特定层的输出。该方面的其他实施例包括分别被配置成执行该方法的动作的相对应的计算机系统、装置和记录在一个或多个计算机存储设备上的计算机程序。一个或多个计算机的系统能被配置成通过使软件、固件、硬件或它们的组合安装在用来使或导致系统执行动作的系统上来实现特定操作或动作。一个或多个计算机程序能被配置成通过包括当由数据处理装置执行时使装置执行动作的指令来实现特定操作或动作。

上述和其他实施例可分别可选地单独或组合地包括下述特征中的一个或多个。该方法可以包括通过将与未被选择的节点相对应的激活向量中的值设定为0来创建修改的激活向量。使用所选择的节点处理激活向量以生成用于特定层的输出可以包括:处理所修改的激活向量以生成用于特定层的输出。针对特定层的节点中的每一个节点,散列表存储该节点的权重值的相应的散列。选择一个或多个节点可以包括:计算用于激活向量的至少一部分的散列码,确定散列表中相对于激活向量的该部分的散列码的一个或多个最相似的散列,以及选择与所述一个或多个最相似的散列相对应的节点。针对特定层的节点中的每一个节点,散列表存储该节点的相应的节点标识符。

在一些实施方式中,激活向量包括实数值。该方法可包括将激活向量中的每一实数转换成二进制值来创建二进制向量,确定二进制向量的多个部分,以及针对所述多个部分中的每一个部分,将该部分中的二进制值转换成整数。使用激活向量和散列表来选择特定层中的节点可以包括通过将整数用作散列表的输入来选择特定层中的一个或多个节点。整数可以包括第一子集和互斥的第二子集。通过将整数用作散列表的输入来选择特定层中的一个或多个节点可以包括:针对第一子集中的每一整数,确定散列表不包括用于节点的相对应的第一条目,针对第二子集中的每一整数,确定散列表包括用于节点的相对应的第二条目,以及将特定层中的一个或多个节点选择为由第二条目识别的节点。针对第一子集中的每一整数,确定散列表不包括用于节点的相对应的第一条目可以包括:针对第一子集中的至少一些整数,确定散列表不包括具有当前时间戳的相应的第一条目。该方法可以包括:针对输出中的至少一些输出值,确定相应输出值的精度值;以及通过更新用于特定层中的特定节点的散列表中的第一节点条目的时间戳、并且不更新用于不与特定层中的任何节点相对应的散列表中的第二节点条目的时间戳,使用精度值来更新散列表中的至少一些映射。该方法可以包括由分类系统确定具有旧时间戳的散列表中的旧条目,以及从散列表移除旧条目。

在一些实施方式中,特定层可以包括神经网络的输出层。该方法可以包括:根据用于特定层的输出确定最佳输出值,以及将最佳输出值用作神经网络的输出。分类系统可以是图像分类系统。输出层中的每一节点可以与相应对象类相对应。该方法可以包括接收图像,以及将图像用作神经网络的输入。将最佳输出值用作神经网络的输出可以包括将图像中的对象分类为属于与生成最佳输出值的节点相对应的类。接收图像可以包括从设备接收识别图像的数据,并且将图像用作神经网络的输入可以包括:响应于接收到识别图像的数据,通过另一设备上的分类系统将图像用作神经网络的输入。

在本说明书中所述的主题可以在具体实施例中实现并且可以得到下述一个或多个优点。在一些实施方式中,与不使用下述方法的其他系统,例如,标准的软矩阵层或层次软矩阵层相比,分类系统可以以更快速率训练大规模神经网络,例如,根据步骤数、总时间或两者。在一些实施方式中,分类系统的计算成本可以仅取决于K(所使用的权重向量数或在输出层中识别的类的数目),并且可以与神经网络的输出层中的类的总数无关。在一些实施方式中,分类系统可以使用几十万或几百万个的类以及分类系统,以与例如常见的具有几千个类的深度神经网络几乎相同的计算成本,来分类对象。在一些实施方式中,分类系统可以例如使用另外的数据结构而用来训练大规模神经网络。例如,当在训练过程期间连续地更新权重矩阵时,分类系统可以包括具有用于跟踪和更新散列表的时间戳的逆向散列表。

在一些实施方式中,与以相同的方式不使用散列表的其他分类系统相比,具有在输出层中具有N类并且对输出层中的类选择前K个权重向量的神经网络的分类系统可以具有提高的速率N/K。在一些实施方式中,当计算散列码时,分类系统仅执行比较,例如,这允许分类系统使用整数运算来确定散列码。在一些实施方式中,分类系统计算散列码而不产生分支预测损失。在一些实施方式中,下述的分类系统的复杂度可以取决于激活向量x的维度、激活向量x被划分于其中的M个部分的数目、分类系统执行矩阵乘法的节点的数目K或这些中的两个或多个的组合。例如,由于这些值与神经网络的输出层中的类的数目无关,因此分类系统可以将任意数目的类包括在输出层中,并且例如同时在时间复杂性和精度之间提供折衷。

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

附图说明

图1是使用散列表来确定特定层y中的哪些节点使用激活向量x执行矩阵乘法的分类系统的示例。

图2是使用层中的所选择的节点,处理激活向量来生成用于该层的输出的过程的流程图。

图3是将整数用作散列表的输入,选择层中的节点的过程的流程图。

不同图中的相同的附图标记表示相同的元件。

具体实施方式

本说明书描述用于神经网络,例如深度神经网络的方法,该方法实现不同层的矩阵乘积的近似计算,使得在神经网络中的特定层的输出维度的数目可增加若干数量级,同时保持计算成本大致相同并且几乎没有精度损失。例如,神经网络可以在分类过程期间使用矩阵乘法W*x,其中,x是来自层的输入,W是指下一层的输出的连接的权重。使用矩阵乘法可以例如在实时计算期间实现几十万至几百万类的大规模分类,来基于从用户接收的输入为用户提供分类值。在一些示例中,深度神经网络可以将矩阵乘法用于多类分类或二进制分类。

在一些实施方式中,神经网络使用赢家通吃(WTA)散列方法来降低矩阵乘法的计算时间。例如,分类系统使用WTA函数,将特定神经网络层y的权重矩阵W存储在散列表中。运行时,分类系统使用来自在前层x的激活,例如,来自在前层的输出值,来计算散列码,并且使用散列码基于激活来确定当前层y中的哪些节点最可能将被触发。例如,分类系统将散列码用作散列表的输入来确定节点,然后确定用于那些节点的相对应的权重向量W(K)

分类系统例如从存储器中的散列表或另一位置检索那些权重向量的前K个,其中,K远小于特定神经网络层y中的节点的数目,例如,远小于当特定层是输出层时的神经网络中的输出层中的类的数目N,或远小于权重矩阵W的大小。由于能在O(1)中执行散列表查找,所以在一些实施方式中,能获得的整体加速与N/K成比例。例如,分类系统的计算成本可仅取决于K、用于特定层y的权重向量的数目或在输出层中识别的类的数目,并且可能与输出层中的类的总数,例如N无关。

在一个示例中,当分类系统分类图像或视频中的对象时,分类系统可能具有对象能被分类于其中的大量类,例如,几十万或几百万的类。例如,在神经网络包括用于对象能潜在地被分类于其中的每一类的输出层的一个节点的情况下,分类系统可以使用神经网络来确定何种特定对象处于图像中,例如,对象是否为汽车、卡车或树。

为减少执行计算的数目,分类系统可以采用来自神经网络中的第二层至最后一层的激活向量并且将来自激活向量的值用作散列表的输入来确定对输出层中的哪些节点应当执行计算。例如,分类系统确定在散列表中识别的、将激活向量用作输入以执行计算的K个节点。分类系统然后使用来自输出层中的那些K个节点的输出来确定图像中的对象是什么,例如,对象是车。例如,例如,在不对输出层中的所有节点执行计算的情况下,分类系统确定用于K个节点中的每一个节点的输出值以及那些输出值中的最大值并且使用具有输出值中的最大值的节点的分类来分类对象。

在一些示例中,分类系统可以在该散列表中、或在多个散列表中执行K个查找,并且可以确定一些查找不识别输出层中的节点。在这些示例中,分类系统对输出层中少于K个的节点执行计算。

图1是使用散列表来确定对特定层y中的哪些节点使用激活向量x执行矩阵乘法的分类系统100的示例。分类系统100是实现为一个或多个位置中的一个或多个计算机上的计算机程序的系统的示例,其中,实现下文所述的系统、部件和技术。例如,特定层y可以是神经网络102中的软矩阵(soft-max)或逻辑回归输出层。矩阵乘法可以是来自神经网络的在前层的激活向量x或例如当特定层是神经网络中的输入层时用于神经网络的初始输入与权重W的乘积。分类系统100可以使用散列技术,例如快速局部敏感散列技术来近似实际矩阵乘法以确定用于特定层y的输出。

分类系统100计算用于特定层y的权重W的权重向量的散列码并且按与散列码相对应的索引,将用于特定层y的节点的索引存储在散列表104中。例如,分类系统100训练神经网络102并且在训练期间,确定二进制散列码和索引,其中,在这些索引处,存储用于特定层y的节点的索引,如下文更详细所述。

分类系统100使用输入激活向量x来确定一个或多个散列码。分类系统100使用散列码来确定最接近散列空间中的激活向量的特定层y中的节点集yk并且计算用于x和节点集yk的矩阵乘积来确定用于特定层y的输出。除节点集yk中的节点外,分类系统100可以将用于特定层y中的所有其他节点的输出值设定为0。

当生成用于特定层y的输出时,分类系统100保持节点集yk的顺序。例如,每次分类系统100使用特定神经网络生成输出向量时,用于层y中的特定节点的输出值总是位于输出向量的同一位置。

当神经网络102的特定层y中的节点的数目很大时,分类系统100仅需要来自具有基于激活向量x激活的最高概率的K个节点的输出。例如,当特定层y是输出层时,分类系统100仅需要用于输出层的前K个类的输出并且能由权重矩阵W确定具有与激活向量x的最大点积的前K个向量W(K)。分类系统100仅对这些K个类计算概率,并且将所有其他类的概率设定为0。

在训练初始化期间,分类系统100为特定层y中的特定节点使用相应的权重向量来计算用于特定节点的散列码。分类系统100将相对应的散列码用作索引,将用于特定层y中的每一节点的标识符存储在散列表104中。在使用训练示例执行训练前,分类系统100由权重向量一次生成散列码来初始化散列表104。

在训练期间,分类系统100通过改变激活向量x的元素(例如数值)的顺序,来确定用于激活向量x的散列码。分类系统100可以使用下述更详细描述的激活向量x的P个不同排列来确定用于激活向量x的散列码。分类系统100确定具有最高激活概率的K个节点并且按由所确定的散列码指定的索引,将用于那些K个节点的标识符存储在散列表104中。

分类系统100接收输入示例并且将输入示例提供给神经网络102。神经网络102将输入示例用作第一层的输入并且通过直到特定层y的所有层来处理输入示例。对特定层y,神经网络102使用由在前层生成的激活向量x,或当特定层y为第一层时的输入示例,来计算散列码。神经网络102使用散列码查询散列表,在给定激活向量x的情况下,确定具有最高激活概率的特定层y中的前K个节点。神经网络102对前K个节点确定权重向量W(K)并且使用激活向量x和权重向量W(K),计算用于前K个节点的概率。

在一些实施方式中,分类系统100使用暴雨随机梯度下降法(SGD)(downpourstochasticgradientdescent),训练神经网络102。在反向传播期间,分类系统100仅传播基于在神经网络102的向前传递期间检索的前K个节点的梯度。分类系统100可以使用用于神经网络102的输出的误差向量,仅更新用于在神经网络102的向前传递期间检索的前K个节点的权重向量。

在一些示例中,当特定层y是输出层时,分类系统100可以传播用于正输出节点的梯度,例如以便总是提供正梯度。在这些示例中,分类系统100可以更新用于在向前传递期间检索的前K个节点和正输出节点,例如,识别输入示例的正确分类的输出节点的权重向量。分类系统使用更新的权重向量来计算用于前K个节点的散列码并且将用于前K个节点或这些节点的子集的标识符移动到由更新的散列码指向的散列表104中的位置。

例如,当神经网络102接收汽车的图像作为输入时,神经网络102可以将用于输出层y中的输入图像的前K个节点识别为表示卡车(y0)或树(y3)的节点。神经网络102可以确定输入的正确分类是用于将图像识别为汽车的节点y2。分类系统100通过确定用于这些节点的梯度,更新将输入分类为汽车(y2)-正确分类、卡车(y0)-不正确分类、树(y3)-不正确分类,或这些中的两个或以上的神经网络102的输出层y中的节点,作为训练过程的一部分。分类系统100使用梯度,确定用于这些节点的更新的权重向量。分类系统100使用更新的权重向量来确定用于这些节点的新散列码并且将用于这些节点的标识符放在散列表104中的由新的散列码指向的位置处。

在一些实施方式中,散列表104包括用于相对应节点的权重向量。例如,当创建散列码104时,分类系统100将用于每一节点的标识符、相对应的权重向量或两者均存储在散列表104中。在训练期间,分类系统100可以使用散列码来检索节点标识符并且例如由参数服务器确定相对应的权重向量。在运行期间,分类系统100可以使用散列码来检索节点标识符并且例如使用通过分类系统100所存储的数据来确定相对应的权重向量。在一些示例中,分类系统100可以使用散列码来从散列表104检索节点标识符和相对应的权重向量。

神经网络102使用检索的权重向量来确定用于特定层y的输出。例如,当特定层y是神经网络102的输出层时,神经网络102确定用于在散列表104中识别的每一节点的输出值。神经网络102可以将函数应用于在散列表104中识别的每一节点的输出值来确定相对应的修改的输出值,例如将同一函数应用于每一输出值。神经网络102可以确定最大输出值或最大修改输出值并且使用最大输出值或最大修改输出值的标识符来分类输入。在一些示例中,当特定层y不是输出层时,例如,为第一层或隐藏层时,神经网络102或分类系统100确定用于在散列表104中识别的每一个节点的输出值,将函数应用于该输出值,并且使用修改的输出值来创建用于特定层y的输出向量。

在一些实施方式中,分类系统100在训练的每一迭代期间,更新一些权重向量而不是所有权重向量,或特定向量中的一些权重,而不是特定向量的所有权重。例如,当神经网络102基于识别散列表104的索引I0的散列码,错误地确定汽车的图像具有作为卡车的图像,例如节点y0,或树的图像,例如节点y3的最高概率时,分类系统100创建将用于散列码的索引I0与用于汽车分类的节点y2相关联的用于索引I0的新条目并且包括该条目的时间戳,例如,当前时间或神经网络102的最近训练结束的时间。类似地,当节点的分类正确时,分类系统100可以通过当前时间,更新用于散列表104中的条目的旧时间戳。

在一些示例中,分类系统100除更新将节点与散列表104中的特定索引相关联的时间戳外,还可以更新或者以其他方式改变节点的权重向量的值。例如,在反向传播期间,分类系统100可以更新用于正输出节点的权重向量中的值并且将相对应的时间戳更新为当前时间戳。在一些示例中,在反向传播期间,分类系统100可以更新用于不正确输出节点的权重向量中的值并且将相对应的时间戳更新为当前时间戳。

分类系统100可以定期地移除不具有当前时间戳的散列表104中的条目。例如,在几百或几千训练迭代的过程中,分类系统可以更新特定层y中的节点关联的散列表104中的索引、用于节点的每一个的权重或两者。当已经更新特定层y中的所有节点时,分类系统100可以移除不具有当前时间戳的散列表104中的条目,例如,节点相关联的索引或相对应的权重向量或两者。在一些示例中,在预定次数训练迭代,例如100次训练迭代后,或使用任何其他适当的方法,分类系统100可以移除不具有当前时间戳的散列表104中的条目。

在运行时间期间,分类系统100接收激活向量x并且使用P个不同排列,改变激活向量x的元素的顺序来确定散列码,例如,训练期间使用的相同的P个排列。分类系统100使用散列码来确定散列表104中的前K个节点的索引。

例如,分类系统100可以将激活向量x中的每一实数转换成二进制值来创建二进制向量。分类系统100可以例如通过组合二进制值将二进制向量变换成整数,并且将整数用作散列表104的输入,例如,用于散列表104的索引值来识别使用激活向量x以计算矩阵乘法的一个或多个节点。

在一些实施方式中,在训练和运行时间期间,分类系统100将包含n个元素的激活向量x分成M个部分,每一部分包含n/M个元素。在训练期间,分类系统100对每一部分创建散列表104,{Tm:m=1...M}。例如,分类系统100使用上述方法或另一适当的方法,确定用于激活向量x的每一部分xm的散列码,并且将最终散列码用作相对应的散列表Tm的索引。

在运行时间期间,分类系统100类似地确定用于相对应的激活向量x的每一部分xm的散列码并且将部分xm用作相对应的散列表Tm的索引来确定执行矩阵乘法的节点的所有标识符的集合。在一些示例中,每一散列表Tm仅具有用于每一索引的一个条目并且分类系统100使用相对应的散列码,确定节点的所有标识符的集合,例如,最多确定M个节点。在一些示例中,散列表104对用于特定层y中的每一节点,仅包括一个条目。

在一些实施方式中,分类系统100可以从散列表104检索用于每一节点的相对应计数。例如,每一计数可以提供用于该节点的激活向量x和权重向量之间的点乘积的下界。计数可以表示两个向量之间的顺序相似性。分类系统100可以选择具有两个向量之间的最大顺序相似性的K个节点(例如当较大顺序相似性可以表示两个向量之间的较大点乘积时),并且对那些节点执行矩阵乘法来确定用于特定层y的输出,以例如当特定层y为输出层时确定用于每一分类的概率。例如,基于点乘积相似性,具有最大顺序相似性的K个节点可以具有作为激活向量x的最近邻居的权重向量。

在一些示例中,当分类系统100使用P个不同排列时,使用导致用于整个散列码的P*log(2K)位的log(2K)位来表示每一索引。在一些实施方式中,分类系统100使用散列码的二进制表示来减少由分类系统使用的内存占用。在一些实施方式中,分类系统100可以使用定义顺序嵌入的WTA散列函数。例如,当P→∞时,两个WTA散列之间的点乘积倾向于下层向量之间的排名关联并且WTA散列非常适合用作局部敏感散列的基础。这可导致用于点乘积相似性的更鲁棒代理并且可以用来确定表示节点和激活向量x之间的顺序相似性的用于每一节点的计数。

在一些实施方式中,分类系统100可以将一些散列码映射到散列表104中的空条目。例如,分类系统100可以将激活向量x划分成两部分并且确定映射到索引I0和I1的两个散列码。分类系统100可以确定索引I0包括两个节点标识符,一个用于节点y0,一个用于节点y3。分类系统100可以确定索引I1不包括任何节点标识符。在一些示例中,当分类系统100确定不映射到任何节点标识符的索引时,分类系统100可以在K不等于M时,例如,在K小于M时,使用M个索引来确定前K个节点。

在一些实施方式中,神经网络102可以包括执行矩阵乘积的近似计算的多层。例如,分类系统可以使用散列技术来近似用于神经网络102的隐藏层之一和神经网络102的输出层的输出。

图2是使用层中的被选节点处理激活向量来生成用于该层的输出的过程200的流程图。通过安装在一个或多个计算机上的一个或多个计算机程序来实现该过程。例如,可以由分类系统100使用该过程200。可以在运行时,执行过程200的一部分,例如,步骤202至210。可以仅在训练过程期间,执行过程200的一部分,例如,步骤202至216。

在202处,分类系统接收激活向量作为用于神经网络的特定层的输入。

在204处,分类系统计算用于激活向量的至少一部分的散列码。分类系统可以将激活向量x划分成M个部分并且可以使用任何适当的方法来确定用于每一部分的散列码。

在206处,分类系统确定在将数值映射到特定层中的节点的散列表中、相对于激活向量的该部分的散列码的一个或多个最相似的散列。例如,分类系统使用每一散列码m来确定相应散列表Tm中的相对应的条目和用于每一条目的一个或多个节点标识符。分类系统可以从散列表Tm检索具有相应节点标识符的权重向量或可以使用节点标识符来从另一系统(例如参数服务器)检索权重向量。

在208处,分类系统选择与所述一个或多个最相似的散列相对应的节点。例如,分类系统选择前K个节点。在一些示例中,当散列表中的每一条目将单个索引值映射到单个节点标识符时,分类系统可以在K小于用来访问散列表的散列码的数目M时确定前K个节点。

在210处,分类系统使用所选择的节点处理激活向量来生成用于特定层的输出。例如,分类系统使用激活向量x和所确定的权重向量来执行矩阵乘法,然后将函数应用于矩阵乘法的结果来生成用于每一被选节点的输出并且将用于特定层y的所有其他输出值设定为0。

作为训练过程的一部分,在212处,分类系统对输出中的至少一些输出值确定相应输出值的精度。例如,作为训练过程的一部分,分类系统确定用于反向传播的相应输出值的精度。

作为训练过程的一部分,在214处,分类系统使用精度值更新散列表中的至少一些映射。分类系统执行反向传播来更新一些映射(例如,节点标识符至散列码的映射)和权重向量,同时使其他映射、权重向量或两者的组合保持不变。例如,对训练的每一迭代,例如对每一训练示例,分类系统可以使散列表中的大部分映射保持不变。

作为训练过程的一部分,在216处,分类系统从散列表去除旧条目。例如,分类系统在训练期间定期地从散列表去除旧条目来减少训练所需的时间。例如,如果分类系统在训练的每一迭代期间去除旧条目,则分类系统将需要更多时间用于训练。

上述过程200中的步骤的顺序仅是示例,并且使用层中的被选节点来处理激活向量以生成用于该层的输出能以不同顺序执行。例如,分类系统可以在接收激活向量前,例如在训练过程期间,从散列表去除旧条目。

在一些实施方式中,过程200能包括另外的步骤、更少的步骤或将一些步骤分成多个步骤。例如,例如,在运行时间期间,分类系统可以执行步骤202至210,而不执行步骤212至216。

图3是将整数用作散列表的输入以选择层中的节点的过程300的流程图。通过安装在一个或多个计算机上的一个或多个计算机程序来实现该过程。例如,能由分类系统100使用过程300。

在302处,分类系统将激活向量中的每一实数转换成二进制值来创建二进制向量。例如,分类系统将每一实数取整为1或0。

在304处,分类系统确定二进制向量的多个部分。例如,分类系统确定应当包括在二进制向量的M个部分的每一个中的二进制值的数目以便每一部分具有相同或近似相同的二进制值的数目。在一些示例中,一些部分可以具有比一些其他部分的二进制值更多或更少的二进制值。在训练和运行时间期间,分类系统将相同数目的M个部分和相同数目的二进制值用在相应部分的每一个中。

在306处,分类系统对每一部分将二进制值转换成整数。例如,分类系统使用任何适当的方法来将特定部分中的所有二进制值用作整数。分类系统可以使用特定部分中的二进制值的和来确定相对应的整数值。

在308处,分类系统通过将整数用作散列表的输入来选择特定层中的一个或多个节点。例如,分类系统将作为散列码的整数中的每一个用作相对应散列表中的索引。分类系统可以对用作相对应散列表中的索引的散列表的每一个确定0、1或更大的节点标识符。

上述过程300中的步骤的顺序仅是示例性的,并且可以以不同顺序执行将整数用作散列表的输入来选择层中的节点。例如,分类系统可以确定激活向量的多个部分M,然后将每一部分中或这些部分的子集中的每一实数转换成二进制值来创建多个二进制向量,或具有多个部分的单个二进制向量。

在一些实施方式中,过程300能包括另外的步骤、更少的步骤,或一些步骤可以分成多个步骤。例如,分类系统可以执行步骤302、306和308而不执行步骤304。

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

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

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

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

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

适合于执行计算机程序的计算机举例来说包括基于通用和专用微处理器或两者,或任何其他类型中央处理单元。通常,中央处理单元将从只读存储器、随机存取存储器或两者接收指令和数据。计算机的主要元件是用于实现或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括例如磁性、磁光盘,或光盘的用于存储数据的一个或多个大容量存储设备,或可操作地耦合来从其接收数据或向其传送数据或两者。然而,计算机不需要具有这些设备。此外,计算机能嵌入另一设备中,例如智能电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收机、或便携式存储设备,例如通用串行总线(USB)闪速驱动,仅举几例。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,举例来说包括半导体存储设备,例如EPROM、EEPROM和闪存设备、磁盘,例如内部硬盘或可移动盘、磁光盘以及CD-ROM和DVD-ROM盘。处理器和存储器能由专用逻辑电路补充或包含在其中。

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

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

计算机系统能包括客户机和服务器。客户机和服务器通常彼此远离并且通常通过通信网络交互。客户机和服务器的关系根据在相应的计算机上运行并且具有客户机-服务器关系的计算机程序来产生。

尽管本说明书包含许多具体实现细节,但这些不应当解释为限制任何发明或所要求的范围,而是可以专用于具体发明的特定实施例的特征的描述。在单个实施例中,能结合实现在单独的实施例的上下文中本说明书中所述的某些特征。相反,还能在单独的多个实施例中或在任何适当的子组合中,实现在单个实施例的上下文中所述的各个特征。此外,尽管上文可以将特征描述为以某些组合运作并且甚至如最初所要求的,在一些情况下,能从组合删除来自所要求的组合的一个或多个特征,以及所要求的组合可以涉及子组合和/或子组合的变形。

类似地,尽管以特定顺序,在图中描绘了操作,但这不应当理解为要求按所示的特定顺序或按顺序执行这些操作,或应执行所有所示操作来实现所需结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中的各个系统模块和组件的分离不应当理解为所有实施例中均要求这些分离,并且应当理解到所述程序组件和系统通常一起集成在单一软件产品中或封装到多软件产品中。

已经描述了主题的具体实施例。其他实施例在下述权利要求的范围内。例如,权利要求中所记载的动作能以不同顺序执行并且仍然实现所需结果。例如,在附图中所描绘的过程不一定要求所示的特定顺序,或顺序地顺序来实现预期结果。在某些实施方式中,多任务和并行处理会是有利的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号