最近傍探索と直積量子化(Nearest neighbor search and Product Quantization)

Preview:

DESCRIPTION

最近傍探索の問題と手法についての説明です。木構造や表構造などを使用するkd木探索、LSHの手法について説明します。次元の呪いという問題を解決するための直積量子化(Product Quantization)も含めます。

Citation preview

Nearest Neighbor Search(NNS)

NGUYEN ANH TUAN

Bachelor 4th yearThe Engineering Falcuty, the University of Tokyo

May 14, 2014

NGUYEN ANH TUAN Group study memo 1 / 45

自己紹介

2008年 来日

2009年~2012年 兵庫県明石高専卒論:「エッジ方向のヒストグラムを利用した電子透かしの手法」(対象:文章画像)

2012年 東大 2年に編入

好きなプログラミング言語:C/C++、Java、最近はRubyを触っています。

NGUYEN ANH TUAN Group study memo 2 / 45

本日の流れ

1 概要問題の定義定義の解説空間と距離次元課題:次元の呪縛

関連問題k近傍法ボロノイ図近似最近傍探索

2 アルゴリズム線形探索kd木Locality Sensitive Hashingその他

3 最近の研究Vector QuantizationProduct Quantization最近傍探索との関連

4 まとめ

NGUYEN ANH TUAN Group study memo 3 / 45

問題の定義

Nearest Neighbor Search(NNS problem)

D次元ユークリッド空間RDにおいて

ベクトル x =(x1, x2, . . . xD

)距離 d

(x,y

)=

√(x1 − y1)2 + (x2 − y2)2 + . . .+ (xD − yD)2

と表記すると、

入力:部分集合Y ⊂ RDとベクトル x ∈ RD

出力:Yの要素の中で xと “一番近い”要素NN(x)。

要するに、入力(Y,x

)が与えられた時、

NN(x) = argminy∈Y

d(x,y) (1)

を求める問題

NGUYEN ANH TUAN Group study memo 4 / 45

解説

空間と距離

高次元と低次元

NGUYEN ANH TUAN Group study memo 5 / 45

ユークリッド空間内の距離

ユークリッド距離→直感的、通常の距離

→Minkowski距離 dp(x,y) =( D∑i=1

|xi − yi|p) 1

p

→ p = 2の時、ユークリッド距離

p = 1の時、マンハッタン距離

dM(x,y) =D∑i=1

|xi − yi| (2)

Question: p > 2のMinkowski距離を利用するか?

NGUYEN ANH TUAN Group study memo 6 / 45

ユークリッド空間内の距離

ユークリッド距離→直感的、通常の距離

→Minkowski距離 dp(x,y) =( D∑i=1

|xi − yi|p) 1

p

→ p = 2の時、ユークリッド距離

p = 1の時、マンハッタン距離

dM(x,y) =D∑i=1

|xi − yi| (2)

Question: p > 2のMinkowski距離を利用するか?

NGUYEN ANH TUAN Group study memo 6 / 45

ユークリッド空間内の距離

ユークリッド距離→直感的、通常の距離

→Minkowski距離 dp(x,y) =( D∑i=1

|xi − yi|p) 1

p

→ p = 2の時、ユークリッド距離

p = 1の時、マンハッタン距離

dM(x,y) =D∑i=1

|xi − yi| (2)

Question: p > 2のMinkowski距離を利用するか?

NGUYEN ANH TUAN Group study memo 6 / 45

Hamming Space

Hamming Space:H = {0, 1}の時、すべての長さDのビット列からなる空間をD次元Hamming Space HD

Hamming距離→二つのビット列の相違度

dH(x,y) =∣∣{i|xi ̸= yi}

∣∣ (3)

例: 00011と 00101の相違度が 2

NGUYEN ANH TUAN Group study memo 7 / 45

Hamming Space

Hamming Space:H = {0, 1}の時、すべての長さDのビット列からなる空間をD次元Hamming Space HD

Hamming距離→二つのビット列の相違度

dH(x,y) =∣∣{i|xi ̸= yi}

∣∣ (3)

例: 00011と 00101の相違度が 2

NGUYEN ANH TUAN Group study memo 7 / 45

Hamming Space

Hamming Space:H = {0, 1}の時、すべての長さDのビット列からなる空間をD次元Hamming Space HD

Hamming距離→二つのビット列の相違度

dH(x,y) =∣∣{i|xi ̸= yi}

∣∣ (3)

例: 00011と 00101の相違度が 2

NGUYEN ANH TUAN Group study memo 7 / 45

解説

空間と距離

高次元と低次元

NGUYEN ANH TUAN Group study memo 8 / 45

高次元と低次元

参考文献 1

定理 1(引用)

Let F is an arbitrary distribution of n points (from a database of Nuniformly distributed points), the distance function is an k-normMinkowski distance function inside an Euclidean space RD. Therefore,

Ck ≤ limD→+∞

E

[dmax − dmin

D1/k−1/2

]≤ (N − 1)Ck (4)

, where dmax, dmin are the farthest and nearest distance from a point in Fto the query point, respectively. Ck is a constant value that depends on k.

1A. Hinneburg et al , “What Is the Nearest Neighbor in HighDimensional Spaces?”, Proceedings of the 26th International Conferenceon Very Large Data Bases, pp.506-515, 2000

NGUYEN ANH TUAN Group study memo 9 / 45

高次元と低次元

k > 2のMinkowski距離 dk(x,y)を利用した時、

空間の次元Dを増加させると、

dmax − dminが 0に収束

→高次元で k > 2のMinkowski距離の時、データセットの中の最短距離と最長距離はほぼ一致してしまう

NGUYEN ANH TUAN Group study memo 10 / 45

高次元と低次元

k > 2のMinkowski距離 dk(x,y)を利用した時、

空間の次元Dを増加させると、

dmax − dminが 0に収束

→高次元で k > 2のMinkowski距離の時、データセットの中の最短距離と最長距離はほぼ一致してしまう

NGUYEN ANH TUAN Group study memo 10 / 45

高次元と低次元

k > 2のMinkowski距離 dk(x,y)を利用した時、

空間の次元Dを増加させると、

dmax − dminが 0に収束

→高次元で k > 2のMinkowski距離の時、データセットの中の最短距離と最長距離はほぼ一致してしまう

NGUYEN ANH TUAN Group study memo 10 / 45

高次元と低次元

k > 2のMinkowski距離 dk(x,y)を利用した時、

空間の次元Dを増加させると、

dmax − dminが 0に収束

→高次元で k > 2のMinkowski距離の時、データセットの中の最短距離と最長距離はほぼ一致してしまう

NGUYEN ANH TUAN Group study memo 10 / 45

次元の呪縛

ざっくり見ると、普通な問題

一番簡単な手法:線形探索→ 時間計算量O(nD)

次元の一定の値を超えると、いかなるアルゴリズムでも線形探索 (全探索)と等価である。

NGUYEN ANH TUAN Group study memo 11 / 45

次元の呪縛

ざっくり見ると、普通な問題

一番簡単な手法:線形探索→ 時間計算量O(nD)

次元の一定の値を超えると、いかなるアルゴリズムでも線形探索 (全探索)と等価である。

NGUYEN ANH TUAN Group study memo 11 / 45

関連問題

k近傍法

ボロノイ図

近似最近傍探索 (ANN)

NGUYEN ANH TUAN Group study memo 12 / 45

k近傍法の例

学習用のデータが二つカテゴリ A,B に分けた時、問い合わせデータ “?”はどのカテゴリに入るか?→データの分類問題

アルゴリズム:

1 kを適切に選ぶ2 “?”と学習用のデータとの距離を計算

3 距離でデータを並び替える4 学習用のデータから k個だけを選別する。選択されたデータで多数決投票を行う

5 最多となるデータのカテゴリが、“?”の推測されたカテゴリとなる。

NGUYEN ANH TUAN Group study memo 13 / 45

k近傍法の例

学習用のデータが二つカテゴリ A,B に分けた時、問い合わせデータ “?”はどのカテゴリに入るか?→データの分類問題

アルゴリズム:

1 kを適切に選ぶ2 “?”と学習用のデータとの距離を計算

3 距離でデータを並び替える

4 学習用のデータから k個だけを選別する。選択されたデータで多数決投票を行う

5 最多となるデータのカテゴリが、“?”の推測されたカテゴリとなる。

NGUYEN ANH TUAN Group study memo 13 / 45

k近傍法の例

学習用のデータが二つカテゴリ A,B に分けた時、問い合わせデータ “?”はどのカテゴリに入るか?→データの分類問題

アルゴリズム:

1 kを適切に選ぶ2 “?”と学習用のデータとの距離を計算

3 距離でデータを並び替える4 学習用のデータから k個だけを選別する。選択されたデータで多数決投票を行う

5 最多となるデータのカテゴリが、“?”の推測されたカテゴリとなる。

NGUYEN ANH TUAN Group study memo 13 / 45

関連問題

k近傍法

ボロノイ図

近似最近傍探索 (ANN)

NGUYEN ANH TUAN Group study memo 14 / 45

ボロノイ図:2点のみ

→ A,Bそれぞれに近い領域に分割

NGUYEN ANH TUAN Group study memo 15 / 45

ボロノイ図:2点のみ

→ A,Bそれぞれに近い領域に分割

NGUYEN ANH TUAN Group study memo 15 / 45

ボロノイ図:3点の場合

NGUYEN ANH TUAN Group study memo 16 / 45

ボロノイ図

NGUYEN ANH TUAN Group study memo 17 / 45

関連問題

k近傍法

ボロノイ図

近似最近傍探索 (ANN)

NGUYEN ANH TUAN Group study memo 18 / 45

近似最近傍探索 (ANN)

次元の呪いへの対策

正確な解を求めるよりも、ある確率以上でそのベクトルが最近傍となるものを求めたい。

NGUYEN ANH TUAN Group study memo 19 / 45

手法

線形探索

kd木

Locality Sensitive Hashing(LSH)

その他

NGUYEN ANH TUAN Group study memo 20 / 45

線形探索

すべてのデータをスキャンして、クエリベクトルとの距離を計算する。

計算した距離の中の最小値とそれに対する位置を求める。

時間計算量O(nD)、追加メモリなし

NGUYEN ANH TUAN Group study memo 21 / 45

手法

線形探索

kd木

Locality Sensitive Hashing(LSH)

その他

NGUYEN ANH TUAN Group study memo 22 / 45

kd木

二分木の探索→平均時間計算量:O(D log n)、最悪時 (偏りの木):O(nD)

空間分割を表現する。

(a) 二次元空間データ (b) kd木

NGUYEN ANH TUAN Group study memo 23 / 45

kd木:探索アルゴリズム

1 二分探索木と同じ探索になるが、

2 一致するものではなく、近いものをもとめる。

3 葉へ到着する直前のノードを暫定的な最近傍 temp

4 back trackを行い、tempから rootへ戻る道で、queryとより近いものがあれば、tempを更新する。

NGUYEN ANH TUAN Group study memo 24 / 45

kd木:次元の呪い

平衡木にすれば、1~3の平均時間計算量がO(D log n)になるが、その時でも 4の計算量が生じる。

次元の呪い:参考文献 2では、最悪時 kd木での探索の時間計算量はO(Dn1−1/D)となる。

D → +∞の時 Dn1−1/D → Dn (5)

2D.T. Lee, C. K. Wong, “Worst-case analysis for region and partialregion searches in multidimensional binary search trees andbalanced quad trees”, Acta Informatica 13. XII. 1977, Volume 9, Issue 1,pp 23-29

NGUYEN ANH TUAN Group study memo 25 / 45

kd木:次元の呪い

平衡木にすれば、1~3の平均時間計算量がO(D log n)になるが、その時でも 4の計算量が生じる。

次元の呪い:参考文献 2では、最悪時 kd木での探索の時間計算量はO(Dn1−1/D)となる。

D → +∞の時 Dn1−1/D → Dn (5)

2D.T. Lee, C. K. Wong, “Worst-case analysis for region and partialregion searches in multidimensional binary search trees andbalanced quad trees”, Acta Informatica 13. XII. 1977, Volume 9, Issue 1,pp 23-29

NGUYEN ANH TUAN Group study memo 25 / 45

kd木:次元の呪い

平衡木にすれば、1~3の平均時間計算量がO(D log n)になるが、その時でも 4の計算量が生じる。

次元の呪い:参考文献 2では、最悪時 kd木での探索の時間計算量はO(Dn1−1/D)となる。

D → +∞の時 Dn1−1/D → Dn (5)

2D.T. Lee, C. K. Wong, “Worst-case analysis for region and partialregion searches in multidimensional binary search trees andbalanced quad trees”, Acta Informatica 13. XII. 1977, Volume 9, Issue 1,pp 23-29

NGUYEN ANH TUAN Group study memo 25 / 45

kd木:最悪時の例

NGUYEN ANH TUAN Group study memo 26 / 45

kd木:もう一つの問題点

暫定解を格納するメモリが生じる。→データを葉につめる。データを葉につめる。一個のデータを一つの箱にいれる。→箱の分け方?

NGUYEN ANH TUAN Group study memo 27 / 45

手法

線形探索

kd木

Locality Sensitive Hashing(LSH)

その他

NGUYEN ANH TUAN Group study memo 28 / 45

手法

線形探索

kd木

Locality Sensitive Hashing(LSH)

その他

NGUYEN ANH TUAN Group study memo 29 / 45

AESA

距離の三公理を使う。→距離の選択:Minkowski距離ならOK

アルゴリズム1 全データでペアの距離を計算する。2 表で計算結果をまとめる。3 距離の三公理と表のデータで最近傍になり得ないものを除去する。

→問題点:距離のデータを格納する表の作成に時間がかかる。探索時、蓄積データのためにメモリ量がかかる。→LAESA:蓄積データの一部のみを使用する。

NGUYEN ANH TUAN Group study memo 30 / 45

AESA

距離の三公理を使う。→距離の選択:Minkowski距離ならOK

アルゴリズム1 全データでペアの距離を計算する。2 表で計算結果をまとめる。3 距離の三公理と表のデータで最近傍になり得ないものを除去する。

→問題点:距離のデータを格納する表の作成に時間がかかる。探索時、蓄積データのためにメモリ量がかかる。→LAESA:蓄積データの一部のみを使用する。

NGUYEN ANH TUAN Group study memo 30 / 45

AESA

距離の三公理を使う。→距離の選択:Minkowski距離ならOK

アルゴリズム1 全データでペアの距離を計算する。2 表で計算結果をまとめる。3 距離の三公理と表のデータで最近傍になり得ないものを除去する。

→問題点:距離のデータを格納する表の作成に時間がかかる。探索時、蓄積データのためにメモリ量がかかる。

→LAESA:蓄積データの一部のみを使用する。

NGUYEN ANH TUAN Group study memo 30 / 45

AESA

距離の三公理を使う。→距離の選択:Minkowski距離ならOK

アルゴリズム1 全データでペアの距離を計算する。2 表で計算結果をまとめる。3 距離の三公理と表のデータで最近傍になり得ないものを除去する。

→問題点:距離のデータを格納する表の作成に時間がかかる。探索時、蓄積データのためにメモリ量がかかる。→LAESA:蓄積データの一部のみを使用する。

NGUYEN ANH TUAN Group study memo 30 / 45

ボロノイ分割

ボロノイ分割を行ってから、クエリベクトルはどのボロノイ領域になるかを調べて、その領域の母点を最近傍となる。

ボロノイ分割を行うのにO(n2D)の時間がかかる。

NGUYEN ANH TUAN Group study memo 31 / 45

最近の研究

Product Quantization3

3H. Jegou et al., “Product Quantization for Nearest NeighborSearch”, IEEE TRANSACTIONS ON PATTERN ANALYSIS ANDMACHINE INTELLIGENCE,VOL. 33, NO. 1,JANUARY 2011, pp 117-126

NGUYEN ANH TUAN Group study memo 32 / 45

Quantization

量子化

スカラ量子化

NGUYEN ANH TUAN Group study memo 33 / 45

Quantization

量子化

スカラ量子化

NGUYEN ANH TUAN Group study memo 33 / 45

Vector Quantization

スカラ量子化→1次元データの表現 (数値だけ?)

ベクトル量子化

NGUYEN ANH TUAN Group study memo 34 / 45

Vector Quantization

スカラ量子化→1次元データの表現 (数値だけ?)

ベクトル量子化

NGUYEN ANH TUAN Group study memo 34 / 45

Vector Quantization

コードブック (codebook) C = {pi|0 ≤ i < k}量子器 (quantizer) Q : RD → C

x ∈ RDの時、Q(x) ∈ C

RDを k領域に分割する→ボロノイ図のイメージ

Q(x) = argminci∈C

d(x, ci) (6)

ボロノイ領域をVi = {x ∈ RD : Q(x) = ci}とすると、

ci = E[x|i] =∫Vi

p(x)xdx (7)

NGUYEN ANH TUAN Group study memo 35 / 45

Vector Quantization

コードブック (codebook) C = {pi|0 ≤ i < k}量子器 (quantizer) Q : RD → C

x ∈ RDの時、Q(x) ∈ C

RDを k領域に分割する→ボロノイ図のイメージ

Q(x) = argminci∈C

d(x, ci) (6)

ボロノイ領域をVi = {x ∈ RD : Q(x) = ci}とすると、

ci = E[x|i] =∫Vi

p(x)xdx (7)

NGUYEN ANH TUAN Group study memo 35 / 45

Vector Quantization

コードブック (codebook) C = {pi|0 ≤ i < k}量子器 (quantizer) Q : RD → C

x ∈ RDの時、Q(x) ∈ C

RDを k領域に分割する→ボロノイ図のイメージ

Q(x) = argminci∈C

d(x, ci) (6)

ボロノイ領域をVi = {x ∈ RD : Q(x) = ci}とすると、

ci = E[x|i] =∫Vi

p(x)xdx (7)

NGUYEN ANH TUAN Group study memo 35 / 45

Vector Quantization

コードブック (codebook) C = {pi|0 ≤ i < k}量子器 (quantizer) Q : RD → C

x ∈ RDの時、Q(x) ∈ C

RDを k領域に分割する→ボロノイ図のイメージ

Q(x) = argminci∈C

d(x, ci) (6)

ボロノイ領域をVi = {x ∈ RD : Q(x) = ci}とすると、

ci = E[x|i] =∫Vi

p(x)xdx (7)

NGUYEN ANH TUAN Group study memo 35 / 45

Vector Quantization

コードブックのサイズ k

各ベクトルを表現するのに ⌈log2 k⌉ビットが必要空間を k領域に分割→ k-means法の量子器

NGUYEN ANH TUAN Group study memo 36 / 45

Vector Quantization

コードブックのサイズ k

各ベクトルを表現するのに ⌈log2 k⌉ビットが必要

空間を k領域に分割→ k-means法の量子器

NGUYEN ANH TUAN Group study memo 36 / 45

Vector Quantization

コードブックのサイズ k

各ベクトルを表現するのに ⌈log2 k⌉ビットが必要空間を k領域に分割→ k-means法の量子器

NGUYEN ANH TUAN Group study memo 36 / 45

Vector Quantization:次元の呪い

コードブックのサイズ k

kはどのぐらいとれば良いか? → k ≈ exp(D)→次元が増えると、コードブックのサイズが指数的に増加

