利用KNN的自然语言处理的制作方法

文档序号:18194461发布日期:2019-07-17 05:45阅读:334来源:国知局
利用KNN的自然语言处理的制作方法

本申请要求2017年7月16日提交的美国临时专利申请62/533,076和2018年6月18日提交的美国临时专利申请62/686,114的优先权和权益,这两个申请均通过引用方式并入本文。

本发明总体上涉及关联计算并且具体涉及使用关联计算的数据挖掘算法。



背景技术:

数据挖掘是发现大数据集中的模式的计算过程。它使用不同的技术来分析数据集。这些技术中的一种技术是分类,这是一种用于基于与其组成员已知的数据集中的项目相关联的数据来预测新项目的组成员的技术。k最近邻居算法(k-nn)是在例如但不限于生物信息学、语音识别、图像处理、统计估计、模式识别以及其他众多应用的使用机器学习过程的许多领域中使用的已知的数据挖掘分类方法之一。

在对象(例如,产品、图像、面部、语音、文本、视频、人类状况、dna序列等等)的大型数据集中,每个对象可以与若干预先定义类别中的一个相关联(例如,产品类别可能是:钟表、花瓶、耳环、钢笔等)。类别的数量可以是小的或大的,并且每个对象除了与类别相关联之外,还可以由一组属性(例如,对于产品:尺寸、重量、价格等)来描述。每个属性可以进一步由数值定义(例如,对于产品尺寸:诸如20.5厘米的宽度等)。分类过程的目标是基于对象属性的值及其与数据集中已分类对象的相似性来识别未分类对象(尚未对其定义类)的类。

k最近邻居算法首先计算引入的对象x(未分类的)与数据集中的每个对象之间的相似度。相似度由对象之间的距离定义,使得距离越小,对象将越相似,并且可以使用几种已知的距离函数。在新引入的对象x与数据集中的所有对象之间计算距离之后,可以选择与x的k个最近邻居,其中k是由k最近邻居算法的用户定义的预定义数。x被分配给它的k个最近邻居中最常见的类。

在其他算法当中,k最近邻居算法需要非常快速且高效地分析大的未排序数据集,以便快速访问数据集中的最小或最大(即极端)k项。

用于在数据集中查找这k个最小/最大项目的一种方法可以是首先对数据集进行排序,使得按顺序排列数字,并且第一(或最后)k个数字是数据集中期望的k个项目。许多分类算法在本领域中是已知的并且可以使用。

在2015年1月1日提交的并转让给本申请的共同受让人的美国专利申请14/594,434中描述了一种存储器内分类算法。该算法可用于通过以下来排序集合中的数字:初始找到第一最小值(或最大值),然后找到第二最小值(或最大值),然后重复该过程,直到数据集中的所有数字都从最小值到最大值(或从最大值到最小值)进行了排序。美国专利申请14/594,434中描述的排序算法的计算复杂度为o(n),当n是集合的大小时(因为存在对整个集合进行排序的n次迭代)。如果计算在第k次迭代处停止(如果用于找到第一k个最小值/最大值),则复杂度可以是o(k)。



技术实现要素:

因此,根据本发明的优选实施例,提供了一种用于自然语言处理的系统。该系统包括存储器阵列和存储器内处理器。存储器阵列具有行和列,并且被划分为:初始地存储多个特征向量或键向量的相似性区段,用于确定特征向量或键向量的出现概率的softmax区段,初始地存储多个经修改的特征向量的值区段以及标记区段。存储器阵列的一个或多个列中的操作与要被处理的一个特征向量相关联。存储器内处理器激活存储器阵列,以在由标记区段指示的每个列中并行地执行以下运算:

在向量问题与存储在每个指示的列中的每个特征向量之间的相似性区段中的相似性运算;

softmax区段中的softmax运算,其用于针对每个指示的特征向量确定相关联的softmax概率值;

值区段中的乘法运算,其用于使相关联的softmax值乘以存储在每个指示的列中的每个经修改的特征向量;以及

值区段中的向量和运算,其用于累加乘法运算的输出的关注向量和。向量和用于生成用于进一步迭代的新向量问题或者用于在最终迭代中生成输出值。

此外,根据本发明的优选实施例,存储器阵列包括操作部分,自然语言处理操作的每次迭代一个部分,每个部分被划分为区段。

进一步地,根据本发明的优选实施例,存储器阵列是sram、非易失性、易失性或非破坏性阵列。

更进一步,根据本发明的优选实施例,存储器阵列包括多个位线处理器,每个区段的每列一个位线处理器,每个位线处理器对其相关联的区段的数据的一个位进行操作。

另外,根据本发明的优选实施例,该系统还包括用于生成特征向量和经修改的特征向量的神经网络特征提取器。

进一步地,根据本发明的优选实施例,特征向量包括单词、句子或文档的特征。

更进一步,根据本发明的优选实施例,特征向量是预先训练的神经网络的输出。

另外,根据本发明的优选实施例,该系统还包括用于生成初始向量问题的预先训练的神经网络。

此外,根据本发明的优选实施例,该系统还包括问题生成器,该问题生成器用于根据初始向量问题和关注向量和来生成进一步的问题。

进一步地,根据本发明的优选实施例,问题生成器是神经网络。

可替代地,根据本发明的优选实施例,问题生成器被实现为存储器阵列的位线上的矩阵乘法器。

