57
コンピュータビジョン 勉強会@関東 ICCV2013読み会 2014/2/23 @ketsumedo_yarou 1

Joint Inverted Indexing

Embed Size (px)

Citation preview

Page 1: Joint Inverted Indexing

コンピュータビジョン 勉強会@関東

ICCV2013読み会

2014/2/23

@ketsumedo_yarou

1

Page 2: Joint Inverted Indexing

Title :

Joint Inverted Indexing

Author:

Yan Xia, Fang Wen (University of Science and Technology of China),

Kaiming He, Jian Sun (Microsoft Research Asia)

論文

2

Page 3: Joint Inverted Indexing

Title :

Joint Inverted Indexing

Author:

Yan Xia, Fang Wen (University of Science and Technology of China),

Kaiming He, Jian Sun (Microsoft Research Asia)

論文

3

学生.多分MSRAでインターンで行った研究

Page 4: Joint Inverted Indexing

Title :

Joint Inverted Indexing

Author:

Yan Xia, Fang Wen (University of Science and Technology of China),

Kaiming He, Jian Sun (Microsoft Research Asia)

論文

4

学生.多分MSRAでインターンで行った研究

Optimized Product Quantization の著者の方.

Page 5: Joint Inverted Indexing

5

最近傍探索問題

0.23

1.4

-0.3

9.6

0.0

2.3

Query vector

𝐷

3.21

0.5

42.0

-2.4

12.3

1.1

-0.1

1.4

4.2

9.1

0.2

3.1

0.4

1.3

2.2

4.5

0.4

-12.5

𝒙

・・・

𝑛

Database vectors

𝒚1 𝒚2 𝒚𝑛 𝒚2

Page 6: Joint Inverted Indexing

6

0.23

1.4

-0.3

9.6

0.0

2.3

Query vector

𝐷

3.21

0.5

42.0

-2.4

12.3

1.1

-0.1

1.4

4.2

9.1

0.2

3.1

0.4

1.3

2.2

4.5

0.4

-12.5

𝒙

・・・

𝑛

Database vectors

𝒚1 𝒚2 𝒚𝑛

Find a similar 𝒚𝑖

𝒚2

最近傍探索問題

Page 7: Joint Inverted Indexing

7

0.23

1.4

-0.3

9.6

0.0

2.3

Query vector

𝐷

3.21

0.5

42.0

-2.4

12.3

1.1

-0.1

1.4

4.2

9.1

0.2

3.1

0.4

1.3

2.2

4.5

0.4

-12.5

𝒙

・・・

𝑛

Database vectors

𝒚1 𝒚2 𝒚𝑛

Find a similar 𝒚𝑖

𝒚2

𝑦2 = argmin𝑦𝑖

𝑑(𝑥, 𝑦𝑖)

最近傍探索問題

Page 8: Joint Inverted Indexing

8

0.23

1.4

-0.3

9.6

0.0

2.3

Query vector

𝐷

3.21

0.5

42.0

-2.4

12.3

1.1

-0.1

1.4

4.2

9.1

0.2

3.1

0.4

1.3

2.2

4.5

0.4

-12.5

𝒙

・・・

𝑛

Database vectors

𝒚1 𝒚2 𝒚𝑛

Find a similar 𝒚𝑖

𝒚2

𝑦2 = argmin𝑦𝑖

𝑑(𝑥, 𝑦𝑖)

近似最近傍探索問題 厳密では無いが高い確率で最近傍探索

Page 9: Joint Inverted Indexing

9

近似最近傍探索問題の最近の動向

参考:K-means Hashingの紹介 by @yu4u http://www.slideshare.net/ren4yu/k-means-hashing-up

Hammingベース Lookupベース

精度 〇 ◎

線形探索速度 ◎ 〇

高速計算 MIH [CVPR 12] PQ [PAMI 11] IMI [CVPR 12] What Is [ICCV 13]

手法例 SH [NIPS 08] ITQ [CVPR 11] K-means Hashing [CVPR 13] ・・・

PQ [PAMI 11] Optimized PQ [CVPR 13] Cartesian K-means [CVPR 13]