NGUYEN ANH TUAN Group study memo 37 / 45

Vector Quantization:次元の呪い

コードブックのサイズ k

kはどのぐらいとれば良いか?

→ k ≈ exp(D)→次元が増えると、コードブックのサイズが指数的に増加

NGUYEN ANH TUAN Group study memo 37 / 45

Vector Quantization:次元の呪い

コードブックのサイズ k

kはどのぐらいとれば良いか? → k ≈ exp(D)

→次元が増えると、コードブックのサイズが指数的に増加

NGUYEN ANH TUAN Group study memo 37 / 45

Vector Quantization:次元の呪い

コードブックのサイズ k

kはどのぐらいとれば良いか? → k ≈ exp(D)→次元が増えると、コードブックのサイズが指数的に増加

NGUYEN ANH TUAN Group study memo 37 / 45

Product Quantization

ベクトル量子化の欠点を補いたい→直積量子化

NGUYEN ANH TUAN Group study memo 38 / 45

Product Quantization

発想

64 bitのコードブック↔ log2 k = 64 ↔ k = 264

264個の整数型データを保存するのに、コードブックのサイズは 264 × 32[bit]≈ 64, 000, 000, 000, 000[GB]=64[Zettabyte]

例えば、各 ciを二つの 32ビットの ci1, ci2に分割すると、必要な個数は 2× 232 = 233個コードブックのサイズは 233 × 32[bit]≈ 32, 000[GB]=32[TB]

NGUYEN ANH TUAN Group study memo 39 / 45

Product Quantization

発想

64 bitのコードブック↔ log2 k = 64 ↔ k = 264

264個の整数型データを保存するのに、コードブックのサイズは

264 × 32[bit]≈ 64, 000, 000, 000, 000[GB]=64[Zettabyte]

例えば、各 ciを二つの 32ビットの ci1, ci2に分割すると、必要な個数は 2× 232 = 233個コードブックのサイズは 233 × 32[bit]≈ 32, 000[GB]=32[TB]

NGUYEN ANH TUAN Group study memo 39 / 45

Product Quantization

発想

64 bitのコードブック↔ log2 k = 64 ↔ k = 264

264個の整数型データを保存するのに、コードブックのサイズは 264 × 32[bit]≈ 64, 000, 000, 000, 000[GB]=64[Zettabyte]

例えば、各 ciを二つの 32ビットの ci1, ci2に分割すると、必要な個数は 2× 232 = 233個コードブックのサイズは 233 × 32[bit]≈ 32, 000[GB]=32[TB]

NGUYEN ANH TUAN Group study memo 39 / 45

Product Quantization

発想

64 bitのコードブック↔ log2 k = 64 ↔ k = 264

264個の整数型データを保存するのに、コードブックのサイズは 264 × 32[bit]≈ 64, 000, 000, 000, 000[GB]=64[Zettabyte]

例えば、各 ciを二つの 32ビットの ci1, ci2に分割すると、必要な個数は

2× 232 = 233個コードブックのサイズは 233 × 32[bit]≈ 32, 000[GB]=32[TB]

NGUYEN ANH TUAN Group study memo 39 / 45

Product Quantization

発想

64 bitのコードブック↔ log2 k = 64 ↔ k = 264

264個の整数型データを保存するのに、コードブックのサイズは 264 × 32[bit]≈ 64, 000, 000, 000, 000[GB]=64[Zettabyte]

例えば、各 ciを二つの 32ビットの ci1, ci2に分割すると、必要な個数は 2× 232 = 233個

コードブックのサイズは 233 × 32[bit]≈ 32, 000[GB]=32[TB]

NGUYEN ANH TUAN Group study memo 39 / 45

Product Quantization

発想

64 bitのコードブック↔ log2 k = 64 ↔ k = 264

264個の整数型データを保存するのに、コードブックのサイズは 264 × 32[bit]≈ 64, 000, 000, 000, 000[GB]=64[Zettabyte]

