1 高维向量检索问题

高维向量检索主要解决由数据维数增加所引发检索速度急剧下降的的问题。高维空间中数据的特点主要包括以下三个方面:
(1) 稀疏性。随着维度增长,数据在空间分布的稀疏性增强;
(2) 空空间现象。对于服从正态分布的数据集,当维数大约增加到10时,只有不到1%的数据点分布在中心附近;
(3) 维度效应。随着维数的增加,对索引的维护效率急剧下降,并且高维空间中数据点之间的距离接近于相等。

2 树索引方法在高维检索中的缺点

传统的树索引方法,如基于数据划分的索引R-tree、R-tree、SR-tree、k-d tree等和基于空间划分的索引quad-tree、kdb-tree等,在特征维度不高的情况下具有良好的性能,在特征维数足够高的情况下(超过几十维),它们的性能会退化到最原始的顺序查找,这就是所谓的“维度灾难”。树索引方法在高维情况下主要面临着三个困难:
(1) 每次划分只使用了特征向量一个维度的信息,在高维情况下这种数据划分方法效率很低;
(2) 需要某种形状的覆盖对象来表示某个区域,而固定形状的覆盖对象对区域的描述会有偏差。在高维情况下这个偏差会更明显;
(3) 为了获得精确最近邻检索的结果,索引的性能退化到顺序查找的程度。

3 ANN和LSH

由于精确最近邻搜索计算代价高、算法效率低,人们采用近似最近邻搜索方法完成检索的任务。当前,在大规模高维数据集上近似最近邻问题最好的解决方案是位置敏感哈希,它将高维向量映射到低维空间,并且以较大的概率使映射前相近的映射后仍然相近。LSH虽然采用近似的方法,不保证得出精确的结果,但是它能以较低的代价返回精确的或接近精确的结果。LSH算法有多种,在不同度量空间及不同相似度量条件下有不同的方案。它们在多种场合得到应用,如计算生物学、音乐识别、图像检索、音乐检索、复制检测、近似重复检测和名词聚类等。
LSH是由Indyk在斯坦福大学和他的导师Motwani 与1998年提出的,主要解决汉明空间的高维搜索问题。
2004年,Datar、 Immorlica和 Indyk在斯坦福大学将p - 稳定分布函数引入LSH,并将LSH的使用范围扩展到欧氏空间。
2005年,Indyk的学生Andoni给出了欧氏空间LSH具体实现方案,并称之为E2LSH。
2008年,Andoni 在麻省理工大学将Leech lattice引入文献的LSH方案,将查询时间和内存消耗降到接近于文献中Motwani给出的下界。
2010年,Andoni在他的博士论文中对LSH相关问题进行了详细描述。

4 LSH原理

基于随机映射的哈希方法——位置敏感哈希,是近年来广泛应用的哈希方法,主要用于信息检索,解决近似最近邻(Approximate Nearest Neighbor, ANN)搜索问题。近似最近邻搜索是在最近邻(Nearest Neighbor, NN)搜索的基础上提出来的。最近邻搜索是信息检索领域的一个基本问题,它在很多领域如数据压缩、数据挖掘、图像集搜索、机器学习、模式识别和统计等都有重要的作用。
当前,在大规模高维数据集上近似近邻问题最好的解决方案是位置敏感哈希。这是因为高维空间的主要特点之一是,随着维数增加,任意两点之间最大距离与最小距离趋于相等,如图 所示。此时,常用的树索引方法将难以达到较好的效果。而LSH是基于随机映射算法,它将高维向量映射到低维空间,并且以较大的概率使映射前相近的点映射后仍然相近。LSH虽然采用近似的方法,不保证得出精确的结果,但是它能以较低的代价返回精确的或接近精确的结果。
高维向量快速检索方法Locality Sensitive Hashing之一汉明空间和欧式空间实现_第1张图片
为了对数据点进行映射,要先建立哈希表。好的哈希表可以使一个点的查询在时间内和内存空间上完成查询,是数据点的数目。哈希表建立以后,LSH用一系列哈希函数对数据点进行运算,使那些比较接近的点对于每个哈希函数发生冲突的概率比距离远的点要大,也就是把比较相近的点哈希到同一个桶。这样,通过对查询点进行哈希并获取它所在桶中的标志就可以进一步得到比较近的邻居。

简单地说,LSH通过多个位置敏感哈希函数将数据点投影到低维空间。如果两个高维数据点在该空间上输出相同的值,则会被认为可能是近邻而散列到同一个哈希桶中。对查询数据点作相同的散列,穷举搜索与查询点发生冲突的哈希桶,将会以较高的概率得到查询点的近邻。由于缩小了查找范围,LSH算法能够在远小于顺序搜索的时间内找到近邻。在数据集规模很大的时候,其优势十分明显。

4 欧式空间实现方案

前面的LSH的哈希函数主要是针对二进制汉明空间中的点的。数据存储在磁盘上的时候,它们比几种基于树的结构在速度上有了很大提高,同时,当需要进行增加和删除操作时,它们也能够扩展到动态数据集上。但它们有一个很重要的缺陷,就是只有输入数据位于汉明空间时,才会达到简单而快速的效果。虽然通过把空间嵌入到空间并把空间嵌入到汉明空间也能把算法扩展到范数,但这在很大程度上增加了算法的查询时间和错误率,也增加了算法的复杂度。
M. Datar等提出了针对欧氏空间的快速解决方案,A Andoni 等人在它的基础上提出了LSH的改进方案E2LSH。该算法不需要嵌入就可以直接工作在欧式空间中的点上,它还可以工作在任何范数上,只要,这被证明当时是唯一的可工作于高维空间中情况的NN问题解决算法。它继承了LSH的两个特点。其一是很适合于维数很高但稀疏的数据点,尤其是当是向量中非零元素的最大数目时,算法的运行时间限会保持不变。该特点是其它空间数据结构所不具有的,使得它可以用于基于颜色的快速图像相似度检索。例如,每幅图像被一个大约维空间中的一个点代替,但每个点中只有大约个点不为零。和线性扫描相比,该方案在速度上能够达到一个或几个数量级的巨大提高。其二是如果数据满足一定的有界增长特性(bounded growth property), 它可以很快的找到精确的近邻。算法能够以固定概率在时间内找到最近的邻居。特别地,如果,运行时间是。
该算法使用的LSH函数族是基于p稳定函数的,p稳定分布是广义高斯分布,满足广义中心极限定理。稳定分布被定义为归一化独立同分布变量和的极限。它的重要性质是稳定性,即具有相同指数的稳定分布随机变量的线性组合仍然是稳定分布随机变量,在经济时间序列、天体运动、信号处理等领域有着重要的作用。对于的任何值都存在稳定分布,特殊的有:柯西分布是1-稳定的,高斯分布是2-稳定的。
E2LSH的每个哈希函数为,在进行哈希运算时,内积把每个向量映射到一条实线上。由p稳定分布定义可知,两个向量投影的距离的分布与的分布相同,服从稳定分布。如果能够把实线以合适的长度进行等长分割,并且根据向量被投影到分割后的哪一段为该向量分配一个哈希值,那么这样的哈希函数应该满足前面位置敏感的描述,如图所示。两个向量在从上述哈希函数族中随机抽取的哈希函数下冲突的概率是可以计算的。
高维向量快速检索方法Locality Sensitive Hashing之一汉明空间和欧式空间实现_第2张图片
详细内容请查看论文近似最近邻搜索算法——位置敏感哈希。