最新更新时间:2018.4.17 17:53
最近看了Eduardo Pérez-Pellitero 的AIS超分辨方法,里面用到 Spherical_Hashing的结构用于KNN搜索。
一开始并不清楚球哈希到底怎么建立的,看了原论文做个小总结。Spherical Hashing
球哈希是什么呢?一般哈希方法都有哈希函数对不对?球哈希的哈希函数长这样:
也就是说球哈希函数描述了数据空间的k个球,球心分别是Pk,半径分别是tk。(Pk,tk也是球哈希里最重要的参数,怎么设置呢?后面说。)
那么对于定义K个球的球哈希,最后的hash code就是长度为k的-1/+1字串,每一位分别表示样本是否属于某个球。
球哈希区别于其他哈希算法的最大不同是,其他哈希基于超平面对原始数据进行划分,但球哈希是基于一个一个球的。
看图说话:
那么球哈希对比于基于超平面划分的哈希算法有什么优势呢?
答案是,球哈希划分的区域是封闭且更紧凑的。
至少三个超平面才可画出一个封闭区域,而球哈希只要一个。
而且每个区域内样本的最大距离的平均值会更小,说明各个区域的样本是更紧凑的。这样更符合邻近的含义啊,更适合在进行相似搜索时使用。
注意C个超球体划分出的有界区域个数高达