Advertisement

More Related Content

Slideshows for you(19)

Advertisement

Similar to Ibisml2011 06-20(20)

Advertisement

Ibisml2011 06-20

  1. 2011年6月20日 第五回情報論的学習理論と機械学習研究会 (IBISML) ウェーブレット木による バイナリコードの高速検索 田部井 靖生, 津田 宏治 科学技術振興機構, 産業技術総合研究所 1
  2. 発表の流れ • 背景 近傍検索法の必要性 • 本発表で用いるデータ構造 ウェーブレット木 • バイナリコードの検索(提案法) 幾何制約を取り入れたウェーブレット 木による検索 • 実験 既存手法との比較 (転置インデックス) 8000万画像 2
  3. ε-近傍検索 • クエリデータ点の距離ε以内の点をデータ ベースから検索する 入力: n データベース点 {xi }n i=1 d ,    クエリデータ点 xq d , 距離閾値ε 出力:クエリデータ点 xq から距離ε以内の データベース点 3
  4. 近傍検索の必要性 • あらゆる手法のもととなるタスク 例) semi-supervised learning, spectral clustering, ROI detection in images, etc • 2つの研究の方向性 1. 空間分割による索引に基づく検索法 cover tree(ICML,06), spill tree(NIPS05) etc 高次元データに対しては有効ではない(NIPS,09) 2. locality sensitive codeを用いた検索法 コンパクトにデータを保持することが可能 エラーと速度のトレードオフをコントロールす ることが困難 4
  5. 手法の概要 • 幾何制約を取り入れたlocality sensitive codeの高速検索 エラー制御 Shift-invariant kernel based hashing (NIPS,09) • ウェーブレット木(SODA,03)による索引 two dimensional range searchに幾何制約を取り入 れる 探索空間の枝刈り 5
  6. 発表の流れ • 背景 近傍検索法の必要性 • 本発表で用いるデータ構造 ウェーブレット木 • バイナリコードの検索法(提案法) 幾何制約を取り入れたウェーブレッ ト木による検索 • 実験 8000万画像 6
  7. ウェーブレット木 (SODA,03) • 整数配列のself-index A 1 3 6 8 2 5 7 1 2 7 4 5 • 高速な配列上の操作 連続した区間内の値cの出現回数 値cのi番目の出現位置 連続した区間内の最大値,最小値,k番目に大きい値, 出現位置 etc • 区間の長さに関して定数時間, 約nlogsビット のメモリ(n:配列長,s:整数の最大値) • 2次元Arange intersection: ms の範囲内で, n個の区間で共通す mi t る要素を求める 7
  8. 配列上のRange Intersection • 長さNの配列 A, 1 Ai M i j k " A 1 3 6 8 2 5 7 1 2 7 4 5 • Range Intersection: rint(A,[i,j],[k,l]) A[i,j]とA[k,l]の共通要素を求める ナイーブ法=2つの区間を連結してソート • 配列のインデックス(ウェーブレット木)を使 い, 高速に解く 8
  9. 部分配列上の木: 下半分:左の子 上半分:右の子 [1,8] 1 3 6 8 2 5 7 1 7 2 4 5 [1,4] [5,8] 1 3 2 1 2 4 6 8 5 7 7 5 [1,2] [3,4] [5,6] [7,8] 1 2 1 2 3 4 6 5 5 8 7 7 1 1 2 2 3 4 5 5 6 7 7 8 9
  10. それぞれの要素が下半分(0) または上半分(1)かを記憶 [1,8] 0 0 1 1 0 1 1 0 1 0 0 1 [1,4] [5,8] 0 1 0 0 0 1 0 1 0 1 1 0 [1,2] [3,4] [5,6] [7,8] 0 1 0 1 0 1 1 0 0 1 0 0 1 2 3 4 5 6 7 8 10
  11. ランク辞書によりビット 配列をインデックス • 定数時間でランク操作が可能 rankc (B, i) : B[1..i] のc {0, 1} の個数を返す • 代表的な手法: rank9sel (Vigna,08) ✴ 例) B=0110011100 i 1 2 3 4 5 6 7 8 9 10 rank1 (B, 8) = 5 011001110 0 rank0 (B, 5) = 3 011001110 0 11
  12. ランク辞書の実装 • 長さnのビット配列 B を 長さ         B = log2 n     の大ブロックに 分割 RL RL:大ブロックの1の個数 RS • R のそれぞれのブロック L を長さ s = log2 n/2 の小ブ ロックに分割 Rs:小ブロックの1の個数 rank1 (B, i) = RL [i/ ] + Rs [i/s] + (remaining rank) • 時間:O(1) メモリ:n+o(n) bits 12
  13. 区間の定数時間分割 • ランク操作により, 区間の分割は定数時 間で行うことができる 左の子: rank0, 右の子: rank1 • ナイーブ法: 全区間の要素の総和に線形時間 [1,8] Aroot 1 3 6 8 2 5 7 1 7 2 4 5 rank0 rank1 [1,4] [5,8] Aleft 1 3 2 1 2 4 Aright 6 8 5 7 7 5 13
  14. 枝刈りによるrange intersection の高速計算 Pruned [1,8] 1 3 6 8 2 5 7 1 7 2 4 5 [1,4] [5,8] 1 3 2 1 2 4 6 8 5 7 7 5 [1,2] [3,4] [5,6] [6,8] 1 2 1 2 3 4 6 5 5 8 7 7 1 1 2 2 3 4 5 5 6 7 7 8 solution!! 14
  15. Two dimensional range intersection • 長さNの配列 A, 1 Ai M i j k " A 1 3 6 8 2 5 7 1 2 7 4 5 • Two dimensional range intersection: trint(A,[i,j],[k,l],[ms,mt]) A[i,j]とA[k,l]の共通要素をms Ai mtの範囲内 で求める 探索空間の枝刈りが可能 15
  16. Two dimensional range intersection 2 A[i] 3 Pruned// [1,8] 1 3 6 8 2 5 7 1 7 2 4 5 [1,4] [5,8] 1 3 2 1 2 4 6 8 5 7 7 5 [1,2] [3,4] [5,6] [6,8] 1 2 1 2 3 4 6 5 5 8 7 7 1 1 2 2 3 4 5 5 6 7 7 8 solu3on!!/ 16
  17. 発表の流れ • 背景 近傍検索法の必要性 • 本発表で用いるデータ構造 ウェーブレット木 • バイナリコードの検索(提案法) 幾何制約を取り入れたウェーブレッ ト木による検索 • 実験 8000万画像 17
  18. バイナリコードの類似度検索 xi=(1.2,-0.9,2,3,4,...) • ベクトルデータ Xi=100011... • バイナリコード(SIHK) 10 00 11... • ブロック分割 1-10, 2-00, 3-11,... • Bag-of-words表現 • Semi-conjunctive query クエリQに対して, 少なくともkワードを共有す るデータXiをデータベースからすべて求める |Xi Q| k 18
  19. Shift-invariant kernel based hashing (NIPS,09) • ベクトルデータ x d をバイナリs {0, 1}へ射影 s = sign(cos(r x + ) + ) T r d N (0, ) :正規分布   からのランダムベクトル , : 一様分布U[-1,1], U[0,2π]からの乱数 • 2つのベルトルx,yの (x) = 2 cos(rT x + ) の内積の期 待値 Er, [ (x) (y)] がtransition invariant kernel k(x,y)=k(x-y)の近似(Rahimi and Recht,07) • L回繰り返してバイナリコード(文字列)へ射影 • 元の空間のユーグリッド距離を文字列のハミン グ距離で保つ • データのコンパクトな表現 19
  20. 転置インデックス,配列,ウェーブレット木 ワード 識別子 • データベースを転置インデック 1-00 1,3,6,8 に格納 1-01 2,5,7 • すべての行を連結し, 配列に格納 1-10 2,7 • ウェーブレット木により 1-11 4,5 配列を索引付ける 2-00 2,6,8 • Semi-conjunctive query = Extension of range intersection A 1 3 6 8 2 5 7 2 7 4 5 26 8 6 配列中少なくともk回現れる 識別子を発見する ウェーブレット木 20
  21. 幾何制約 • クエリーqに対して, 距離ε 以内の点は, 第一主成分の座 h6 標hiもε以内 q h4 h5 ε is = min{i|hq hi } ie = min{i|hi hq + } h3 hq h2 h1 • is i ieかつ |Xi Q| k を満たすiをすべて求める hq hi hq + (Extension of two dimensional range intersecion) 21
  22. 2種類のエラー • I*:クエリqに対して, 距離ε以内の データベース中の点xiの集合 I = {i| (xi , q) , is i ie } • I: クエリQに対して, k個のワードを共有 するデータベース中の点Xiの集合 I = {i||Xi Q| k, is i ie } • False positive rate: Fp = |I I |/|I| • False negative rate: Fn = |I I|/|I | 22
  23. False negative rateの上限 • False negative rateは以下のように抑え ることができる b Fn 1 p0 (1 k p0 ) b k p0 = (1 p) k=0 • pは近傍に対する非衝突確率の上限 8 1 exp( 2 /2) p= 2 m=0 4m2 1 • False negative rateをできるだけ小さく するようにパラメータを決定できる 23
  24. 時間とメモリ • クエリあたりの検索時間: O(τb) τ:たどったノード数 b:ブロックの個数(L/l) • メモリ:(1+α)Nlogn+MlogN ビット N: すべてのワードの個数 M:配列中の最大整数 n:データ点の数 • 転置インデックスのメモリ:Nlognビット • 転置インデックスと比較して約60%のオー バーヘッド 24
  25. 発表の流れ • 背景 近傍検索法の必要性 • 本発表で用いるデータ構造 ウェーブレット木 • バイナリコードの検索(提案法) 幾何制約を取り入れたウェーブレット 木による検索 • 実験 既存手法との比較 (転置インデックス) 8000万画像 25
  26. 実験 • Tiny image dataset (Torralba et al., 08) 約8000万データ, 386次元 • 500万データを用いて, 従来法 (転置インデックス) と比較 コード長 L=128,256,1024ビット ブロック長 =1,4,16 距離の閾値ε 0.01,から0.5の値 ブロックマッチの個数の閾値kは, false negative rateの上限が0.001にできるだけ近く なるように決める • false negative rate一定のもとで, false positive rateと速度の変化をみる 26
  27. 27
  28. コード長L=256, ブロック長=4, 距離の閾値ε=0.1の検索時間 202秒 7秒 28
  29. メモリ 28G 29
  30. 構築時間 4h 30
  31. まとめ • 高速かつメモリー効率の良いバイナリ コードの検索法 • 第一主成分による制約を入れてsemi- conjunctive queryを効率的に解く • ウェーブレット木による索引 • バイナリコードへの変換は shift-invariant kernel based hashing を用いる • 8000万画像にも適応可能 31
Advertisement