根据本发明的优选实施例,还提供了一种用于自然语言处理的方法。该方法包括具有存储器阵列,该存储器阵列具有行和列,存储器阵列被划分为:初始地存储多个特征向量或键向量的相似性区段,用于确定特征向量或键向量的出现概率的softmax区段,初始地存储多个经修改的特征向量的值区段以及标记区段,其中存储器阵列的一个或多个列中的操作与要被处理的一个特征向量相关联,以及激活存储器阵列以在由标记区段指示的每个列中并行地执行以下运算。这些运算是:执行在向量问题与存储在每个指示的列中的每个特征向量之间的相似性区段中的相似性运算,执行softmax区段中的softmax运算以针对每个指示的特征向量确定相关联的softmax概率值,执行值区段中的乘法运算以使相关联的softmax值乘以存储在每个指示的列中的每个经修改的特征向量,以及执行值区段中的向量和运算以累加乘法运算的输出的关注向量和。和用于生成用于进一步迭代的新向量问题或者用于在最终迭代中生成输出值。

进一步地,根据本发明的优选实施例,存储器阵列包括多个位线处理器,每个区段的每列一个位线处理器,并且该方法另外包括每个位线处理器对其相关区段的数据的一个位进行操作。

更进一步,根据本发明的优选实施例,该方法还包括利用神经网络生成特征向量和经修改的特征向量,并且将特征向量和经修改的特征向量分别存储在相似性区段和值区段中。

此外,根据本发明的优选实施例,该方法还包括使用预先训练的神经网络生成初始向量问题。

另外,根据本发明的优选实施例,该方法还包括根据初始向量问题和关注向量和来生成进一步的问题。

进一步地,根据本发明的优选实施例,生成进一步的问题利用神经网络。

最后,根据本发明的优选实施例,生成进一步的问题包括在存储器阵列的位线上执行矩阵乘法。

附图说明

被认为是本发明的主题在说明书的结论部分中被特别指出并明确要求保护。然而,关于组织和操作方法以及其目的、特征和优点,可以通过参考结合附图阅读时的以下详细描述来最好地理解本发明,在附图中:

图1a和图1b是根据本发明的优选实施例构造和操作的用于在恒定时间内计算k个极值的存储器计算设备的逻辑和物理示意图。

图2是存储在存储器阵列中的数据集c的示意图;

图3是数据集c的示例;

图4和图5是用于计算的临时存储设备的示意图;

图6是描述k-mins处理器的计算步骤的流程图;

图7-11是根据本发明的优选实施例构造和操作的k-mins处理器对图3的示例性数据集的计算步骤的示例的图示;

图12是用于在由k-mins处理器使用的计数运算中使用的高效移位的一个实施例的示意图;

图13是大量数据挖掘案例的事件流程的示意图;

图14是具有多个位线处理器的存储器阵列的示意图;

图15是构造和操作以实现用于自然语言处理的端到端存储器网络的关联存储器布局的示意图;以及

图16是用于在恒定时间内在存储器内实现网络的所有跳跃的关联处理单元的示意图。

应该理解,为了说明的简单和清楚起见,附图中示出的元件不一定按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被夸大。此外,在认为适当的情况下,可以在图中重复附图标记以指示对应或类似的元件。

具体实施方式

在以下详细描述中,阐述了许多具体细节以便提供对本发明的透彻理解。然而,本领域技术人员将会理解,可以在没有这些具体细节的情况下实践本发明。在其他情况下,未详细描述众所周知的方法、程序和组件以免混淆本发明。

申请人已经认识到,当数据集非常大时,对数据集进行排序以查找k个最小值不是高效的,因为已知排序机制的复杂度与数据集大小成比例。随着数据集的增长,响应从数据集取回k个最小值的请求的有效时间将增加。

申请人已经进一步认识到,可以使用关联存储器设备来存储大数据集并且关联计算可以提供用于在具有恒定计算复杂度(o(1))的任何大小的数据集中找到k个最小值的存储器内方法,其中恒定计算复杂度(o(1))仅与数据集中对象的大小成比例,而不与数据集本身的大小成比例。

可以提供这种恒定复杂度的存储器设备在2009年7月16日提交的美国专利申请12/503,916(现为美国专利第8,238,173号);2015年1月1日提交的美国专利申请第14/588,419号;2015年1月12日提交的美国专利申请14/594,434(现为美国专利第9,859,005号);2014年11月27日提交的美国专利申请第14/555,638号(现为美国专利第9,418,719号)以及2016年5月5日提交的美国专利申请第15/146,908号(现为美国专利第9,558,812号)进行了描述,这些申请全部转让给本发明的共同受让人。

申请人还认识到,除了恒定的计算复杂度之外,关联计算还可以提供快速且高效的方法来针对每个请求以最小等待时间来查找k个最小值。另外,关联存储器中的数据在计算过程中不会移动,并且在计算之前可能会保留在其原始存储器位置。

可以理解的是,增加数据集大小可能不会影响计算复杂度,也不会影响k-mins查询的响应时间。

现在参考图1a和1b,它们是根据本发明的优选实施例构造和操作的存储器计算设备100的示意图。如图1a所示,设备100可以包括用于存储数据集的存储器阵列110,在存储器逻辑元件上实现以执行k-mins操作的k-mins处理器120,以及可用于存储k-mins处理器120对存储在存储器阵列110中的数据进行的操作的中间结果和最终结果的k-mins临时存储库130。在图1b中,k-mins处理器120和k-mins临时存储库130的物理方面以关联存储器阵列140示出。关联存储器阵列140组合k-mins处理器120的操作和k-mins临时存储库130的存储。存储器阵列110可存储非常大的二进制数的数据集。每个二进制数由固定数量的位组成,并且存储在存储器阵列110中的不同列中。k-mins临时存储库130可以存储存储器阵列110中所存储的信息的副本以及存储与k-mins处理器120执行的计算步骤相关的临时信息以及包括将k个最低值存储在数据集中的k个列的指示的最终结果的若干向量。

