joint inverted indexing
TRANSCRIPT
コンピュータビジョン 勉強会@関東
ICCV2013読み会
2014/2/23
@ketsumedo_yarou
1
Title :
Joint Inverted Indexing
Author:
Yan Xia, Fang Wen (University of Science and Technology of China),
Kaiming He, Jian Sun (Microsoft Research Asia)
論文
2
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でインターンで行った研究
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 の著者の方.
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
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
最近傍探索問題
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𝑦𝑖
𝑑(𝑥, 𝑦𝑖)
最近傍探索問題
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𝑦𝑖
𝑑(𝑥, 𝑦𝑖)
近似最近傍探索問題 厳密では無いが高い確率で最近傍探索
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
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とか) ・最近はブームがひと段落したか?
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ベース
の高速計算の精度を上げるもの
12
問題設定 ・1-NN問題 クエリを投げて,探索精度をRecall@100 等で測る ・データベースのベクトル数は非常に多い メモリに直接載らない e.g., SIFT 1G dataset (生データがuchar * 128 dim * 1G個 = 128GB)
・ディスクアクセスはしない
・ベースライン:IVFADC [Jegou, PAMI 2011]
Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖
13
問題設定 ・1-NN問題 ・データベースのベクトル数は非常に多い ・ディスクアクセスはしない ・ベースライン:IVFADC [Jegou, PAMI 2011]
Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖
今日の流れ: PQの簡易解説→IVFADC解説→提案手法解説
14
問題設定 ・1-NN問題 ・データベースのベクトル数は非常に多い ・ディスクアクセスはしない ・ベースライン:IVFADC [Jegou, PAMI 2011]
Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖
今日の流れ: PQの簡易解説→IVFADC解説→提案手法解説
15
Product Quantization (PQ)とは・・ すごいk-means
明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html
⑪
入力ベクトル:
𝒙 ∈ 𝑅𝐷
k-means 量子化器:16分割
①
②
③ ④
⑤
⑦
⑥
⑨
⑧
⑩
⑫ ⑬
⑯
⑭
⑮
16
Product Quantization (PQ)とは・・ すごいk-means
明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html
⑪
入力ベクトル:
𝒙 ∈ 𝑅𝐷 ★
k-means 量子化器:16分割
①
②
③ ④
⑤
⑦
⑥
⑨
⑧
⑩
⑫ ⑬
⑯
⑭
⑮
17
Product Quantization (PQ)とは・・ すごいk-means
明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html
⑪
入力ベクトル:
𝒙 ∈ 𝑅𝐷 ★
k-means 量子化器:16分割
𝒙 ↦⑪
①
②
③ ④
⑤
⑦
⑥
⑨
⑧
⑩
⑫ ⑬
⑯
⑭
⑮
18
Product Quantization (PQ)とは・・ すごいk-means
明快な解説:直積量子化(Product Quantization)を用いた近似最近傍探索についての簡単な解説 映像奮闘記 http://mglab.blogspot.jp/2011/11/product-quantization.html
⑪
入力ベクトル:
𝒙 ∈ 𝑅𝐷 ★
k-means 量子化器:16分割
𝒙 ↦⑪
(1) 量子化 ベクトルをバケットに 振り分ける (2) データ圧縮 D次元ベクトルを 整数一個で表現
①
②
③ ④
⑤
⑦
⑥
⑨
⑧
⑩
⑫ ⑬
⑯
⑭
⑮
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分割
①
③
② ⑤
④
⑥
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分割
①
③
② ⑤
④
⑥
★
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分割
①
③
② ⑤
④
⑥
★ 𝒙 ↦
[②①]
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次元ベクトルを 整数複数個で表現 →精度維持し省メモリ
23
問題設定 ・1-NN問題 ・データベースのベクトル数は非常に多い ・ディスクアクセスはしない ・ベースライン:IVFADC [Jegou, PAMI 2011]
Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖
今日の流れ: PQの簡易解説→IVFADC解説→提案手法解説
24
IVFADC: 粗い量子化+PQ re-ranking
𝒄1
𝒄𝑘′
𝒄2 ・・・
オフライン:データ登録
k-means centers 粗い量子化器
𝒚1
25
IVFADC: 粗い量子化+PQ re-ranking
𝒄1
𝒄𝑘′
𝒄2 ・・・
オフライン:データ登録
(1) 最も近いcenterを探す
k-means centers 粗い量子化器
𝒚1
𝒄2 = argmin𝒄𝑖
𝑑(𝒚1 𝒄𝑖)
26
IVFADC: 粗い量子化+PQ re-ranking
𝒄1
𝒄𝑘′
𝒄2 ・・・
オフライン:データ登録
(1) 最も近いcenterを探す (2) centerとの残差(𝒚 − 𝒄)をPQ量子化する
k-means centers 粗い量子化器
𝒚1
𝒄2 = argmin𝒄𝑖
𝑑(𝒚1 𝒄𝑖)
残差の量子化: 𝑃𝑄 𝒚1 − 𝒄2 =[⑱⑪]
27
IVFADC: 粗い量子化+PQ re-ranking
𝒄1
𝒄𝑘′
𝒄2 ・・・
オフライン:データ登録
(1) 最も近いcenterを探す (2) centerとの残差(𝒚 − 𝒄)をPQ量子化する (3) centerのリストに登録する
k-means centers 粗い量子化器
𝒚1
𝒄2 = argmin𝒄𝑖
𝑑(𝒚1 𝒄𝑖)
残差の量子化: 𝑃𝑄 𝒚1 − 𝒄2 =[⑱⑪]
1
⑱⑪
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 ・・・
データベース中の全てのベクトルを登録する
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 ・・・
データベース中の全てのベクトルを登録する
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 ・・・
𝒙 オンライン:探索
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 ・・・
𝒙 オンライン:探索
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距離近似
オンライン:探索
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
オンライン:探索
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
オンライン:探索
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
オンライン:探索
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
オンライン:探索
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
オンライン:探索
38
問題設定 ・1-NN問題 ・データベースのベクトル数は非常に多い ・ディスクアクセスはしない ・ベースライン:IVFADC [Jegou, PAMI 2011]
Product Quantization の非線形近似解放 オリジナルのPQ論文で提案されているもの Lookupベースの高速計算系の元祖
今日の流れ: PQの簡易解説→IVFADC解説→提案手法解説
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する.ので余計なコストがかかる)
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のリストを見ているが・・
正解はこっち
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のリストを見ているが・・
正解はこっち
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
⑱⑪ ⑨③ ⑲② ⑦⑤ ②⑱ ④④
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
粗い量子化器
粗い量子化器
・複数の粗い量子化器を用意 ・それぞれ探す
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
粗い量子化器
粗い量子化器
・複数の粗い量子化器を用意 ・それぞれ探す
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
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 ・量子化器をうまく作れば, 探索範囲が広がり精度上がる
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
③⑧ ③⑭ ⑰⑲ ⑦⑤ ②⑱
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 ・・・
粗い量子化器
粗い量子化器
𝒙 ★
★
違った空間分割だと良い →違った分割だが量子化誤差も小さく なるように最適化する
49
量子化器の設計:アルゴリズム
作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる
50
量子化器の設計:アルゴリズム
作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる
51
量子化器の設計:アルゴリズム
作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる
52
量子化器の設計:アルゴリズム
作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる
53
量子化器の設計:アルゴリズム
作る量子化器:3個の量子化器,それぞれ8つのcenters ・まずk=24(=3*8)で通常のk-meansを行う ・次に3つずつ8つにグループ分けを行う (Random Projection Tree [Freund, STOC 07] を用いる) ・各グループからランダムに一つずつ選び一つの 量子化器を作る,を3回行う ・違った空間分割の量子化器が3つできる
54
結果
既存手法
提案手法
・精度良い,速度早い,だがメモリ消費は大きい ・パラメータセンシティブ
探索結果上位何件中に正解がいるか 高いほど精度良い
55
議論 ・シンプルアイデアのワンチャン論文だが精度は良い
・空間を何かの組み合わせで分割するという点で,複数k-meansの利用はPQと似ている. ・生データ(128GB)がメモリに載らない前提で話をすすめているのに結局この手法は80GB使っていて,それでいいのか感 ・ANN系はどれも現実の問題と乖離していると言われている.1G個の特徴を80GBのメモリを消費して10ms
で探索することが必要な状況ってなんだろうか(機械学習の学習段階? cf. CVPR13 best paper [Dean 13] )
参考文献(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
参考文献(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