SlideShare une entreprise Scribd logo
1  sur  31
2011年6月20日 第五回情報論的学習理論と機械学習研究会 (IBISML)




      ウェーブレット木による
      バイナリコードの高速検索
        田部井 靖生, 津田 宏治
    科学技術振興機構, 産業技術総合研究所



                                          1
発表の流れ
• 背景
  近傍検索法の必要性
• 本発表で用いるデータ構造
  ウェーブレット木
• バイナリコードの検索(提案法)
  幾何制約を取り入れたウェーブレット
  木による検索

• 実験
   既存手法との比較 (転置インデックス)
  8000万画像
                         2
ε-近傍検索
• クエリデータ点の距離ε以内の点をデータ
 ベースから検索する
  入力: n データベース点 {xi }n
                     i=1
                         d ,   

  クエリデータ点 xq  d
                , 距離閾値ε

  出力:クエリデータ点 xq から距離ε以内の
  データベース点




                                  3
近傍検索の必要性
• あらゆる手法のもととなるタスク
   例) 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
手法の概要
• 幾何制約を取り入れたlocality sensitive
  codeの高速検索
   エラー制御
   Shift-invariant kernel based hashing (NIPS,09)

• ウェーブレット木(SODA,03)による索引
   two dimensional range searchに幾何制約を取り入
   れる
   探索空間の枝刈り




                                                    5
発表の流れ
• 背景
  近傍検索法の必要性
• 本発表で用いるデータ構造
  ウェーブレット木
• バイナリコードの検索法(提案法)
  幾何制約を取り入れたウェーブレッ
  ト木による検索
• 実験
  8000万画像

                     6