可以理解的是,存储在存储器阵列110和关联存储器阵列120中的数据可以存储在列中(以便能够执行如上文提到的美国专利申请中所述的布尔运算)。然而,为了清楚起见,说明书和附图提供了信息的逻辑视图,其中数字被水平地显示(在一行上)。可以理解的是,实际的存储和计算是垂直完成的。

现在参考图2,图2是存储在存储器阵列110中的数据集c的示意图。如上所述,数据集c的行作为列存储在存储器阵列110中。数据集c可以存储q行中的多位二进制数。数据集c中的每个二进制数被称为cp,其中p是存储有二进制数的存储器阵列c中的行标识符。每个数cp由m个位组成,其中表示存储在第p行中的二进制数的位i。m的值(包括二进制数的位数)可以是8、16、32、64、128等。

如上所述,cp表示阵列c中的行(p),其中(p=1...q),ci表示阵列c中的列(i),其中(i=1...m),并且表示阵列c中的单元(第p行和第i列的交点),其中(p=1...q;i=1...m)。图2中第3行第2列中的项目,称为用方形标记。

现在参考图3,图3是具有11个二进制数的数据集c的示例,即q=11。每行用从0到10开始的标识符标记。示例性数据集c中的二进制数每个都有8位,这些位存储在标记为位7到位0的列中,在此示例中m=8。每个二进制数的十进制值显示在每行的右侧。在这个例子中要查找的最小二进制数的期望量可以被设置为4,即k=4,并且可以理解,图3的数据集中的四个最小数是:(a)存储在第9行中的数字14;(b)存储在第5行的数字56;(c)存储在第1行中的数字88,以及(d)存储在第4行中的数字92。

根据本发明的优选实施例构造和操作的k-mins处理器120可以在大数据集c中查找k个最小二进制数。数据集c中k个最小数的组被称为k-mins集合,它可能有k个数字。k-mins处理器120可以通过扫描从msb(最高有效位)到lsb(最低有效位)的数据集c的列ci并且同时选择其中是0的行cp来继续进行下一步而创建k-mins集合。可以理解,在特定位置(其第i位)具有值0的二进制数小于在相同位置具有值1的二进制数。

所选行的量与目标行k进行比较。如果所选行的量大于k,则由于行数太多,所以k-mins处理器120可以继续扫描已经选择的行的下一位,并且应该进一步减少该集合。(未选择的行可能包含具有较大值的二进制数,因此在计算其余部分不考虑它们)。如果所选行的数量小于k,则k-mins处理器120可以将所选行添加到k-mins集合并且可以继续扫描所有其余二进制数中的下一位。(所选行的量不够多,因此应考虑额外具有较大二进制数的行)。如果所选行的量恰好为k,则k-mins处理器120可以停止其处理,因为k-mins集合可以根据需要包括k个项目。

可以注意到,当k=1时,k-mins集合包含单个数字,它是整个数据集的全局最小值。还可以理解的是,在数据集中可能存在多于一个具有该值的实例,并且该值的第一个实例将被选为k-mins集合的成员。

可以理解的是,k-mins处理器120可以利用其中数据集c的二进制数的位被存储在存储器阵列110中的信息来构建。在图3的示例中,二进制数被显示在行中,其中msb是最左边的位,lsb是最右边的位,而所有其他位都位于其间。此外,存储器阵列110中的二进制数的排列使得数据集c的所有二进制数的第i个位置中的位位于存储器阵列110中的相同行ci中。即,数据集c中所有二进制数的msb可能在同一行,数据集c中所有二进制数的lsb可能位于同一行,中间的所有位也可能位于同一行。

现在参考图4和图5,它们是根据本发明的优选实施例构造和操作的k-mins临时存储设备120的示意图。k-mins临时存储设备120可以包括存储在向量中的中间信息。k-mins处理器120使用的向量是:向量d——临时逆向量;向量v——合格的k-mins标记向量;向量m——候选向量;向量n——临时候选向量,以及向量t——临时成员向量。k-mins区段120中使用的所有向量的大小(行数)是q并且与数据集c中的行数相同。每个向量在每行中存储关于k-mins集合的、与存储在数据集c中的相关行中的二进制数有关的指示,例如作为集合的一部分,作为加入集合的候选等等。可以理解,作为整个数据集的向量物理地存储在存储器阵列110中的行中,但为了清楚绘制为列。

向量d是临时逆向量,其可以包含由k-mins处理器120处理的列ci的位的逆值。如上所述,可以将数据集c的二进制数的位从msb处理到lsb,并且在每个步骤k-mins处理器120可以处理存储器阵列110的另一行i。

向量d是数据集c中处理过的列ci的逆:

d=notci。

向量d中具有值1(即dp=1)的任何第p行可以指示存储在单元(数据集c的第p行)中的原始位的值是0,表示存储在数据集c的第p行中的二进制数可能是参与k-mins集合的候选。类似地,具有值0(即dp=0)的向量d中的所有第p行可指示存储在单元(数据集c的第p行)中的原始位的值为1,表示来自数据集c的相关二进制数可能不是参与k-mins集合的候选,因为它大于来自正在评估的数据集中的其他数字。

