パターン認識 第12章 正則化とパス追跡アルゴリズム

21
正則化とパス追跡アルゴリズム 東京大学 三好雄也 1

description

 

Transcript of パターン認識 第12章 正則化とパス追跡アルゴリズム

Page 1: パターン認識 第12章 正則化とパス追跡アルゴリズム

正則化とパス追跡アルゴリズム

東京大学 三好雄也

1

Page 2: パターン認識 第12章 正則化とパス追跡アルゴリズム

はじめに

2

かなり参考にさせて頂きました

http://sora-blue.net/~shogo82148/memo/algorithm/svm/csvm.html

http://ibisml.org/archive/ibisml001/karasuyama.pdf

問題があれば削除します

Page 3: パターン認識 第12章 正則化とパス追跡アルゴリズム

SVMの確認

識別問題 y = sgn(𝑤𝑥 + 𝑏 )

𝑤𝑥𝑖 + 𝑏 =0 は定数倍しても問題ないので

⇒ 𝑤𝑥𝑖 + 𝑏 ≧1 … 𝑦𝑖 = 1

𝑤𝑥𝑖 + 𝑏 ≦ -1 … 𝑦𝑖 = 1

⇒ 𝑦𝑖 (𝑤𝑥𝑖 + 𝑏 )≧1 ←このもとでマージン最大化

sgn(y) = 1 … y ≧0

sgn(y) =-1 … y < 0

𝑤𝑥 + 𝑏 =0

3

Page 4: パターン認識 第12章 正則化とパス追跡アルゴリズム

ソフトマージン(C-SVM)の復習 1

線形分離可能ではない場合、以下の式を満たす (w , b) は存在しない

𝑦𝑖(𝑤𝑥𝑖 + 𝑏 ) ≧ 1

そこで、

𝑦𝑖(𝑤𝑥𝑖 + 𝑏 ) < 1

となる場合もペナルティ付きで認めるというのがソフトマージン

線形分離不可能

4

Page 5: パターン認識 第12章 正則化とパス追跡アルゴリズム

ソフトマージン(C-SVM)の復習 2

はずれ幅 ξ𝑖 = max{1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏) ,0}

ペナルティの大きさC → ペナルティ Cξ𝑖

セ、セーフ?

𝑤𝑥 + 𝑏 =0

5

Page 6: パターン認識 第12章 正則化とパス追跡アルゴリズム

ソフトマージン(C-SVM)の復習 3

ξ𝑖 = 0 分離成功

0 < ξ𝑖 ≦ 1 Aの場合

ξ𝑖 > 1 Bの場合(分離失敗)

C → ∞ でハードマージンと同じ

ペナルティ Cξ𝑖 =C×max{1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏) ,0}

B

A

B

A

6

Page 7: パターン認識 第12章 正則化とパス追跡アルゴリズム

ソフトマージン(C-SVM)の復習 4

ペナルティ Cξ𝑖 =C×max{1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏) ,0}

目的関数の再定義

min𝑤,𝑏

1

2𝑤 2+ C ξ𝑖

𝑛𝑖=1

s.t. ξ𝑖 ≧ 0 …(2)

ξ𝑖 ≧ 1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏)

つまりはoverfitしないように、Cでパラメータに制約を加えている感じ・・・なハズです。この仕組みが正則化!

7

Page 8: パターン認識 第12章 正則化とパス追跡アルゴリズム

ソフトマージン(C-SVM)の復習 5

min 1

2𝑤 2+ C ξ𝑖

𝑛𝑖=1

精確に分けたい!

過学習を防ぎたい!

(正則化項)

8

Page 9: パターン認識 第12章 正則化とパス追跡アルゴリズム

SVMのパラメータ推定 1

数式的な部分は省略します。

結局のところ、ラグランジュ乗数法で最適化問題を解くことにより、以下の式と制約条件が導かれます。

L = 1

2𝑤 2+ C ξ𝑖

𝑛𝑖=1

- 𝜆𝑖𝑛𝑖=1 ξ𝑖 - 𝛼𝑖

𝑛𝑖=1 (ξ𝑖 − 1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏 ))

⇔ L = 𝛼𝑖𝑛𝑖=1 -

1

2 𝛼𝑖𝛼𝑗𝑦𝑖𝑦𝑗𝑥𝑖𝑥𝑗𝑖,𝑗 …(3)

ただし 𝜆𝑖 ≧0 , 𝛼𝑖 ≧0

𝜆 , 𝛼 はラグランジュ乗数

双対問題

𝜆𝑖について

最大化

9

Page 10: パターン認識 第12章 正則化とパス追跡アルゴリズム

SVMのパラメータ推定 2

ラグランジュ乗数法の中で以下の式が現れる。

w = 𝛼𝑖𝑛𝑖=1 𝑦𝑖 𝑥𝑖

𝛼𝑖𝑛𝑖=1 𝑦𝑖 =0

𝜆𝑖 + 𝛼𝑖 =C

(3)式を最大化し、最適な 𝜆 を求め、以下のようにパラメータw* , b* を求める。

w* = 𝛼𝑖𝑛𝑖=1 𝑦𝑖 𝑥𝑖

b* = 𝛼𝑖𝑛𝑖=1 𝑦𝑖 𝑥𝑖

10

Page 11: パターン認識 第12章 正則化とパス追跡アルゴリズム

SVMのパラメータ推定 3

まとめると、ソフトマージンSVMの場合、以下の制約条件が課されるものの基本的にはハードマージンSVMと変わりはない

𝛼𝑖𝑛𝑖=1 𝑦𝑖 =0 , 0≦ 𝛼𝑖≦C

