LSH中的非空桶

时间:2016-06-13 06:39:40

标签: locality-sensitive-hash

我正在阅读有关LSH的此调查,特别是引用了2.2.1部分的最后一段:

  

为了改善召回,构建了L个哈希表和项目   位于L(L',L'< L)散列桶h_1(q),···,h_L(q)   被检索为随机R近邻搜索的q项附近   (或随机c-近似R-近邻搜索)。   为了保证精度,每个L哈希码y_i都需要   是一个长代码,这意味着桶的总数是   太大而无法直接索引。 因此,只有非空的桶   通过使用哈希码h_l的对流散列来保留   (x)的

我有3个问题:

  1. 粗体句子对我来说并不清楚:“诉诸哈希码h_l (x)”的传统哈希是什么意思?
  2. 总是关于大胆的句子,我不确定我是否遇到了问题:我完全理解h_l(x)可能是一个长代码,所以可能的桶数量可能很大。例如,如果h_l(x)是二进制代码且length的长度为h_l(x),那么我们总共有L*2^length个桶(因为我们使用L哈希表)......是正确的吗?
  3. 最后一个问题:一旦我们找到查询向量q所属的存储区,为了找到最近的邻居,我们必须使用原始向量q和原始距离度量标准?例如,假设原始向量q在128维q=[1,0,12,...,14.3]^T中,它在我们的应用程序中使用欧氏距离。现在假设我们在LSH中使用的散列函数(假设L = 1,为简单起见)将此向量映射到20维y=[0100...11]^T的二进制空间,以便确定将q分配给哪个桶。因此y具有相同的存储桶B索引,并且已包含100个向量。现在,为了找到最近的邻居,我们必须使用欧氏距离将q与所有其他100个128维向量进行比较。这是对的吗?

1 个答案:

答案 0 :(得分:0)

他们正在使用的方法来改进召回构造更多的哈希表,并且基本上为每个参考项目存储ID的多个副本,因此空间成本更大[4]。如果存在大量空桶以增加检索成本,则汉明空间中的双哈希方案或快速搜索算法可用于快速检索哈希桶。我认为在这种情况下,他们使用双哈希函数来检索非空桶。

桶/存储单元的数量[1] [2] [3] - > O(nL)

参考文献:

[1] http://simsearch.yury.name/russir/03nncourse-hand.pdf

[2] http://joyceho.github.io/cs584_s16/slides/lsh-12.pdf

[3] https://users.soe.ucsc.edu/~niejiazhong/slides/kumar.pdf

[4] http://research.microsoft.com/en-us/um/people/jingdw/Pubs%5CLTHSurvey.pdf