自然言語処理では複雑なモデルの CRF は使いどころがないのだろうか

今日はちょっと時間がなかったので男女共同参画室のランチミーティングはそこそこに抜けさせてもらう。在宅勤務ができるかどうかの調査を頼まれたのだが、調査期間になっている7月18-31日のうち、半分以上休暇を取る予定なのだけど……。

まあ、自分に関しては、大学での仕事のうち、在宅勤務が不可能なのは勉強会出席くらい。うち、毎週出席する必要がある(自分以外に毎週出るスタッフがいない)勉強会は2つ、これとは別に研究室全体のミーティングがあり、それぞれ2-3時間程度なので、合算すると週9時間程度。現在全部別々の曜日にあるが、まとめると週2-3日勤務までは短縮できると思われる。個別のミーティングであれば、どうしても必要なら Skype を使えばいいし。(そもそも「在宅」と言われても歩いて5分のところに家があるので、在宅でやる意味はないのだけど) いや、なんとなれば勉強会も Skype で中継してもいいし……(実際 ryoko-t さんはずっと対話勉強会に Skype で参加していた)

しかし、物質やバイオの方々の話を聞くと、学生がいつ危険物を爆発させたりするか分からないので、ずっと見ていないといけないし、在宅勤務は不可能に近い、という話で、びっくりする。そんなに危険なのか。情報系で危険なことといえばせいぜい

  • 突然プロセス200個立ち上げて CPU サーバがスラッシングしまくりです
  • 超巨大なファイルを NFS 越しに cp してファイルサーバが固まりました
  • プログラム書いたらメモリ100GB使うのでメモリ不足で他の人のプロセス落としてしまいました

とかそんな感じで、さすがに命にかかわるものはないな……。(他人が論文投稿間際で必死になって動かしている1回で実行に1日かかるプログラムを思いがけず殺してしまい、恨みを買って殺意を持たれる、というケースはあるかもしれないが(笑))

さて今日はそんな感じで在宅勤務的には参加できなくなるであろう DMLA 勉強会で

を読んでみる。CRF も枯れた実装かと思いきやいろいろ新しい話はあるもので、調べてみるとなかなかおもしろい。

特に自然言語処理では単純な(linear chain CRF と呼ばれる)隣り合う品詞のペアの依存関係だけを見るようなモデルが広く使われている(Viterbi とかのアルゴリズムで効率的に計算可能)が、画像ではこういった単純なモデルではないので、効率的な計算をしないといけない、という話。画像の話はあまり追っていなかったので、いろいろ調べて勉強になった。数%の精度の差がどう出てくるのか、画像で示すと一発なので、それも分かりやすくてよい。もちろん、違いがくっきり出る事例を選んでいるのだろうが、それは自然言語処理でもエラー解析で分かりやすい事例を見つけてくるのはかなり大変(いいエラーを見つけたら、スライドでも論文でも使い回せる!)なので、見てすぐ分かるというのが一番大きい気がする。

さて、グラフカットを用いた CRF の学習も、基本的なパラメータ(重み)の更新は Structured SVM とほとんど同じなのだが、グラフカットの問題として扱うことで大規模化する(最悪でも多項式時間で解け、普通は数十回のパラメータの更新で解ける)、というところが貢献か。結局多クラス分類のときはいろんな近似手法を使わないといけないようなので、多クラス分類が多い自然言語処理の文脈ではあまり使いどころがないかもしれないが……。

自然言語処理で複雑な CRF というと、隣り合うタグだけではなく少し離れたタグも考慮に入れる Semi-Markov CRF くらいかなと思うのだが、あまりツールがないので使われていないのか、それともアルゴリズムが重い(精度もあまり出ない)ためかよく分からず、@uchumik さんが Semi-Markov CNF を先日公開したと(コードはGoogle Code)聞いたので、ツールがなくて使えないという人はみなさん使ってみるとよいかと思う。CNF は Conditional Neural Fields のことで、CRF の学習に隠れ層を使えるというのが違いか。詳しくは @nokuno さんの CNFはGoogle日本語入力の夢を見るか? をご覧いただければと……。

Semi-Markov CRF について yuta-t さんが書いている話を見ると、タグの数を T として T^2 で解けるアルゴリズムがあるらしい。いずれにせよ、Semi-Markov 的なものを使いたい、という話をよく聞くし、こういう複雑なモデルが高速に解けたら使いたい人いるのかな、と思うのだが、結局 yuta-t さんが「私見」にも書いてあるように

  • セグメンテーション問題のデファクトっぽく扱われているSemi-Markov CRFの弱点を指摘しており良い論文。
  • ただ、改良方法の解析時間O(T^2)は厳しい。
  • Semi-Markov CRFでしか使えないというsegment単位の情報は不完全ながらもCRFの素性に反映出来ないこともないのでCRFでいいような気もする。

ということで、テンプレートと辞書・コーパスを工夫して (linear-chain) CRF でやるだけでいいような気もする。もっと画像の人と自然言語処理の人が交流すると、なにかおもしろいことがあると最近考えている(先日の NAIST 情報科学若手の会でも思ったが)。