近邻搜索方法与系统的制作方法

文档序号:6397783阅读:220来源:国知局
专利名称:近邻搜索方法与系统的制作方法
技术领域
本发明涉及信息检索技术领域,特别是涉及一种近邻搜索方法与系统。
背景技术
随着信息技术的迅速发展,数据采集能力的提高导致各领域数据量和维度都呈指数级增长。然而,数据量和数据维度的迅速增长让搜索变得异常困难。例如,对于一张输入的图片,当我们需要在海量图片库中查找与这张图片相同或相似的图片时,我们不仅要找得准,还要找得快。在这个例子中,我们可以将图像抽象成数据点,数据点之间的相似程度通常可以用欧式距离来衡量,近邻搜索就是指找到与查询数据点在这种相似性度量下的相似数据点。如果将查询数据点与数据库中的所有点一个一个进行比较,虽然可以保证检索精度,但是对于海量高维数据就会变得非常慢。传统的基于树结构的近邻搜索技术如果要得到比较高的准确率,其会随着数据维度的的增高,检索速度迅速下降。

发明内容
基于上述情况,本发明提出了一种近邻搜索方法与系统,以提高近邻搜索的速度,同时保证准确率。一种近邻搜索方法,包括线下学习和线上搜索,所述线下学习包括如下步骤随机均匀选取数据集中的预定数目的数据点作为锚点,通过计算数据点与所述锚点之间的距离得到核矩阵,并中心化该核矩阵;学习预定数目的二进制位的投影和阈值,每一个二进制位的学习包括计算密度和均衡互补信息,使用中心化后的核矩阵及所述密度和均衡互补信息学习出投影和阈值,目标函数是最小化哈希超平面两侧小区域内数据点的个数,并保证桶是近似均衡的;通过中心化后的核矩阵,以及学习出的预定数目的二进制位的投影和阈值,将数据集中的数据点转换成二进制串,将相同二进制串的数据点放置到对应的桶中,建立哈希表;所述线上搜索包括如下步骤对于每个查询数据点使用相同的所述锚点和核矩阵的均值得到查询数据点中心化后的核矩阵。使用查询数据点中心化后的核矩阵,以及学习出的投影和阈值,将每个查询数据点转换成二进制串。根据查询数据点转换的二进制串,在所述哈希表的对应桶中查找出预定数目的数据点,作为查询数据点的近邻。一种近邻搜索系统,包括线下学习单元和线上搜索单元,所述线下学习单元包括
训练点核矩阵确定模块,用于随机均匀选取数据集中的预定数目的数据点作为锚点,通过计算数据点与所述锚点之间的距离得到核矩阵,并中心化该核矩阵;投影和阈值学习模块,用于学习预定数目的二进制位的投影和阈值,每一个二进制位的学习包括计算密度和均衡互补信息,使用中心化后的核矩阵及所述密度和均衡互补信息学习出投影和阈值,目标函数是最小化哈希超平面两侧小区域内数据点的个数,并保证桶是近似均衡的;哈希表建立模块,用于通过中心化后的核矩阵,以及学习 出的预定数目的二进制位的投影和阈值,将数据集中的数据点转换成二进制串,将相同二进制串的数据点放置到对应的桶中,建立哈希表;所述线上搜索单元包括查询点核矩阵确定模块,用于对于每个查询数据点使用相同的所述锚点和核矩阵的均值得到查询数据点中心化后的核矩阵。二进制串转换模块,用于使用查询数据点中心化后的核矩阵,以及学习出的投影和阈值,将每个查询数据点转换成二进制串。哈希桶查找模块,用于根据查询数据点转换的二进制串,在所述哈希表的对应桶中查找出预定数目的数据点,作为查询数据点的近邻。本发明近邻搜索方法与系统,通过最小化哈希超平面两侧小区域内数据点个数的学习函数,使哈希超平面穿过数据的稀疏区域,从而保证近邻搜索的高准确率,通过近似均衡桶条件,给学习函数加上近似均衡桶正则项,使哈希超平面对数据点划分得更均衡,从而保证近邻搜索的高搜索速度。无论是对于少量还是海量数据,本方法与系统都能进行高准确率和高速度的近邻搜索。


