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

2,683 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,683
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. 正則化とパス追跡アルゴリズム 東京大学 三好雄也1
  2. 2. はじめにかなり参考にさせて頂きましたhttp://sora-blue.net/~shogo82148/memo/algorithm/svm/csvm.htmlhttp://ibisml.org/archive/ibisml001/karasuyama.pdf 問題があれば削除します 2
  3. 3. SVMの確認 識別問題 y = sgn(𝑤𝑥 + 𝑏 ) 𝑤𝑥 + 𝑏 =0 sgn(y) = 1 … y ≧0 sgn(y) =-1 … y < 0𝑤𝑥 𝑖 + 𝑏 =0 は定数倍しても問題ないので ⇒ 𝑤𝑥 𝑖 + 𝑏 ≧1 … 𝑦 𝑖 = 1 𝑤𝑥 𝑖 + 𝑏 ≦ -1 … 𝑦𝑖 = 1 ⇒ 𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏 )≧1 ←このもとでマージン最大化 3
  4. 4. ソフトマージン(C-SVM)の復習 1 線形分離可能ではない場合、以下の式を満たす (w , b) は存 在しない 𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏 ) ≧ 1 そこで、 𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏 ) < 1 となる場合もペナルティ付きで認 めるというのがソフトマージン 線形分離不可能 4
  5. 5. ソフトマージン(C-SVM)の復習 2 𝑤𝑥 + 𝑏 =0 セ、セーフ? はずれ幅 ξ 𝑖 = max{1- 𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏) ,0} ペナルティの大きさC → ペナルティ Cξ 𝑖5
  6. 6. ソフトマージン(C-SVM)の復習 3 ペナルティ Cξ 𝑖 =C×max{1- 𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏) ,0} B ξ𝑖 = 0 分離成功 0 < ξ𝑖 ≦ 1 Aの場合 A ξ𝑖 > 1 Bの場合(分離失敗) A C → ∞ でハードマージンと同じ B6
  7. 7. ソフトマージン(C-SVM)の復習 4 ペナルティ Cξ 𝑖 =C×max{1- 𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏) ,0} 目的関数の再定義 1 2 𝑛 min 𝑤 +C 𝑖=1 ξ 𝑖 𝑤,𝑏 2 s.t. ξ𝑖 ≧ 0 …(2) ξ 𝑖 ≧ 1- 𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏)つまりはoverfitしないように、Cでパラメータに制約を加えている感じ・・・なハズです。この仕組みが正則化! 7
  8. 8. ソフトマージン(C-SVM)の復習 5 精確に分けたい! 1 2 𝑛 min 𝑤 +C 𝑖=1 ξ 𝑖 2 過学習を防ぎたい! (正則化項)8
  9. 9. SVMのパラメータ推定 1 数式的な部分は省略します。 結局のところ、ラグランジュ乗数法で最適化問題を解くことに より、以下の式と制約条件が導かれます。 双対問題 1 2+ C 𝑛 L = 𝑤 𝑖=1 ξ 𝑖 2 𝑛 𝑛 - 𝑖=1 𝜆𝑖 ξ𝑖 - 𝑖=1 𝛼 𝑖 (ξ 𝑖 − 1- 𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏 )) 𝑛 1 ⇔ L= 𝑖=1 𝛼𝑖 - 𝑖,𝑗 𝛼 𝑖 𝛼𝑗 𝑦 𝑖 𝑦𝑗 𝑥 𝑖 𝑥𝑗 …(3) 2 𝜆 𝑖 について ただし 𝜆 𝑖 ≧0 , 𝛼 𝑖 ≧0 最大化 𝜆 , 𝛼 はラグランジュ乗数 9
  10. 10. SVMのパラメータ推定 2 ラグランジュ乗数法の中で以下の式が現れる。 𝑛 w= 𝑖=1 𝛼 𝑖 𝑦𝑖 𝑥𝑖 𝑛 𝑖=1 𝛼 𝑖 𝑦 𝑖 =0 𝜆 𝑖 + 𝛼 𝑖 =C (3)式を最大化し、最適な 𝜆 を求め、以下のようにパラメータ w* , b* を求める。 𝑛 w* = 𝑖=1 𝛼 𝑖 𝑦𝑖 𝑥𝑖 𝑛 b* = 𝑖=1 𝛼 𝑖 𝑦𝑖 𝑥𝑖 10
  11. 11. SVMのパラメータ推定 3 まとめると、ソフトマージンSVMの場合、以下の制約条件が課 されるものの基本的にはハードマージンSVMと変わりはない 𝑛 𝑖=1 𝛼 𝑖 𝑦 𝑖 =0 , 0≦ 𝛼 𝑖 ≦C 繰り返しとなるが、ソフトマージンSVMは ξ𝑖 = 0 or C→∞ で、ハードマージンSVMと等しくなる 11
  12. 12. 補足 1 Φ? Φ(𝑥 𝑖 )の Φ ←こいつのことです。 教科書p120にも書いてありますが、写像を意味します。 今までは比較的線形で分離しやすい例を用いていたため、 Φは用いてい ませんでした。 しかし、以下のような場合、線形で分離するのはまず無理です。 そこで、何らかの変換(写像)を行い、 分離しやすい形に直してしまおうとい うのがカーネルの発想です。 変換前:入力空間 変換後:特徴空間 12
  13. 13. 補足 2 Φ? 変換によるイメージ 次元を増やす変換だと(これがカーネル!) 13 フリーソフトによるデータ解析・マイニング Rとカーネル法・サポートベクターマシンより
  14. 14. パス追跡とは Cの値が変わると、判別境界が大きく変わる(図12.1) Cの決め方の手順 → Cの候補を設定 → 交差検証法、ブートストラップ しかし、k-交差検証法の場合、計算コストが高くなる → パス追跡アルゴリズムにより、いちいち最適問題を 解かずに最適な C の値を追いかける! ただし、機械学習系ではまだ注目を集め始めた段階であり、 結果も安定しないことから、まだまだ検証が必要な手法? 14
  15. 15. パス追跡アルゴリズム 1 初期化 C = 𝐶 𝑚𝑖𝑛 繰り返し C = 𝐶 𝑚𝑎𝑥 となるまで以下のStepを繰り返す 出力 C ∈[𝐶 𝑚𝑖𝑛 , 𝐶 𝑚𝑎𝑥 ] と 𝑓𝑐 パス追跡 グリッドサーチ 𝜆𝑖 𝜆𝑖 変化点を求める 1つずつ最適化 C C 15
  16. 16. パス追跡アルゴリズム 2 Step1:直線の方程式を求める Step2:直線の変化点(break point)を見つける 学習データを3つに分ける C変化で 境界も変化 1. L = { i | 𝑦 𝑖 𝑓𝑐 <1} 2. R = { i | 𝑦 𝑖 𝑓𝑐 >1} 3. Ε ⇒ 0≦ 𝛼 𝑖 (C) ≦C それぞれの点の状態が違う状態に移る Cが増えると Cが “break point” 幅が小さくなる 16
  17. 17. パス追跡アルゴリズム 3 イメージ的には csvm.svg を参照 http://sora-blue.net/~shogo82148/memo/algorithm/svm/csvm.html それぞれの点の状態が変化していることが確認できる 17
  18. 18. パス追跡アルゴリズム 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
  19. 19. パス追跡アルゴリズム in R 2 dat$x 最後のコード(path-svm.r)でも何らか の方法で、カーネル法を用います。 ただ、このカーネルにガウシアンカー ネルを用いる場合、 “σ” の値をどうす るかという問題も生じます。 そこで、最後のコードではCを100段階 に変化させるとともに “σ” の値も10段 階で変化させています。 〇:1 〇:219
  20. 20. パス追跡アルゴリズム in R 3sigma.list <- 1/quantile(dist(x),prob=seq(0.01,0.5,l=20))^2for (sigma in sigma.list){ print(sigma) err <- c() for (j in 1:kcv){ C-SVM ## 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))} 20
  21. 21. まとめ SVMにおけるパス追跡アルゴリズムとは、交差検証法の計算 量を軽減することを目的としたものであり、近年、その有効性 が認識されつつある。 ただし、最適化問題としては既に確立しているものの、機械 学習においては統計的性質など研究課題は多い。 また、値も安定しない。 なお、パターン認識の本では線形までしか示されていない 21

×