LSH(Locality-Sensitive Hashing) #
Date: 2015/7/25
LSH可看作是一种降维的方法,将图片映射到一组不长的hash码中,以hash码代码图片的像素特征,在上面做类似KNN的相似图片查询。
LSH的一个基础结构是满足下面两个条件的hash函数:
- 如果$d(x, y) \le d1$, 则$h(x)=h(y)$的概率至少为$p1$;
- 如果$d(x, y) \ge d2$, 则$h(x)=h(y)$的概率至多为$p2$;
LSH称上述的hash函数为$(d1,d2,p1,p2)$ - sensitive
由上述基本结构,可以生成LSH family,简单的说,是可以通过一定的变化,使d1, d2, p1, p2做一些定向的改变。LSH family
-
Jaccard distance: $(d1, d2, 1-p1,1-p2)$ - sensitive
-
Hamming distance: $(d1,d2,1-d1/d,1-d2/d)$ - sensitive
-
Cosine distance: $(d1,d2,(180-d1)180,(180-d2)/180)$ - sensitive
-
normal Euclidean distance: $(a/2,2a,1/2,1/3)$ - sensitive
-
AND操作
-
OR操作
LSH在查找中的应用 #
目前就理解到一种方法:将样本扔到桶里去,比如生成L位的hash,那么就有了$2^L$个桶,将待查样本转化为hash后,直接去对应桶中遍历找出前K个相似的样本即可。桶中样本可再次使用hash或别的方式查找。
使用这种Hash方式查找最近邻,可降低查找样本数,分为了$\frac{1}{2^L}$
Categories: 图像查找