Supervised Hashing with Kernels, KSH


Notation

該論文中應用到較多符號,為避免混淆,在此進行解釋:

n:原始數據集的大小

l:實驗中用於監督學習的數據集大小(矩陣S行/列的大小)

m:輔助數據集,用於得到基於核的哈希函數

r:比特位數量/哈希函數的個數

1. Introduction

先前的哈希檢索方法,要么精度低,要么目標函數過於復雜導致導致訓練慢。在大規模的圖像數據檢索中,這些方法就不太適用。先前的哈希方法都是對漢明距離進行直接優化,但是因為漢明距離是nonconvex和nonsmooth,難以優化。在本文中,作者利用漢明距離和編碼內積等價的特點,得到了一個非常高效易於優化的目標函數。同時,作者利用的內積的可分性,設計了一個貪婪算法逐比特位得對哈希函數進行求解。此外,為了適應線性不可分的數據,作者還應用了基於核的公式。得到了Kernel-Based Supervised Hashing(KSH)。並在CIFAR-10和TINY數據集上與無監督、半監督、監督等多種哈希方法進行比較,證明了KSH具有最好的表現。

2. Kernel-Based Supervised Hashing

2.1 Hash Functions with Kernels

論文利用基於核的哈希函數,解決了原始數據線性不可分的問題。對應的哈希函數如下:

屏幕快照 2018-10-06 下午8.22.04

該哈希函數由Kernelized Locality-Sensitive Hashing(KLSH)推導而來。查閱了下這篇文獻,整個核哈希函數的推導過程大致如下:兩個數據點間的相似性可由向量內積\(sim(x_i, x_j) = (x_i^{T}x_j) / (||x_i||_2||x_j||_2)\)來表示,為了解決原始數據的線性不可分問題,KLSH引入了核函數,於是得到了:

屏幕快照 2018-10-06 下午8.30.03

之后,經由均值、方差、特征值分解等等一系列的代數變換,得到了上述基於核的哈希函數。

In order to maintain efficiency and to maintain sublinear time searches, we want p to be much smaller than n. For example, \(p = O(\sqrt n)\)would guarantee that the algorithm maintains sublinear search times.

為了確保線性的搜索速度,KLSH中建議m(p)的的取值為\(O(\sqrt n)\)

2.2 Manipulating Code Inner Products

在監督學習中,通過類別標簽信息,原始數據集\(X\)可以划分為\(M\)\(C\)兩個集合,其中\(M\)中的數據點都是相似的,\(C\)中的數據點都是不相似的。通過對\(X\)進行部分采樣,取\(l\)個樣本構造相似矩陣\(S\)如下:

屏幕快照 2018-10-12 上午11.56.57

我們的目標是通過相似矩陣優化得到具有局部敏感特征的哈希函數,但是直接對漢明距離\(D_h(x_i,x_j)=|{k|h_k(x_i)≠h_k(x_j),1≤k≤r}|\)進行優化在數學上是難以求解的。因此,論文采用了code inner products來進行優化。code inner products可以如下表示:

屏幕快照 2018-10-12 下午12.07.52

由於r為碼長是個常熟,因此從上式可以看到code inner products等價於漢明距離,存在一一映射的關系,我們可以通過優化code inner products的方法進而優化漢明距離。得到目標函數如下:

屏幕快照 2018-10-12 下午12.12.20

其中矩陣\(H\)表示向量\(x\)的哈希編碼。接着再通過引入2.1節中的核哈希函數,得到最終目標函數如下:

屏幕快照 2018-10-12 下午12.16.39

2.3 Greedy Optimization

通過簡單的代數變換,可以得到目標函數如下:

屏幕快照 2018-10-07 上午11.03.05

其中\(a_k\)為第k個哈希函數。在優化時,逐比特位得進行優化,即先優化\(a_1、a_2 ... a_{k-1}\),然后再之前的基礎上再優化\(a_k\)。在此定義一個殘差矩陣為:

屏幕快照 2018-10-07 上午10.33.38

