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

            東京大学 三好雄也



1
はじめに




かなり参考にさせて頂きました
http://sora-blue.net/~shogo82148/memo/algorithm/svm/csvm.html
http://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
ソフトマージン(C-SVM)の復習 1

       線形分離可能ではない場合、以下の式を満たす (w , b) は存
        在しない
         𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏 ) ≧ 1

                      そこで、
                             𝑦 𝑖 (𝑤𝑥 𝑖 + 𝑏 ) < 1

                      となる場合もペナルティ付きで認
                      めるというのがソフトマージン
          線形分離不可能


    4
ソフトマージン(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 → ∞ でハードマージンと同じ
                B



6
ソフトマージン(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   〇:2
19
パス追跡アルゴリズム 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){
                                                              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

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

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