𝒙 ⟼ 𝐻 𝒙 =001

Hash

𝒙 → →ID:4

Quantization

Page 10: Joint Inverted Indexing

10

近似最近傍探索問題の最近の動向

参考:K-means Hashingの紹介 by @yu4u http://www.slideshare.net/ren4yu/k-means-hashing-up

Hammingベース Lookupベース

精度 〇 ◎

線形探索速度 ◎ 〇

高速計算 MIH [CVPR 12] PQ [PAMI 11] IMI [CVPR 12] What Is [ICCV 13]

手法例 SH [NIPS 08] ITQ [CVPR 11] K-means Hashing [CVPR 13] ・・・

PQ [PAMI 11] Optimized PQ [CVPR 13] Cartesian K-means [CVPR 13]

𝒙 ⟼ 𝐻 𝒙 =001

Hash

𝒙 → →ID:4

Quantization

Jegou現人神を崇拝するPQ教 INRIA (Jegou様と仲間たち) vs MSRA (優秀中国インターン勢) vs Norouzi (ガチソロプレイ)

ほげほげHashが乱立する邪悪な世界 ・ぐう早(一回の比較が10nsとか) ・最近はブームがひと段落したか?

Page 11: Joint Inverted Indexing

11

近似最近傍探索問題の最近の動向

参考:K-means Hashingの紹介 by @yu4u http://www.slideshare.net/ren4yu/k-means-hashing-up

Hammingベース Lookupベース

精度 〇 ◎

線形探索速度 ◎ 〇

高速計算 MIH [CVPR 12] PQ [PAMI 11] IMI [CVPR 12] What Is [ICCV 13]

手法例 SH [NIPS 08] ITQ [CVPR 11] K-means Hashing [CVPR 13] ・・・

PQ [PAMI 11] Optimized PQ [CVPR 13] Cartesian K-means [CVPR 13]

𝒙 ⟼ 𝐻 𝒙 =001

Hash

𝒙 → →ID:4

Quantization

Jegou現人神を崇拝するPQ教 INRIA (Jegou様と仲間たち) vs MSRA (優秀中国インターン勢) vs Norouzi (ガチソロプレイ)

ほげほげHashが乱立する邪悪な世界 ・ぐう早(一回の比較が10nsとか) ・最近はブームがひと段落したか?

今日紹介する論文は,Lookupベース

の高速計算の精度を上げるもの

Page 12: Joint Inverted Indexing

12

問題設定 ・1-NN問題 クエリを投げて,探索精度をRecall@100 等で測る ・データベースのベクトル数は非常に多い メモリに直接載らない e.g., SIFT 1G dataset (生データがuchar * 128 dim * 1G個 = 128GB)

・ディスクアクセスはしない

・ベースライン:IVFADC [Jegou, PAMI 2011]

Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖

Page 13: Joint Inverted Indexing

13

問題設定 ・1-NN問題 ・データベースのベクトル数は非常に多い ・ディスクアクセスはしない ・ベースライン:IVFADC [Jegou, PAMI 2011]

Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖

今日の流れ: PQの簡易解説→IVFADC解説→提案手法解説

Page 14: Joint Inverted Indexing

14

問題設定 ・1-NN問題 ・データベースのベクトル数は非常に多い ・ディスクアクセスはしない ・ベースライン:IVFADC [Jegou, PAMI 2011]

Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖

今日の流れ: PQの簡易解説→IVFADC解説→提案手法解説

Page 15: Joint Inverted Indexing

15

Product Quantization (PQ)とは・・ すごいk-means

明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html

入力ベクトル:

𝒙 ∈ 𝑅𝐷

k-means 量子化器:16分割

③ ④

⑫ ⑬

Page 16: Joint Inverted Indexing

16

Product Quantization (PQ)とは・・ すごいk-means

明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html

入力ベクトル:

𝒙 ∈ 𝑅𝐷 ★

k-means 量子化器:16分割

③ ④

⑫ ⑬

Page 17: Joint Inverted Indexing

17