向量v是合格的k-mins标记向量,保持数据集c中所有行的列表具有是(已经是)k-mins集合的一部分的二进制数。与算法使用的所有其他向量一样,它是一个q大小的向量,在每一第p行中维护数据集c中的二进制数cp是否属于k-mins集合的最终指示vp

向量v中具有值1(即vp=1)的任何第p行可指示存储在数据集c的同一第p行中的二进制数的值有资格作为k-mins集合成员。类似地,向量v中具有值0(即vp=0)的所有第p行可指示存储在数据集c的第p行中的二进制数没有资格作为k-mins集合的一部分。

因为在计算开始时k-mins集合是空的,所以向量v可以被初始化为全零。在计算结束时,v可以包括k个资格指示(即向量v中的k个位的值可以是1并且所有其他位的值可以是0)。一旦计算过程中向量v中的位vp被设置为1,c中的相关的二进制数cp就是k-mins集合的一部分,并且可能不会停止成为k-mins集合的一部分。向量v中的指示只能设置。在k-mins处理器继续到数据集c中的下一列时,该指示可能不是沿着计算过程进一步“未设置的”。(由于列从msb处理到lsb,被定义为最小的数字可能不会改变其性质,并在处理下一列时变得更大)。

向量m是候选向量,维护数据集c中的具有可能潜在地成为k-mins集合的一部分的数字的所有行的列表。数据集c中的相关联的二进制数字尚未被添加到k-mins集合中,但是它们还没有被从集合中排除,并且可能沿着k-mins处理器120的执行进一步加入集合。如k-mins处理器120使用的所有其他向量一样,它是一个q大小的向量,在每一第p行中维护数据集c中的二进制数cp是否仍然可以被视为加入k-mins集合的候选的指示mp

向量m中具有值1(即mp=1)的任何第p行可以指示存储在数据集c的第p行中的二进制数的值可以是加入k-mins集合的候选。类似地,向量m中具有值0(即mp=0)的所有第p行可以指示存储在数据集c的第p行中的二进制数可能不再被认为是加入k-mins集合的候选。

向量m可以被初始化为全1,因为数据集c中的所有数字可能潜在地是k-mins集合的一部分,因为该集合可能未被排序并且数目可能是随机分布的。

一旦计算过程中向量m中的位mp被设置为0,它就表示c中的相关联的二进制数cp可能不再被认为是k-mins集合的潜在候选,并且该指示可能不会进一步改变沿着计算过程改回,而k-mins处理器120依次继续到下一位来评估。可能不再是候选的二进制数字比其他二进制数字更大,所以它可能永远被排除在进一步评估之外。

向量n是临时候选向量,针对每一第p行维护尚未处于v中的数字cp是否仍可考虑作为加入该k-mins的候选的临时指示np,考虑到根据向量m表示的cp的过去处理位的二进制数的当前候选状态和其逆值可以存储在向量d中的当前处理位的值。n是向量m和向量d的逻辑与。

n=mandd

向量n中具有值1(即np=1)的任何第p行可以指示存储在数据集c的第p行中的二进制数的值仍然是加入k-mins集合的候选。类似地,在向量n中具有值0(即np=0)的所有第p行可以指示存储在数据集c的第p行中的二进制数可能不再被认为是加入k-mins集合的候选。当且仅当二进制数cp先前未从候选中排除(即mp=1),c中的当前检查位为0,即dp=1,np将为1。

向量t是临时成员向量,为每个第p行维护以下临时指示tp:是否二进制数cp潜在地是k-mins集合的成员,即,是否已经在k-mins集合中(在向量v中具有指示)或者是加入k-mins集合的候选(在向量n中具有指示)。t是向量n和向量v的逻辑或。

t=norv

向量t中具有值1(即tp=1)的任何第p行可以指示存储在数据集c的第p行中的二进制数的值可以被认为是k-mins集合的临时成员,并且在向量t中具有值0(即tp=0)的所有第p行可以指示相关的二进制数可能不是k-mins集合的成员。

如上所述,k-mins处理器120可以同时对存储在数据集c中的所有数字cp进行操作,并且可以将它们的位从msb迭代到lsb。它可以从空组(v=0)开始,并可以为数据集中的所有二进制数分配候选状态(m=1)。在k-mins处理器120的每个步骤中,评估列ci的位的逆(d=notc)(以找出k个最大值,评估ci而不是它们的逆值)。如果d的值是0(即=1),则数字cp太大而不能加入k-mins集合并且可能从候选列表n中被移除(n=mandd)。计算候选数量(cnt=count(norv)),并与k-mins组-k的所需大小进行比较。

如果cnt(k-mins集合中的潜在二进制数)小于所需(cnt<k),则所有候选可能变得合格(v=norv),并且搜索可以继续(因为在k-mins集合中没有足够的合格成员)。

如果cnt大于所需(cnt>k),则可以从候选列表中移除当前检查位中具有位值1的所有二进制数(m=n),减少候选数量。剩下的候选可能会继续下一步。

如果cnt符合所需值(cnt=k),则所有候选可能变得合格(v=norv),并且k-mins处理器120的计算可能结束。

现在参考图6,图6是根据本发明的优选实施例构建和操作的k-mins处理器120功能性步骤的流程图。k-mins处理器120的功能性步骤包括:初始化610,循环620,计算向量630,大集合640,小集合650,以及适当集合660。k-mins处理器120的处理步骤也在下文中被提供为伪代码。

