1. 程式人生 > >球哈希(Spherical Hashing)

球哈希(Spherical Hashing)

設定 1的個數 如果 相同 含義 搜索 我們 都是 過擬合

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)