Product Quantization (PQ)とは・・ すごいk-means

明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html

入力ベクトル:

𝒙 ∈ 𝑅𝐷 ★

k-means 量子化器:16分割

𝒙 ↦⑪

③ ④

⑫ ⑬

Page 18: Joint Inverted Indexing

18

Product Quantization (PQ)とは・・ すごいk-means

明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html

入力ベクトル:

𝒙 ∈ 𝑅𝐷 ★

k-means 量子化器:16分割

𝒙 ↦⑪

(1) 量子化 ベクトルをバケットに 振り分ける (2) データ圧縮 D次元ベクトルを 整数一個で表現

③ ④

⑫ ⑬

Page 19: Joint Inverted Indexing

19

Product Quantization (PQ)とは・・ すごいk-means

明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html

入力ベクトル:

𝒙 ∈ 𝑅𝐷 ★

k-means 量子化器:16分割

𝒙 ↦⑪

(1) 量子化 ベクトルをバケットに 振り分ける (2) データ圧縮 D次元ベクトルを 整数一個で表現

③ ④

⑫ ⑬

PQ

入力ベクトル:

𝒙 ∈ 𝑅𝐷

① ② ③ ④ ⑤ ⑥

量子化器:6 * 6 = 36分割

② ⑤

Page 20: Joint Inverted Indexing

20

Product Quantization (PQ)とは・・ すごいk-means

明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html

入力ベクトル:

𝒙 ∈ 𝑅𝐷 ★

k-means 量子化器:16分割

𝒙 ↦⑪

(1) 量子化 ベクトルをバケットに 振り分ける (2) データ圧縮 D次元ベクトルを 整数一個で表現

③ ④

⑫ ⑬

PQ

入力ベクトル:

𝒙 ∈ 𝑅𝐷

① ② ③ ④ ⑤ ⑥

量子化器:6 * 6 = 36分割

② ⑤

Page 21: Joint Inverted Indexing

21

Product Quantization (PQ)とは・・ すごいk-means

明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html

入力ベクトル:

𝒙 ∈ 𝑅𝐷 ★

k-means 量子化器:16分割

𝒙 ↦⑪

(1) 量子化 ベクトルをバケットに 振り分ける (2) データ圧縮 D次元ベクトルを 整数一個で表現

③ ④

⑫ ⑬

PQ

入力ベクトル:

𝒙 ∈ 𝑅𝐷

① ② ③ ④ ⑤ ⑥

量子化器:6 * 6 = 36分割

② ⑤

★ 𝒙 ↦

[②①]

Page 22: Joint Inverted Indexing

22

Product Quantization (PQ)とは・・ すごいk-means

明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html

入力ベクトル:

𝒙 ∈ 𝑅𝐷 ★

k-means 量子化器:16分割

𝒙 ↦⑪

(1) 量子化 ベクトルをバケットに 振り分ける (2) データ圧縮 D次元ベクトルを 整数一個で表現

③ ④

⑫ ⑬

PQ

入力ベクトル:

𝒙 ∈ 𝑅𝐷

① ② ③ ④ ⑤ ⑥

量子化器:6 * 6 = 36分割

② ⑤

★ 𝒙 ↦

[②①]

(1) すごい量子化 ベクトルをバケットに 細かく振り分ける →量子化誤差少 (2) すごいデータ圧縮 D次元ベクトルを 整数複数個で表現 →精度維持し省メモリ

Page 23: Joint Inverted Indexing

23

問題設定 ・1-NN問題 ・データベースのベクトル数は非常に多い ・ディスクアクセスはしない ・ベースライン:IVFADC [Jegou, PAMI 2011]

Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖

今日の流れ: PQの簡易解説→IVFADC解説→提案手法解説

Page 24: Joint Inverted Indexing

24

IVFADC: 粗い量子化+PQ re-ranking

𝒄1

𝒄𝑘′

𝒄2 ・・・

オフライン:データ登録

k-means centers 粗い量子化器

𝒚1

Page 25: Joint Inverted Indexing

25

IVFADC: 粗い量子化+PQ re-ranking

