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

29
カーネルとハッシュの機械学習 PFIセミナー 2012/03/15 得居 誠也

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

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

カーネルとハッシュの機械学習

PFIセミナー 2012/03/15

得居 誠也

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

自己紹介

得居 誠也 | Tokui, Seiya

東京大学 理学部 数学科

同 情報理工 数理情報学 M2 近傍探索のためのハッシュの学習

PFIアルバイト(一年半くらい) 来月から正社員

@beam2d

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

今日のおはなし

ハッシュ

• 近傍探索:クエリに類似したデータを 効率良く取り出す

• 機械学習:分類や回帰を効率良く学習する

あると良い知識

• 線形学習器を一つでも知っていると わかりやすいと思います

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

内容

• カーネルの簡単な説明(復習)

• ハッシュ関数の導入

• 近傍探索に使えるハッシュ – データのハッシュ

– いろいろな手法を紹介 (LSH系, カーネル, ハッシュの学習)

• 機械学習に使えるハッシュ – 素性のハッシュ

– ハッシュされたデータの学習

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

特徴ベクトル

データを実ベクトルで表す

Feature ゲーム hashing 面白い おいしい ……

1 0 1 1 0 …… ( )

特徴空間で線形演算と内積を使って学習を行う

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

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

特徴ベクトルの抽象化

データを特徴空間の元に写像

は explicit に表せるとは限らない (e.g. 無限次元)

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

内積の抽象化(カーネル)

カーネル関数

特徴空間での内積を直接計算する

カーネルトリック (kernel trick)

データの線形とカーネルだけを使って 学習を行う (特徴空間を陽に扱わない)

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

カーネルの例

線形カーネル(ふつうの内積)

多項式カーネル

RBFカーネル

Jaccard係数 (resemblance)

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

ハッシュ関数

ある集合の元を何らかの性質をだいたい保ちながら低次元な離散ベクトルにつぶす関数 e.g.) “いわゆる”ハッシュ関数 異なる元の区別をだいたい保つ (上の定義の特殊なケース) 注意 関数なので, ハッシュ関数は決定的 (同じ元を同じ値にうつす)

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

紹介するハッシュ

今日のはなしは二つにわかれます

近傍探索に使えるハッシュ

類似度・類似関係をだいたい保つ

機械学習に使えるハッシュ

内積(カーネル)をだいたい保つ

いろいろな手法を紹介します

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

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

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

ハッシュを使った近傍探索

生データではなく, ハッシュを探索

• メモリ効率がよい

• 類似度計算が高速

– 単純なハミング距離ならXOR, POPCNT

• 決まった範囲だけ探索すれば O(1) 時間

– e.g. ハミング距離 ≦2 の範囲だけ探索

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

近傍探索に使えるハッシュ (ごく一部)

MinHash, b-Bit MinHash

Kernelized LSH

Spectral Hashing

Anchor Graph Hashing

乱択, データ非依存

最適化, データ依存

LSH

Self-Taught Hashing

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

Locality Sensitive Hashing (LSH)

Arccos類似度の場合

• 原点を通る超平面を一様に r 個サンプリング

• 特徴ベクトルが各超平面のどちら側にいるかで 0/1 ベクトルに変換する

[Indyk+, STOC’98; Charikar, STOC’02]

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

他の類似度関数に対するバージョンもある[Andoni & Indyk, ‘08]

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

MinHash, b-Bit Minwise Hashing

Jaccard係数を近似するLSHとその変形

• 単語にランダムなIDを振る

• 各文書中の単語の最小IDを求める (MinHash)

• 最小IDの下位 b ビットだけ保存する

• これを r/b 回行う (ハミング距離は r/b 次元ベクトルとして計算)

[Broder, SEQUENCES’97; Li+, WWW’10]

ランダムIDの最小値が一致する確率は

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

Kernelized LSH

カーネルの特徴空間でのLSH

• : カーネル関数

• をランダムに選ぶ

• を計算する

• 次のようなハッシュ関数を r 個つくる

:= ( のランダムな t 列の和) として

(できた r 次元ベクトルを正負で二値化する)

[Kulis+, ICCV’09]

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

Spectral Hashing Self-Taught Hashing

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

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

重み付き無向 k-近傍グラフ or 重みなし無向 ε-近傍グラフ

[Weiss+, NIPS’08] [Zhang+, SIGIR’10]

の, 小さい方から 2, …, r+1 番目の固有値に対応する 固有ベクトルを使う (0 または中央値で二値化する)

ハッシュ関数は SVM で学習する (Self-Taught)

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

Anchor Graph Hashing

アンカーグラフを使った Spectral Hashing

[Liu+, ICML’11]

K-Means で m 個のアンカーを配置, サンプル・アンカー間の k近傍グラフをつくる この2部グラフの重み行列 (各行の和を 1 に正規化しておく)

を主成分分析(PCA)して正負で二値化する アルゴリズム全体がデータ数の線形時間

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

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

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

復習:カーネル

データを特徴空間に写像

カーネル関数

特徴空間での内積を直接計算する

カーネルトリック

データの線形結合とカーネルだけを使って 学習を行う (特徴空間を陽に扱わない)

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

ハッシュを使った機械学習

高次元で疎なデータ

低次元で疎なデータ

カーネル

内積

ハッシュを使った変換

近似

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

Feature Hashing

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

[Weinberger+, ICML’09]

素性

Feature

ゲーム

hashing

面白い

おいしい

……

ハッシュ値

0

1

2

3

……

m

内積 内積

期待値が一致, 分散もバウンドあり

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

Hashing trick!

高次元な素性ベクトルを作る必要がない (単語を直接ハッシュしちゃう)

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

ハッシングトリック

高次元な特徴ベクトルを作らずに, カーネルを近似する空間で線形学習

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

ハッシュ値の特徴ベクトル化

b-Bit MinHash のハッシュ値をベクトル化

[Li+, NIPS’11]

01 00 11 10 01

b = 2 で長さ r = 10 の場合の例

0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0

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

次元のベクトルに変換

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

ハッシュ値の特徴ベクトル化 [Li+, NIPS’11]

01 00 11 10 01

b = 2 で長さ r = 10 の場合の例

0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0

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

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

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

適用例

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

• 線形だが, Jaccard係数カーネルでの学習になる

• スパム判定に用いている – 元データは 24GB, 1660万次元

– b=8, r/b=200 でデータは 70MB に

– このサイズで元データの線形学習と同じくらいの 精度が出せる

• ランダム置換が空間・速度的にボトルネックになる – 1660万次元で 200 個の置換だと 12GB

– ランダム置換をランダムハッシュに置き換えれば解消, オンライン化もできる (精度がどれくらい落ちるかは未検証)

[Li+, NIPS’11]

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

まとめ

近傍探索に使えるハッシュがある

• 乱択アルゴリズム (LSH系)

• カーネル化 (Kernelized LSH)

• 最適化を使う (Spectral Hashing系)

ハッシュは機械学習にも使える

• Feature Hashing は線形な内積を保存

• ハッシュのベクトル化を使えば, 類似度を保存するハッシュを線形学習できる

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

ご清聴ありがとうございました

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

参考文献 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.