顯然,有\(R_0 = rS\)。因此,哈希函數可以通過最小化如下損失函數進行求解:

屏幕快照 2018-10-07 上午10.36.20

通過去掉常數項,可以得到哈希函數\(a_k\)的目標函數為:

屏幕快照 2018-10-07 上午10.38.05

Spectral Relaxation:因為此時的目標函數時非凸的,難以進行優化,因此論文應用了Spectral relaxation trick的方法,去掉了sgn函數,得到目標函數如下:

屏幕快照 2018-10-07 上午10.53.22

顯然,通過變換,我們可以得到一個廣義特征值問題\(K_l^TR_{k-1}K_la = \lambda K_l^TK_la\)。通過求解最大特征值對應的特征向量,並進行適當的尺度縮放以滿足限制條件,我們可以得到\(a\)的解。但是,這個方法在l非常大時,優化結果不理想,因此KSH僅將這部作為\(a_k\)的初始化選擇。

Sigmoid Smoothing:通過用sigmoid函數替換sgn函數,我們可以對目標函數進行優化。之后通過牛頓梯度下降方法,可以得到\(a_k\)的最優解(局部)。

算法流程如下:

屏幕快照 2018-10-07 上午11.00.26

在算法運行時,先初始化\(R_0 = rS\),在這個基礎上逐步對\(a_1、a_2 ... a_k\)等進行優化。因為有着Spectral Relaxing中限制條件屏幕快照 2018-10-07 上午10.41.49的約束,因此在一開始對\(a_1\)進行優化時,經由廣義特征值求解、梯度下降之后得到的哈希函數\(a_1\)不會使得\(R_0 = rS\),優化結果只與\(a_1\)本身相關,和其他哈希函數無關。

從本質上看,\(rS\) 的信息是由r個哈希函數組合而成的,且哈希函數之間互相獨立不相關。因此,在對\(a_1\)進行優化之后,我們可以從\(rS\)中去除掉哈希函數\(a_1\)相關的信息,繼而對剩下的哈希函數進行優化。整個算法的思想不是直接對全局的目標函數進行優化,而是盡可能貪心地、逐比特位進行優化,這也是為什么算法稱為Greedy Optimization的原因(個人理解)。

3. Experiments

在對查詢點進行查詢時,將漢明距離小於一定距離的圖像作為查詢結果返回。

  • metric distance neighbors

    當距離小於一定閾值時,即認為兩個數據是相似的。

  • semantically similar neighbors

    只有當兩個屬於的標簽一致時,才認為兩個數據是相似的。具有更強的置信度。

  • Hashing table的構造

    個人理解:m個數據,經過c個哈希函數映射后,得到矩陣\(H∈R^{m*c}\),矩陣H的第i行代表第i個數據對應的哈希編碼,矩陣的第j列代表哈希表的第j個bucket。

評價標准:

  • precision

    對於一個查詢,返回了一系列的文檔,正確率指的是返回的結果中相關的文檔占的比例,定義為:precision=返回結果中相關文檔的數目/返回結果的數目。

  • recall

    召回率則是返回結果中相關文檔占所有相關文檔的比例,定義為:Recall=返回結果中相關文檔的數目/所有相關文檔的數目。

  • mAP

    正確率只是考慮了返回結果中相關文檔的個數,沒有考慮文檔之間的序。對一個搜索引擎或推薦系統而言返回的結果必然是有序的,而且越相關的文檔排的越靠前越好,於是有了AP的概念。對一個有序的列表,計算AP的時候要先求出每個位置上的precision,然后對所有的位置的precision再做個average。如果該位置的文檔是不相關的則該位置 precision=0。

  • the success rate of hash lookup

屏幕快照 2018-10-06 下午9.38.32

4. Conclusions

KSH算法具有以下三個優點:

  • 利用核函數解決了原始數據不可分的問題;
  • 設計了一個基於coder inner products的目標函數,易於優化;
  • 利用貪心算法逐比特位得求解方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM