こんにちは,今日もコロナ社から出版されている自然言語シリーズの自然言語のための機械学習入門をよんだので,それについて書いていこうと思います.
はじめに
サポートベクターマシン(SVM)は一時期すごくはやっていましたね.今はニューラルネットワークが話題ではありますが,原理的な解析ができることからSVMを使う人も多いそうです.
SVMは二値分類を行います.たとえば,身長体重から女性か男性かみたいな問題です.それを応用して複数分類や回帰問題に発展させていることも多いようです.
SVMが良く使われる理由は全体的に良い分類を行ってくれるからだそうです.といってもよくわからないと思います.ニューラルネットワークなどは与えられた値からその値を分類するように頑張るのですが,SVMは与えられた値以外にも対応する性質を持った分類を行ってくれます.その秘密は二つのクラスがあった場合に「どちらのクラスからもなるべく遠い位置でわける」というマージン最大化という仕組みを導入しているからです.今回は,そのマージン最大化について説明して,SVMを実際に解いていこうと思います.
分類の方法
いま,あるデータxに対して正解となるクラスy(+1 or -1)が与えられているとき,それらデータをクラスで分ける平面をwと仮定して,平面で分離する式を以下のように定義します.
つまり,fはxが入力されたときに0以上ならクラス(+1)に未満ならクラス(-1)に属するということです.マージン最大化とはこの平面と各クラスの最も近いデータとの距離の最大化のことを言います.
マージン最大化
データを分離する平面に最も近いデータをとして,データから平面に垂線を伸ばした時の交点を
とする.ここで,
は平面上にあるため,
となります.
パラメータbを調節することで平面を移動させることができます.よってとなるような平面を仮定すると,
と,することができ,と
が同じ方向を向いていることから,
となります.つまり,マージンの距離は
となり,これの最大化がSVMの解く問題になるということです.
厳密制約でのSVM
厳密制約というのはデータが過不足なくクラスに分けられている状態でのSVMの学習ということです.実際は外れ値や選択する特徴の表現不足で厳密なデータを用意するのは難しいですが,実践への導入として解説したいと思います.
先ほど,解くべき問題はの最大化といいましたが,これは扱いにくいので,
の最小化として,さらに,絶対値は扱いにくいので
の最小化とします.解くべき問題は変わっていません.
先ほど仮定したを満たすために,クラス(y=+1)のときは
であり,クラス(y=-1)のときは
を満たす必要があるとすると,二つの条件は以下のようにまとめることができる.
よって,以下の最適化問題を解くことになる.
この不等式制約付き最適化問題は凸問題であるので,ラグランジュ方程式を用いてデータ数分だけラグランジュ乗数を導入すると,ラグランジュ関数は以下のようになります.
これをそれぞれのパラメータで偏微分して0とおくと
これを,ラグランジュ関数に入れると以下のようにαのみの関数となり,変形することができる.
これでもともパラメータがなくなったので,あととはラグランジュ関数を最大にするαをもとめることで,はじめにもとめた,分類関数f(x)を求めることができます.しかしこの問題は二次計画問題となり解析的に解くことが難しくなっています.なので逐次的に解くなど工夫する必要があります.