ウェーブレット木 (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
配列上の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
部分配列上の木:
下半分:左の子 上半分:右の子
          [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
それぞれの要素が下半分(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
ランク辞書によりビット
       配列をインデックス
• 定数時間でランク操作が可能
      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
ランク辞書の実装
                   • 長さ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
区間の定数時間分割
• ランク操作により, 区間の分割は定数時
 間で行うことができる
  左の子: 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
枝刈りによる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
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
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
発表の流れ
• 背景
  近傍検索法の必要性
• 本発表で用いるデータ構造
  ウェーブレット木
• バイナリコードの検索(提案法)
  幾何制約を取り入れたウェーブレッ
  ト木による検索
• 実験
  8000万画像

                     17
バイナリコードの類似度検索
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
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
転置インデックス,配列,ウェーブレット木
  ワード          識別子        • データベースを転置インデック
   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
幾何制約
                                    • クエリー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
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
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
時間とメモリ
• クエリあたりの検索時間: O(τb)
  τ:たどったノード数
  b:ブロックの個数(L/l)

• メモリ:(1+α)Nlogn+MlogN ビット
  N: すべてのワードの個数
  M:配列中の最大整数
  n:データ点の数

• 転置インデックスのメモリ:Nlognビット
• 転置インデックスと比較して約60%のオー
 バーヘッド
                             24
発表の流れ
• 背景
  近傍検索法の必要性
• 本発表で用いるデータ構造
  ウェーブレット木
• バイナリコードの検索(提案法)
  幾何制約を取り入れたウェーブレット
  木による検索

• 実験
   既存手法との比較 (転置インデックス)
  8000万画像
                         25
実験
• 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
コード長L=256, ブロック長=4,
 距離の閾値ε=0.1の検索時間

                       202秒




                       7秒

                            28
メモリ
      28G




        29
構築時間

       4h




            30
まとめ
• 高速かつメモリー効率の良いバイナリ
 コードの検索法
• 第一主成分による制約を入れてsemi-
 conjunctive queryを効率的に解く

• ウェーブレット木による索引
• バイナリコードへの変換は
 shift-invariant kernel based hashing
 を用いる
• 8000万画像にも適応可能
                                        31

Contenu connexe

Tendances

パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
Miyoshi Yuya
 
今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン
Shinya Shimizu
 
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical SearchWSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
sleepy_yoshi
 

Tendances (19)

Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」
 
パターン認識と機械学習 §6.2 カーネル関数の構成
パターン認識と機械学習 §6.2 カーネル関数の構成パターン認識と機械学習 §6.2 カーネル関数の構成
パターン認識と機械学習 §6.2 カーネル関数の構成
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
 
Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
 
今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン
 
coordinate descent 法について
coordinate descent 法についてcoordinate descent 法について
coordinate descent 法について
 
クラシックな機械学習の入門 6. 最適化と学習アルゴリズム
クラシックな機械学習の入門  6. 最適化と学習アルゴリズムクラシックな機械学習の入門  6. 最適化と学習アルゴリズム
クラシックな機械学習の入門 6. 最適化と学習アルゴリズム
 
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical SearchWSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
 
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
 
Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法
 
演習発表 Sari v.1.2
演習発表 Sari v.1.2演習発表 Sari v.1.2
演習発表 Sari v.1.2
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半
 
(文献紹介) 画像復元:Plug-and-Play ADMM
(文献紹介) 画像復元:Plug-and-Play ADMM(文献紹介) 画像復元:Plug-and-Play ADMM
(文献紹介) 画像復元:Plug-and-Play ADMM
 
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現
 
クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別
 
Clustering _ishii_2014__ch10
Clustering  _ishii_2014__ch10Clustering  _ishii_2014__ch10
Clustering _ishii_2014__ch10
 
パターン認識と機械学習6章(カーネル法)
パターン認識と機械学習6章(カーネル法)パターン認識と機械学習6章(カーネル法)
パターン認識と機械学習6章(カーネル法)
 

En vedette

Sketch sort sugiyamalab-20101026 - public
Sketch sort sugiyamalab-20101026 - publicSketch sort sugiyamalab-20101026 - public
Sketch sort sugiyamalab-20101026 - public
Yasuo Tabei
 
Gwt presen alsip-20111201
Gwt presen alsip-20111201Gwt presen alsip-20111201
Gwt presen alsip-20111201
Yasuo Tabei
 
Sketch sort ochadai20101015-public
Sketch sort ochadai20101015-publicSketch sort ochadai20101015-public
Sketch sort ochadai20101015-public
Yasuo Tabei
 
Mlab2012 tabei 20120806
Mlab2012 tabei 20120806Mlab2012 tabei 20120806
Mlab2012 tabei 20120806
Yasuo Tabei
 
SPIRE2013-tabei20131009
SPIRE2013-tabei20131009SPIRE2013-tabei20131009
SPIRE2013-tabei20131009
Yasuo Tabei
 
CPM2013-tabei201306
CPM2013-tabei201306CPM2013-tabei201306
CPM2013-tabei201306
Yasuo Tabei
 
WABI2012-SuccinctMultibitTree
WABI2012-SuccinctMultibitTreeWABI2012-SuccinctMultibitTree
WABI2012-SuccinctMultibitTree
Yasuo Tabei
 
NIPS2013読み会: Scalable kernels for graphs with continuous attributes
NIPS2013読み会: Scalable kernels for graphs with continuous attributesNIPS2013読み会: Scalable kernels for graphs with continuous attributes
NIPS2013読み会: Scalable kernels for graphs with continuous attributes
Yasuo Tabei
 
Lgm pakdd2011 public
Lgm pakdd2011 publicLgm pakdd2011 public
Lgm pakdd2011 public
Yasuo Tabei
 

En vedette (20)

DCC2014 - Fully Online Grammar Compression in Constant Space
DCC2014 - Fully Online Grammar Compression in Constant SpaceDCC2014 - Fully Online Grammar Compression in Constant Space
DCC2014 - Fully Online Grammar Compression in Constant Space
 
Sketch sort sugiyamalab-20101026 - public
Sketch sort sugiyamalab-20101026 - publicSketch sort sugiyamalab-20101026 - public
Sketch sort sugiyamalab-20101026 - public
 
Gwt presen alsip-20111201
Gwt presen alsip-20111201Gwt presen alsip-20111201
Gwt presen alsip-20111201
 
Sketch sort ochadai20101015-public
Sketch sort ochadai20101015-publicSketch sort ochadai20101015-public
Sketch sort ochadai20101015-public
 
GIW2013
GIW2013GIW2013
GIW2013
 
Kdd2015reading-tabei
Kdd2015reading-tabeiKdd2015reading-tabei
Kdd2015reading-tabei
 
Mlab2012 tabei 20120806
Mlab2012 tabei 20120806Mlab2012 tabei 20120806
Mlab2012 tabei 20120806
 
Dmss2011 public
Dmss2011 publicDmss2011 public
Dmss2011 public
 
Lp Boost
Lp BoostLp Boost
Lp Boost
 
SPIRE2013-tabei20131009
SPIRE2013-tabei20131009SPIRE2013-tabei20131009
SPIRE2013-tabei20131009
 
CPM2013-tabei201306
CPM2013-tabei201306CPM2013-tabei201306
CPM2013-tabei201306
 
WABI2012-SuccinctMultibitTree
WABI2012-SuccinctMultibitTreeWABI2012-SuccinctMultibitTree
WABI2012-SuccinctMultibitTree
 
Gwt sdm public
Gwt sdm publicGwt sdm public
Gwt sdm public
 
Lgm saarbrucken
Lgm saarbruckenLgm saarbrucken
Lgm saarbrucken
 
NIPS2013読み会: Scalable kernels for graphs with continuous attributes
NIPS2013読み会: Scalable kernels for graphs with continuous attributesNIPS2013読み会: Scalable kernels for graphs with continuous attributes
NIPS2013読み会: Scalable kernels for graphs with continuous attributes
 
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Scalable Partial Least Squares Regression on Grammar-Compressed Data MatricesScalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
 
Lgm pakdd2011 public
Lgm pakdd2011 publicLgm pakdd2011 public
Lgm pakdd2011 public
 
異常検知 - 何を探すかよく分かっていないものを見つける方法
異常検知 - 何を探すかよく分かっていないものを見つける方法異常検知 - 何を探すかよく分かっていないものを見つける方法
異常検知 - 何を探すかよく分かっていないものを見つける方法
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
 

Similaire à Ibisml2011 06-20

Ruby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrakeRuby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrake
Masahiro Tanaka
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
Prunus 1350
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介
Daisuke Tanaka
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
MasanoriSuganuma
 
Cvim tutorial2 03_06_wk77_110220-0546
Cvim tutorial2 03_06_wk77_110220-0546Cvim tutorial2 03_06_wk77_110220-0546
Cvim tutorial2 03_06_wk77_110220-0546
Wataru Kishimoto
 
文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析
Preferred Networks
 

Similaire à Ibisml2011 06-20 (20)

RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
Ruby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrakeRuby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrake
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...
文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...
文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...
 
Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編
 
Jokyo20130218
Jokyo20130218Jokyo20130218
Jokyo20130218
 
textsearch_jaで全文検索
textsearch_jaで全文検索textsearch_jaで全文検索
textsearch_jaで全文検索
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
R language definition3.1_3.2
R language definition3.1_3.2R language definition3.1_3.2
R language definition3.1_3.2
 
実践QBVH
実践QBVH実践QBVH
実践QBVH
 
Cvim tutorial2 03_06_wk77_110220-0546
Cvim tutorial2 03_06_wk77_110220-0546Cvim tutorial2 03_06_wk77_110220-0546
Cvim tutorial2 03_06_wk77_110220-0546
 
NArray and scientific computing with Ruby - RubyKaigi2010
NArray and scientific computing with Ruby - RubyKaigi2010NArray and scientific computing with Ruby - RubyKaigi2010
NArray and scientific computing with Ruby - RubyKaigi2010
 
文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析
 
200604material ozaki
200604material ozaki200604material ozaki
200604material ozaki
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
 
(文献紹介)Deep Unrolling: Learned ISTA (LISTA)
(文献紹介)Deep Unrolling: Learned ISTA (LISTA)(文献紹介)Deep Unrolling: Learned ISTA (LISTA)
(文献紹介)Deep Unrolling: Learned ISTA (LISTA)
 

Dernier

Dernier (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

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
  • 29. メモリ 28G 29
  • 30. 構築時間 4h 30
  • 31. まとめ • 高速かつメモリー効率の良いバイナリ コードの検索法 • 第一主成分による制約を入れてsemi- conjunctive queryを効率的に解く • ウェーブレット木による索引 • バイナリコードへの変換は shift-invariant kernel based hashing を用いる • 8000万画像にも適応可能 31