初始化610可将向量v初始化为0,因为k-mins集合可以从空集开始,并且可以将向量m初始化为1,因为数据集c中的所有二进制数可以是候选。

循环620可在数据集c的二进制数的所有位上循环,从msb开始到lsb结束。

对于每个处理过的位,计算向量630可以计算临时向量d、n和t,并且可以计算候选的量。可以创建向量d作为第i列的逆,并且从现有候选(在向量m中)创建候选向量n,以及由向量d反映的位i的值,其保持正被处理的位的逆值。向量t可以被计算为由向量v反映的k-mins集合的当前成员与创建的候选向量n之间的逻辑或。向量t中候选的数量可以被计数,如下文将进一步描述的。

如果候选数量大于所需,则大集合640可以更新候选向量m并且可以继续下一位。如果候选数量小于所需,则小集合650可以将新候选添加到成员向量v并且可以继续下一位,并且如果候选数量是根据需要的话,则适当集合660可以更新合格标记向量v并且可以退出循环,即使计算没有达到lsb。

图7-11是根据本发明的优选实施例构建和操作的k-mins处理器120对图3的示例性数据集的计算步骤以及算法的每个步骤中的结果向量的内容的示例的图示。如前所述,在这个示例中设置的k-mins的所需的大小设置为4。

图7是数据集c的内容的图示,其中每个数的十进制值使得计算结果清楚,并且向量v和m的内容在其初始化后分别为0和1。

图8是k-mins处理器120在msb(在数据集c的示例中为位数7)上进行迭代之后不同向量的状态的图示。向量d可以包含数据集c的第7列的逆值。然后可以将向量n计算为向量m和向量d的逻辑与运算。然后可以将向量t计算为向量n和向量v的逻辑或运算,并计算t中的指示数。计数的值是5,其比示例中所需的k值4大。在这种情况下,向量m被更新为n的值,并且算法继续到下一位。类似地,图9是k-mins处理器120在下一位(在数据集c的示例中为位数6)上进行迭代之后不同向量的状态的图示。如能够看出的,图9中的计数的值是2,其比所需的值k=4小。在这种情况下,向量m被更新为n的值,并且算法继续到下一位。

图10是k-mins处理器120在位数为5的下一位上迭代之后的不同向量的图示。向量d可以包含数据集c的列5的逆值。向量n可以如前所述,被计算为向量m和向量d的逻辑与运算。向量t然后可以被计算为向量n和向量v的逻辑或运算,并且具有值“1”的位的数量被计数。计数值为4,这是所需的集合大小,因此v用t的值更新,算法结束。此时向量v在所有行中包含标记(位值“1”),表示数据集c中的一个小数字,并且可以理解,正确的数字由向量v指出。

在该示例的数据集中,恰好有4个具有最小值的二进制数,并且它们可以在3次迭代之后由k-mins处理器120找到,尽管每个二进制数的位数是8。可以理解处理复杂度受限于二进制数的位数,而不受数据集大小的限制。

当二进制数在数据集中不止一次出现时,k-mins处理器120可达到数据集中二进制数字的最后一位,并且找不到确切地k个项目有资格作为k-mins成员。在这种情况下,表示数据集中每个二进制数的唯一索引的附加的一组位可以用作附加最低有效位。由于每个二进制数与唯一索引相关联,所以附加位可以保证为数据集中的每个项目创建唯一值,并且可以在k-mins集合中提供确切量的项目。

现在参考图11,图11是具有二进制数的重复实例的示例性数据集c的图示,使得k-mins集合的大小可以大于k。(在图11的示例中,在第3行和第5行中有两个重复的二进制数,其十进制值是56,在第8、9和10行中有三个重复的二进制数,其十进制值是14。因此,k-mins集合中可以有5个项目,而k为4)。为了减少k-mins集合中的项目的数量,可以用k-mins处理器120处理每个二进制数的索引作为数据集c的二进制数的最低有效位。由于索引是唯一的,只有k个索引将在k-mins集合中。如图11所示,索引位的添加产生具有恰好k=4个成员的k-mins集合。

如上文详述的,根据本发明的实施例构造和操作的k-mins处理器120可以对向量中的指示的数量,即向量t中的设置位进行计数。有多种方式来对向量中的设置位的数量进行计数,其中一个是已知的金字塔计数,它将每个数字与其最近邻数相加,然后将结果与相距两列的结果相加,然后与相距4列的结果相加等等,直到整个向量被计数为止。

申请人已经认识到,可以在2015年1月1日提交并转让给本发明的共同受让人的美国申请14/594,434(现发布为美国专利第9,859,005号)中详细描述的使用rsp信号在关联存储器中实现高效计数。rsp信号可以用于对大向量中的指示的计数所需的位的高效大移位。当向量较大时,可能需要诸如移位16、256、2k等的大移位来提供即时移位,而不是逐位移位操作。

rsp是可以响应于至少一列中的数据候选的肯定识别而生成信号的线或(wired-or)电路。

现在参考图12,其是使用rsp信号来实现使用示例性阵列1200的计数操作的高效移位的一个实施例的示意图。阵列1200可以包括以下列:行1210、向量1220、位置1230、x保持1240、rsp信号1245和rsp列1250。

