tokyonlp#7 きれいなジャイアンのカカカカ☆カーネル法入門-c++
DESCRIPTION
TokyoNLP#7 「きれいなジャイアンのカカカカ☆カーネル法入門-C++」の発表資料TRANSCRIPT
きれいなジャイアンによる カカカカ☆カーネル法入門-C++
2011-09-10
YOSHIHIKO SUHARA
@sleepy_yoshi
自己紹介
• @sleepy_yoshi –キレイになりました
• 趣味 –検索とか機械学習とか
• ブログ – 睡眠不足?!
– http://d.hatena.ne.jp/sleepy_yoshi/
2
本日の内容
• 前回を踏まえて,簡単なオンライン学習手法でカーネルを使う方法を紹介
• カーネル法の入門書に書いてあることがわかるくらいの基礎知識+αを紹介 – 木構造やグラフ構造を扱う話は一切ありません
3
本日のノリ
• 使うこと第一,理解第一に考えるため,厨二ぽい名前の理論は扱わない
–×再生核ヒルベルト空間
–×リプレゼンター定理
• 前回の反省を踏まえ,微妙なネタは入れない
4
前回のおさらい
5
線形識別モデル
• 二値分類の線形識別モデルを考える
–モデルはM次元の重みベクトル𝒘
– M次元の特徴ベクトル𝒙に対する予測𝑦 は,
𝑦 = +1 if 𝒘𝑇𝒙 > 0−1 otherwise
• バイアス項は?
–必ず1になるM+1次元目の特徴を考えればよい
6
パーセプトロン INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇, 𝜂 OUTPUT: 𝒘 1: Initialize 𝒘0 = 𝟎, 𝑖 = 0 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫
4: IF 𝑦𝑡𝒘𝑖𝑇𝒙𝑡 ≤ 0 THEN
5: 𝒘𝑖+1 ← 𝒘𝑖 + 𝜂 𝑦𝑡𝒙𝑡 6: 𝑖 ← 𝑖 + 1 7: ENDIF 8: ENDFOR 9: RETURN 𝒘𝑖
7
パーセプトロン INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇, 𝜂 OUTPUT: 𝒘 1: Initialize 𝒘0 = 𝟎, 𝑖 = 0 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫
4: IF 𝑦𝑡𝒘𝑖𝑇𝒙𝑡 ≤ 0 THEN
5: 𝒘𝑖+1 ← 𝒘𝑖 + 𝜂 𝑦𝑡𝒙𝑡 6: 𝑖 ← 𝑖 + 1 7: ENDIF 8: ENDFOR 9: RETURN 𝒘𝑖
間違ったら重みを修正
8
パーセプトロン INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇, 𝜂 OUTPUT: 𝒘 1: Initialize 𝒘0 = 𝟎, 𝑖 = 0 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫
4: IF 𝑦𝑡𝒘𝑖𝑇𝒙𝑡 ≤ 0 THEN
5: 𝒘𝑖+1 ← 𝒘𝑖 + 𝜂 𝑦𝑡𝒙𝑡 6: 𝑖 ← 𝑖 + 1 7: ENDIF 8: ENDFOR 9: RETURN 𝒘𝑖
間違ったら重みを修正
9
マージンパーセプトロン INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇, 𝜂, 𝛾 OUTPUT: 𝒘 1: Initialize 𝒘0 = 𝟎, 𝑖 = 0 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫
4: IF 𝑦𝑡𝒘𝑖𝑇𝒙𝑡 ≤ 𝛾 THEN
5: 𝒘𝑖+1 ← 𝒘𝑖 + 𝜂 𝑦𝑡𝒙𝑡 6: 𝑖 ← 𝑖 + 1 7: ENDIF 8: ENDFOR 9: RETURN 𝒘𝑖
10
マージンパーセプトロン INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇, 𝜂, 𝛾 OUTPUT: 𝒘 1: Initialize 𝒘0 = 𝟎, 𝑖 = 0 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫
4: IF 𝑦𝑡𝒘𝑖𝑇𝒙𝑡 ≤ 𝛾 THEN
5: 𝒘𝑖+1 ← 𝒘𝑖 + 𝜂 𝑦𝑡𝒙𝑡 6: 𝑖 ← 𝑖 + 1 7: ENDIF 8: ENDFOR 9: RETURN 𝒘𝑖
11
Passive-Aggressive INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇 OUTPUT: 𝒘 1: Initialize 𝒘0 = 𝟎 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫 4: calculate 𝜏𝑡 = ℓ𝑡/ 𝒙𝑡
2 5: 𝒘𝑡+1 ← 𝒘𝑡 + 𝜏𝑡𝑦𝑡𝒙𝑡 6: ENDFOR 7: RETURN 𝒘𝑇
ℓ(𝒘; 𝒙𝑛, 𝑦𝑛) = 0 𝑦𝑛𝒘
𝑇𝒙𝑛 ≥ 1
1 − 𝑦𝑛𝒘𝑇𝒙𝑛 otherwise
12
再掲: お伝えしたかったこと
• パーセプトロンを軸に楽しい仲間をぽぽぽぽーんできる! –損失と最適化の方法
– SVMとの関連
–マージン最大化
–どこを改善するか
• 実装は超簡単 –重み更新部分だけ変えればよい
詳しくは http://d.hatena.ne.jp/sleepy_yoshi/20110423/p1 13
今回のお話
14
カーネル法の背景
15
16
17
もとい
18
線形モデルの問題点 • 必ずしも与えられた特徴ベクトルの線形和で判別ができるとは限らない
○ ×
×
○
○ ○
×
×
𝒘𝑻𝒙
positive
negative
○
×
𝑥1
𝑥2
×
× ○
×
×
○
○ ○
×
×
𝒘𝑻𝝓(𝒙)
×
×
線形モデル 非線形モデル
非線形モデルを利用することで, より高精度な分類を目指したい
𝑥2
𝑥1
19
非線形モデルの実現方法
• (1) モデルを非線形にする – e.g., 多層ニューラルネット
– 大域最適解を求めることができない
• (2) カーネル法+線形モデル – うまくカーネルを設定することで複雑な特徴を適切に把握できる
– 線形識別モデルなので大域的最適解を保証
20
カーネル法ひとこと要約
• 𝑓 𝒙 = 𝒘𝑇𝜙 𝒙 = 𝛼𝑖𝐾(𝒙𝑖 , 𝒙)𝑖
非線形変換した 入力データ
訓練データ𝒙𝑖 との類似度
• 予測値=訓練データとの類似度の重みづけ和 – 予測に用いるデータをサポートベクタと呼ぶ
カーネル法の学習= サポートベクタの「重み」を学習
カーネル関数
21
カーネル法のすごいところを ひとことで言うと
直接計算するのが困難or不可能な次元にお
ける線形識別関数を,入力データとサポートベクタのカーネル関数の出力の重みづけ和で計算できるぜ!
22
カーネル関数って?
• ひとことで言えば類似度
焼きそば 焼きさば
似てる?
似てる!
23
カーネル関数って? (その2)
• 写像先の内積
𝐾 𝒙, 𝒙′ = 𝜙 𝒙 𝑇𝜙 𝒙′
24
カーネル関数の種類
• (1) 閉じた形で計算できるもの
–例) 多項式カーネル,ガウスカーネル
• (2) 再帰などで計算できるもの
–例) 文字列カーネル (次発表をご期待!)
• (3) ちょっと特殊なもの
–例) Semantic similarity kernel [Sahami+ 06] (後述)
効率的に計算できないとうれしくないよね..
25
基本的なカーネル
• 基本的なカーネル関数 (閉じたカーネル) – 線形カーネル:
• 𝐾 𝒙𝑖 , 𝒙𝑗 = 𝒙𝑖𝑇𝒙𝑗
– 多項式カーネル:
• 𝐾 𝒙𝑖 , 𝒙𝑗 = 𝛾𝒙𝑖𝑇𝒙𝑗 + 𝑟
𝑑, 𝛾 > 0
– ガウスカーネル (*1):
• 𝐾 𝒙𝑖 , 𝒙𝑗 = exp −𝛾 𝒙𝑖 − 𝒙𝑗2
, 𝛾 > 0
– シグモイドカーネル:
• 𝐾 𝒙𝑖 , 𝒙𝑗 = tanh(𝛾𝒙𝑖𝑇𝒙𝑗 + 𝑟)
(*1) 正確にはガウスカーネル.RBFカーネルは一般化した呼び方 (*2) 𝛾, 𝑟, 𝑑はカーネルパラメータ 26
カーネルパーセプトロン
27
パーセプトロン INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇, 𝜂 OUTPUT: 𝒘 1: Initialize 𝒘0 = 𝟎, 𝑖 = 0 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫
4: IF 𝑦𝑡𝒘𝑖𝑇𝒙𝑡 ≤ 0 THEN
5: 𝒘𝑖+1 ← 𝒘𝑖 + 𝜂 𝑦𝑡𝒙𝑡 6: 𝑖 ← 𝑖 + 1 7: ENDIF 8: ENDFOR 9: RETURN 𝒘𝑖
間違ったら重みを修正
28
カーネルパーセプトロンの導出
𝒘𝑖+1 = 𝒘𝑖 + 𝜂𝑦𝑖𝒙𝒊
𝒘 = 𝜂 𝑦𝑖𝒙𝒊
𝑇
𝑖=1
𝒘 𝑇𝒙 = 𝜂 𝑦𝑖𝒙𝑖𝑇𝒙
𝑇
𝑖=1
𝒘 𝑇𝜙(𝒙) = 𝜂 𝑦𝑖𝜙(𝒙𝑖) ⋅ 𝜙(𝒙)
𝑇
𝑖=1
= 𝜂 𝛼𝑖𝐾(𝒙𝑖 , 𝒙)
𝑁
𝑖=1
𝜂は不要? ⇒ 特徴ベクトルの正規化で対応 29
カーネルパーセプトロン INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇, 𝜂, 𝐾(⋅,⋅) OUTPUT: 𝜶 1: Initialize 𝜶 = 𝟎, 𝑖 = 0 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫 4: IF 𝑦𝑡 𝛼𝑖𝐾(𝒙𝑖 , 𝒙𝑡)𝑖 ≤ 0 THEN 5: 𝛼𝑡 ← 𝛼𝑡 + 𝑦𝑡 6: ENDIF 7: ENDFOR 8: RETURN 𝒘𝑖
30
カーネルパーセプトロン INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇, 𝜂, 𝐾(⋅,⋅) OUTPUT: 𝜶 1: Initialize 𝜶 = 𝟎, 𝑖 = 0 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫 4: IF 𝑦𝑡 𝛼𝑖𝐾(𝒙𝑖 , 𝒙𝑡)𝑖 ≤ 0 THEN 5: 𝛼𝑡 ← 𝛼𝑡 + 𝑦𝑡 6: ENDIF 7: ENDFOR 8: RETURN 𝒘𝑖
間違ったら重みを修正
31
実装: 訓練ルーチン
32
実装: 予測関数
関数ポインタ
33
実装: カーネル関数の定義
34
実装: カーネル関数の定義
35
カーネルPA
36
Passive-Aggressive INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇 OUTPUT: 𝒘 1: Initialize 𝒘0 = 𝟎 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫 4: calculate 𝜏𝑡 = ℓ𝑡/ 𝒙𝑡
2 5: 𝒘𝑡+1 ← 𝒘𝑡 + 𝜏𝑡𝑦𝑡𝒙𝑡 6: ENDFOR 7: RETURN 𝒘𝑇
ℓ(𝒘; 𝒙𝑛, 𝑦𝑛) = 0 𝑦𝑛𝒘
𝑇𝒙𝑛 ≥ 1
1 − 𝑦𝑛𝒘𝑇𝒙𝑛 otherwise
37
カーネルPAの導出
𝒘𝑖+1 = 𝒘𝑖 + 𝜏𝑖𝑦𝑖𝒙𝒊
𝒘 = 𝜏𝑖𝑦𝑖𝒙𝒊
𝑇
𝑖=1
𝒘 𝑇𝒙 = 𝜏𝑖𝑦𝑖𝒙𝑖𝑇𝒙
𝑇
𝑖=1
𝒘 𝑇𝜙(𝒙) = 𝜏𝑖𝑦𝑖𝜙(𝒙𝑖) ⋅ 𝜙(𝒙)
𝑇
𝑖=1
= 𝛼𝑖𝐾(𝒙𝑖 , 𝒙)
𝑁
𝑖=1
38
Kernelized Passive-Aggressive INPUT: (𝒙𝑛, 𝑦𝑛) ∈ 𝑫, 𝑇 OUTPUT: 𝒘 1: Initialize 𝒘0 = 𝟎 2: FOR 𝑡 in 0 to 𝑇 3: Obtain random sample (𝒙𝑡 , 𝑦𝑡) from 𝑫 4: calculate 𝜏𝑡 = ℓ𝑡/ 𝒙𝑡
2 5: 𝛼𝑡 ← 𝛼𝑡 + 𝜏𝑡𝑦𝑡 6: ENDFOR 7: RETURN 𝒘𝑇
39
カーネル行列と カーネルキャッシュ
40
カーネル行列
• ポイント
– カーネルパーセプトロンでは,サポートベクタのラベルとカーネル関数の出力しか使っていない
–生のデータ点そのものが不要!
• カーネル行列
– N個の訓練データの全ての組み合わせ1
2𝑁2個の
𝐾 𝒙𝑖 , 𝒙𝑗 を(i,j)成分に持つ行列
41
カーネルキャッシュ
• データ数2のカーネル関数の出力を計算するのが困難な場合 and/or 値を保持するのが困難な場合,一部の出力だけを保持しておく
• 参考
– Passive Aggressive と多項式カーネル – ny23の日記
• http://d.hatena.ne.jp/ny23/20090624
42
オンラインカーネル学習 の問題点
43
オンライン学習+カーネル法の問題
• 損失を生むサンプルの重みを増やしてしまうので,サポートベクタが増えてしまう – cf. SVMはバッチ学習で疎な解を求められる
• 対策のひとつ –サポートベクタ数に上限を設ける方法 (Budget法)
• Aggressive Perceptron [Crammer+ 03]
• Forgetron [Dekel+ 05]
• など
44
Budget-consicous Aggressive Perceptron [Crammer +03]
45
Budget-consicous Aggressive Perceptron [Crammer +03]
46
Budget-consicous Aggressive Perceptron [Crammer +03]
マージンパーセプトロンと同じノリ
47
Budget-consicous Aggressive Perceptron [Crammer +03]
サポートベクタが いっぱいの場合
48
Budget-consicous Aggressive Perceptron [Crammer +03]
影響の少ない サポートベクタを除去
多分typo
𝑦𝑗 𝒘𝑡−1 − 𝛼𝑗𝑦𝑗𝒙𝑗 𝒙𝑗
49
Budget-consicous Aggressive Perceptron [Crammer +03]
選択されたサポートベクタをなかったことにする
50
Budget-consicous Aggressive Perceptron [Crammer +03]
新しいサポートベクタを 追加
51
その他のカーネル
52
ちょっと変わったカーネル
• Semantic similarity kernel [Sahami+ 06]
– short text snippet同士の類似度をうまく測るためのカーネルを提案
53
Semantic similarity kernel [Sahami+ 06]
54
Semantic similarity kernel [Sahami+ 06]
55
Semantic similarity kernel [Sahami+ 06]
56
Semantic similarity kernel [Sahami+ 06]
57
Semantic similarity kernel [Sahami+ 06]
58
Semantic similarity kernel [Sahami+ 06]
59
Semantic similarity kernel [Sahami+ 06]
60
参考: SVM
61
SVMの場合
𝐿 =1
2𝒘 2 − 𝑎𝑛{𝑡𝑛 𝒘𝑇𝜙 𝒙𝑛 + 𝑏 − 1}
𝑁
𝑛=1
– 極値は
• 𝒘 = 𝑎𝑛𝑡𝑛𝜙(𝒙𝑛)𝑁𝑛=1
• 0 = 𝑎𝑛𝑡𝑛𝑁𝑛=1
– で与えられるため,
𝐿 = 𝑎𝑛
𝑁
𝑛=1
−1
2 𝑎𝑛𝑎𝑚𝑡𝑛𝑡𝑚𝜙 𝒙𝑛
𝑇𝜙 𝒙𝑚
𝑁
𝑚=1
𝑁
𝑛=1
𝐾(𝒙𝑛, 𝒙𝑚)
主問題:
双対問題:
カーネルを利用するためには双対問題を解く必要がある ※ 主問題を高速に解く手法が利用できない 62
参考: Kernelized Nearest Neighbor
63
k-Nearest Neighbor (k-NN)
• ユークリッド距離が最小である事例のラベルで予測
argmin𝑖 𝒙 − 𝒙𝑖 22
𝒙 − 𝒙𝑖 2
2 = 𝒙 − 𝒙𝑖𝑇(𝒙 − 𝒙𝑖)
= 𝒙𝑇𝒙 − 2𝒙𝑖𝑇𝒙 + 𝒙𝑖
𝑇𝒙𝑖
RBFカーネルのような差分に対して定義 されるカーネルの場合,これだけで良い
64
疑問 65
Q. カーネルを計算するコストが高いンなら 無理してカーネル使わなくてよくね?
カーネルを展開して主問題で解く方法がありマす 66
多項式カーネルの展開
• 2次の多項式カーネルの場合 𝐾 𝒙, 𝒛 = 𝒙𝑇𝒛 + 1 2
𝒙𝑇𝒛 + 1 2 = 𝑥1𝑧1 + 𝑥2𝑧2 + 1 2
= (𝑥1
2𝑧12 + 𝑥2
2𝑧22 + 2𝑥1𝑧1𝑥2𝑧2 + 2𝑥2𝑧2 + 2𝑥1𝑧1 + 1)
= 𝑥12 𝑥2
2 2𝑥1𝑥2 2𝑥2 2𝑥1 1𝑇
(𝑧12 𝑧2
2 2𝑧1𝑧2 2𝑧2 2𝑧1 1)
67
多項式カーネルの展開
• 2次の多項式カーネルの場合 𝐾 𝒙, 𝒛 = 𝒙𝑇𝒛 + 1 2
𝒙𝑇𝒛 + 1 2 = 𝑥1𝑧1 + 𝑥2𝑧2 + 1 2
= (𝑥1
2𝑧12 + 𝑥2
2𝑧22 + 2𝑥1𝑧1𝑥2𝑧2 + 2𝑥2𝑧2 + 2𝑥1𝑧1 + 1)
= 𝑥12 𝑥2
2 2𝑥1𝑥2 2𝑥2 2𝑥1 1𝑇
(𝑧12 𝑧2
2 2𝑧1𝑧2 2𝑧2 2𝑧1 1)
𝜙(𝒙)
𝜙(𝒛) ※効率的な展開は[Isozaki+ 02] など 68
参考
• 線形識別器でカーネルトリックを使う方法 – PFI Research Blog
– http://research.preferred.jp/2011/09/kernel-trick/
69
カーネルの設計
70
どうすればカーネルになるのよ
• カーネル行列が半正定値であること
𝒙𝑇𝐾𝒙 ≥ 0 ⇔ 全ての固有値が非負
–例外もあり: シグモイドカーネル
/) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
71
カーネル設計の練習 (1/2)
• 文書dの特徴ベクトルxを文書内に出現する単語頻度freq(d, i)で表す
𝒙 = (𝑥1 𝑥2⋯𝑥𝑀) ただし 𝑥𝑖 = 𝑓𝑟𝑒𝑞(𝑑, 𝑖)
𝐾 𝒙𝑑1 , 𝒙𝑑2 = 𝑖 ∈ 1,𝑀 𝒙𝑖𝑑1 = 𝒙𝑖
𝑑2}
実はブッチャー本 [Buttcher+ 10] の例を引用
頻度が一致する数
72
カーネル設計の練習 (2/2)
• 一般に頻度freqは無限に存在.そこで以下の写像を考える
– 例えば,M=10の場合,1の位が特徴ベクトルの添字を表し,10の位より大きな数字で頻度を表現する
𝜋 𝑓𝑟𝑒𝑞, 𝑖 = 𝑖 + 𝑀 ⋅ 𝑓𝑟𝑒𝑞
• この写像を用いることにより,以下の特徴ベクトルで表現できる
𝜙𝜋 𝒙𝑑 = 1 𝑥𝑖
𝑑 = 𝑓
0 𝑥𝑖𝑑 ≠ 𝑓
• これより,𝐾 𝒙𝑑1 , 𝒙𝑑2 = 𝜙𝜋 𝒙𝑑1𝑇𝜙𝜋 𝒙𝑑2
– おぉっ! なんかカーネルぽい!! 73
カーネル構築のヒント
𝐾1, 𝐾2が有効なカーネルの場合,以下の関数もカーネルとして有効である.
• 𝐾 𝒙, 𝒙′ = 𝑐𝐾1 𝒙, 𝒙′
• 𝐾 𝒙, 𝒙′ = 𝑓(𝒙)𝐾1 𝒙, 𝒙′ 𝑓(𝒙′)
• 𝐾 𝒙, 𝒙′ = 𝑞 𝐾1 𝒙, 𝒙′
• 𝐾 𝒙, 𝒙′ = exp 𝐾1 𝒙, 𝒙′
• 𝐾 𝒙, 𝒙′ = 𝐾1 𝒙, 𝒙′ + 𝐾2 𝒙, 𝒙′
• 𝐾 𝒙, 𝒙′ = 𝐾1 𝒙, 𝒙′ 𝐾2(𝒙, 𝒙′)
• 𝐾 𝒙, 𝒙′ = 𝐾3 𝜙 𝒙 , 𝜙 𝒙′
• 𝐾 𝒙, 𝒙′ = 𝒙𝑇𝐴𝒙′
• 𝐾 𝒙, 𝒙′ = 𝐾𝑎 𝒙𝑎, 𝒙𝑎′ + 𝐾𝑏 𝒙𝑏, 𝒙𝑏
′
• 𝐾 𝒙, 𝒙′ = 𝐾𝑎 𝒙𝑎, 𝒙𝑎′ 𝐾𝑏 𝒙𝑏, 𝒙𝑏
′
74
まとめ
75
学習アルゴリズムのカーネル化
(1) がんばって特徴ベクトルの内積に式変形
(2) 基底関数φの内積に変換
(3) カーネル関数に置換
76
主問題か双対問題かそれが問題だ
Q. 主問題/双対問題どっちで解くか? – カーネルを利用したい ⇒ 双対問題
–特徴次元数 ≫訓練事例数 ⇒ 双対問題
–訓練事例数 ≫特徴次元数 ⇒ 主問題
• 展開可能なカーネル (e.g.,組み合わせ素性) を利用したいのであれば,明示的に基底関数𝜙(⋅)を利用する方法もありなんじゃないでしょうか
77
再掲: カーネル法ひとこと要約
• 𝑓 𝒙 = 𝒘𝑇𝜙 𝒙 = 𝛼𝑖𝐾(𝒙𝑖 , 𝒙)𝑖
非線形変換した 入力データ
訓練データ𝒙𝑖 との類似度
• 予測値=訓練データとの類似度の重みづけ和 – 予測に用いる訓練データをサポートベクタと呼ぶ
カーネル法の学習= サポートベクタの「重み」を学習
78
カーネル法の適用に関係するステージ
𝐾(𝒙, 𝒛) 𝑓 𝑥= 𝛼𝑖𝐾(𝒙𝑖 , 𝒙)
[Shawe-Taylor 04] 図2.4を参考
データ カーネル関数 カーネル行列 学習 アルゴリズム
予測関数
79
カーネル法の適用に関係するステージ
𝐾(𝒙, 𝒛) 𝑓 𝑥= 𝛼𝑖𝐾(𝒙𝑖 , 𝒙)
データ カーネル関数 カーネル行列 学習 アルゴリズム
予測関数
[Shawe-Taylor 04] 図2.4を参考 80
カーネル法に対する私の考え
• どのような特徴/類似度が予測に効果的か?
という人間の知識をモデルに取り入れるひとつの方法
• カーネルの選択≒ feature engineering
81
この後の話
• 文字列カーネルや木構造カーネルこそがNLPにおけるカーネル法の醍醐味
• 理論的背景や発展に関する話題については,専門家の資料があるので,そちらをご参照されたし
• Kernel learning, Multiple Kernel Learning あたりがそこそこ最新の話題なのでしょうか? – 教えて詳しい人
82
まとめ
• カーネルとはなんぞ? • オンライン学習のカーネル化を紹介
– パーセプトロン – Passive-Aggressive
• オンラインカーネル学習の問題 – Budget法
• Budget-consicous Aggressive Perceptron
• その他のカーネル – Semantic similarity kernel
• カーネルの展開 • カーネルの設計(もどき)
83
参考資料
• [Sahami+ 06] Mehran Sahami, Timothy D. Heilman. A Webbased Kernel Function for Measuring the Similarity of Short Text Snippets. WWW2006.
• [Isozaki+ 02] Hideki Isozaki and Hideto Kazawa, “Efficient Support Vector Classifiers for Named Entity Recognition”, COLING2002.
• [Crammer+ 03] Koby Crammer, Jaz Kandola, Yoram Singer, “Online Classification on a Budget”, NIPS2003.
• [Dekel+ 05] Ofer Dekel, Shai Shalev-Shwartz, Yoram Singer, “The Forgetron: A Kernel-Based Perceptron on a Fixed Budget”, NIPS2005.
• [Shawe-Taylor 04] John Shawe-Taylor, Nello Cristianini, “Kernel Methods for Pattern Analysis”, Cambridge University Press (2004). [邦訳: 大北剛訳. カーネル法によるパターン解析. 共立出版]
84
教科書 (和書)
85
教科書 (洋書)
Amazonリストマニア「機械学習/データマイニング(1) 」kashi_pong http://www.amazon.co.jp/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%9E%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B0%EF%BC%88%EF%BC%91%EF%BC%89/lm/1J5BFNYLWKWHI/ref=cm_lmt_dtpa_f_1_rdssss0 86
終
87