𝒄1

𝒄𝑘′

𝒄2 ・・・

オフライン:データ登録

(1) 最も近いcenterを探す

k-means centers 粗い量子化器

𝒚1

𝒄2 = argmin𝒄𝑖

𝑑(𝒚1 𝒄𝑖)

Page 26: Joint Inverted Indexing

26

IVFADC: 粗い量子化+PQ re-ranking

𝒄1

𝒄𝑘′

𝒄2 ・・・

オフライン:データ登録

(1) 最も近いcenterを探す (2) centerとの残差(𝒚 − 𝒄)をPQ量子化する

k-means centers 粗い量子化器

𝒚1

𝒄2 = argmin𝒄𝑖

𝑑(𝒚1 𝒄𝑖)

残差の量子化: 𝑃𝑄 𝒚1 − 𝒄2 =[⑱⑪]

Page 27: Joint Inverted Indexing

27

IVFADC: 粗い量子化+PQ re-ranking

𝒄1

𝒄𝑘′

𝒄2 ・・・

オフライン:データ登録

(1) 最も近いcenterを探す (2) centerとの残差(𝒚 − 𝒄)をPQ量子化する (3) centerのリストに登録する

k-means centers 粗い量子化器

𝒚1

𝒄2 = argmin𝒄𝑖

𝑑(𝒚1 𝒄𝑖)

残差の量子化: 𝑃𝑄 𝒚1 − 𝒄2 =[⑱⑪]

1

⑱⑪

Page 28: Joint Inverted Indexing

28

IVFADC: 粗い量子化+PQ re-ranking オフライン:データ登録

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

(1) 最も近いcenterを探す (2) centerとの残差(𝒚 − 𝒄)をPQ量子化する (3) centerのリストに登録する

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

データベース中の全てのベクトルを登録する

Page 29: Joint Inverted Indexing

29

IVFADC: 粗い量子化+PQ re-ranking オフライン:データ登録

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

(1) 最も近いcenterを探す (2) centerとの残差(𝒚 − 𝒄)をPQ量子化する (3) centerのリストに登録する 良い点:𝒚を圧縮して(e.g., 64bit)で保持.メモリ効率良 データが粗い量子化でざっくりまとめられている

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

データベース中の全てのベクトルを登録する

Page 30: Joint Inverted Indexing

30

IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙 オンライン:探索

Page 31: Joint Inverted Indexing

31

IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

(1) 最も近いcenterを探してそのリストを順番に見る

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙 オンライン:探索

Page 32: Joint Inverted Indexing

32

IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

(1) 最も近いcenterを探してそのリストを順番に見る (2) 𝒙と𝒚の近似距離は高速計算できる (ADC計算 [Jegou 2011])

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

𝑑 𝒙, 𝒚1 = 𝑑(𝒙 − 𝒄2, 𝑃𝑄−1(⑱⑪)) = 12.3

ADC距離近似

オンライン:探索

Page 33: Joint Inverted Indexing

33

IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

(1) 最も近いcenterを探してそのリストを順番に見る (2) 𝒙と𝒚の近似距離は高速計算できる (ADC計算 [Jegou 2011])

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

𝑑 𝒙, 𝒚1 = 𝑑(𝒙 − 𝒄2, 𝑃𝑄−1(⑱⑪)) = 12.3

1: 12.3

ADC距離近似

Re-ranking

オンライン:探索

Page 34: Joint Inverted Indexing

34

IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

(1) 最も近いcenterを探してそのリストを順番に見る (2) 𝒙と𝒚の近似距離は高速計算できる (ADC計算 [Jegou 2011])

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

𝑑 𝒙, 𝒚1 = 𝑑(𝒙 − 𝒄2, 𝑃𝑄−1(⑱⑪)) = 12.3

1: 12.3 23: 45.1

ADC距離近似

Re-ranking

オンライン:探索

Page 35: Joint Inverted Indexing

35

IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

(1) 最も近いcenterを探してそのリストを順番に見る (2) 𝒙と𝒚の近似距離は高速計算できる (ADC計算 [Jegou 2011])

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

