Post Tuned Hashing,PTH

[ACM 2018] Post Tuned Hashing_A New Approach to Indexing High-dimensional Data [paper] [code]git

Zhendong Mao, Quan Wang, Yongdong Zhang, Bin Wang.github

1. Overcome

  • 大多数哈希方法都有二值化过程,二值化加速了检索过程,但同时难以免得也破环了原始数据的相邻结构。

2. Contribute

  • 提出了新的哈希方法——PTH,包含三个阶段:projection,binarization和post-tuning。其中post-tuning阶段能够在利用任意哈希方法获得哈希二值编码以后,再独立得进行post-tune处理以重建被二值阶段破坏的数据相邻结构,以改善算法表现。
  • 为post-tuning算法提出了一个out-of-sample扩展,使得PTH算法能够处理训练数据集以外的数据,如测试集。
  • PTH在五个数据集的测试表现超过的全部的state-of-the-art算法。

3. Algorithm

3.1 POST TUNED HASHING

以前的哈希方法大都有projection和binarization两个阶段,这些two-stage的方法大都会形成neighborhood error。咱们能够定义neighborhood error以下:
\[ L = ||S-V||_{F}^{2} \]
其中, S, V分别是原始数据X和二值编码B的类似矩阵,其中\(ij-th\)个元素代表对应第i个数据和第j个数据是否类似。算法

Post Tuned Hashing(PTH)的post-tuning过程:\(R:\{-1,1\}^m \to \{-1, 1\}^m\),能够改善二值编码,使得neighborhood error最小化:
\[ PTH(X) = R(H(X)) \]
在post-tuning过程当中,H(X)能够利用任何哈希方法产生。所以,PTH能够很是简单得应用于普遍的哈希方法中以改进其二值编码表现。函数

3. 2 Overall Framework

矩阵S表示原始数据X间的类似信息,其具体定义以下:post

V表示原始数据X对应的二值编码B间的类似信息,其具体定义以下:
\[ V_{ij} = (b_i · b_j )/ m \]
此时,将neighbood error改写为:
\[ L = ||S-\frac{1}{m} B^TB||_{F}^2 \]学习

定义Upost-tuning matrix,且Z=H(X),此时,目标函数为:测试

矩阵U中的每个元素表明Z中对应位置的元素是否须要更新以获得更小的neighborhood error。PTH方法最终获得的改善后的哈希编码为:B=U ○ Z。编码

3.3 Optimization Algorithm

Observation:目标函数中的全部二次项都是常数(取值只为1/-1),所以最小化目标函数等同于最小化全部线性项。spa

\(\gamma=1/m\),则目标函数变为:code

上述目标函数关于矩阵第p行的表示为:

令z_p为矩阵Z第p行的行向量,Q = Z*Z^T。则上述目标函数变为:

令矩阵\(C=Q○(S - \gamma O)\),则目标函数的线性项关于矩阵U第p行第q列的元素\(u_{ij}\)的结果为:

所以,对于元素\(u_{ij}\),最小化Q(U)即最小化上式,且其能够被认为是元素\(u_{ij}\)的权重。当这个权重小于0时,咱们将\(u_{ij}\)设为1,大于0时则设为-1。

Updating strategy:在每次更新时,当且仅当\(u_{ij}\)的权重绝对值大于一个阈值\(\eta\)时对其进行更新,在实验中,阈值\(\eta\)被设置为全部权重的均值。mean absolute value of projecttion results。为了增长计算效率,可使用同一个矩阵C对U的每一行进行更新,所获得的表现和elementi-by-element的结果相似。

Pruning strategy:在算法中仅对projection results(未二值化处理)中值接近0或则小于一个阈值\(\delta\)的元素进行更新,由于只有这些元素才有较大的几率而二值化到错误的编码。阈值\(\delta​\)被设置为mean absolute value of projection results

在论文的代码中,并无利用到\(\eta\)。只要\((\sum_ku_p^kC_q^k)u_{ij}<0\),就对\(u_{ij}\)取反。符合最小化目标函数的思想。

3.4 Out-of-Sample Post-Tuning

PTH在post-tuning阶段能够改善数据X的二值编码,使其更好得保留原有数据的相邻结构。可是咱们还须要对不在数据集X中的数据( 查询图片)进行测试。咱们称X为skeleton points。完整的post-tuning阶段包含两个步骤:

  1. 对skeleton points进行post-tune处理;
  2. 对out-of-samples进行post-tune进行处理使得其二值编码可以和X保持一致。

假设q为out-of-sample,\(z^q\)为q的原始二值编码,则q的post-tuning过程为:

其中\(S^q​\)为q和X的相邻信息矩阵,B为X的post-tuned编码。post-tuning过程和哈希函数的学习过程时独立的,所以skeleton points X能够和哈希函数所用的训练集不一样,且后续实验代表,一小部分的数据集X就可使得post-tuning过程达到很好的效果。

相关文章
相关标签/搜索