CN105719001B - 使用散列的神经网络中的大规模分类 - Google Patents
使用散列的神经网络中的大规模分类 Download PDFInfo
- Publication number
- CN105719001B CN105719001B CN201510954701.3A CN201510954701A CN105719001B CN 105719001 B CN105719001 B CN 105719001B CN 201510954701 A CN201510954701 A CN 201510954701A CN 105719001 B CN105719001 B CN 105719001B
- Authority
- CN
- China
- Prior art keywords
- hash table
- node
- nodes
- particular layer
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Analysis (AREA)
Abstract
本发明涉及使用散列的神经网络中的大规模分类。方法、***和装置,包括在计算机存储介质上编码的计算机程序,用于使用神经网络分类。一种用于通过神经网络的多层中的每一层来处理输入以生成输出的方法,其中,神经网络的多层中的每一层包括相应的多个节点,对多层中的特定层,所述方法包括:由分类***接收激活向量以用作特定层的输入,使用激活向量和将数值映射到特定层中的节点的散列表来选择一个或多个节点,并且使用所选择的节点来处理激活向量以生成用于特定层的输出。
Description
技术领域
本说明书涉及使用神经网络的图像识别。
背景技术
具有若干级和层次的特征的深度神经网络可以具有非常大的学习能力并且可用在语音或图像识别中。深度神经网络通常在输入和输出空间之间,具有以前馈方式连接的若干层的单元。深度神经网络中的每一层可以执行特定功能,例如,卷积、池、归一化或矩阵乘法和非线性激活。
发明内容
在一些实施方式中,***使用矩阵乘法来确定用于神经网络中的特定层的输出。例如,矩阵乘法是激活向量(例如,用于特定层的输入)和权重矩阵(例如用于特定层中的一些节点的权重)的组合。神经网络使用快速局部敏感散列技术来接近矩阵乘法的结果,以允许神经网络生成用于大量,例如几百万输出类的评分。
当神经网络使用散列技术时,神经网络可以近似计算用于神经网络中的特定层的权重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)(downpourstochastic gradient descent),训练神经网络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”),例如互联网。
计算机***能包括客户机和服务器。客户机和服务器通常彼此远离并且通常通过通信网络交互。客户机和服务器的关系根据在相应的计算机上运行并且具有客户机-服务器关系的计算机程序来产生。
尽管本说明书包含许多具体实现细节,但这些不应当解释为限制任何发明或所要求的范围,而是可以专用于具体发明的特定实施例的特征的描述。在单个实施例中,能结合实现在单独的实施例的上下文中本说明书中所述的某些特征。相反,还能在单独的多个实施例中或在任何适当的子组合中,实现在单个实施例的上下文中所述的各个特征。此外,尽管上文可以将特征描述为以某些组合运作并且甚至如最初所要求的,在一些情况下,能从组合删除来自所要求的组合的一个或多个特征,以及所要求的组合可以涉及子组合和/或子组合的变形。
类似地,尽管以特定顺序,在图中描绘了操作,但这不应当理解为要求按所示的特定顺序或按顺序执行这些操作,或应执行所有所示操作来实现所需结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中的各个***模块和组件的分离不应当理解为所有实施例中均要求这些分离,并且应当理解到所述程序组件和***通常一起集成在单一软件产品中或封装到多软件产品中。
已经描述了主题的具体实施例。其他实施例在下述权利要求的范围内。例如,权利要求中所记载的动作能以不同顺序执行并且仍然实现所需结果。例如,在附图中所描绘的过程不一定要求所示的特定顺序,或顺序地顺序来实现预期结果。在某些实施方式中,多任务和并行处理会是有利的。
Claims (17)
1.一种用于通过神经网络的多层中的每一层处理图像输入来生成输出的方法,其中,所述神经网络的多层中的每一层包括相应的多个节点,对所述多层中的特定层,所述方法包括:
由图像分类***接收激活向量作为用于所述特定层的输入;
使用所述激活向量和将数值映射到所述特定层中的节点的散列表来选择所述特定层中的一个或多个节点,包括:
计算用于所述激活向量的至少一部分的散列码;
确定所述散列表中相对于所述激活向量的所述部分的散列码的一个或多个最相似的散列;以及
选择与所述一个或多个最相似的散列相对应的节点;以及
使用所选择的节点来处理所述激活向量以生成用于所述特定层的输出。
2.根据权利要求1所述的方法,进一步包括:通过将与未被选择的节点相对应的所述激活向量中的值设定为0来创建修改的激活向量,
其中,使用所选择的节点处理所述激活向量以生成用于所述特定层的输出包括:处理所修改的激活向量以生成用于所述特定层的输出。
3.根据权利要求1所述的方法,其中,针对所述特定层的节点中的每一个节点,所述散列表存储该节点的权重值的相应的散列。
4.根据权利要求1所述的方法,其中,针对所述特定层的节点中的每一个节点,所述散列表存储该节点的相应的节点标识符。
5.根据权利要求1所述的方法,其中,所述激活向量包括实数值,所述方法进一步包括:
将所述激活向量中的每一实数转换成二进制值来创建二进制向量;
确定所述二进制向量的多个部分;以及
针对所述多个部分中的每一个部分,将该部分中的二进制值转换成整数,其中,使用所述激活向量和所述散列表来选择所述特定层中的所述一个或多个节点包括通过将所述整数用作所述散列表的输入来选择所述特定层中的所述一个或多个节点。
6.根据权利要求5所述的方法,其中,
所述整数包括第一子集和互斥的第二子集;以及
通过将所述整数用作所述散列表的输入来选择所述特定层中的所述一个或多个节点包括:
针对所述第一子集中的每一整数,确定所述散列表不包括用于节点的相对应的第一条目;
针对所述第二子集中的每一整数,确定所述散列表包括用于节点的相对应的第二条目;以及
将所述特定层中的所述一个或多个节点选择为由所述第二条目识别的节点。
7.根据权利要求6所述的方法,其中,
针对所述第一子集中的每一整数,确定所述散列表不包括用于节点的相对应的第一条目包括:针对所述第一子集中的至少一些整数,确定所述散列表不包括具有当前时间戳的相应的第一条目。
8.根据权利要求7所述的方法,进一步包括:
对所述输出中的至少一些输出值,确定相应输出值的精度值;以及
通过下述操作,使用所述精度值来更新所述散列表中的至少一些映射:更新用于所述特定层中的特定节点的所述散列表中的第一节点条目的时间戳、并且不更新用于不与所述特定层中的任何节点相对应的所述散列表中的第二节点条目的时间戳。
9.根据权利要求8所述的方法,进一步包括:
由所述图像分类***确定具有旧时间戳的所述散列表中的旧条目;以及
从所述散列表移除所述旧条目。
10.根据权利要求1所述的方法,其中,所述特定层包括所述神经网络的输出层,所述方法进一步包括:
根据用于所述特定层的输出确定最佳输出值;以及
将所述最佳输出值用作所述神经网络的输出。
11.根据权利要求10所述的方法,其中,
所述输出层中的每一节点与相应对象类相对应,所述方法进一步包括:
接收图像;以及
将所述图像用作所述神经网络的输入,其中,将所述最佳输出值用作所述神经网络的输出包括:将所述图像中的对象分类为属于与生成所述最佳输出值的节点相对应的类。
12.根据权利要求11所述的方法,其中,
接收图像包括从设备接收识别所述图像的数据;以及
将所述图像用作所述神经网络的输入包括:响应于接收到识别所述图像的数据,通过另一设备上的所述分类***将所述图像用作所述神经网络的输入。
13.一种***,包括:
一个或多个计算机和存储指令的一个或多个存储设备,所述指令当被所述一个或多个计算机执行时可操作来使得所述一个或多个计算机执行操作,所述操作包括:
由图像分类***接收激活向量作为用于神经网络中的特定层的输入;
使用所述激活向量和将数值映射到所述特定层中的节点的散列表来选择所述特定层中的一个或多个节点,包括:
计算用于所述激活向量的至少一部分的散列码,
确定所述散列表中相对于所述激活向量的所述部分的散列码的一个或多个最相似的散列,以及
选择与所述一个或多个最相似的散列相对应的节点;以及
使用所选择的节点来处理所述激活向量以生成用于所述特定层的输出。
14.根据权利要求13所述的***,其中,所述激活向量包括实数值,所述操作进一步包括:
将所述激活向量中的每一实数转换成二进制值来创建二进制向量;
确定所述二进制向量的多个部分;以及
针对所述多个部分的每一个部分,将该部分中的二进制值转换成整数,其中,使用所述激活向量和所述散列表选择所述特定层中的节点包括通过将所述整数用作所述散列表的输入来选择所述特定层中的所述一个或多个节点。
15.根据权利要求14所述的***,其中,
所述整数包括第一子集和互斥的第二子集;以及
通过将所述整数用作所述散列表的输入来选择所述特定层中的所述一个或多个节点包括:
针对所述第一子集中的每一整数,确定所述散列表不包括用于节点的相对应第一条目;
针对所述第二子集中的每一整数,确定所述散列表包括用于节点的相对应的第二条目;
将所述特定层中的所述一个或多个节点选择为由所述第二条目识别的节点。
16.根据权利要求15所述的***,其中,
针对所述第一子集中的每一整数确定所述散列表不包括用于节点的相对应的第一条目包括:对所述第一子集中的至少一些整数,确定所述散列表不包括具有当前时间戳的相应的第一条目。
17.根据权利要求16所述的***,其中,所述操作进一步包括:
针对所述输出中的至少一些输出值,确定相应输出值的精度值;以及
通过下述操作,使用所述精度值来更新所述散列表中的至少一些映射:更新用于所述特定层中的特定节点的所述散列表中的第一节点条目的时间戳、并且不更新用于不与所述特定层中的任何节点相对应的所述散列表中的第二节点条目的时间戳。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462094768P | 2014-12-19 | 2014-12-19 | |
US62/094,768 | 2014-12-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105719001A CN105719001A (zh) | 2016-06-29 |
CN105719001B true CN105719001B (zh) | 2019-12-24 |
Family
ID=54770857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510954701.3A Active CN105719001B (zh) | 2014-12-19 | 2015-12-17 | 使用散列的神经网络中的大规模分类 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9721190B2 (zh) |
EP (1) | EP3035250B1 (zh) |
CN (1) | CN105719001B (zh) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9953425B2 (en) | 2014-07-30 | 2018-04-24 | Adobe Systems Incorporated | Learning image categorization using related attributes |
US9536293B2 (en) * | 2014-07-30 | 2017-01-03 | Adobe Systems Incorporated | Image assessment using deep convolutional neural networks |
US9721190B2 (en) * | 2014-12-19 | 2017-08-01 | Google Inc. | Large-scale classification in neural networks using hashing |
US11275747B2 (en) * | 2015-03-12 | 2022-03-15 | Yahoo Assets Llc | System and method for improved server performance for a deep feature based coarse-to-fine fast search |
US9633306B2 (en) * | 2015-05-07 | 2017-04-25 | Siemens Healthcare Gmbh | Method and system for approximating deep neural networks for anatomical object detection |
JP6853354B2 (ja) | 2016-11-04 | 2021-03-31 | グーグル エルエルシーGoogle LLC | 混合エキスパートニューラルネットワーク |
KR20180060257A (ko) * | 2016-11-28 | 2018-06-07 | 삼성전자주식회사 | 객체 인식 방법 및 장치 |
CN106557332A (zh) * | 2016-11-30 | 2017-04-05 | 上海寒武纪信息科技有限公司 | 一种指令生成过程的复用方法及装置 |
US10373049B2 (en) * | 2016-12-20 | 2019-08-06 | Google Llc | Generating an output for a neural network output layer |
US10621349B2 (en) * | 2017-01-24 | 2020-04-14 | Cylance Inc. | Detection of malware using feature hashing |
WO2018184194A1 (en) * | 2017-04-07 | 2018-10-11 | Intel Corporation | Methods and systems using improved convolutional neural networks for image processing |
US10417731B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10417734B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US20190138511A1 (en) * | 2017-05-15 | 2019-05-09 | Adnomus, Inc. | Systems and methods for real-time data processing analytics engine with artificial intelligence for content characterization |
US11531859B2 (en) * | 2017-08-08 | 2022-12-20 | Samsung Electronics Co., Ltd. | System and method for hashed compressed weighting matrix in neural networks |
JP6998968B2 (ja) * | 2017-09-05 | 2022-01-18 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | ディープニューラルネットワークの実行方法、実行装置、学習方法、学習装置及びプログラム |
CN111406264A (zh) * | 2017-10-27 | 2020-07-10 | 谷歌有限责任公司 | 神经架构搜索 |
CN111465946B (zh) * | 2017-10-27 | 2024-05-28 | 渊慧科技有限公司 | 使用分层表示进行神经网络体系结构搜索 |
US11288297B2 (en) * | 2017-11-29 | 2022-03-29 | Oracle International Corporation | Explicit semantic analysis-based large-scale classification |
CN107835073B (zh) * | 2017-12-15 | 2019-05-17 | 卫盈联信息技术(深圳)有限公司 | 多数字位号码的加密、解密方法以及加密、解密服务器 |
US11157745B2 (en) * | 2018-02-20 | 2021-10-26 | Scenera, Inc. | Automated proximity discovery of networked cameras |
CN118014031A (zh) * | 2018-03-22 | 2024-05-10 | 亚马逊技术股份有限公司 | 针对多个输入数据集的处理 |
US11468024B2 (en) * | 2018-03-27 | 2022-10-11 | Sap Se | Structural data matching using neural network encoders |
US11314537B2 (en) * | 2018-04-30 | 2022-04-26 | Bank Of America Corporation | Computer architecture for establishing data encryption in a correlithm object processing system |
US10983786B2 (en) * | 2018-08-20 | 2021-04-20 | Accenture Global Solutions Limited | Automatically evaluating software project requirements |
US10725753B2 (en) * | 2018-11-26 | 2020-07-28 | Sap Se | Compiler for context-dependent code global data types |
US11710034B2 (en) * | 2019-02-27 | 2023-07-25 | Intel Corporation | Misuse index for explainable artificial intelligence in computing environments |
US11036825B2 (en) | 2019-03-11 | 2021-06-15 | Bank Of America Corporation | Computer architecture for maintaining a distance metric across correlithm objects in a correlithm object processing system |
US11036826B2 (en) | 2019-03-11 | 2021-06-15 | Bank Of America Corporation | Computer architecture for emulating a correlithm object processing system with transparency |
US11100120B2 (en) | 2019-03-11 | 2021-08-24 | Bank Of America Corporation | Computer architecture for performing error detection and correction in a correlithm object processing system |
US11003735B2 (en) | 2019-03-11 | 2021-05-11 | Bank Of America Corporation | Computer architecture for emulating recording and playback in a correlithm object processing system |
US11080364B2 (en) | 2019-03-11 | 2021-08-03 | Bank Of America Corporation | Computer architecture for performing error detection and correction using demultiplexers and multiplexers in a correlithm object processing system |
US10949494B2 (en) | 2019-03-11 | 2021-03-16 | Bank Of America Corporation | Computer architecture for emulating a correlithm object processing system using mobile correlithm object devices |
US10949495B2 (en) | 2019-03-11 | 2021-03-16 | Bank Of America Corporation | Computer architecture for emulating a correlithm object processing system with traceability |
US10915344B2 (en) * | 2019-03-11 | 2021-02-09 | Bank Of America Corporation | Computer architecture for emulating coding in a correlithm object processing system |
US10990649B2 (en) | 2019-03-11 | 2021-04-27 | Bank Of America Corporation | Computer architecture for emulating a string correlithm object velocity detector in a correlithm object processing system |
US11107003B2 (en) | 2019-04-11 | 2021-08-31 | Bank Of America Corporation | Computer architecture for emulating a triangle lattice correlithm object generator in a correlithm object processing system |
US10915345B2 (en) * | 2019-04-11 | 2021-02-09 | Bank Of America Corporation | Computer architecture for emulating intersecting multiple string correlithm objects in a correlithm object processing system |
US10929158B2 (en) * | 2019-04-11 | 2021-02-23 | Bank Of America Corporation | Computer architecture for emulating a link node in a correlithm object processing system |
US11094047B2 (en) | 2019-04-11 | 2021-08-17 | Bank Of America Corporation | Computer architecture for emulating an irregular lattice correlithm object generator in a correlithm object processing system |
US11263290B2 (en) | 2019-04-11 | 2022-03-01 | Bank Of America Corporation | Computer architecture for emulating a bidirectional string correlithm object generator in a correlithm object processing system |
US11250104B2 (en) | 2019-04-11 | 2022-02-15 | Bank Of America Corporation | Computer architecture for emulating a quadrilateral lattice correlithm object generator in a correlithm object processing system |
US10990424B2 (en) | 2019-05-07 | 2021-04-27 | Bank Of America Corporation | Computer architecture for emulating a node in conjunction with stimulus conditions in a correlithm object processing system |
US11055120B2 (en) | 2019-05-07 | 2021-07-06 | Bank Of America Corporation | Computer architecture for emulating a control node in conjunction with stimulus conditions in a correlithm object processing system |
US10922109B2 (en) * | 2019-05-14 | 2021-02-16 | Bank Of America Corporation | Computer architecture for emulating a node in a correlithm object processing system |
CN110162403B (zh) * | 2019-05-28 | 2021-07-13 | 首都师范大学 | 一种基于人工神经网络的硬件资源分配方法及*** |
US11676034B2 (en) * | 2019-06-27 | 2023-06-13 | The Nielsen Company (Us), Llc | Initialization of classification layers in neural networks |
US11301544B2 (en) | 2019-07-24 | 2022-04-12 | Bank Of America Corporation | Computer architecture for performing inversion using correlithm objects in a correlithm object processing system |
US11250293B2 (en) | 2019-07-24 | 2022-02-15 | Bank Of America Corporation | Computer architecture for representing positional digits using correlithm objects in a correlithm object processing system |
US10936349B2 (en) * | 2019-07-24 | 2021-03-02 | Bank Of America Corporation | Computer architecture for performing addition using correlithm objects in a correlithm object processing system |
US11334760B2 (en) | 2019-07-24 | 2022-05-17 | Bank Of America Corporation | Computer architecture for mapping correlithm objects to sequential values in a correlithm object processing system |
US10915346B1 (en) * | 2019-07-24 | 2021-02-09 | Bank Of America Corporation | Computer architecture for representing an exponential form using correlithm objects in a correlithm object processing system |
US10936348B2 (en) * | 2019-07-24 | 2021-03-02 | Bank Of America Corporation | Computer architecture for performing subtraction using correlithm objects in a correlithm object processing system |
US11645096B2 (en) | 2019-07-24 | 2023-05-09 | Bank Of America Corporation | Computer architecture for performing multiplication using correlithm objects in a correlithm object processing system |
US11468259B2 (en) | 2019-07-24 | 2022-10-11 | Bank Of America Corporation | Computer architecture for performing division using correlithm objects in a correlithm object processing system |
KR20210045225A (ko) * | 2019-10-16 | 2021-04-26 | 삼성전자주식회사 | 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치 |
US11455331B2 (en) | 2019-12-12 | 2022-09-27 | Motorola Solutions, Inc. | Device, system and method for anonymously comparing query images to reference images |
US11086647B2 (en) * | 2020-01-03 | 2021-08-10 | Bank Of America Corporation | Computer architecture for determining phase and frequency components from correlithm objects in a correlithm object processing system |
US11347526B2 (en) | 2020-01-03 | 2022-05-31 | Bank Of America Corporation | Computer architecture for representing phase and frequency components using correlithm objects in a correlithm object processing system |
CN111753978B (zh) * | 2020-01-19 | 2024-03-01 | 杭州海康威视数字技术股份有限公司 | 一种前向耗时的确定方法、装置及设备 |
US11055323B1 (en) | 2020-01-30 | 2021-07-06 | Bank Of America Corporation | Computer architecture for emulating a differential amlpifier in a correlithm object processing system |
US11126450B2 (en) | 2020-01-30 | 2021-09-21 | Bank Of America Corporation | Computer architecture for emulating a differentiator in a correlithm object processing system |
US11055121B1 (en) | 2020-01-30 | 2021-07-06 | Bank Of America Corporation | Computer architecture for emulating an integrator in a correlithm object processing system |
CN111628866B (zh) * | 2020-05-22 | 2021-08-31 | 深圳前海微众银行股份有限公司 | 神经网络校验方法、装置、设备及可读存储介质 |
CN111881312B (zh) * | 2020-07-24 | 2022-07-05 | 成都成信高科信息技术有限公司 | 一种图像数据集分类划分方法 |
KR102519210B1 (ko) * | 2020-08-31 | 2023-04-06 | 성균관대학교산학협력단 | 더블 스테이지 웨이트 공유 방식을 이용한 인공 신경망 가속 방법 및 장치 |
US11620583B2 (en) | 2020-09-08 | 2023-04-04 | International Business Machines Corporation | Federated machine learning using locality sensitive hashing |
US20210110269A1 (en) * | 2020-12-21 | 2021-04-15 | Intel Corporation | Neural network dense layer sparsification and matrix compression |
KR102648499B1 (ko) * | 2021-03-11 | 2024-03-19 | 한국전자통신연구원 | 기계 학습 기반 키 생성 장치 및 방법 |
US11462268B1 (en) | 2021-04-30 | 2022-10-04 | Hewlett Packard Enterprise Development Lp | Generating hash codes for locality sensitive hashing |
CN114513593B (zh) * | 2022-01-25 | 2024-04-16 | 重庆医药高等专科学校 | 一种海量图片采集工作方法 |
US20230298350A1 (en) * | 2022-03-15 | 2023-09-21 | Genetec Inc. | Vehicle identification system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211341A (zh) * | 2006-12-29 | 2008-07-02 | 上海芯盛电子科技有限公司 | 图像智能模式识别搜索方法 |
CN101706870A (zh) * | 2009-10-26 | 2010-05-12 | 中山大学 | 一种基于gpu实现的媒资特征识别的***及方法 |
US8065248B1 (en) * | 2006-06-22 | 2011-11-22 | Google Inc. | Approximate hashing functions for finding similar content |
CN104008520A (zh) * | 2014-05-09 | 2014-08-27 | 河南大学 | 基于sha-384函数、时空混沌***、量子混沌***和神经网络的彩色图像加密方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9721190B2 (en) * | 2014-12-19 | 2017-08-01 | Google Inc. | Large-scale classification in neural networks using hashing |
-
2015
- 2015-11-05 US US14/933,256 patent/US9721190B2/en active Active
- 2015-11-27 EP EP15196866.6A patent/EP3035250B1/en active Active
- 2015-12-17 CN CN201510954701.3A patent/CN105719001B/zh active Active
-
2017
- 2017-07-21 US US15/656,192 patent/US10049305B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065248B1 (en) * | 2006-06-22 | 2011-11-22 | Google Inc. | Approximate hashing functions for finding similar content |
CN101211341A (zh) * | 2006-12-29 | 2008-07-02 | 上海芯盛电子科技有限公司 | 图像智能模式识别搜索方法 |
CN101706870A (zh) * | 2009-10-26 | 2010-05-12 | 中山大学 | 一种基于gpu实现的媒资特征识别的***及方法 |
CN104008520A (zh) * | 2014-05-09 | 2014-08-27 | 河南大学 | 基于sha-384函数、时空混沌***、量子混沌***和神经网络的彩色图像加密方法 |
Non-Patent Citations (3)
Title |
---|
Fast, Accurate Detection of 100,000 Object Classes on a Single Machine;Thomas Dean et al.;《2013 IEEE Conference on Computer Vision and Pattern Recognition》;20131003;全文 * |
Low-Rank Approximations for Conditional Feedforward Computation in Deep Neural Networks;Andrew Davis et al.;《arXiv》;20140128;全文 * |
大规模图像检索和识别中的神经网络学习及其应用;***;《中国博士学位论文全文数据库 信息科技辑》;20140515;全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20160180200A1 (en) | 2016-06-23 |
US9721190B2 (en) | 2017-08-01 |
US20170323183A1 (en) | 2017-11-09 |
US10049305B2 (en) | 2018-08-14 |
EP3035250A2 (en) | 2016-06-22 |
EP3035250B1 (en) | 2022-01-05 |
EP3035250A3 (en) | 2017-03-22 |
CN105719001A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105719001B (zh) | 使用散列的神经网络中的大规模分类 | |
EP3446260B1 (en) | Memory-efficient backpropagation through time | |
US11755885B2 (en) | Joint learning of local and global features for entity linking via neural networks | |
US11829860B2 (en) | Processing and generating sets using recurrent neural networks | |
CN110366734B (zh) | 优化神经网络架构 | |
CN113887701B (zh) | 生成用于神经网络输出层的输出的方法、***和存储介质 | |
US9141916B1 (en) | Using embedding functions with a deep network | |
EP4312157A2 (en) | Progressive neurale netzwerke | |
US11675975B2 (en) | Word classification based on phonetic features | |
CN109313720B (zh) | 具有稀疏访问的外部存储器的增强神经网络 | |
US11263223B2 (en) | Using machine learning to determine electronic document similarity | |
CN109074517B (zh) | 全局归一化神经网络 | |
US10387531B1 (en) | Processing structured documents using convolutional neural networks | |
EP3398115A1 (en) | Compressed recurrent neural network models | |
US11010664B2 (en) | Augmenting neural networks with hierarchical external memory | |
EP3371747A1 (en) | Augmenting neural networks with external memory | |
CN108780521B (zh) | 关联长短期记忆神经网络层 | |
EP3452960A1 (en) | Augmenting neural networks with external memory using reinforcement learning | |
US11227206B1 (en) | Generating output sequences from input sequences using neural networks | |
CN108475346B (zh) | 神经随机访问机器 | |
CN117795527A (zh) | 使用自回归语言模型神经网络评估输出序列 | |
US9122705B1 (en) | Scoring hash functions | |
JP2022176899A (ja) | 機械学習モデルを訓練するためのデータ要約 | |
JP2024504179A (ja) | 人工知能推論モデルを軽量化する方法およびシステム | |
US10482373B1 (en) | Grid long short-term memory neural networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |