SlideShare a Scribd company logo
1 of 29
Download to read offline
カーネルとハッシュの機械学習

  PFIセミナー 2012/03/15
       得居 誠也
自己紹介
得居 誠也 | Tokui, Seiya

東京大学 理学部 数学科           @beam2d
同 情報理工 数理情報学 M2
  近傍探索のためのハッシュの学習

PFIアルバイト(一年半くらい)
 来月から正社員
今日のおはなし
ハッシュ
• 近傍探索:クエリに類似したデータを
       効率良く取り出す
• 機械学習:分類や回帰を効率良く学習する


あると良い知識
• 線形学習器を一つでも知っていると
  わかりやすいと思います
内容
• カーネルの簡単な説明(復習)
• ハッシュ関数の導入
• 近傍探索に使えるハッシュ
 – データのハッシュ
 – いろいろな手法を紹介
   (LSH系, カーネル, ハッシュの学習)
• 機械学習に使えるハッシュ
 – 素性のハッシュ
 – ハッシュされたデータの学習
特徴ベクトル
データを実ベクトルで表す




    Feature   ゲーム   hashing   面白い   おいしい   ……
(     1        0      1        1     0     ……   )




特徴空間で線形演算と内積を使って学習を行う
特徴ベクトルの抽象化
データを特徴空間の元に写像



         ここに数式を入力します。




  は explicit に表せるとは限らない (e.g. 無限次元)
内積の抽象化(カーネル)
カーネル関数
特徴空間での内積を直接計算する



カーネルトリック (kernel trick)
データの線形とカーネルだけを使って
学習を行う (特徴空間を陽に扱わない)
カーネルの例
線形カーネル(ふつうの内積)

多項式カーネル

RBFカーネル

Jaccard係数 (resemblance)
ハッシュ関数
ある集合の元を何らかの性質をだいたい保ちな
がら低次元な離散ベクトルにつぶす関数

e.g.) “いわゆる”ハッシュ関数
異なる元の区別をだいたい保つ
(上の定義の特殊なケース)

注意
関数なので, ハッシュ関数は決定的
(同じ元を同じ値にうつす)
紹介するハッシュ
今日のはなしは二つにわかれます

近傍探索に使えるハッシュ
類似度・類似関係をだいたい保つ

機械学習に使えるハッシュ
内積(カーネル)をだいたい保つ

いろいろな手法を紹介します
類似度・類似関係をだいたい保つ

近傍探索に使えるハッシュ
ハッシュを使った近傍探索
生データではなく, ハッシュを探索
• メモリ効率がよい
• 類似度計算が高速
 – 単純なハミング距離ならXOR, POPCNT
• 決まった範囲だけ探索すれば O(1) 時間
 – e.g. ハミング距離 ≦2 の範囲だけ探索
近傍探索に使えるハッシュ (ごく一部)
       乱択, データ非依存

              LSH
     MinHash, b-Bit MinHash


         Kernelized LSH

     Anchor Graph Hashing
       Spectral Hashing
      Self-Taught Hashing

       最適化, データ依存
Locality Sensitive Hashing (LSH)
         [Indyk+, STOC’98; Charikar, STOC’02]
Arccos類似度の場合
• 原点を通る超平面を一様に r 個サンプリング
• 特徴ベクトルが各超平面のどちら側にいるかで
  0/1 ベクトルに変換する

                   ランダムな超平面が
                   二つの点の間を通る確率は




            他の類似度関数に対するバージョンもある
                    [Andoni & Indyk, ‘08]
MinHash, b-Bit Minwise Hashing
       [Broder, SEQUENCES’97; Li+, WWW’10]
Jaccard係数を近似するLSHとその変形
• 単語にランダムなIDを振る
• 各文書中の単語の最小IDを求める (MinHash)
• 最小IDの下位 b ビットだけ保存する
• これを r/b 回行う
  (ハミング距離は r/b 次元ベクトルとして計算)
                    ランダムIDの最小値が一致
                    する確率は