𝑑 𝒙, 𝒚1 = 𝑑(𝒙 − 𝒄2, 𝑃𝑄−1(⑱⑪)) = 12.3

1: 12.3 23: 45.1 57: 2.4 88: 56.4 89: 98.4 95: 22.2

ADC距離近似

Re-ranking

オンライン:探索

Page 36: Joint Inverted Indexing

36

IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

(1) 最も近いcenterを探してそのリストを順番に見る (2) 𝒙と𝒚の近似距離は高速計算できる (ADC計算 [Jegou 2011]) (3) 一番近いものを選ぶ(Re-ranking)

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

𝑑 𝒙, 𝒚1 = 𝑑(𝒙 − 𝒄2, 𝑃𝑄−1(⑱⑪)) = 12.3

1: 12.3 23: 45.1 57: 2.4 88: 56.4 89: 98.4 95: 22.2

ADC距離近似

Re-ranking

オンライン:探索

Page 37: Joint Inverted Indexing

37

IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

(1) 最も近いcenterを探してそのリストを順番に見る (2) 𝒙と𝒚の近似距離は高速計算できる (ADC計算 [Jegou 2011]) (3) 一番近いものを選ぶ(Re-ranking) 良い点:早い.粗い量子化+リスト探索だけ. PQ(ADC)の性能が良いので,探索精度も高い

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

𝑑 𝒙, 𝒚1 = 𝑑(𝒙 − 𝒄2, 𝑃𝑄−1(⑱⑪)) = 12.3

1: 12.3 23: 45.1 57: 2.4 88: 56.4 89: 98.4 95: 22.2

ADC距離近似

Re-ranking

オンライン:探索

Page 38: Joint Inverted Indexing

38

問題設定 ・1-NN問題 ・データベースのベクトル数は非常に多い ・ディスクアクセスはしない ・ベースライン:IVFADC [Jegou, PAMI 2011]

Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖

今日の流れ: PQの簡易解説→IVFADC解説→提案手法解説

Page 39: Joint Inverted Indexing

39

(再掲) IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

問題点:

粗い量子化の精度が低いと,正解がリストに含まれないかもしれない(その場合soft votingする.ので余計なコストがかかる)

Page 40: Joint Inverted Indexing

40

(再掲) IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

問題点:

粗い量子化の精度が低いと,正解がリストに含まれないかもしれない(その場合soft votingする.ので余計なコストがかかる)

𝒄2のリストを見ているが・・

正解はこっち

Page 41: Joint Inverted Indexing

41

(再掲) IVFADC: 粗い量子化+PQ re-ranking

k-means centers 粗い量子化器

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

49 70 78 91

④⑧ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

問題点:

粗い量子化の精度が低いと,正解がリストに含まれないかもしれない(その場合soft votingする.ので余計なコストがかかる) 正解はリストに入ってほしい→良い量子化器を設計したい

𝒄2のリストを見ているが・・

正解はこっち

Page 42: Joint Inverted Indexing

42

Joint-ADC: 複数の粗い量子化+PQ re-ranking 9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

23 55 68 81

⑨③ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

13 77 78 94 99

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

𝒄1

𝒄𝑘′

𝒄2 ・・・

※ここで⑭⑨は残差ではなく𝒚本体のPQ

※メモリ無駄に消費しないように,本当は同IDあたり⑭⑨は一回しか記述しない

Re-ranking

粗い量子化器

粗い量子化器

・複数の粗い量子化器を用意

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

Page 43: Joint Inverted Indexing

43

Joint-ADC: 複数の粗い量子化+PQ re-ranking

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

23 55 68 81

⑨③ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

13 77 78 94 99

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

𝒄1

𝒄𝑘′

𝒄2 ・・・

1: 12.3 23: 45.1 57: 2.4 88: 56.4 89: 98.4 95: 22.2

※ここで⑭⑨は残差ではなく𝒚本体のPQ

※メモリ無駄に消費しないように,本当は同IDあたり⑭⑨は一回しか記述しない

Re-ranking

粗い量子化器

