私はすでにこの質問を読みましたが、残念ながら役に立ちませんでした。
私が理解していないのは、どのバケットが高次元空間クエリ ベクトルに割り当てられるかを理解した後で何をするかということですq
。局所性に依存するファミリ関数のセットを使用して、低次元 (次元) ハッシュ コードh_1,h_2,...,h_n
に変換したとします。q
n
c
次に、割り当てられc
たバケットのインデックスでありq
、(うまくいけば) 最も近い隣人にも割り当てられます。たとえば、100 個のベクトルがあるとします。
さて、 の NN を見つけるために行うことは、これら100個のベクトルq
の間の距離を計算することですが、それは正しいですか? つまり、 の使用はインデックス作成のためだけです (どのバケットに割り当てるかを決定するためだけに使用されます) ですね。q
c
q
この調査 (セクション 2.2) で説明されているように、「ハッシュ テーブル ルックアップ」(前述のアプローチ) に代わる別の解決策は「高速距離近似」ですc
。データセット内の各要素に関連するハッシュ コード。ハッシュコードが低次元空間にあり、距離の計算が高速であるため、これは高速であると想定されています(たとえば、ハッシュコード空間がバイナリの場合、XOR演算子を使用してハミングをすばやく計算できます2 つのハッシュ コード間の距離)。
さて、私が疑問に思っているのは、2つの方法の利点/欠点は何ですか? 他のアプローチではなく、あるアプローチを使用する必要があるのはなぜですか?