Fast Exact Search in Hamming Space with Multi-Index Hashing • ジャーナルTPAMIと国際会議CVPR2012 • github: https://github.com/norouzi/mih • arxiv: http://arxiv.org/pdf/1307.2982.pdf
R近傍探索: 実装 def r_nearest(R): for sub_r in range(R/D): for l in range(0, N, N/D): sub_query = Q[l:l+N/D] for subvector in sub_queryからsub_r以内の全subvector: for vector in hash[target_subvectors]: if distance(vector, query) <= r: yield vector 2, 3) 探索 hash = [{}] #D個のハッシュ for vector in data: for l in range(0, N, N/D): hash[l/(N/D)][vector[l:l+N/D]].append(vector) 1) 全データをハッシュに
R近傍探索: 実装 for l in range(0, N, N/D): sub_query = Q[l:l+N/D] for vector in hash[sub_query]: #必ず1次元はsub_queryと一致する if distance(vector, query) < D: yield vector 例: 距離D未満の点の探索 キーアイデアより、サブベクトルのうち1次元は必ずQと一致する