粗い量子化器

・複数の粗い量子化器を用意 ・それぞれ探す

Page 44: Joint Inverted Indexing

44

Joint-ADC: 複数の粗い量子化+PQ re-ranking

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

23 55 68 81

⑨③ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

13 77 78 94 99

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

𝒄1

𝒄𝑘′

𝒄2 ・・・

1: 12.3 23: 45.1 57: 2.4 88: 56.4 89: 98.4 95: 22.2 23: 45.1 55: 0.6 68: 1.1 81: 47.2

※ここで⑭⑨は残差ではなく𝒚本体のPQ

※メモリ無駄に消費しないように,本当は同IDあたり⑭⑨は一回しか記述しない

Re-ranking

粗い量子化器

粗い量子化器

・複数の粗い量子化器を用意 ・それぞれ探す

Page 45: Joint Inverted Indexing

45

Joint-ADC: 複数の粗い量子化+PQ re-ranking

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

23 55 68 81

⑨③ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

13 77 78 94 99

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

𝒄1

𝒄𝑘′

𝒄2 ・・・

1: 12.3 23: 45.1 57: 2.4 88: 56.4 89: 98.4 95: 22.2 23: 45.1 55: 0.6 68: 1.1 81: 47.2

※ここで⑭⑨は残差ではなく𝒚本体のPQ

※メモリ無駄に消費しないように,本当は同IDあたり⑭⑨は一回しか記述しない

Re-ranking

粗い量子化器

粗い量子化器

・複数の粗い量子化器を用意 ・それぞれ探す→まとめてRe-ranking

Page 46: Joint Inverted Indexing

46

Joint-ADC: 複数の粗い量子化+PQ re-ranking

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

23 55 68 81

⑨③ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒙

13 77 78 94 99

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

𝒄1

𝒄𝑘′

𝒄2 ・・・

1: 12.3 23: 45.1 57: 2.4 88: 56.4 89: 98.4 95: 22.2 23: 45.1 55: 0.6 68: 1.1 81: 47.2

※ここで⑭⑨は残差ではなく𝒚本体のPQ

※メモリ無駄に消費しないように,本当は同IDあたり⑭⑨は一回しか記述しない

Re-ranking

粗い量子化器

粗い量子化器

・複数の粗い量子化器を用意 ・それぞれ探す→まとめてRe-ranking ・量子化器をうまく作れば, 探索範囲が広がり精度上がる

Page 47: Joint Inverted Indexing

47

量子化器の設計:ダメな例

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱ 𝒄1

𝒄𝑘′

𝒄2 ・・・

𝒄1

𝒄𝑘′

𝒄2 ・・・

粗い量子化器

粗い量子化器

同じ(似ている)量子化器を使うと,リストも似るので,意味が無い →単純に複数回k-meansするとこうなる

𝒙 ★

★ 1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

Page 48: Joint Inverted Indexing

48

量子化器の設計:良い例

1 23 57 88 89 95

⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④

9 34 41 45 60

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

23 55 68 81

⑨③ ⑫⑬ ⑧⑮ ⑭⑨

𝒄1

𝒄𝑘′

𝒄2 ・・・

13 77 78 94 99

③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱

𝒄1

𝒄𝑘′

𝒄2 ・・・

粗い量子化器

粗い量子化器

𝒙 ★

違った空間分割だと良い →違った分割だが量子化誤差も小さく なるように最適化する

Page 49: Joint Inverted Indexing

49

量子化器の設計:アルゴリズム

作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる

Page 50: Joint Inverted Indexing

50

量子化器の設計:アルゴリズム

作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる

Page 51: Joint Inverted Indexing

51

量子化器の設計:アルゴリズム

作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる

Page 52: Joint Inverted Indexing

52

量子化器の設計:アルゴリズム

作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる

Page 53: Joint Inverted Indexing

53

量子化器の設計:アルゴリズム

作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる

Page 54: Joint Inverted Indexing

54

結果

既存手法

提案手法

・精度良い,速度早い,だがメモリ消費は大きい ・パラメータセンシティブ