行1210可以是阵列1200中的行的索引。阵列1200中可以有16行,但是阵列1200可以具有任何数量的行,例如32、64、128、256、512、1024、2k等等。向量1220可以是这样的位的向量:其中来自第n行的位应该被重新定位到第0行,即位置n中的位的值应该被复制到位置0(以便例如将其添加到另一列的第0行中的位)。在每一行中,该位的值可以被标记为“y”,除了存储在行n中的值,该值是要被移位的值,其被标记为“x”。向量1220的所有位可以具有值“0”或“1”。位置列1230可以是在所有行中具有值“0”的列,除了在第n行中,从该行对其中该值被设置为“1”的位(标记为x)进行移位。x保持1240可以是向量1220的值与位置1230之间的布尔与运算的结果。x保持1240可以保持存储在向量1220的第n行中的值x,并且可以使向量1220的所有其他行的值为空。

rsp信号1245是在x保持的1240的所有单元上执行的或运算的结果,并且可以具有值x。可以理解,由于x保持1240的所有位的值是“0”,除了存储在第n行中的值x,所以x保持1240的所有单元上的或布尔运算的值将是值x。单元rsp信号1245中接收到的值可以进一步写入到rsp1250的所有单元中,包括单元0,有效地将来自第n行的值x移位至第0行。

上文描述的k-mins算法可以由k最近邻居(k-nn)数据挖掘算法使用。在k-nn中,d可能代表包含q个对象的大数据集(q极大)。dp是数据集d中的一个对象:dp∈d,a是要分类的对象。一个对象由一个数值属性向量定义:a由n个属性的向量[a0,a1,…an]定义,dp由具有相同的n个属性的向量定义。在引入的对象a与数据集d中的每个对象dp之间计算在对象a和对象dp之间的距离,即m位的二进制数cp。距离cp可以表示两个非零向量之间的余弦相似度。本领域中已知的余弦相似性将每对向量与标量关联,并且称为向量的内积。

余弦距离可以使用以下公式计算:

在对象a和数据集中的每个对象dp之间计算距离cp,并将其作为二进制数存储在大数据集c中。k-mins算法可以在恒定时间内在c中找到代表a的k个最近邻居的k个最小二进制数。

可以理解的是,完成k-mins算法计算所需的步骤的数量(例如由k-nn算法使用)仅取决于存储在数据集中的对象的大小(组成表示a与数据集中的对象之间的距离的该二进制数的位的数量,即m),而不是可能非常大的数据集中对象的数量(q)。算法的计算可以同时在数据集的所有行上完成。还可以理解的是,向数据集添加任何对象都不会延长k-mins处理器120的处理时间。如果用在在线应用中,则来自数据集的对象的取回时间可以随着数据集增长而保持相同。

可以理解的是,可以通过在将当前查询的结果返回给用户之前开始计算下一个查询来改进使用上述本发明的查询的吞吐量。还可以理解的是,k-mins处理器120可以通过向每个二进制数字添加数字指示来标记其中对象已经从候选状态改变为合格状态的迭代标识符来创建项目的有序列表而不是集合。由于较小的二进制数比较大的二进制数更快地变得合格,所以较小的二进制数的迭代标识符也可以小于数据集c中较大的二进制数的标识符。

除非另外具体说明,否则如从前面的讨论中显而易见的,应当理解,在整个说明书中,k个最小数量的讨论经必要修改后适用于k个最大数量,反之亦然,并且也可以被称为极端数量。

申请人已经认识到可以利用k-nn过程来提高诸如语音识别、图像和视频识别、推荐系统、自然语言处理等众多领域中的分类器和识别系统的速度。申请人还认识到,根据本发明的优选实施例构造和操作的k-nn算法可以用于之前未被使用的领域,因为它提供了o(1)的优良计算复杂度。

现在参考图13,其图示了可以在某一点上使用k-nn算法进行分类的大量数据挖掘案例的事件的流程。系统1300可以包括用于从输入信号1310提取特征1330的特征提取器1320以及用于生成输入信号1310中的项目的识别和/或分类1350的k-nn分类器1340。

信号1310可以是图像、语音、文档、视频等。对于图像,特征提取器1320可以是学习阶段等中的卷积神经网络(cnn)。对于语音,特征1330可以是美尔频率倒谱系数(mfcc)。对于文档,特征可以是信息增益(ig)、卡方(chi)、互信息(mi)、计算的ng-goh-低系数值(ngl)、计算的galavotti-sebastiani-simi系数值(gss)、相关性分数(rs)、msfdf、文档频率的词频(tfdf)等等。所提取的特征可以存储在k-nn分类器1340可以在其上操作的诸如图1的存储器计算设备100的设备上。分类1350可以是项目的预测分类,例如图像识别,或图像信号的分类;语音检测,或音频信号的噪声消除;文档信号的文档分类或垃圾邮件检测;等等。

例如,可以理解,cnn网络可以使用分类已知的项目的训练集合开始学习。在短暂的学习时间之后,观察到网络的第一次收敛。学习阶段通常会持续数小时和数天,以实现稳定可靠的网络的完全收敛。

根据本发明的优选实施例,可以在收敛开始后立即停止学习,并且可以在达到完全收敛之前将网络存储在该“过渡”状态中。

根据本发明的优选实施例,使用处于其“过渡”状态的网络计算的训练集的激活值可以被定义为训练集的每个项目的特征1330,并且可以连同每个这样的项目的分类一起存储。可以理解的是,特征可以被归一化,即每个项目的所有激活的平方的总和可以被设置为总和达到1.0。