图1为本发明近邻搜索方法的流程示意图;图2为本发明近邻搜索方法线下学习的流程示意图;图3为本发明近邻搜索方法线上搜索的流程示意图;图4为本发明近邻搜索系统的结构示意图;图5为本发明近邻搜索系统其中一个实施例的流程示意图。
具体实施例方式本发明是一种基于哈希算法的近邻搜索方法与系统,通过将数据转换成短位数的二进制串,然后建立哈希表来达到高效搜索的目的。由于无论是多少维度的数据,最后都被转换成一个短位数的二进制串(例如0110是一个4位的二进制串),所以基于哈希算法的近邻搜索对维度不敏感,能快速检索高维数据。下面结合附图与实施例详细解释本发明。本发明近邻搜索方法,如图1所示,包括线下学习和线上搜索两步。线下学习过程如图1所示步骤S101、随机均匀选取训练数据集中的若干数据点作为锚点,通过计算训练数据点与这些锚点之间的距离得到核矩阵,并中心化核矩阵。训练数据集,以下简称数据集,是由η个维度为d的数据点构成。例如,可以将一个32*32的灰度图像的所有像素连起来变成一个1024维的向量,这个向量就是一个1024维的数据点;或者也可以对一张图片抽取一个d维的特征,这个特征就是一个d维的数据点。随机均匀选取锚点的目的在于使所选取的锚点不会分布在数据空间中某个集中的区域,也就是说锚点是均匀分布在整个数据空间中的。假设数据集X由η个d维的数据点构成X = [x1;…,xn] e Rdxn,通过随机均匀选取出m个数据点A1,…,Am作为锚点,我们计算核矩阵K :
Zk(Xi^1)…I^(X1An)'
K = I … 丨 j,k ( ·,·)是核函数,这里选择高斯核函数
Vk(xn A1) ·*· k(xn,Am)J k(x, y) = - x-y 2/2。2,m=300, σ是随机选取3000个点的点对距离的平均值。然后
_ Zk(XllA1)-^1 …Κχ1,Δ1τ1)-μηι\ Zk(X1)xX
中心化核矩阵得至ij R=… = _L,
K: Vk(xn,— \ii ··· k(xn,Διη)—\imJ \k(xn)^J
μ =^EJLik(XpAi)0步骤S102、学习若干二进制位的投影和阈值,对于每一个二进制位的学习包括首先计算密度和均衡互补信息,然后使用中心化后的核矩阵和这两种互补信息学习出投影和阈值,其目标函数是最小化哈希超平面两侧小区域内数据点的个数,并同时保证桶是近似均衡的。假设需要学习c个哈希函数来将数据点转换成c位二进制串,那么对于第k个哈希函数.sgn(fk(x)) = sgn(p^k(x) — bk)就需要学习出投影Pk和阈
值 bk 来让目标函数 ΣΓ=1 ^iiSgn (ε - fk(Xi)sgn(ik(Xi))) + ||<_八|丨2 最小,其中4 = 1+ IjtiH(E-1fj(Xi)I)称为密度互补信息,H(x)是单位阶跃函数,
Vk 二 [sgr^fkCxJ),…,sgn(fk(xn))]T, Vk^1 = [1,V1,…,vk_J 称为均衡互补信息,
sgn(x)是符号函数,α和ε是算法输入的参数,这里选择α = O.1, ε = O. Ols ( ε是所有点到一个均分超平面的距离的平均值)。步骤S103、通过中心化后的核矩阵,以及学习出的若干二进制位的投影和阈值,将训练数据点转换成二进制串,将相同二进制串的数据点放置到对应的桶中,建立哈希表。使用c个哈希函数将每个d维的数据点X变成一个c位二进制串,第k个哈希函
数将数据点X变成第k位O或者I的过程是1(1 + sgn(fk(x)))。将所有数据点按照这种
方式都转换成二进制串,将相同二进制串的数据点放到一个桶中(桶的索引就是该二进制串),从而建立哈希表。至此,线下学习已建立了哈希表,使用以上线下学习的结果进行线上搜索即可保证近邻搜索的高准确率和高速度,但为了进一步提高准确率和速度,还可以如图2所示,包括以下步骤
所述步骤S104、对数据集中所有的点(η个点)计算它们两两之间的距离,对每个数据点按照它与其它数据点的距离从小到大排序,就得到该数据点对应其它数据点的一个序列。对每个数据点都取它们对应序列中的前k个点,这样就得到一张nXk的近似最近邻到准确最近邻的对应表,这里k=50。所述步骤S105、对数据集进行主成分分析(PCA),得到PCA降维矩阵(dXd'的矩阵),将数据集乘以这个矩阵得到了数据集降维后的信息(nXd'的矩阵),这里d'在不同数据集上取值需要调整,在GIST-1M上是40,在SIFT-1M上是32。线上搜索过程如图1所示步骤S201、对于每个查询数据点使用相同的锚点得到中心化后的核矩阵。对d维的查询数据点X使用相同的锚点A1,…,Ani和相同的核矩阵均值μ 1;…
,μ m,得到 X 的核矩阵k(x)T = (k(x, A1) — μ1 …k(x,Am)-pm)。步骤S202、使用中心化后的核矩阵,以及学习出的投影和阈值,将每个查询数据点转换成二进制串。使用线下学习出的c个哈希函数和X的核矩阵 ^5_Τ,将X变成c位二进制串,第
k个哈希函数将数据点X变成第k位O或者I的过程是:^(1 + Sgn(fk(x)))。步骤S203、对于每个查询数据点乘以线下·学习出的PCA降维矩阵,得到查询数据点降维后的信息(一个查询数据点对应一个d'维的向量)。根据步骤S202得到的二进制串,在哈希表中找到汉明半径为r的所有桶(汉明半径为r表示桶的索引与步骤S202得到的二进制串允许最多有r位不同,这里r=2),取出这些桶中的数据点。从桶中取出的数据点即可作为查询数据点的近邻,此时的近邻并没有排序,为了对近邻进行排序并进一步提高搜索的准确率和速度,线上搜索还可以如图3所示,包括以下步骤步骤S204、对于每个查询数据点乘以线下学习出的PCA降维矩阵,得到查询数据点降维后的信息(一个查询数据点对应一个d'维的向量)。步骤S205、使用查询点和这些数据点降维后的信息进行距离计算并按距离从小到大排序,然后取前Hl1个数据点进行原始维度的距离计算,再次按距离从小到大排序后取前m2个点。对这m2个点查询近似最近邻到准确最近邻的对应表,每个点取m3个候选点,去掉重复的点后得到了新的候选数据点集合,优选地,Hi1 = 100, m2 = 10, m3 = 50。步骤S206、使用查询点和新的候选数据点降维后的信息进行距离计算并按距离从小到大排序,然后取前Hl4个数据点使用原始维度的距离计算并排序,最终得到查询点的近邻,优选地,m4 = 100。表I和表2分别为本方法使用32位哈希在GIST-1M数据集和SIFT-1M数据集上与Flann kdtree (目前基于树结构的方法中最主流的一种方法,这里取参数nChecks=256)的搜索准确率和搜索时间的对比。GIST-1M是384维100万数据量的数据集,SIFT-1M是128维100万数据量的数据集。表I和表2都展示了 1000个查询点的平均搜索准确率(表中Inn准确率表示找到最近邻的准确率,50nn准确率表示找到前50个近邻的准确率)和总的搜索时间。表I和表2表明本方法在两种不同的数据集上都比Flann kdtree的准确率
高,同时搜索时间少。
权利要求
1.一种近邻搜索方法,其特征在于,包括线下学习和线上搜索,所述线下学习包括如下步骤随机均匀选取数据集中的预定数目的数据点作为锚点,通过计算数据点与所述锚点之间的距离得到核矩阵,并中心化该核矩阵;学习预定数目的二进制位的投影和阈值,每一个二进制位的学习包括计算密度和均衡互补信息,使用中心化后的核矩阵及所述密度和均衡互补信息学习出投影和阈值,目标函数是最小化哈希超平面两侧小区域内数据点的个数,并保证桶是近似均衡的;通过中心化后的核矩阵,以及学习出的预定数目的二进制位的投影和阈值,将数据集中的数据点转换成二进制串,将相同二进制串的数据点放置到对应的桶中,建立哈希表; 所述线上搜索包括如下步骤对于每个查询数据点使用相同的所述锚点和核矩阵的均值得到查询数据点中心化后的核矩阵。使用查询数据点中心化后的核矩阵,以及学习出的投影和阈值,将每个查询数据点转换成~■进制串。根据查询数据点转换的二进制串,在所述哈希表的对应桶中查找出预定数目的数据点,作为查询数据点的近邻。
2.根据权利要求1所述的近邻搜索方法,其特征在于,所述线下学习还包括以下步骤 对数据集中所有数据点进行距离计算并排序,确定每个数据点前预定个准确最近邻,建立近似最近邻到准确最近邻的对应表,所述距离计算并排序的过程为计算数据点两两之间的距离,对每个数据点按照其与其它数据点的距离从小到大排序;对数据集进行主成分分析,得到PCA降维矩阵,并使用该矩阵对数据集进行降维,得到数据集降维后的信息,所述线上搜索还包括以下步骤对每个查询数据点使用所述PCA降维矩阵进行降维,得到查询数据点降维后的信息; 对查询数据点降维后的信息及在所述哈希表的对应桶中查找出的预定数目的数据点降维后的信息进行所述距离计算并排序,对前Hi1个数据点按照原始维度再次进行所述距离计算并排序,取前m2个数据点并查询近似最近邻到准确最近邻的所述对应表,每个数据点取m3个候选点,去掉重复的数据点,得到候选数据点集合;对查询数据点和所述候选数据点集合中的候选数据点降维后的信息进行所述距离计算并排序,取前m4个数据点按照原始维度再次进行所述距离计算并排序,得到查询数据点最终的近邻。
3.根据权利要求2所述的近邻搜索方法,其特征在于,In1取100,m2取100,m3取100, m4 取 100。
4.根据权利要求1或2或3所述的近邻搜索方法,其特征在于,所述哈希表的对应桶为所述哈希表中汉明半径为2的所有桶。
5.一种近邻搜索系统,其特征在于,包括线下学习单元和线上搜索单元,所述线下学习单元包括训练点核矩阵确定模块,用于随机均匀选取数据集中的预定数目的数据点作为锚点, 通过计算数据点与所述锚点之间的距离得到核矩阵,并中心化该核矩阵;投影和阈值学习模块,用于学习预定数目的二进制位的投影和阈值,每一个二进制位的学习包括计算密度和均衡互补信息,使用中心化后的核矩阵及所述密度和均衡互补信息学习出投影和阈值,目标函数是最小化哈希超平面两侧小区域内数据点的个数,并保证桶是近似均衡的;哈希表建立模块,用于通过中心化后的核矩阵,以及学习出的预定数目的二进制位的投影和阈值,将数据集中的数据点转换成二进制串,将相同二进制串的数据点放置到对应的桶中,建立哈希表;所述线上搜索单元包括查询点核矩阵确定模块,用于对于每个查询数据点使用相同的所述锚点和核矩阵的均值得到查询数据点中心化后的核矩阵。二进制串转换模块,用于使用查询数据点中心化后的核矩阵,以及学习出的投影和阈值,将每个查询数据点转换成二进制串。哈希桶查找模块,用于根据查询数据点转换的二进制串,在所述哈希表的对应桶中查找出预定数目的数据点,作为查询数据点的近邻。
6.根据权利要求5所述的近邻搜索系统,其特征在于,所述线下学习单元还包括对应表建立模块,用于对数据集中所有数据点进行距离计算并排序,确定每个数据点前预定个准确最近邻,建立近似最近邻到准确最近邻的对应表,所述距离计算并排序的过程为计算数据点两两之间的距离,对每个数据点按照其与其它数据点的距离从小到大排序;降维矩阵确定模块,用于对数据集进行主成分分析,得到PCA降维矩阵,并使用该矩阵对数据集进行降维,得到数据集降维后的信息,所述线上搜索单元还包括查询点降维模块,用于对每个查询数据点使用所述PCA降维矩阵进行降维,得到查询数据点降维后的信息;候选数据点确定模块,用于对查询数据点降维后的信息及在所述哈希表的对应桶中查找出的预定数目的数据点降维后的信息进行所述距离计算并排序,对前Hi1个数据点按照原始维度再次进行所述距离计算并排序,取前Hl2个数据点并查询近似最近邻到准确最近邻的所述对应表,每个数据点取m3个候选点,去掉重复的数据点,得到候选数据点集合;近邻确定模块,用于对查询数据点和所述候选数据点集合中的候选数据点降维后的信息进行所述距离计算并排序,取前m4个数据点按照原始维度再次进行所述距离计算并排序,得到查询数据点最终的近邻。
7.根据权利要求6所述的近邻搜索系统,其特征在于,In1取100,m2取100,m3取100, m4 取 100。
8.根据权利要求5或6或7所述的近邻搜索系统,其特征在于,所述哈希表的对应桶为所述哈希表中汉明半径为2的所有桶。
全文摘要
本发明公开了一种近邻搜索方法与系统,包括线下学习和线上搜索两部分,通过最小化哈希超平面两侧小区域内数据点个数的学习函数,使哈希超平面穿过数据的稀疏区域,从而保证近邻搜索的高准确率,通过近似均衡桶条件,给学习函数加上近似均衡桶正则项,使哈希超平面对数据点划分得更均衡,从而保证近邻搜索的高搜索速度。无论是对于少量还是海量数据,本方法与系统都能进行高准确率和高速度的近邻搜索。
文档编号G06F17/30GK103020321SQ20131001140
公开日2013年4月3日 申请日期2013年1月11日 优先权日2013年1月11日
发明者钟海兰 申请人:广东搜网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1