例えば、各 ciを二つの 32ビットの ci1, ci2に分割すると、必要な個数は 2× 232 = 233個コードブックのサイズは 233 × 32[bit]≈ 32, 000[GB]=32[TB]

NGUYEN ANH TUAN Group study memo 39 / 45

Product Quantization

コードブック (codebook) C = {pi|0 ≤ i < k}のD = log2 k次元の空間をm個Cjの子空間 (次元がD/m)に分割する。

C = C1 × C2 × . . .× Cm (8)

子量子器Qj : RD/m → Cj

子コードブックのサイズ

k∗ = 2Dm = 2

log2 km = k

1m (9)

総コードブックのサイズはmk1m

NGUYEN ANH TUAN Group study memo 40 / 45

Product Quantization

コードブック (codebook) C = {pi|0 ≤ i < k}のD = log2 k次元の空間をm個Cjの子空間 (次元がD/m)に分割する。

C = C1 × C2 × . . .× Cm (8)

子量子器Qj : RD/m → Cj

子コードブックのサイズ

k∗ = 2Dm = 2

log2 km = k

1m (9)

総コードブックのサイズはmk1m

NGUYEN ANH TUAN Group study memo 40 / 45

Searching algorithm(By H. Jegou et al.)

1 Indexing

2 Searching

NGUYEN ANH TUAN Group study memo 41 / 45

Indexing

前提条件:次元D、距離関数 d(x,y)

入力:ベクトル y ∈ RD

アルゴリズム1 yをQc(y)に量子化2 距離 r(y) = y −Qc(y)を計算3 r(y)をQp(r(y))に量子化。r(y)を uj(y), j = 1, 2, . . .mに分割。uj(y) → Qj(y)の対応づけ

4 (Q1, Q2, . . . Qm)をインデクスとする→転置インデクス

NGUYEN ANH TUAN Group study memo 42 / 45

Indexing

前提条件:次元D、距離関数 d(x,y)

入力:ベクトル y ∈ RD

アルゴリズム1 yをQc(y)に量子化2 距離 r(y) = y −Qc(y)を計算3 r(y)をQp(r(y))に量子化。r(y)を uj(y), j = 1, 2, . . .mに分割。uj(y) → Qj(y)の対応づけ

4 (Q1, Q2, . . . Qm)をインデクスとする→転置インデクス

NGUYEN ANH TUAN Group study memo 42 / 45

Searching algorithm(By H. Jegou et al.)

1 Indexing

2 Searching

NGUYEN ANH TUAN Group study memo 43 / 45

Searching

前提条件:次元D、距離関数 d(x,y)

入力:ベクトル x ∈ RD

出力:最近傍NN(x) ∈ RD

アルゴリズム1 yをQc(y)に量子化2 距離 r(y) = y −Qc(y)を計算3 r(y)をQp(r(y))に量子化。r(y)を uj(y), j = 1, 2, . . .mに分割。uj(y) → Qj(y)の対応づけ

4 (Q1, Q2, . . . Qm)をインデクスとする

NGUYEN ANH TUAN Group study memo 44 / 45

Searching

前提条件:次元D、距離関数 d(x,y)

入力:ベクトル x ∈ RD

出力:最近傍NN(x) ∈ RD

アルゴリズム1 yをQc(y)に量子化2 距離 r(y) = y −Qc(y)を計算3 r(y)をQp(r(y))に量子化。r(y)を uj(y), j = 1, 2, . . .mに分割。uj(y) → Qj(y)の対応づけ

4 (Q1, Q2, . . . Qm)をインデクスとする

NGUYEN ANH TUAN Group study memo 44 / 45

まとめ

最近傍探索問題空間と距離、次元・次元の呪いk近傍法、ボロノイ図、ANN

最近傍探索の手法木構造、表、ボロノイ図、ハッシュ

Product Quantization

VQ、PQ、直積、次元の分割

NGUYEN ANH TUAN Group study memo 45 / 45

Recommended