球哈希(Spherical Hashing)
Posted cslaker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了球哈希(Spherical Hashing)相关的知识,希望对你有一定的参考价值。
1. Introduction
在传统的LSH、SSH、PCA-ITQ等哈希算法中,本质都是利用超平面对数据点进行划分,但是在D维空间中,至少需要D+1个超平面才能形成一个封闭、紧凑的区域。而球哈希方法利用超球面(hypersphere)对数据进行划分,在任何维度下,只需要1个超球面便可形成一个封闭的区域。利用球哈希方法,每个区域内样本的最大距离的平均值会更小,说明各个区域的样本是更紧凑的。这样更符合邻近的含义,更适合在进行相似搜索时使用。
2. Binary Code Embedding Function
球哈希的函数族$H(x) = (h_1(x), h_2(x), h_3(x), ... h_L(x))$。L为哈希编码的位数,其中每个哈希函数事实上就是一个超球面,每个超球面将空间划分为球内和球外两部分。哈希函数如下:
其中,$p_k$和$t_k$分别为球心和半径,$d(p_k, x)$表示点x与球心$p_k?$之间的欧式距离。如果点到球心的距离大于半径,则编码为-1,否则编码为1。
为了比较基于超平面的区域和基于超球面的区域,不同紧凑性对结果的影响,论文作了如下两个实验:
左图中的Y轴表示在相同的编码下的哈希空间里,数据点中最大距离的平均值,X轴为不同的码长。实验结果曲线表明了基于超球面形成的区域更加紧凑,利用较少的码长便可对原始数据进行很好的编码;右图的Y轴为在相同的编码下,所对应的原始空间中数据点的最大距离,X轴为两个数据点的编码中,相同比特位均为+1的个数。实验结果除了超球面区域紧凑性的验证之外,还表明了如果两个数据点具有越多的相同特征,那么这两个数据点距离越近(越相似)。
对于右图的实验结果,个人直观的理解便是假设有类别A具有a、b、c三个特征,如果数据$x_1$和$x_2$均具有这三个特征(对应比特位均为+1),那么我们大致可以判定$x_1$和$x_2$均属于类别A;但是如果$x_1$和$x_2$均不具有这三个特征(对应比特位均为-1),那么我们只能确定$x_1$和$x_2$均不属于类别A,但是无法得出$x_1$和$x_2$是否属于同类的结论。
3. Distance between Binary Codes
传统的哈希方法使用汉明距离作为衡量数据点中距离的方法,但是汉明距离无法对区域紧凑性进行很好的表征。因此,在球哈希方法中,使用了新的距离度量方法Shpherical Hamming distance,SHD:
其中,分子为两个编码中对应比特位不同的个数,分母则为对应比特位均为+1的个数。显然,当两个数据对应比特位均为+1的个数越多时,其对应的SHD距离越小,反之则越大,很好得体现了利用了基于超球面的区域紧凑型的特点。
4. Independence between Hashing Functions
球哈希方法中同样也对哈希函数的平衡性和独立性进行了限制。
平衡性:
独立性:
具体的图示如下:
5. Iterative Optimization
在初始化时,从原始数据集中生成一个m大小的子集S,在子集S中随机选择C个数据点作为初始球心,初始球心的选择应该能大致反应数据集在空间中的分布情况,以减少后边的优化开销。在球心选择后,根据平衡性和独立性的限制便可得到半径。之后,球哈希函数训练可分为两个阶段。
第一阶段:根据平衡性的限制,调整球心,使得$O_{i,j}$的值尽可能接近$4/m$。在此过程中,定义了两个球心的作用力如下所示:
为了满足平衡性的条件,当两个球的重合过多时,应产生排斥力将其分开;当两个球距离过远时,应产生吸引力使得互相靠近。而上述公式的原理便是通过利用$(O_{i,j} - m/4)$和$(p_i - p_j)$的符号正负关系实现排斥力和吸引力。而分母中的$4/m$是为了保证力的大小不受数据集大小m的影响。
第二阶段:当球心通过作用力更新位置完毕后,我们通过独立性的限制来调整半径$t_k$的大小。
在第一阶段中,理想情况是$O_{i,j}$的均值和标准差分别为$m/4$和0,但是这样容易产生过拟合,因此我们对均值和标准差设定了两个阈值——10%和15%,在这两个阈值下,算法具有最优的表现。
综述,整个球哈希算法的过程如下所示:
以上是关于球哈希(Spherical Hashing)的主要内容,如果未能解决你的问题,请参考以下文章
转(一致性哈希算法(consistent hashing))