SVMの正則化項がマージン最大化のために必要な理由
ラージマージンとマージン最大化について2回ほど書いてきた。
あの後もSVMとマージンパーセプトロンについてうだうだと考えていたのだが、もうちょっとシンプルな説明を思いついた。
SVMの特徴はヒンジロスを採用している点と、正則化項があるところである。
ヒンジロスはもう何度も出てきているが、max(0, 1-ywx)みたいな奴で、1-ywx<=0の時にだけ損失を0とするものである。
正則化は、wの各要素をできるだけ0に近づけようとする力で、要するに、この力に打ち勝つだけの価値を持つ素性だけが生き残れる。マージンパーセプトロンとSVMの大きな違いは、この正則化項のあるなしである。
前回は、ALMAの論文を持ち出してマージンパーセプトロンは近似的な最大マージンでしかない、と書いたが、そもそもSVMは最大マージンなのか。とりあえず、ヒンジロスだけで正則化項が存在しない場合(つまり、ほぼマージンパーセプトロンだ)を考えてみよう。
ヒンジロスはywxが1以上の値を取った場合に損失が0になるので、この場合、マージンを最大化せずに損失が0になる例を考える事ができそうである。例えば、以下の図を見ていただきたい。
この図の○と×はデータを表している。この図の緑は現在のパラメーターにおける識別超平面を表すことにしよう。だいたいy = 0.2x - 3 ぐらいかなぁ。で、ywxは1以上の値をとるだろうか?
答えは「wには自由度があるのでこの図からはわからない」ということになる。言い換えると、ywxがどちらのデータに対しても1以上の値をとるようなwを考えることができる。
そうすると、この緑の状態でもう損失は0になってしまっているので、学習はもう進まない。マージンパーセプトロンの場合、ここでおしまいである。
で、次に正則化項をつけてみよう。正則化項をつけてFOBOSで最適化した場合、各ステップでwのそれぞれの要素の値をちょっと減らして、0まで減らしたらそこでおしまい、ということになる。式で書くと、
w_{i+1} = sign(w_i) max(|w_i - lambda|, 0)
となる。(ただし、lambdaは適当な正の実数とする。)つまり、損失が0になった状態で学習を進めると、wの各要素の値はモリモリと小さくなっていく。
wの各要素の値がモリモリと小さくなっていくと、当たり前だがywxの値はどんどんと小さくなる。そうすると、また損失が正の値を取り、パラメーター更新が発生し、分離超平面が動くことになる。そして正例と負例のせめぎあいが発生し、マージンが最大化される。
という訳で、正則化はマージン最大化のために本質的に必要な要素である、という事ができる。(ないとマージンが最大化されないことがある。)
前回、マージン最大化にはマージンとして0より大きな実数を要求することが必要であると書いたが、今回得られたこの情報を合わせて、マージン最大化には
- マージンとして0より大きな実数を要求すること
- 正則化項があること
の2つが必須である、と言えよう。
おまけ。私の認識に従って分類表を書くと、以下のような感じになる。
正則化なし | 正則化あり | |
---|---|---|
ywx> 0 | パーセプトロン | 正則化つきパーセプトロン |
ywx>= λ | マージンパーセプトロン | SVM |
私の認識では、この中でラージマージン、マックスマージンを名乗っていいのはSVMだけで、マージンパーセプトロンはラージマージンである。パーセプトロンと正則化つきパーセプトロンはマックスマージンとラージマージンのどちらでもない。SVMがマージン最大化であることは論を待たない。マージンパーセプトロンがラージマージンとしたのは、非常によく似たアルゴリズムであるALMAがラージマージン(論文中の表現では、マックスマージンの近似)であるからだ。
本稿ではラージマージンについては「マージンを最大化まではしないけど、なんか大きくする感じの奴」という意味合いで使いました。