SVM を使うと,なにが嬉しいの?

戻る



さて,SVM(Support Vector Machine)と言われるものが最近,巷(って言っても,主にパターン認識の分野だけどね)をにぎわしているんだけれど,いったいなにがすごいのだろう?

SVMは,パターン識別手法の一つなんだけれども,これまでもパターン識別手法というのはいくつも提唱されている.

ニューラルネットワークを使ったパターン識別手法として最も親しみ深いのは,多層パーセプトロンをバックプロパゲーションで学習させる方法だけれど,SVMはバックプロパゲーション学習と比べてどんな「嬉しい」ことがあるんだろうか.



ぶっちゃけた話,SVMの最大の特徴は「マージン最大化」にある.じゃあこの「マージン最大化」とは,なんだろう.



ここで,「識別線の引き方」というものを考えてみたい.

まず,2次元の特徴空間に次のような2つのクラスABに属するデータがあったとする.




これをうまいこと分離したいと思ったときに,どのように線を引くべきだろうか.ペンを渡されたら,大半の人はこんな風に線を引くのではないだろうか.




「あったりまえじゃん」と言うこと無かれ.では,なぜ次のように引かないのか,ということを考えてもらいたい.




言うまでもなく,こんな引き方をしたらクラスAのデータの周りの領域がクラスBデータの周りの領域より大きすぎるからだ.パターン認識的な言い方をすれば,クラスBの汎化能力が低くなってしまうから」だ.



さてここで,バックプロパゲーション学習された識別境界がどうなるか,ということを考えてみたい.

バックプロパゲーション学習は,学習アルゴリズムの本質として「与えられた教師データ」に関してのみ,学習結果を保証する.つまり,特徴空間上の学習データが与えられていない領域に関しては,学習結果は初期値依存することになる.そのため,上のような「あったりまえじゃん」という境界線が引かれるとは限らない.逆に言えば,「フツーこんな引き方しねーよ」という識別境界が引かれないとは言い切れないのだ.



これに対してSVMはどうなのか.そこで出てくるのが「マージン最大化」だ.



最も適した識別境界はどこか,という考え方は大きく分けて2つある.

ひとつはパラメトリックな方法,つまり統計的に学習データの分布を考えて識別境界を引く方法.

もうひとつはノンパラメトリックは方法,つまり与えられた学習データをすべて正しく識別できるようにする方法.



SVMは後者のノンパラメトリックな手法である.バックプロパゲーション学習もノンパラメトリック手法であるけれども,SVMがそれと異なるのは識別境界の位置を決定する明確な基準を持っていることだ.

SVMでは,学習データの中で最も他クラスと近い位置にいるもの(これをサポートベクトルと呼ぶ)を基準として,そのユークリッド距離が最も大きくなるような位置に識別境界を設定する.つまり,クラスの最端から他クラスまでのマージンを最大にするようにするのだ.これがマージン最大化と呼ばれるものである.






マージン最大化の基準がユークリッド距離であるというのは異論反論ありそうなところではあるけれども,このような明確な基準を与えているということ自体,ノンパラメトリックな手法では他に例のないことで,SVMの最も優れた部分であるのは確かだ.