繰り返しとなるが、ソフトマージンSVMは

ξ𝑖 = 0 or C → ∞

で、ハードマージンSVMと等しくなる

11

Page 12: パターン認識 第12章 正則化とパス追跡アルゴリズム

補足 1 Φ?

Φ(𝑥𝑖)の Φ ←こいつのことです。

教科書p120にも書いてありますが、写像を意味します。

今までは比較的線形で分離しやすい例を用いていたため、 Φは用いていませんでした。

しかし、以下のような場合、線形で分離するのはまず無理です。

そこで、何らかの変換(写像)を行い、

分離しやすい形に直してしまおうとい

うのがカーネルの発想です。

変換前:入力空間

変換後:特徴空間

12

Page 13: パターン認識 第12章 正則化とパス追跡アルゴリズム

補足 2 Φ?

変換によるイメージ

次元を増やす変換だと(これがカーネル!)

13 フリーソフトによるデータ解析・マイニング Rとカーネル法・サポートベクターマシンより

Page 14: パターン認識 第12章 正則化とパス追跡アルゴリズム

パス追跡とは

Cの値が変わると、判別境界が大きく変わる(図12.1)

Cの決め方の手順

→ Cの候補を設定 → 交差検証法、ブートストラップ

しかし、k-交差検証法の場合、計算コストが高くなる

→ パス追跡アルゴリズムにより、いちいち最適問題を 解かずに最適な C の値を追いかける!

ただし、機械学習系ではまだ注目を集め始めた段階であり、結果も安定しないことから、まだまだ検証が必要な手法?

14

Page 15: パターン認識 第12章 正則化とパス追跡アルゴリズム

パス追跡アルゴリズム 1

初期化 C = 𝐶𝑚𝑖𝑛

繰り返し C = 𝐶𝑚𝑎𝑥 となるまで以下のStepを繰り返す

出力 C ∈[𝐶𝑚𝑖𝑛 , 𝐶𝑚𝑎𝑥] と 𝑓𝑐

C

𝜆𝑖

C

𝜆𝑖

パス追跡 グリッドサーチ

1つずつ最適化 変化点を求める

15

Page 16: パターン認識 第12章 正則化とパス追跡アルゴリズム

パス追跡アルゴリズム 2

Step1:直線の方程式を求める

Step2:直線の変化点(break point)を見つける

学習データを3つに分ける

1. L = { i | 𝑦𝑖𝑓𝑐<1}

2. R = { i | 𝑦𝑖𝑓𝑐>1}

3. Ε ⇒ 0≦ 𝛼𝑖(C) ≦C

それぞれの点の状態が違う状態に移るCが “break point”

C変化で 境界も変化

Cが増えると 幅が小さくなる

16

Page 17: パターン認識 第12章 正則化とパス追跡アルゴリズム

パス追跡アルゴリズム 3

イメージ的には csvm.svg を参照

http://sora-blue.net/~shogo82148/memo/algorithm/svm/csvm.html

それぞれの点の状態が変化していることが確認できる

17

Page 18: パターン認識 第12章 正則化とパス追跡アルゴリズム

パス追跡アルゴリズム in R 1

fit <- svmpath(x, y, kernel.function=radial.kernel, param.kernel=sigma)

x …200×2 の2次元 y …200個のラベル(-1,1)

Svmpath ⇒ fit $ lambda : the value of the regularization parameter …C , 0~45の500弱個 ⇒ fit $ alpha : αの値 …200×500弱

system.time(fit <- svmpath(x,y,kernel.function=radial.kernel,param.kernel=sigma))

system.time(for (i in 1:length(C.list))

ksvm(x,y,kernel="rbfdot",kpar=list(sigma=sigma),C=C.list[i]))

僕のPCだと

Cの数…414個 svmpath → 0.11秒 ksvm → 30.01秒でした

α の推定値

計算の高速化

18

Page 19: パターン認識 第12章 正則化とパス追跡アルゴリズム

パス追跡アルゴリズム in R 2

dat$x

〇:1 〇:2

最後のコード(path-svm.r)でも何らか

の方法で、カーネル法を用います。

ただ、このカーネルにガウシアンカー

ネルを用いる場合、 “σ” の値をどうす

るかという問題も生じます。

そこで、最後のコードではCを100段階

に変化させるとともに “σ” の値も10段

階で変化させています。

19

Page 20: パターン認識 第12章 正則化とパス追跡アルゴリズム

パス追跡アルゴリズム in R 3

sigma.list <- 1/quantile(dist(x),prob=seq(0.01,0.5,l=20))^2

for (sigma in sigma.list){

print(sigma)

err <- c()

for (j in 1:kcv){

## k-交差検証法

tmpx <- x[idx!=j,]

tmpy <- y[idx!=j]

fit <- svmpath(tmpx, tmpy,

+ kernel.function=radial.kernel, param.kernel=sigma)

pred <- predict(fit,x[idx==j,],1/C.list,type="class")

err <- rbind(err, colMeans(pred != y[idx==j]))

}

cverr <- rbind(cverr,colMeans(err))

}

C-SVM

20

Page 21: パターン認識 第12章 正則化とパス追跡アルゴリズム

まとめ

SVMにおけるパス追跡アルゴリズムとは、交差検証法の計算量を軽減することを目的としたものであり、近年、その有効性が認識されつつある。

ただし、最適化問題としては既に確立しているものの、機械学習においては統計的性質など研究課題は多い。

また、値も安定しない。

なお、パターン認識の本では線形までしか示されていない

21