当接收到要分类的新项目时,使用处于其过渡状态的网络对该项目执行cnn,并且使用所存储的特征的k-nn过程可以用于对新项目进行分类。新项目的k-nn分类可以通过计算新对象的特征集合与数据库中的项目之间的余弦相似度并且用k个最近邻居的类对新项目进行分类来执行,如上文详细描述的。

可以理解的是,使用上文描述的k-mins方法的k-nn算法可以代替标准cnn的最后部分。

应该理解,k-nn算法的添加可以利用部分训练的神经网络提供高分类准确度,同时显著减少训练周期时间。

将cnn与k-nn一起用于分类可以替换诸如图像和视频识别、推荐系统、自然语言处理等应用中的网络的完全连接部分。

申请人已经认识到,上文描述的knn过程可以用于自然语言处理(nlp)。

考虑诸如书籍、纸质协议、甚至完整的维基百科之类的长文本。现有技术自然语言处理器(nlp)生成可以询问长文本一组问题并且可以得到正确答案的神经网络。为此,它们使用回归神经网络(rnn)。根据本发明的优选实施例,长文本可以存储在存储器110中,并且具有上文描述的knn过程的关联存储器阵列140可以以o(1)的恒定计算复杂度来回答复杂问题。应当理解,nlp也可以用于语言翻译、恶意软件检测等。

神经网络的输入是键向量,并且输出是值向量,通过输入键与神经网络中的所有其他键之间的相似性搜索在神经网络内部生成。为了回答问题,输出可以作为下一个查询循环回来,根据需要进行多次迭代,直到找到答案。申请人已经认识到,诸如存储器计算设备100之类的关联处理单元(apu)可以执行任何搜索功能(例如,不是精确匹配的余弦相似性),以实现利用神经网络进行自然语言处理所需的所有功能。

端到端存储器网络架构——现有技术

输入表示:故事由句子{xi}组成,其中一组特征向量mi由预先教导的rnn、自动编码器或任何其他方法(例如,k-nn)生成。这些特征存储在神经网络中。然后还使用另一预先教导的嵌入将问题q转换为特征向量(与句子具有相同的维度)。然后神经网络计算相似性,作为q与每个特征mi的矩阵乘法。然后计算softmax算法以得到概率向量。softmax可以在所有神经网络上或在k最近邻居向量上执行。

输出表示:为了生成输出,概率向量与经修改的特征向量ci(典型地与特征mi相同或与其非常相似)相乘。在相乘之后,处理器累加所有n个乘积或仅k个最近邻居以获得输出支持向量(该结果是中间答案,其有助于得到正确答案)。

生成最终预测:将中间答案与原始问题合并为针对另一跳跃的新查询(在模型的多层变体中)或在最后阶段进行(在3次跳跃之后)。然后通过将值向量乘以它们相关联的softmax概率并且然后将所有向量与被称为“关注向量”的一个向量相加来生成预测答案。

关联实现方式

根据本发明的优选实施例,由于存储器计算设备100是完全可扩展的,因此它对文本的大小没有任何限制。该存储器计算设备可以存储数百万个句子。典型的关联存储器服务器卡可以保留数千万个句子,足以存储庞大的数据库。例如,维基百科具有20亿个英文单词。假设这些单词被划分为5亿个句子,则整个维基百科可以存储在30-50个关联存储器服务器中,或者如果使用预先散列化则存储在单个服务器中。根据本发明的优选实施例并且如下文更详细描述的,所有执行步骤并行地对所有句子发生并且具有o(1)复杂度。

存储器计算设备100可以由任何合适的存储器阵列形成,例如,sram、非易失性、易失性以及非破坏性阵列,并且可以形成为多个位线处理器114,每个位线处理器处理字的一位并且每个字存储在关联存储器阵列140的列中,如us9,418,719(p-13001-us)中所讨论的,该专利转让给本发明的共同受让人,并且通过引用方式并入本文。

因此,阵列140的每列可以具有多个位线处理器。这在图14中可见,现在简要参考图14,其示出了阵列140的一部分,其中要处理6个示例性2位字a、b、q、r、x和y。位a1和b1可以沿位线156存储在位线处理器114a中,而位a2和b2可以沿位线158存储在区段114b中。位q1和r1可以沿位线170存储在位线处理器114a中,而位q2和r2可以沿位线172存储在位线处理器114b中。位x1和y1可以沿位线174存储在位线处理器114a中,而位x2和y2可以沿位线176存储在位线处理器114b中。

典型地,对于m位字,可以存在m个区段,每个区段存储该字的不同位。每个区段可以具有有效数量n(例如,2048)个位线,并且因此具有有效数量n个位线处理器。每个区段可以提供位线处理器的行。因此,可以并行处理n个m位字,其中每个位可以由单独的位线处理器并行进行处理。

典型的单元列(例如,单元列150)可以将要处理的输入数据存储在列的前几个单元中。在图5中,字a、q和x的位存储在列的第一单元中,而字b、r和y的位存储在列的第二单元中。根据本发明的优选实施例,每列中的剩余单元(在列中可以有20-30个单元)可以留作临时存储装置以在处理操作期间使用。

复用器可以连接位线处理器的行,并且行解码器可以激活每个位线处理器中的适当单元。如上文所述,存储器阵列中的单元的行通过字线连接,并且因此解码器可以激活位线处理器的单元的相关字线用于读取并且激活位线处理器的不同集合中的相关字线用于写入。