Kernelized LSH      [Kulis+, ICCV’09]


カーネルの特徴空間でのLSH
•    : カーネル関数
•        をランダムに選ぶ
•             を計算する
• 次のようなハッシュ関数を r 個つくる
    := (   のランダムな t 列の和) として



  (できた r 次元ベクトルを正負で二値化する)
Spectral Hashing            [Weiss+, NIPS’08]
Self-Taught Hashing        [Zhang+, SIGIR’10]

類似度グラフの最小バランスカットを使う

                     類似度行列
                     次数行列
                     グラフラプラシアン

                     または
 重み付き無向 k-近傍グラフ or
 重みなし無向 ε-近傍グラフ
 の, 小さい方から 2, …, r+1 番目の固有値に対応する
固有ベクトルを使う (0 または中央値で二値化する)
 ハッシュ関数は SVM で学習する (Self-Taught)
Anchor Graph Hashing
                     [Liu+, ICML’11]
アンカーグラフを使った Spectral Hashing

           K-Means で m 個のアンカーを配置,
           サンプル・アンカー間の
           k近傍グラフをつくる

           この2部グラフの重み行列

           (各行の和を 1 に正規化しておく)
 を主成分分析(PCA)して正負で二値化する

アルゴリズム全体がデータ数の線形時間
内積(カーネル)をだいたい保つ

機械学習に使えるハッシュ
復習:カーネル
データを特徴空間に写像

カーネル関数
特徴空間での内積を直接計算する


カーネルトリック
データの線形結合とカーネルだけを使って
学習を行う (特徴空間を陽に扱わない)
ハッシュを使った機械学習

    高次元で疎なデータ

                カーネル
   ハッシュを
                  近似
   使った変換

                 内積

    低次元で疎なデータ
Feature Hashing       [Weinberger+, ICML’09]


素性をハッシュする       (cf. Count(-Min) Sketch)

    素性                       ハッシュ値
   Feature             +        0
    ゲーム                +        1
   hashing             -        2
                       +
    面白い                         3
                       -
   おいしい                        ……
    ……                          m


    内積                         内積
              期待値が一致,
             分散もバウンドあり
Hashing trick!
高次元な素性ベクトルを作る必要がない
(単語を直接ハッシュしちゃう)

カーネルトリック
高次元 (or 無限次元) な特徴ベクトルを作らずに,
カーネルを使ってメモリベース学習

ハッシングトリック
高次元な特徴ベクトルを作らずに,
カーネルを近似する空間で線形学習
ハッシュ値の特徴ベクトル化
                                                  [Li+, NIPS’11]
b-Bit MinHash のハッシュ値をベクトル化
              b = 2 で長さ r = 10 の場合の例

               01 00 11 10 01


0010          0001          1000          0100          0010

11 10 01 00   11 10 01 00   11 10 01 00   11 10 01 00   11 10 01 00

                             次元のベクトルに変換
ハッシュ値の特徴ベクトル化
                                   [Li+, NIPS’11]
              b = 2 で長さ r = 10 の場合の例

               01 00 11 10 01


0010          0001          1000          0100          0010

11 10 01 00   11 10 01 00   11 10 01 00   11 10 01 00   11 10 01 00

• 変換後のベクトルの内積 = b ビット毎のハミング距離
• 普通のハミング距離でも b = 1 とみなせば適用できる
• 「ハミング距離カーネル」の特徴ベクトル
適用例                         [Li+, NIPS’11]

[Li+, NIPS’11] では b-Bit MinHash に対して
特徴ベクトル化を行い, LIBLINEAR にかけている

• 線形だが, Jaccard係数カーネルでの学習になる
• スパム判定に用いている
  – 元データは 24GB, 1660万次元
  – b=8, r/b=200 でデータは 70MB に
  – このサイズで元データの線形学習と同じくらいの
    精度が出せる
