CRF を使った Web 本文抽出

とある確率でカオスでタイムマシンな勉強会を 7/30 にサイボウズにて開催。
お疲れ様でした&ありがとうございました>各位


会のテーマに合うかなあと心配しつつ、以前 TokyoNLP #1 にて発表させていただいた、CRF(Conditional Random Fields) を使った Web 本文抽出ネタを焼き直し&プチバージョンアップして発表した。
その資料がこちら。



最初は、元の資料そのまま持って行こうかな、と思っていたのだけど、結局結構それなりに改訂版に。
実装の方も少し更新してあって、最急降下法+FOBOS L1 に対応していたり、素性も約3倍に増えていたり。
データは……相変わらず少ないけど(苦笑)、訓練データとテストデータを分けて、定量的な結果を資料にまとめている。


大元の発表がちょうど1年ちょっと前。
今読むと、「あーこいつ、わかってないの誤魔化してるな〜」というのが何カ所もあって、大幅に手を入れるハメになったのも必然かな(苦笑)。
まだまだ親切成分の足りないところも多いだろうが、以前のものよりはだいぶ良くなっている、と思う。


ちなみに、FOBOS なのに SGD ではなくて最急降下法なのは、L1 の特徴選択効果を期待しているのに、SGD だと最後のデータにひっぱられてしまい、あまりつぶれてくれないから。
それを和らげるための工夫もいろいろあるようだが、単純に最急降下法を試してみたところ、イメージに近い感じになったので、それを採用している。


また、資料に掲げている結果は素直に実行しただけでは出てこない。
最急降下法はなかなか収束してくれないし(SGDも同様)、BFGS も局所解(もしくは、とてもなだらかな部分?)に引っかかってることがわかってきたので、BFGS と最急降下法を交互に推論させて、ようやく引っ張り出した結果である。
学習率の設定も結構シビアにやる必要があって、0.001 あたりでも解を飛び越えて明後日の方に飛んで行ってしまい、0.00001 くらいでようやくなんとか。そのあたりで都度調節。


それもこれもデータが少ないせいなのかなあ。やっぱり。


追記
id:nokuno さんから、はてなブックマークで「 L1 の特徴選択が SGD で効きにくいなら Cumulative Penalty はどう?」とのご指摘。
Cumulative Penalty は、 unnonouno さんのブログ記事( unnonouno: L1-SGD )で見て気にはなっていたのだけど、論文に目を通す余裕がなく、また今回の範囲では、データも素性も少ないせいか、最急降下法でも SGD に比べて収束が遅くなったりしていなかったので、素直な手法を選んだ。


でも、ちょうどこれから1000件単位のデータ&10万オーダーの素性を組み込んだロジスティック回帰+ L1 正則化を試そうとしているので、そこでは最急降下法では力不足の可能性が出てくる。
そうしたらきっと Cumulative Penalty も検討することになるかもなあ。