所要求的组合的一个或多个特征,以及所要求的组合可以涉及子组合和/或子组合的变形。
[0075]类似地,尽管以特定顺序,在图中描绘了操作,但这不应当理解为要求按所示的特定顺序或按顺序执行这些操作,或应执行所有所示操作来实现所需结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中的各个系统模块和组件的分离不应当理解为所有实施例中均要求这些分离,并且应当理解到所述程序组件和系统通常一起集成在单一软件产品中或封装到多软件产品中。
[0076]已经描述了主题的具体实施例。其他实施例在下述权利要求的范围内。例如,权利要求中所记载的动作能以不同顺序执行并且仍然实现所需结果。例如,在附图中所描绘的过程不一定要求所示的特定顺序,或顺序地顺序来实现预期结果。在某些实施方式中,多任务和并行处理会是有利的。
【主权项】
1.一种用于通过神经网络的多层中的每一层处理输入来生成输出的方法,其中,所述神经网络的多层中的每一层包括相应的多个节点,对所述多层中的特定层,所述方法包括: 由分类系统接收激活向量作为用于所述特定层的输入; 使用所述激活向量和将数值映射到所述特定层中的节点的散列表来选择所述特定层中的一个或多个节点;以及 使用所选择的节点来处理所述激活向量以生成用于所述特定层的输出。2.根据权利要求1所述的方法,进一步包括:通过将与未被选择的节点相对应的所述激活向量中的值设定为O来创建修改的激活向量, 其中,使用所选择的节点处理所述激活向量以生成用于所述特定层的输出包括:处理所修改的激活向量以生成用于所述特定层的输出。3.根据权利要求1所述的方法,其中,针对所述特定层的节点中的每一个节点,所述散列表存储该节点的权重值的相应的散列。4.根据权利要求1所述的方法,其中,选择一个或多个节点包括: 计算用于所述激活向量的至少一部分的散列码; 确定所述散列表中相对于所述激活向量的所述部分的散列码的一个或多个最相似的散列;以及 选择与所述一个或多个最相似的散列相对应的节点。5.根据权利要求1所述的方法,其中,针对所述特定层的节点中的每一个节点,所述散列表存储该节点的相应的节点标识符。6.根据权利要求1所述的方法,其中,所述激活向量包括实数值,所述方法包括: 将所述激活向量中的每一实数转换成二进制值来创建二进制向量; 确定所述二进制向量的多个部分;以及 针对所述多个部分中的每一个部分,将该部分中的二进制值转换成整数,其中,使用所述激活向量和所述散列表来选择所述特定层中的节点包括通过将所述整数用作所述散列表的输入来选择所述特定层中的所述一个或多个节点。7.根据权利要求6所述的方法,其中, 所述整数包括第一子集和互斥的第二子集;以及 通过将所述整数用作所述散列表的输入来选择所述特定层中的所述一个或多个节点包括: 针对所述第一子集中的每一整数,确定所述散列表不包括用于节点的相对应的第一条目; 针对所述第二子集中的每一整数,确定所述散列表包括用于节点的相对应的第二条目;以及 将所述特定层中的所述一个或多个节点选择为由所述第二条目识别的节点。8.根据权利要求7所述的方法,其中, 针对所述第一子集中的每一整数,确定所述散列表不包括用于节点的相对应的第一条目包括:针对所述第一子集中的至少一些整数,确定所述散列表不包括具有当前时间戳的相应的第一条目。9.根据权利要求8所述的方法,包括: 对所述输出中的至少一些输出值,确定相应输出值的精度值;以及通过下述操作,使用所述精度值来更新所述散列表中的至少一些映射:更新用于所述特定层中的特定节点的所述散列表中的第一节点条目的时间戳、并且不更新用于不与所述特定层中的任何节点相对应的所述散列表中的第二节点条目的时间戳。10.根据权利要求9所述的方法,包括: 由所述分类系统确定具有旧时间戳的所述散列表中的旧条目;以及 从所述散列表移除所述旧条目。11.根据权利要求1所述的方法,其中,所述特定层包括所述神经网络的输出层,所述方法包括: 根据用于所述特定层的输出确定最佳输出值;以及 将所述最佳输出值用作所述神经网络的输出。12.根据权利要求11所述的方法,其中, 所述分类系统包括图像分类系统;以及 所述输出层中的每一节点与相应对象类相对应,所述方法包括: 接收图像;以及 将所述图像用作所述神经网络的输入,其中,将所述最佳输出值用作所述神经网络的输出包括:将所述图像中的对象分类为属于与生成所述最佳输出值的节点相对应的类。13.根据权利要求12所述的方法,其中, 接收图像包括从设备接收识别所述图像的数据;以及 将所述图像用作所述神经网络的输入包括:响应于接收到识别所述图像的数据,通过另一设备上的所述分类系统将所述图像用作所述神经网络的输入。14.一种用于通过神经网络的多层中的每一层来处理输入以生成输出的系统,其中,所述神经网络的多层中的每一层包括相应的多个节点,对所述多层的特定层,所述系统包括: 用于由分类系统接收激活向量作为用于所述特定层的输入的装置; 用于使用所述激活向量和将数值映射到所述特定层中的节点的散列表来选择所述特定层中的一个或多个节点的装置;以及 用于使用所选择的节点来处理所述激活向量以生成用于所述特定层的输出的装置。15.根据权利要求14所述的系统,其中,用于选择所述一个或多个节点的装置包括: 用于计算用于所述激活向量的至少一部分的散列码的装置; 用于确定所述散列表中相对于所述激活向量的所述部分的散列码的一个或多个最相似的散列的装置;以及 用于选择与所述一个或多个最相似的散列相对应的节点的装置。16.根据权利要求14所述的系统,其中,所述激活向量包括实数值,所述系统进一步包括: 用于将所述激活向量中的每一实数转换成二进制值来创建二进制向量的装置; 用于确定所述二进制向量的多个部分的装置;以及 用于针对所述多个部分的每一个部分,将该部分中的二进制值转换成整数的装置,其中,使用所述激活向量和所述散列表选择所述特定层中的节点包括通过将所述整数用作所述散列表的输入来选择所述特定层中的所述一个或多个节点。17.根据权利要求16所述的系统,其中, 所述整数包括第一子集和互斥的第二子集;以及 用于通过将所述整数用作所述散列表的输入来选择所述特定层中的一个或多个节点的装置包括: 用于针对所述第一子集中的每一整数,确定所述散列表不包括用于节点的相对应第一条目的装置; 用于针对所述第二子集中的每一整数,确定所述散列表包括用于节点的相对应的第二条目的装置; 用于将所述特定层中的所述一个或多个节点选择为由所述第二条目识别的节点的装置。18.根据权利要求17所述的系统,其中, 用于针对所述第一子集中的每一整数确定所述散列表不包括用于节点的相对应的第一条目的装置包括:用于对所述第一子集中的至少一些整数,确定所述散列表不包括具有当前时间戳的相应的第一条目的装置。19.根据权利要求8所述的系统,进一步包括: 用于针对所述输出中的至少一些输出值,确定相应输出值的精度值的装置;以及用于通过下述操作,使用所述精度值来更新所述散列表中的至少一些映射的装置:更新用于所述特定层中的特定节点的所述散列表中的第一节点条目的时间戳、并且不更新用于不与所述特定层中的任何节点相对应的所述散列表中的第二节点条目的时间戳。
【专利摘要】本发明涉及使用散列的神经网络中的大规模分类。方法、系统和装置,包括在计算机存储介质上编码的计算机程序,用于使用神经网络分类。一种用于通过神经网络的多层中的每一层来处理输入以生成输出的方法,其中,神经网络的多层中的每一层包括相应的多个节点,对多层中的特定层,所述方法包括:由分类系统接收激活向量以用作特定层的输入,使用激活向量和将数值映射到特定层中的节点的散列表来选择一个或多个节点,并且使用所选择的节点来处理激活向量以生成用于特定层的输出。
【IPC分类】G06N3/08
【公开号】CN105719001
【申请号】CN201510954701
【发明人】苏达赫恩德拉·维娅亚纳拉辛汉, 杰伊·亚格尼科
【申请人】谷歌公司
【公开日】2016年6月29日
【申请日】2015年12月17日
【公告号】EP3035250A2, US20160180200