はじめてのパターン認識 第8章 サポートベクトルマシン
-
Upload
motoya-wakiyama -
Category
Documents
-
view
3.223 -
download
0
Transcript of はじめてのパターン認識 第8章 サポートベクトルマシン
第8章
サポートベクトルマシン(前半)
@「はじめてのパターン認識」読書会
2013/11/19
twitterID:wwacky
もうすぐ引っ越し&同棲します
そのせいでテンパっている・・・。もうネタを挟む余裕もない
最近Python熱が再燃したついでに、動作が軽いPython
用のIDE探してます(Eclipse重すぎィ!!!)
自己紹介
パワポの数式ツールで行列を太字にす
る方法がわからなかったので、行列だ
けど太字になってない箇所があります。
まあ、ちゃんと本を見てってことで。
図表の引用元
はじめてのパターン認識
言語処理のための機械学習入門
パターン認識と機械学習(上)(下)
おことわり
あと、間違ってる箇所があるかもしれないので自己責任でヨロシク
サポートベクトルマシンといえば?
識別の定番
響きがかっこいい
でもよく分からず使ってる人も割りと居たりする
Cとかγが何ってパターンとか・・・
中の数式・・・?ってよくなる
SVMの特徴
線形識別関数で分離・判別するという意味では一緒
サポートベクトルと呼ばれる一部のデータで識別境界が
決定されるので、疎なデータに強い
カーネルトリックを使って非線形写像を行うと、上手く
分離できることがある
サポートベクトルマシンの識別方法
とりあえず2クラス分類の場
合で t = +1
t = -1
サポートベクトルマシンの識別方法
とりあえず2クラス分類の場
合で
データを上手く分割する識別
境界を引く
t = +1
t = -1
サポートベクトルマシンの識別方法
とりあえず2クラス分類の場
合で
データを上手く分割する識別
境界を引く
データを分離可能な識別境界
はたくさん存在する
t = +1
t = -1
識別境界
どれでも識別可!
サポートベクトルマシンの識別方法
とりあえず2クラス分類の場
合で
データを上手く分割する識別
境界を引く
データを分離可能な識別境界
はたくさん存在する
→マージンが最大になるように
決める
識別境界
マージン
t = +1
t = -1
汎化性能が高くなるように
まずは超平面で完全に識別できる状況のことを考える
最適識別超平面
最適識別超平面
識別境界:ωTx + b = 0
ω:識別境界の係数ベクトル(学習データから求める)
x:d次元入力ベクトル
b:バイアス項(学習データから求める)
ω
線形識別関数
ωTx + b = 0
t = +1
t = -1
最適識別超平面
識別境界:ωTx + b = 0
ω0Tx + b0が何をしようとしているかというと、ωの1次元
ベクトルに写像してるだけ
ω
線形識別関数
ωTx + b = 0
t = +1
t = -1
ω
t = -1
t = 1
ωに写像
最適識別超平面
識別境界:ωTx + b = 0
マージンをкとすると・・・
ω
線形識別関数
ωTx + b = 0
t = +1
t = -1
ω
ωに写像
+к -к
最適識別超平面
識別境界:ωTx + b = 0
マージンをкとすると、全ての学習データx(1,,,N)で以下
が |ωTx i+b| ≧ к が成り立つ
ω
線形識別関数
ωTx + b = 0
t = +1
t = -1
ω
ωに写像
ωTx + b ≧к
ωTx + b ≦-к
最適識別超平面
識別境界:ωTx + b = 0
マージンをкとすると、全ての学習データx(1,,,N)で以下
が |ωTx i+b| ≧ к が成り立つ
ω
線形識別関数
ωTx + b = 0
t = +1
t = -1
ω
ωに写像
ωTx + b ≧к
ωTx + b ≦-к
最適識別超平面
分かりやすくするために?кで割って正規化する
|ωTx i+b| ≧ к
↓
|ωTx i+b| ≧ 1
ω
線形識別関数
ωTx + b = 0
t = +1
t = -1
ω
ωに写像
ωTx + b ≧1
ωTx + b ≦-1
кで割って、ωとbを置き直す
最適識別超平面
さらにクラスを定義するt i={+1, -1}を用いる
|ωTx i+b| ≧ к
↓
|ωTx i+b| ≧ 1 → t i(ωTx i+b) ≧ 1
ω
線形識別関数
ωTx + b = 0
t = +1
t = -1
ω0
ω0に写像
1(ωTx + b) ≧1
-1(ωTx + b) ≧1
ti={+1, -1}でクラスの定義をする
最適識別超平面:クラス間マージン
マージンを最大化させる超平面を決定するために、クラ
ス間マージンを定義する
クラス間マージン
ω0
線形識別関数
ω0Tx + b0 = 0
1マージン
2
11
maxmin,11
bb
xxb
T
Cx
T
Cx yy
t = +1
t = -1
xT
Cx y 1
min
xT
Cx y 1
max
最適識別超平面:学習
クラス間マージンを最大化する超平面をt i(ω0Tx i+b0)≧ 1と
すると
となる
というわけで、最適識別超平面はt i(ωTx i+b) ≧ 1という制
約のもとω0=min||ω | |を求めればよい
ω0が求められれば、b0は t i(ωTx i+b)=0から求めれば良い
2max
,max, 00
bb
最適識別超平面:学習
というわけで、ω0=min||ω||を求める
ti(ωTxi+b) ≧ 1の制約付きで。
最適識別超平面:学習
制約条件付きの凸計画問題を解く場合、ラグランジュの
未定乗数法を用いる
SVMの場合は制約条件が不等式となる
主問題
評価関数(最小化):Lp(ω) = ½・ωTω ←マージンの最小化
不等式制約条件:t i(ωTx i+b) ≧ 1 ←判別
ラグランジュ関数(これで制約付き凸計画を解く)
α iはラグランジュ未定定数
α=(α1,・・・, αN)
N
i
i
T
ii
T
p bxtbL1
12
1,,
~
ωからじゃなく、 αから鞍点を探す
最適識別超平面:学習
制約条件付きの凸計画問題を解く場合、ラグランジュの
未定乗数法を用いる
ラグランジュ未定定数法で問題設定すると、ωとαは
Lp(ω ,α0)≦ Lp(ω0,α0) ≦ Lp(ω0,α) になる
つまり、凸計画問題においては鞍点が最適解を与えることになる
ωをそのまま求めるより、
αを求める方が簡単になるので
問題を置き換える
(双対問題を設定する)
はじパタに合わせるとλ→α、x→ω
鞍点を求めようとする場合、
xの最大化問題と、
λの最小化問題がイコール
鞍点が最適解となる証明は省略。 知りたい人は「言語処理のための機械学習入門」を読んで欲しい。
最適識別超平面:学習
ラグランジュ未定乗数法で不等式制約の問題を解く場合、
Karush-Kuhn-Tucker条件(KKT条件)を使う
g(x)≧0の制約下でf(x)の最小化を行う時のラグランジュ関
数は以下で設定する
L(x ,λ) ≡ f(x) - λg(x) λ ≧ 0
この時の鞍点(最適点)を出す条件は以下となる(KKT条件)
∇ f(x)=0
∇g(x)=0
g(x)≧0
λ>0
λg(x)=0
ちゃんと説明しようとしたが、資料作りが・・・。 気になる人はPRML(上)の付録Eを読んで。
最適識別超平面:学習
ラグランジュ関数から鞍点を求める
ラグランジュ関数
KKT条件
01)5(
0)4(
01)3(
0,,
~
)2(
0,,
~
)1(
1
1
0
0
bxt
bxt
tb
bL
xtbL
i
T
ii
i
i
T
i
N
i
ii
p
N
i
iii
p
極値の条件
←不等式制約条件
←相補性条件
←ラグランジュ未定定数の条件
N
i
i
T
ii
T
p bxtbL1
12
1,,
~
この3つで相補性条件と呼んでいる場合もあり、どれが本当かはよく分からない・・・
最適識別超平面:学習
相補性条件( α i(t i(ωTx i+b)-1)=0 )ってなんだ?
不等式制約が等式の時( t i(ωTx i+b)-1=0:サポートベクトルとな
るデータ)のみ、 α i>0となり制約が有効になる
まあこの時点でサポートベクトルがどのデータか決まって無い?
t i(ωTx i+b) -1> 0の時
α i=0じゃないと制約を満たせない
KKT条件の(1)(2)が効かない?
→鞍点導出に影響しない?
t i(ωTx i+b) -1= 0の時
α i>0じゃないと制約を満たせない
KKT条件の(1)(2)が有効?
即ちα i>0の時はサポートベクトル
ω0
線形識別関数
ω0Tx + b0 = 0
ti(ωTxi+b) -1> 0
→制約が無効
t = -1
ti(ωTxi+b) -1= 0
→制約が有効
要するにαiがサポートベクトルかどうかを表す条件ってことだと思ってるけど正しい?
最適識別超平面:学習
話を戻して、最適解を求める
KKT条件(1)(2) を用いて、ラグランジュ関数を変換
N
i
iii xt1
0
N
i
iit1
0
N
i
i
N
i
jjj
N
j
iii
N
i
i
T
N
i
i
TT
N
i
i
N
i
ii
N
i
iii
TT
N
i
i
T
ii
T
d
xtxt
tbxt
bxtL
11 1
1
00
1
0000
111
000
1
000
2
1
2
1
2
1
2
1
12
1
ラグランジュ関数がαの式になる!
後はLd(α)を最大化するαを求めるだけ!
KKT条件の(1)
KKT条件の(2)
最適識別超平面:学習
Ld(α)を最大化する問題を「双対問題」と呼ぶ
Lp(ω)を最大化するωを求めるほうが主問題
双対問題で対象とするラグランジュ関数
T
N
j
T
ijiij
T
TT
N
i
i
N
i
jjj
N
j
iiid
ttt
xxttHH
t
H
xtxtL
),,,(
)(
0
2
11
2
1
1
11 1
評価関数
(最大化)
制約条件
ωからじゃなく、
αから鞍点を探す
最適識別超平面:学習
後はαを求めればいいので、αの
最大化問題を解く
はじパタにはSMO(sequentila
minimal optimization)を使うってし
か書いてないし、とりあえずαが求め
られたってことで。
SMOのアルゴリズムでも書くか・・・?
最適識別超平面:学習
双対問題からαが求められたら
ω0を求めて
b0を求めて
識別関数の完成!
予測する時は(ωTx i+b)-1の正負で識別すればおk!
N
i
iii xt1
0
index
0100
なるデータのはサポートベクトルとs
bxt s
T
s
最適識別超平面:学習
最適な識別関数が求められたら、最大マージンも求めら
れる
最大マージン
N
i
i
N
i
ii
N
i
i
N
i
ii
N
i
T
iii
T
tb
bt
xt
1
1
0
1
1
0
1
000
~
~~
1~
~
N
i
iit1
0
00
00
1
001
bxt
bxt
i
T
i
ii
T
i
の時
N
i
i
TD
1
000
max
~
111
KKT条件の(2)
KKT条件の(5)
線形分離可能でない場合
(現実はそんなきれいに分離できないってことよ・・・)
ソフトマージン識別器
完全に線形分離可能でない場合→制約条件をすべて満た
す解は求まらない
ソフトマージン識別器に拡張
t i(ωTx i+b) ≧ 1 → t i(ω
Tx i+b) ≧ 1-ξ i
ξ iはスラック変数と呼ぶ
ξ i=0 :マージン内で正しく判別できる場合
0<ξ i≦1 :マージン境界を超えるが正しく識別できる場合
ξ i>1 :識別境界を超えて誤識別される場合
ソフトマージン識別器
ω0
t = +1
t = -1 0<ξi≦1
ξi>1
ソフトマージン識別器
t i(ωTx i+b) ≧ 1-ξ i
⇔ ξ i≧ 1-t i(ωTx i+b)
ξ i ≧0だから(上記の式だと、正しく識別できるデータで
サポートベクトル以外だと負になる)
ξ i =max[0,1- t i(ωTx i+b)]
=f+(1- t i(ωTx i+b))
fを損失関数と呼ぶ
損失関数の話だけなので飛ばします。 後の話にあんまり関係しないし。
ソフトマージン識別器:学習
誤識別数の上限
誤識別数というより、誤識別の度合いという気がする
主問題(線形分離可能な場合)
評価関数(最小化):Lp(ω) = ½・ωTω
不等式制約条件:t i(ωTx i+b) ≧ 1
主問題(線形分離できない場合)
評価関数(最小化):Lp(ω) = ½・ωTω+CΣξ i
不等式制約条件:t i(ωTx i+b) ≧ 1-ξ i , ξ i≧0
パラメータCを使うのでC-SVMと呼ぶ
l ibSVMとかでチューニングしたりするCですよ!!!
01
i
N
i
i
誤識別の分をペナルティとする
ソフトマージン識別器:学習
C-SVMのラグランジュ関数
対応するKKT条件
N
i
ii
N
i
ii
T
ii
N
i
i
T
p bxtCbL111
12
1,,,,
~
0)7(
01)6(
0,0,0)5(
01)4(
000
~
)3(
0,,
~
)2(
0,,
~
)1(
1
1
0
0
ii
ii
T
ii
iii
ii
T
i
iiii
i
p
N
i
ii
p
N
i
iii
p
bxt
bxt
CCL
tb
bL
xtbL
なので
制約が2つなので、ラグランジュ未定定数を2つ(α, μ)用いる
←不等式制約条件
←相補性条件
←ラグランジュ未定定数と、スラック変数の条件
←相補性条件
ソフトマージン識別器:学習
条件(6)(7)の相補性条件の確認
α i<Cの時
KKT条件(3)よりα i<C→⇔C-α i>0
KKT条件(3)よりC-α i - μ i =0 ⇔ μ i =C-α i >0
KKT条件(7)よりμ iξ i =0 → (μ i>0なので) → ξ i=0
即ちx iがマージン内で正しく識別できる条件
この時のx iを自由サポートベクトル(free SV)
ξ i >0の時
KKT条件(7)よりμ iξ i =0 → (ξ i >0としたら) → μ i =0
KKT条件(3)よりC-α i - μ i =0 →(μ i =0なので)→ α i = C
この時のx iを上限サポートベクトル(bounded SV)
α iが境界であるCなのでこう呼ぶ
なお、ξ i >0なのでマージン境界を超えるx iと、誤識別されるx iを含む
ソフトマージン識別器:学習:双対問題
最適識別超平面と同じ様に、双対問題を求める
N
i
i
T
ii
T
N
i
iii
N
i
i
T
ii
T
N
i
ii
N
i
ii
N
i
i
N
i
i
T
ii
T
N
i
ii
N
i
ii
T
ii
N
i
i
T
d
bxt
Cbxt
Cbxt
bxtCL
1
0000
11
0000
1111
0000
11
00
1
00
12
1
12
1
12
1
12
1
N
i
i
N
i
jjj
N
j
iii
N
i
i
T
ii
T
d
xtxt
bxtL
11 1
1
000
2
1
12
1
KKT条件の(3)
C-αi -μi =0
結局、最適識別超平面の時の評価関数と一緒になる
ソフトマージン識別器:学習:双対問題
最適超平面の双対問題
ソフトマージン識別器での双対問題
T
Nj
T
ijiij
T
TT
N
i
i
N
i
jjj
N
j
iiid
tttxxttHH
t
H
xtxtL
),,,(),(
0
2
11
2
1
1
11 1
評価関数
(最大化)
制約条件
H
xtxtL
TT
N
i
i
N
i
jjj
N
j
iiid
2
11
2
1
11 1
評価関数
(最大化)
制約条件 αTt=0, 0≦αi≦C 実は条件が1つ増えただけ
ソフトマージン識別器:学習:双対問題
後はαを求めればいいので、αの
最大化問題を解く
はじパタにはSMO(sequentila
minimal optimization)を使うってし
か書いてないし、とりあえずαが求め
られたってことで。
後の流れは最適超平面の時と同じ
略
カーネルトリックってやつですよ
まあ数式見ても騙されてる感じしかしない
このへんから理解が結構怪しい
そして資料作るのがだるくなってきた
非線形特徴写像
線形分離が上手くできない場合でも、非線形変換で高次
元空間に写像すれば上手く分離できる場合がある
非線形写像
d次元の学習データx∈Rd
φ(x)=(φ0(x)=1, φ1(x),…,φM(x))T
非線形写像
ω0
非線形変換φ
識別境界 非線形変換φでM次元空間に写像
バイアス項 写像結果
イメージ的にはこれがわかりやすかった
http://www.youtube.com/watch?v=3liCbRZPrZA
非線形写像
非線形写像ができるようになると・・・
最適識別超平面は
線形識別関数
ωx→非線形写像!→
N
i
iii xt1
0
N
i
iii
N
i
i
T
ii
T
xxKt
xxt
xxh
1
1
0
,
核関数(もしくはカーネル関数)
→核関数さえ計算できれば、非線形写像後の計算を行わなくてもおk
ってところがメリットのようだ
(こいつがカーネルトリック)
非線形写像
一応、双対問題も核関数が解ければいいのか確認する
ソフトマージン識別器の双対問題の評価関数
N
i
i
N
i
jijj
N
j
ii
N
i
i
N
i
jijj
N
j
iid
N
i
i
N
i
jjj
N
j
iiid
xxKtt
xxttL
xx
xtxtL
11 1
11 1
11 1
,2
1
2
1
2
1
写像なし
写像後
→φ(x)が消えるので、双対問題も核関数が解ければおk
非線形写像:多項式カーネル
実際に多項式カーネルを使って写像を考えてみる
p次の多項式カーネル
Kp(u ,v) = (α+uTv)p α ≧ 0(だいたいはα=1で使うらしい)
SVMで利用する際はuとvにx iを入れるイメージ
非線形写像:多項式カーネル
多項式カーネルの威力
例えばu=(u1,u2)T, v=(v1,v2)T ,α=1の2次多項式カーネルの場合
K2(u,v) = (1+(u1,u2)・(v1,v2)T)2
そのまま計算する場合
2次元ベクトルの内積を取った後、2乗すれば良い
展開して計算する場合
K2(u,v) = (1 + (u1,u2)・(v1,v2)T )2
=(1 + u1v1 + u2v2 )2
=1+ u12v1
2 + 2u1v1u2v2 + u22v2
2 + 2u1v1 + 2u2v2
=(1, u12, √2u1u2, u2
2, √2u1, √2u2)・(1, v12, √2v1v2, v2
2, √2v1, √2v2)
6次元ベクトル(写像後)の内積
φ(u) φ(u)
多項式カーネルをそのまま計算することは、2次→6次に写像した結果を計算しているのと等しい(計算が楽になってる)。
ついでに、u1v1とかがあるので写像すると交互作用が考慮されるようになる
非線形写像:多項式カーネル
多項式カーネルを二項定理で展開すると
p
i
iTip
pT
p
vui
p
vuvuK
0
,
【はじパタの引用】
uとvの次元をdとする。(uTv)も内積カーネルであり、展開す
ると、次数 ij =i(0≦ij≦d)の単項式u1i1u2
i2,…,udidを全て含
み、それらが非線形特徴を構成する。
従って、Kp(u,v)の非線形特徴は、次数 ij ≦p (0≦ij≦d)
の単項式全てからなる
d
j 1
d
j 1
何を言っているのかよく分からねえ・・・。
多分、多項式カーネルを使った時のu,vの次元数の上限がΣで求められるって言ってる。
非線形写像:多項式カーネル
気を取り直して先を読む・・・
d次元のxを多項式カーネルKp(x,x)に突っ込むと
次元になる
さっきのd=2、p=2の例だと 次元なのでそ
の通りっぽい
ppd Cp
pdpdD
,
62
34222
C
非線形写像:多項式カーネル
正直全くわからなかったので、ちょっと考えてみる
2次元で2次の多項式カーネルの場合
3次元で2次の多項式カーネルの場合
K2(u,v) = (1 + (u1,u2)・(v1,v2)T )2
=1+ u12v1
2 + 2u1v1u2v2 + u22v2
2 + 2u1v1 + 2u2v2
uの次元数で考えると1, u1, u2, u1u2, u1
2, u22の6次元
K2(u,v) = (1 + (u1,u2,u3)・(v1,v2,v3)
T )2
=1+2u1v1+2u2v2+2u3v3+2u1v1u2v2+2u1v1u3v3+2u2v2u3v3+u12v1
2+u22v2
2+u32v3
2
uの次元数で考えると1, u1, u2, u3, u1u2, u1u3, u2u3, u1
2, u22 , u3
2の10次元?
要は (1+ u1+,…,+ ud )
pの項の数が次元数ってことでおk?
d+1個
非線形写像:多項式カーネル
Wikipediaでこういうのがあった
重複組合せ( h t t p : / / j a . w i k i p e d i a . o r g / w i k i / % E 7 % B 5 % 8 4 % E 5 % 9 0 % 8 8 % E 3 % 8 1 % 9 B _ ( % E 6 % 9 5 % B 0 % E 5 % A D % A 6 ) )
(x1+x2+・・・+xn)r の係数を無視した項は重複組み合わせで
取り出せる
今回だとn=d+1、r=pということになるから
で多項式カーネルを使った時の非線形空間の次元が求めら
れるってことか?
p
pdCCH ppdppdpd 111
r
rnCH rrnrn
11
このへんで力尽きた。すみません。
と言っても、後はRBFカーネル(動径基底関数カーネル)は無限次元に写像してるから多項式カーネルより凄いって話だけですが。
次回の講演者がやってくれるって!ありがと!