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,球哈希的更多相关文章

  1. double hashing 双重哈希

    二度哈希(rehashing / double hashing) 1.二度哈希的工作原理如下: 有一个包含多个哈希函数(H1……Hn)的集合.当我们要从哈希表中添加或获取元素时,首先使用哈希函数H1. ...

  2. Consistent hashing —— 一致性哈希

    原文地址:http://www.codeproject.com/Articles/56138/Consistent-hashing 基于BSD License What is libconhash l ...

  3. hash环/consistent hashing一致性哈希算法

        一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的 ...

  4. 哈希学习(2)—— Hashing图像检索资源

    CVPR14 图像检索papers——图像检索 1.  Triangulation embedding and democratic aggregation for imagesearch (Oral ...

  5. Hashing图像检索源码及数据库总结

    下面的这份哈希算法小结来源于本周的周报,原本并没有打算要贴出来的,不过,考虑到这些资源属于关注利用哈希算法进行大规模图像搜索的各位看官应该很有用,所以好东西本小子就不私藏了.本资源汇总最主要的收录原则 ...

  6. 一致性哈希算法(consistent hashing)(转)

    原文链接:每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)  一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网 ...

  7. 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论

    1. 引言 - 近似近邻搜索被提出所在的时代背景和挑战 0x1:从NN(Neighbor Search)说起 ANN的前身技术是NN(Neighbor Search),简单地说,最近邻检索就是根据数据 ...

  8. 一致性哈希算法学习及JAVA代码实现分析

    1,对于待存储的海量数据,如何将它们分配到各个机器中去?---数据分片与路由 当数据量很大时,通过改善单机硬件资源的纵向扩充方式来存储数据变得越来越不适用,而通过增加机器数目来获得水平横向扩展的方式则 ...

  9. 一致性哈希java实现

    值得注意的点 哈希函数的选择 murmur哈希函数 该函数是非加密型哈希,性能高,且发生哈希碰撞的概率据说很低 md5 SHA 可以选择guava包,提供了丰富的哈希函数的API 支持虚拟节点+加权, ...

随机推荐

  1. Spring-IOC RootBeanDefinition源码分析

    GenericBeanDefinition是一站式的标准bean definition,除了具有指定类.可选的构造参数值和属性参数这些其它bean definition一样的特性外,它还具有通过par ...

  2. Android设置常见控件点击效果

    一. Imageview的点击效果——图片稍微变暗突出点击效果 public class ClickImageView extends AppCompatImageView { public Clic ...

  3. Json.NET如何避免循环引用

    Json.NET在将对象序列化为Json字符串的时候,如果对象有循环引用的属性或字段,那么会导致Json.NET抛出循环引用异常. 有两种方法可以解决这个问题: 1.在对象循环引用的属性上打上[Jso ...

  4. c# Findwindow sendMessage

    using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServi ...

  5. 20155223 Exp9 Web安全基础实践

    20155223 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 攻击原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定 ...

  6. 20155321 《网络攻防》 Exp2 后门原理与实践

    20155321 <网络攻防> Exp2 后门原理与实践 实验内容 例举你能想到的一个后门进入到你系统中的可能方式? 我觉得人们在平时上网的时候可能会无意识地点击到一些恶意的网站,这些网站 ...

  7. mfc Radio Buttons

    添加单选按钮 关联变量 调试宏TRACE BOOL类型 一.添加一组单选按钮 二.添加第二组单选按钮 三.关联变量 四.单选按钮运用 void CMY_Dialog::OnBnClickedButto ...

  8. 【SP1811】LCS - Longest Common Substring

    [SP1811]LCS - Longest Common Substring 题面 洛谷 题解 建好后缀自动机后从初始状态沿着现在的边匹配, 如果失配则跳它的后缀链接,因为你跳后缀链接到达的\(End ...

  9. Nginx日常报错处理总结

    在Nginx错误日志中,有大量的下列信息: Upstream timed out (110: Connection timed out) while reading response header f ...

  10. L017-linux系统定时任务crond入门小节

    L017-linux系统定时任务crond入门小节 oh my god!how old are you? 怎么老是你?没错,我又来了,哈哈哈,今天是我的生日呢,在这么重要的日子里,必须要更一篇学习小节 ...