• ランダム置換が空間・速度的にボトルネックになる
  – 1660万次元で 200 個の置換だと 12GB
  – ランダム置換をランダムハッシュに置き換えれば解消,
    オンライン化もできる
    (精度がどれくらい落ちるかは未検証)
まとめ
近傍探索に使えるハッシュがある
• 乱択アルゴリズム (LSH系)
• カーネル化 (Kernelized LSH)
• 最適化を使う (Spectral Hashing系)

ハッシュは機械学習にも使える
• Feature Hashing は線形な内積を保存
• ハッシュのベクトル化を使えば, 類似度を
  保存するハッシュを線形学習できる
ご清聴ありがとうございました
参考文献
A. Andoni and P. Indyk. Near-optimal hashing algorithms for approximate
nearest neighbor in high dimensions. Comm. of the ACM, vol.51, no. 1, pp.
117-122, 2008.
A. Broder. On the resemblance and containment of documents. SEQUENCES,
1997.
M. Charikar. Similarity estimation techniques from rounding. STOC, 2002.
P. Indyk, R. Motwani. Approximate nearest neighbor: towards removing the
curse of dimensionality. STOC, 1998.
B. Kullis and K. Grauman. Kernelized locality-sensitive hashing for scalable
image search. ICCV, 2009.
P. Li and A. C. König. b-Bit minwise hashing. WWW, 2010.
P. Li and A. Shrivastava. Hashing algorithms for large-scale learning. NIPS,
2011.
W. Liu, J. Wang, S. Kumar and S.-F. Chang. Hashing with graphs. ICML, 2011.
K. Weinberger, A. Dasgupta, J. Langford, A. Smola and J. Attenberg. Feature
hashing for large scale multitask learning. ICML, 2009.
Y. Weiss, A. Torralba and R. Fergus. Spectral hashing. NIPS, 2008.
D. Zhang, J. Wang, D. Cai and J. Lu. Self-taught hashing for fast similarity
search. SIGIR, 2010.

More Related Content

What's hot

Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
 

What's hot (20)

劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
Hyperoptとその周辺について
Hyperoptとその周辺についてHyperoptとその周辺について
Hyperoptとその周辺について
 
PRML輪読#3
PRML輪読#3PRML輪読#3
PRML輪読#3
 
ベイズ統計学の概論的紹介-old
ベイズ統計学の概論的紹介-oldベイズ統計学の概論的紹介-old
ベイズ統計学の概論的紹介-old
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
 
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
PRML輪読#2
PRML輪読#2PRML輪読#2
PRML輪読#2
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門
 
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話
 
特徴選択のためのLasso解列挙
特徴選択のためのLasso解列挙特徴選択のためのLasso解列挙
特徴選択のためのLasso解列挙
 
線形計画法入門
線形計画法入門線形計画法入門
線形計画法入門
 
Stanの便利な事後処理関数
Stanの便利な事後処理関数Stanの便利な事後処理関数
Stanの便利な事後処理関数
 

Similar to PFI Seminar 2012/03/15 カーネルとハッシュの機械学習 (6)

K-means hashing (CVPR'13) とハッシング周り
K-means hashing (CVPR'13) とハッシング周りK-means hashing (CVPR'13) とハッシング周り
K-means hashing (CVPR'13) とハッシング周り
 
CV勉強会@関東 3巻3章4節 画像表現
CV勉強会@関東 3巻3章4節 画像表現CV勉強会@関東 3巻3章4節 画像表現
CV勉強会@関東 3巻3章4節 画像表現
 
5 Info Theory
5 Info Theory5 Info Theory
5 Info Theory
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
lsh
lshlsh
lsh
 
PHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミングPHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミング
 

More from Preferred Networks

More from Preferred Networks (20)

PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
 

PFI Seminar 2012/03/15 カーネルとハッシュの機械学習