探索結果上位何件中に正解がいるか 高いほど精度良い

Page 55: Joint Inverted Indexing

55

議論 ・シンプルアイデアのワンチャン論文だが精度は良い

・空間を何かの組み合わせで分割するという点で,複数k-meansの利用はPQと似ている. ・生データ(128GB)がメモリに載らない前提で話をすすめているのに結局この手法は80GB使っていて,それでいいのか感 ・ANN系はどれも現実の問題と乖離していると言われている.1G個の特徴を80GBのメモリを消費して10ms

で探索することが必要な状況ってなんだろうか(機械学習の学習段階? cf. CVPR13 best paper [Dean 13] )

Page 56: Joint Inverted Indexing

参考文献(1/2) MIH [CVPR 12]

M. Norouzi, et al. “Fast Search in Hamming Space with Multi-Index Hashing” CVPR 2012 実はhamming系の手法はこれを使うとめちょ早くなる.ただ速度がクエリに依存する.PAMIるようで,ジャーナルバージョンは M. Norouzi, et al. “Fast Exact Search in Hamming Space with Multi-Index Hashing” PAMI 2014

SH [NIPS 08] Y. Weiss, et al. “Spectral Hashing” NIPS 2008 Hamming系の走り.配布コードがシンプルで,みんなこれに合わせている

ITQ [CVPR 11] Y. Gong, et al. “Iterative Quantization: A Procrustean Approach to Learning Binary Codes” CVPR 2011 Hamming系は一時期みんなこれを比較対象にしていた.

K-means Hashing [CVPR 13] K. He, et al. “K-means Hashing: an Affinity-Preserving Quantization Method for Learning Binary Compact

Codes” CVPR 2013 イントロでの分野の外観説明が分かり易く,HammingベースとLookupベースの分類はこの論文より.ITQの考え方を推し進めて,Hamming系とLookup系をつなぐ手法だと自分で言っている

PQ [PAMI 11] H. Jegou, et al. “Product Quantization for Nearest Neighbor Search” PAMI 2011 今回の手法の大元はこのIVFADCなので,取り合えず読む必要がある.実験が恐ろしくしっかりしていて辛い気持ちになる

56

Page 57: Joint Inverted Indexing

参考文献(2/2) IMI [CVPR 12]

A. Babenko and V. Lempitsky “The Inverted Multi-Index” CVPR 2012 IVFADCの粗い量子化をPQに置き換えたもの.この論文でも既存手法としてこいつを相手にしている

What Is [ICCV 13] M. Iwamura, et al. “What Is the Most Efficient Way to Select Nearest Neighbor Candidates for Fast

Approximate Nearest Neighbor Search?” ICCV 2013 大阪府立大のグループ.IMIの粗いPQ計算の高速化

Optimized PQ [CVPR 13] T. Ge, et al. “Optimized Product Quantization for Approximate Nearest Neighbor Search” CVPR 2013 PQするときの次元分割をエラー最少でやる最適化.最終的には回転行列を求めるだけになる.

PAMIバージョン(T. Ge, et al. “Optimized Product Quantization” PAMI 2014)ではIMIに対しこれを行っていて,現状のstate-of-the-art感がある

Cartesian K-means [CVPR 13] M. Norouzi and D. J. Fleet, “Cartesian k-means” CVPR 2013 Optimized PQと全く同じ会議で全く同じ内容だったという事例.立式が洒落ている.Optimized PQのほうが先にPAMIっているので戦略負けしたのか感がある

Random Projection Tree[Freund, STOC 07] S. Dasgupta and Y. Freund. “Random Projection Trees and Low Dimensional Manifolds” STOC 2007

CVPR13 best paper [Dean 13] T. Dean, et al. “Fast, Accurate Detection of 100,000 Object Classes on a Single Machine” CVPR 2013 CVPR13のベストペーパーで,機械学習の学習段階でhamming系のANNを利用することで高速に学習する.なのでよりたくさんの特徴量つっこめるので精度上がるという企業パワー全開な論文.今後ANNが使われる文脈の一つなのか?

57