对于上文描述的自然语言处理,关联存储器中的数据组织在图15中示出,现在对图15进行参考。存在三个主要区段1410-j,一个部分用于生成结果所需的三次迭代中的每次迭代。每个部分进而可以被划分为三个操作区段,相似性区段1412-j用于计算每列的相似性值,softmax区段1414-j用于计算关于相似性结果的softmax计算,以及值区段1416-j用于确定关注向量或支持答案。应当理解,每个区段的列彼此对齐,不同迭代的列也是如此。因此,对特征x的操作通常将在所有操作中在同一列内发生。

n个输入句子的特征向量或键向量m1i存储在存储器110的部分1412-1中,其中每个特征向量m1i存储在单独的列中。因此,特征向量m10存储在列0中,m11存储在列1中等等,并且每个向量m1i的每个位可以存储在其自己的位线处理器114中。如上文讨论的,特征向量可以是预先训练的神经网络或任何其他向量化的特征提取器的输出,并且可以根据需要是单词、句子、文档等的特征。

与n个输入句子相关联的经修改的特征向量c1i可以具有相同的相关联的mji的值,或者可以以某种合适的方式修改向量中的一些或全部。经修改的特征向量cji可以初始地存储在值区段1416-1中。类似的数据可以分别针对其他迭代j存储在相似性区段1412-j和值区段1416-j中。

对于相似性区段1410-j,存储器计算设备100可以并行地针对每列实现与输入向量qj的点矩阵乘法(或余弦相似性),并且可以存储结果,其可以是在相关联的位线处理器114中输入向量与相似性区段1410-j的每列中的特征之间的距离,如上文讨论的。在转让给本发明的共同受让人并且通过引用方式并入本文的美国专利申请15/466,889中描述了示例性矩阵乘法运算。输入向量可以是针对迭代1的初始问题,并且可以跟随其他迭代j中的问题。

标记向量t可以用于在需要时指定所选列,以忘记或插入并更新新的输入向量,并且可以实现为行1420,可针对所有迭代操作。

维基百科文章“softmax函数”中描述的softmax运算可以在softmax区段1414-j中实现于在相关联的相似性区段1412-j中执行的点矩阵或余弦相似性运算的结果上(通过标记向量t选择的列上)。softmax运算可以基于部分1412的相似性结果来确定每个活动列的发生概率。发生概率具有0和1之间的值并且概率和为1.0。

softmax运算可以包括许多指数运算,其可以实现为泰勒级数近似,其中每个运算的中间数据存储在相关softmax部分1414-j的位线处理器中。

在值区段1416-j中,经修改的特征向量cji可以在其自己的位线处理器114中每次乘以其相关联的softmax值。然后可以产生第一支持答案作为经相乘的cji向量的向量和。在关注操作中,可以在由标记向量t选择的所有列上水平地累加这样的和。可以将由softmax值加权的向量结果(键向量的加权和)提供给控制器,以用于生成针对下一跳跃或迭代的问题。图15示出了初始迭代的初始部分,在存储器阵列110的底部,其中进一步迭代的数据存储在上面的部分中。示出了三次迭代,每次迭代都以输入问题qj和支持或最终答案作为输出。

应当理解,初始问题q1可以由问题生成器使用在存储器计算设备100外部的预先训练的神经网络生成。直到解的剩余问题qj(典型地是第三次迭代但是更多的迭代是可能的)可以是原始向量问题和关注向量的组合。

该组合可以基于具有两个输入向量和一个输出向量的外部神经网络。输入向量是原始问题向量q1,并且前一次迭代和输出的关注是新的向量问题。该神经网络可以通过存储器的位线上的矩阵乘法来实现,或者可以在外部实现。

应当理解,存储在相似性区段1412-j中的初始数据可以是相同的(即,问题qj之间的距离是关于相同数据的)。类似地,存储在值区段1416-j中的初始值数据可以是相同的(即,要乘以softmax值的数据是相同的)。

性能

在所有句子特征存储在存储器中的情况下,矩阵乘法花费查询向量大小的100倍循环时间。假设每个句子最多有10个特征,则对于所有n个句子并行地得到1000个时钟(n可以是数百万)或每个所有n为1μsec(具有1ghz时钟)。softmax花费大约1μsec,并且乘法和累加运算花费4μsec。3次跳跃/迭代花费3x(1+1+4)≈20μsec,每秒实现50000个问题。

现在简要参考的图16中所示的替代系统1500可以包括关联存储器1510,其可以足够大以仅处理单次迭代,以及处理剩余计算的其他元件。

如在先前实施例中,关联存储器1510可以包括用于对特征向量(此处称为“键”)进行操作的相似性区段1512,用于实现softmax运算的softmax区段1514和用于对与特征向量相关联的值进行操作的值区段1516。该实施例可以在恒定时间内执行存储器1510内的所有跳跃。如图16中可见,一些操作发生在存储器1510中,而其他操作发生在存储器1510外部。性能与端到端实现方式大致相同,每个跳跃大约6μsec。

任何长存储器网络的灵活性

应当理解,由于关联处理器使得具有恒定时间的按内容搜索的所有能力在存储器的所有位线上并行计算,因此它可以表示各种类型的存储器网络,例如,用于直接阅读文档的键值存储器网络(miller、jason等,emnlp2016)。

虽然本文已经说明和描述了本发明的某些特征,但是本领域的普通技术人员现在将想到许多修改、替换、改变和等同物。因此,应该理解的是,所附权利要求旨在覆盖落入本发明真实精神内的所有这些修改和变化。

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