PRML復々習レーン#10に参加して発表してきました

本日開催されたPRML復々習レーン#10に参加してきました.延期による日程再調整と会場確保していただいた @Prunus1350 さん,参加者のみなさんありがとうございました.

前回までのあらすじを紹介.実は前回も朝方まで資料をつくっていたのでこのまま爆弾低気圧の影響で延期になればラッキーというネタを入れていたのだけれど本当に延期になってしまったというネタを披露.

7章の多クラスSVMと回帰のためのSVMも発表.

多クラスSVMではクラス数分だけ分類器を用意して最大の出力を返すクラスを選択する方法 (MaxWin) がよく使われるが,これには理論的根拠がなく,いろんな方法が提案されているよ,けれど結局MaxWinが精度よいよ,というような内容.ECOC法はアイディアが面白いので実装してみたい.

回帰のためのSVMは,二値分類におけるヒンジ損失に相当するε許容誤差という損失関数を考えることによって二値分類よろしく損失を与えるデータ点を減らし,疎な解 (少ないサポートベクタ) を得るという方法.回帰のため,大きく誤る場合と小さく誤る場合があるため,ξを2つに分けているが,あとは二値分類と大体同じ.二値分類と大きく異なるのはパラメータ選択においてCだけでなくεの調整も必要ということ.

個人的にこつこつと書き溜めていた自己満足ノートを書いた計算論的学習理論は次回のお楽しみ.またパワーアップさせようかな.


SVMの学習については二次計画ソルバーそのままだと辛いからチャンキングや分解法 (Osuna's method) やSMOがあるよ,というような記述があるものの,具体的な解説がない.そこでGW中に実装したSMOの解説資料を作ったのでそれもついでに発表.

SMOはサポートベクタ―マシン入門などを読んで実装してみたことはあるものの,よくわかっていなかったためバグが取れず,うまく動かなかったという経験を過去に二回していた.今回は一念発起して仕組みを理解しようということで勉強してみたら少し理解した気になったので資料にまとめてみた.

まぁ元論文を読めば大体わかるのだけれど,サポートベクタ―マシン入門や元論文を読んでもぱっとイメージがわからなかった人はまずこの資料に目を通してから元論文をあたると理解できると思う.

終わってみれば今回はなんだか気合が入っていた気がする.SMO資料然り,今回発表できなかったけれど計算論的学習理論資料然り.ベイズベイズするよりもこちらの方が好きなんだろうなぁと改めて感じた.

次回はベイズベイズなRVMや,ノーテーション地獄になる8章に入るので,なんとか乗り越えたい.可能な限り実装するなどして使う側のノウハウを蓄積していきたいと思う.

質疑・議論メモ

今回はいつもよりも議論が盛り上がったように感じた.その分時間が長くなってしまうけれど,時間が許す限り & 納得のいく限り議論できればよいと思う.議論して気持ちよくなって終わりではいけないので,ちゃんと持ち帰って次回フォローしなければいけないのだけれど.

  • カーネル行列は半正定値じゃなきゃいけないの? => 後述
  • 正定値カーネル? 半正定値カーネル?
    • どうやら正定値カーネルと呼ぶ場合には,カーネル (グラム) 行列が半正定値のことを指すらしい.厳密には半正定値カーネルと呼ぶべきなのだろうけれど
  • (6.72)ではなぜ\theta_3を複数の\eta_iに分割していないのか?
    • やればできるのだろうけれどあまり効果がないのでは?
  • (6.90)と(6.91)は両方必要か?
  • ガウス過程はなぜうれしいのか.使いどころは?
    • 出力を確率で出せる
    • 閉じた解で求まる.関連度自動決定を行う場合には数値計算が出てくるが凸最適化.
    • RVMの場合も出力を確率で出せるし,疎な解になるが非凸な最適化になる.
  • SVMに出てくる相補性条件a_n\{t_n y(\mathbf{x}_n)-1\} = 0の直感的な説明は?
  • KKT条件の直感的な説明は?
  • ν-SVMのνはどのような値を設定するのか
    • パラメータ探索するのでは?

補講: 正定値カーネルでないと何がうれしくないか

正定値カーネルでないと何がうれしくないの? という @showyou さんの質問にホワイトボードにぐちゃぐちゃ書きながら説明をしたものの,もう少しすっきりした説明ができないものかと考えていた.ノートにまとめたみたのでこちらも公開.怪しい状態だけれどGWが終わってしまうのでタイムアップ.

要確認マークがついているが,カーネル法に関する本を読む限り,正定値カーネルの場合に対応する基底関数の内積\phi(x)^T \phi(y)が存在するという解釈で合っていそう.

なお演習6.15に正定値カーネルはコーシー=シュワルツの不等式を満たすことを示す問題があるが,きっとこれが関係あるだろうと思って帰りの電車で考えていた.行列式が非負であることを使って証明せよと書かれているのを見落として,正定値行列の定義 (\mathbf{w}^T K \mathbf{w} \ge 0) から導こうとして帰りの電車でひたすらノートを無駄にしたのはここだけの秘密.

参考文献

サポートベクタ―マシンについては以下の本が有名.ただし,数学系の説明スタイル (定義=>定理=>証明) のため,このスタイルに慣れていないと読みづらい部分がある.翻訳がおかしいと巷では不評のようだが,語彙の選択方法が変わっているだけであからさまな誤訳があるようには思えない.丁寧に訳注もつけて補足してくれているため,とても好印象.

たとえばp.167の訳注においてSMOの改良版であるKeerthiの解説を行っているが,これは原書に記述されていないため,SMOを理解し,かつKeerthiの論文を読んで理解していないと書けない内容である.

サポートベクターマシン入門

サポートベクターマシン入門


最近知ったのだけれどこちらの本がおすすめ.著者はSVM研究を行っていたため,もう一歩踏み込んだノウハウについても書かれている.ちゃんと読んでいないけれどおすすめ.

パターン認識のためのサポートベクトルマシン入門

パターン認識のためのサポートベクトルマシン入門