79
Nearest Neighbor Search(NNS) NGUYEN ANH TUAN Bachelor 4th year The Engineering Falcuty, the University of Tokyo May 14, 2014 NGUYEN ANH TUAN Group study memo 1 / 45

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

自己紹介

2008年 来日

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

2012年 東大 2年に編入

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

NGUYEN ANH TUAN Group study memo 2 / 45

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

本日の流れ

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

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

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

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

4 まとめ

NGUYEN ANH TUAN Group study memo 3 / 45

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

問題の定義

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

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

解説

空間と距離

高次元と低次元

NGUYEN ANH TUAN Group study memo 5 / 45

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

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

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

→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

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

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

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

→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

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

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

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

→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

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

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

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

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

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

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

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

解説

空間と距離

高次元と低次元

NGUYEN ANH TUAN Group study memo 8 / 45

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

高次元と低次元

参考文献 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

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

高次元と低次元

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

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

dmax − dminが 0に収束

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

NGUYEN ANH TUAN Group study memo 10 / 45

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

高次元と低次元

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

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

dmax − dminが 0に収束

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

NGUYEN ANH TUAN Group study memo 10 / 45

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

高次元と低次元

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

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

dmax − dminが 0に収束

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

NGUYEN ANH TUAN Group study memo 10 / 45

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

高次元と低次元

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

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

dmax − dminが 0に収束

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

NGUYEN ANH TUAN Group study memo 10 / 45

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

次元の呪縛

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

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

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

NGUYEN ANH TUAN Group study memo 11 / 45

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

次元の呪縛

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

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

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

NGUYEN ANH TUAN Group study memo 11 / 45

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

関連問題

k近傍法

ボロノイ図

近似最近傍探索 (ANN)

NGUYEN ANH TUAN Group study memo 12 / 45

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

k近傍法の例

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

アルゴリズム:

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

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

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

NGUYEN ANH TUAN Group study memo 13 / 45

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

k近傍法の例

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

アルゴリズム:

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

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

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

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

NGUYEN ANH TUAN Group study memo 13 / 45

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

k近傍法の例

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

アルゴリズム:

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

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

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

NGUYEN ANH TUAN Group study memo 13 / 45

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

関連問題

k近傍法

ボロノイ図

近似最近傍探索 (ANN)

NGUYEN ANH TUAN Group study memo 14 / 45

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

ボロノイ図:2点のみ

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

NGUYEN ANH TUAN Group study memo 15 / 45

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

ボロノイ図:2点のみ

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

NGUYEN ANH TUAN Group study memo 15 / 45

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

ボロノイ図:3点の場合

NGUYEN ANH TUAN Group study memo 16 / 45

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

ボロノイ図

NGUYEN ANH TUAN Group study memo 17 / 45

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

関連問題

k近傍法

ボロノイ図

近似最近傍探索 (ANN)

NGUYEN ANH TUAN Group study memo 18 / 45

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

近似最近傍探索 (ANN)

次元の呪いへの対策

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

NGUYEN ANH TUAN Group study memo 19 / 45

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

手法

線形探索

kd木

Locality Sensitive Hashing(LSH)

その他

NGUYEN ANH TUAN Group study memo 20 / 45

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

線形探索

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

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

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

NGUYEN ANH TUAN Group study memo 21 / 45

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

手法

線形探索

kd木

Locality Sensitive Hashing(LSH)

その他

NGUYEN ANH TUAN Group study memo 22 / 45

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

kd木

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

空間分割を表現する。

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

NGUYEN ANH TUAN Group study memo 23 / 45

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

kd木:探索アルゴリズム

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

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

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

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

NGUYEN ANH TUAN Group study memo 24 / 45

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

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

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

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

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

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

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

kd木:最悪時の例

NGUYEN ANH TUAN Group study memo 26 / 45

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

kd木:もう一つの問題点

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

NGUYEN ANH TUAN Group study memo 27 / 45

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

手法

線形探索

kd木

Locality Sensitive Hashing(LSH)

その他

NGUYEN ANH TUAN Group study memo 28 / 45

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

手法

線形探索

kd木

Locality Sensitive Hashing(LSH)

その他

NGUYEN ANH TUAN Group study memo 29 / 45

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

AESA

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

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

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

NGUYEN ANH TUAN Group study memo 30 / 45

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

AESA

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

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

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

NGUYEN ANH TUAN Group study memo 30 / 45

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

AESA

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

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

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

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

NGUYEN ANH TUAN Group study memo 30 / 45

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

AESA

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

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

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

NGUYEN ANH TUAN Group study memo 30 / 45

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

ボロノイ分割

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

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

NGUYEN ANH TUAN Group study memo 31 / 45

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

最近の研究

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

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

Quantization

量子化

スカラ量子化

NGUYEN ANH TUAN Group study memo 33 / 45

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

Quantization

量子化

スカラ量子化

NGUYEN ANH TUAN Group study memo 33 / 45

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

Vector Quantization

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

ベクトル量子化

NGUYEN ANH TUAN Group study memo 34 / 45

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

Vector Quantization

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

ベクトル量子化

NGUYEN ANH TUAN Group study memo 34 / 45

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

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

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

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

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

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

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

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

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

Vector Quantization

コードブックのサイズ k

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

NGUYEN ANH TUAN Group study memo 36 / 45

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

Vector Quantization

コードブックのサイズ k

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

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

NGUYEN ANH TUAN Group study memo 36 / 45

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

Vector Quantization

コードブックのサイズ k

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

NGUYEN ANH TUAN Group study memo 36 / 45

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

Vector Quantization:次元の呪い

コードブックのサイズ k

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

NGUYEN ANH TUAN Group study memo 37 / 45

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

Vector Quantization:次元の呪い

コードブックのサイズ k

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

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

NGUYEN ANH TUAN Group study memo 37 / 45

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

Vector Quantization:次元の呪い

コードブックのサイズ k

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

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

NGUYEN ANH TUAN Group study memo 37 / 45

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

Vector Quantization:次元の呪い

コードブックのサイズ k

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

NGUYEN ANH TUAN Group study memo 37 / 45

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

Product Quantization

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

NGUYEN ANH TUAN Group study memo 38 / 45

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Searching algorithm(By H. Jegou et al.)

1 Indexing

2 Searching

NGUYEN ANH TUAN Group study memo 41 / 45

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

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

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

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

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

Searching algorithm(By H. Jegou et al.)

1 Indexing

2 Searching

NGUYEN ANH TUAN Group study memo 43 / 45

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

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

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

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

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

まとめ

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

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

Product Quantization

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

NGUYEN ANH TUAN Group study memo 45 / 45