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,球哈希的更多相关文章
- double hashing 双重哈希
二度哈希(rehashing / double hashing) 1.二度哈希的工作原理如下: 有一个包含多个哈希函数(H1……Hn)的集合.当我们要从哈希表中添加或获取元素时,首先使用哈希函数H1. ...
- Consistent hashing —— 一致性哈希
原文地址:http://www.codeproject.com/Articles/56138/Consistent-hashing 基于BSD License What is libconhash l ...
- hash环/consistent hashing一致性哈希算法
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的 ...
- 哈希学习(2)—— Hashing图像检索资源
CVPR14 图像检索papers——图像检索 1. Triangulation embedding and democratic aggregation for imagesearch (Oral ...
- Hashing图像检索源码及数据库总结
下面的这份哈希算法小结来源于本周的周报,原本并没有打算要贴出来的,不过,考虑到这些资源属于关注利用哈希算法进行大规模图像搜索的各位看官应该很有用,所以好东西本小子就不私藏了.本资源汇总最主要的收录原则 ...
- 一致性哈希算法(consistent hashing)(转)
原文链接:每天进步一点点——五分钟理解一致性哈希算法(consistent hashing) 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网 ...
- 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论
1. 引言 - 近似近邻搜索被提出所在的时代背景和挑战 0x1:从NN(Neighbor Search)说起 ANN的前身技术是NN(Neighbor Search),简单地说,最近邻检索就是根据数据 ...
- 一致性哈希算法学习及JAVA代码实现分析
1,对于待存储的海量数据,如何将它们分配到各个机器中去?---数据分片与路由 当数据量很大时,通过改善单机硬件资源的纵向扩充方式来存储数据变得越来越不适用,而通过增加机器数目来获得水平横向扩展的方式则 ...
- 一致性哈希java实现
值得注意的点 哈希函数的选择 murmur哈希函数 该函数是非加密型哈希,性能高,且发生哈希碰撞的概率据说很低 md5 SHA 可以选择guava包,提供了丰富的哈希函数的API 支持虚拟节点+加权, ...
随机推荐
- kubernetes备份和恢复
kubernetes备份和恢复 备份etcd数据 首先由于ETCD有三个备份,并且会同步,所以您只需要在一台master机器上执行ETCD备份即可. 另外在运行下列命令前,确保当前机器的kube- ...
- MySQL数据类型字节长度
1.字符串 char(n): n 字节长度 varchar(n): 如果是 utf8 编码, 则是 3 n + 2字节; 如果是 utf8mb4 编码, 则是 4 n + 2 字节. 2.数值类型: ...
- PHP7.0新特性
http://blog.csdn.net/h330531987/article/details/74364681 反射 闭包 trait 还有数组
- Python2.7-tarfile
tarfile模块,读写 tar 压缩文件,包括用 gzip 或是 bz2 压缩的文件(如tar.bz2.tar.gz),一般使用 TarFile 类完成操作 1.模块方法 tarfile.is_ta ...
- android java.lang.StackOverflowError
转自:http://hi.baidu.com/424660053/item/bee53a2633870dccddf69a17 最近做项目出现一个java.lang.StackOverflowError ...
- Kafka 集群部署
kafka是一个分布式消息队列,需要依赖ZooKeeper,请先安装好zk集群 kafka安装包解压 $ -0.9.0.1.tgz $ -0.9.0.1 /usr/kafka $ cd /usr/ka ...
- 20155306 白皎 《网络攻防》 EXP7 网络欺诈技术防范
20155306 白皎 <网络攻防> EXP7 网络欺诈技术防范 问题回答 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内的攻击以及连接公众场所的共享wifi (2)在日常 ...
- cmake源码包安装后的卸载问题
cmake源码包安装 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程),具体学习请移步官网CMake 本文介绍的就是用cmake去安装的别人的包. 一般流程: ...
- 20155327 李百乾 Exp7 网络欺诈防范
20155327 李百乾 Exp7 网络欺诈防范 基础问题回答 (1)通常在什么场景下容易受到DNS spoof攻击 就此次试验来看,被收到NDSspoof攻击,首先要被攻击机扫描,并被设置为目标,所 ...
- 汇编 EBP ,ESP 寄存器
知识点: CALL框架 EBP寄存器 栈底指针 ESP寄存器 栈顶指针 一.EBP栈底指针 EBP是一个特殊的寄存器,通过EBP+偏移量 可以访问CALL里边的局部变量.它的低16位叫BP ...