以下の本を読みます。上巻を読むこともあります。何か問題点がありましたらご指摘いただけますと幸いです。
- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/02/29
- メディア: 単行本
- 購入: 6人 クリック: 14回
- この商品を含むブログを見る
7.1.1 節「重なりのあるクラス分布」からです。前回までは「特徴空間で線形分離可能」という理想的な条件を課していました。前回定式化したマージン最大化問題はそもそもこの仮定がなければ成り立ちません。(7.5) 式の不等式制約は「分類境界に最も近い点と分類境界との距離をある正の値に固定し、その他の点は分類境界からもっと離れているとする」という意味ですし、不等式制約がない形にした (7.19) も、「意図しない側にはみ出た点があれば目的関数を無限大にする」という意味になっています。ので、線形分離不可能な場合は「不等式制約を満たす と が存在しない」とか「目的関数が常に無限大にしかならない」ということになってしまいますね。
そうなると と が求まんないな…。でも、特徴空間で全ての点をきれいに分離できない場合でも、ほとんどの点は分離できるってこともあるだろうし…10点以内ならはみ出てもいいってするとか? いやそれだと、本当ははみ出ないような分類境界があるのに別の分類境界が求まっちゃうかも…。だから、はみ出た点の個数に応じて減点した方がよさそう? …だけど、「1点はみ出すだけで済むけどマージンがぎりぎりな分類境界」と「2点はみ出してしまうけどマージンが広く取れる分類境界」ってどっちがうれしいんだろう…?
その辺を「どのように減点するか」で調整するのでは? ここではまず、slack 関数というものを導入するそうです。
slack? って、プロデューサーがいつも「slack の使い方がよくわからない」って言ってるやつ?
それも slack ですが…slack というのは元々「たるんだ」「怠けた」という意味の英単語のようです…割とビジネスツールらしからぬネーミングだったんですね…あ、でもウィキペディアによるとソフトウェアの方の slack はそうではなく複数の単語の頭文字なんですね。それはさておき、こちらの slack 関数は各データ点に対して定義される以下のような関数です。
margin boundary って何?
いまいちどこで言葉が定義されているのかわからないんですが、「マージン境界」とは、線形分離可能な場合だったら、求まった分類境界をどちらか側のサポートベクトルにくっつくまで平行にずらした超平面のことだと思います。つまり、分類境界を挟んで2枚のマージン境界があるはずです。分類境界をマージン境界すれすれまで平行にずらしても「2クラスを正しく分類する境界」にはなります。もちろん分類境界としてあまり望ましいものではないでしょうが。まあそれで、上の slack 関数は、その点がマージン境界上かマージン境界よりも内側(正しく分類される側)ならゼロをとり、そうでない点については、「正しい正解ラベルの値(-1 or 1)」と「、つまりその点の分類境界からの距離の 倍の値」の差の絶対値をとるということです。なお、前回決め打ったように、サポートベクトルと分類境界の距離の 倍は 1 に固定されています。なので、 はぴったりマージン境界上の点なら 、マージン境界ははみ出てしまったが分類境界ははみ出ていないなら 、ぴったり分類境界上なら 、分類境界もはみ出てしまっている(誤分類)なら になります。つまり、slack 関数とは、マージン境界をはみ出せばはみ出すほど大きな値をとるペナルティになっています。これを利用して、分離境界からのはみ出しを許容したのがソフトマージンSVMです。対して、前回に扱った、はみ出しを許容しない SVM がハードマージンSVMですね。
あーこれが「どれだけ減点するか」になってるのか。slack 関数っていいつつ全然「ゆるく」ないじゃん!
「ゆるい」というのは線形分離できない場合でも SVM をつかえるようにしてあげますよ、という寛容さなのでは? はみ出した点に対して寛容でどうするんです。
それもそうか…って待てよ? あのさ、もし線形分離可能じゃなかったらそもそもマージン境界とか分類境界とかなくない? サポートベクトルもないし。
なので、僕のイメージでは、線形分離可能になるように邪魔な点を取り除いたうえでサポートベクトルと分類境界を決めて、その後邪魔な点を差し戻すということだと思います。学習の経過ではどの点を邪魔にするかどんどん変えてみて、目的関数を最適化していくといった感じなのでは? 実際どのように最適化していくかはまだわかりませんが…とにかくみていきましょう。今回求めたい分類境界は以下です。
そのままの意味ですよ。例えば線形回帰モデルの正則化項 は「本当は誤差を最小化すべきところを、それを犠牲にしても の2乗ノルムを抑えたい」といった感じで、 を大きくするほど制約を強くすることになりますよね。 とすれば正則化がない場合と同じです。対して は「本当は1点もはみ出してはいけないところを、それをねじまげても解を求めたい」ということで、似ているがちょっと違います。いま は「その点がマージン境界以内なら 0、そうでなければはみ出るほど徐々に大きくする」と定義されていますが、元はといえばマージン境界をはみ出すことなど許されなかったんです。「その点がマージン境界以内なら 0、そうでなければ 」というのが の本来の姿だったんです。その本来の姿に戻すには とすればよいことがわかるでしょう? また、その本来の姿で最適解を求めるにはすべての について としなければならないので不等式制約も前回の (7.5) に一致します。むしろ単に としてしまうと上の問題の最適解は常に になりますよ? 各 をなるべく小さくしようという作用が失われ、不等式制約が何の制約にもなりませんので。細部までの注意が足りませんよ、ハヤト?
叱られるほどでもなくない!? だって (7.21) 式をハードマージンにするには ってぱっとわかんないよ? 本にも「一瞬 っぽいけど」とか何もかいてくれてないし!