パターン認識 第12章 正則化とパス追跡アルゴリズム
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 1,984 views

 

Statistics

Views

Total Views
1,984
Views on SlideShare
1,984
Embed Views
0

Actions

Likes
0
Downloads
8
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

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