昨日はまた黒橋研と勉強会。今回はCRF+CNF。CRFは少し前NLPで流行ったのでみんな知っていると思うけど、Conditional Random Fields(条件付き確率場)のこと。CRFはHMMなどの生成モデルと比較して識別モデルと呼ばれ、HMMの問題である、独立ではない事象をパラメータに含むということができる。これは、入力をx,ラベルをyとするときに、P(y|x)を直接推定することでxからのyの予測を直接的に行う、ということに起因している。HMMなど普通の言語モデルではP(y,x)=P(y|x)P(x)を考えるため、P(x)の学習データを大きくしなければエルゴード性が保証されず、学習がうまくいかない。つまり、CRFはHMMよりも少ない学習で適切な識別が行えるようになるため、識別という点においてはHMMよりも優秀、ということだろうか。これは形態素解析のように、問題をある入力に対するラベル付けというレベルまで落とせば、CRFで識別を行う方が良いということだろう。ただ、CRFに利用する素性は自分で考えなければいけないので、そこが一番の工夫のしどころなんだろう。結局CRFっていうのはロジスティック回帰を系列ラベリングに落とすという話っぽいな、どうやら。

(そのへんの話は工藤さんの日記きまぐれ日記: CRF と HMMが詳しい)


そこで、CNFの出番になる。CNF(Conditional Nural Fields)はCRFでxからyの推定を行う際、隠れ層θを噛ませて、その複数のθの重み付けによってxからθを推定し、θとyn-1からynを推定する。この際、yを推定する素性θの重みwは自動で推定されるので、自分は素性を選ぶ必要がなくてラクチン、というのがCNFの売り。※正確には素性の選択をする必要はあるが、素性の組み合わせが自動で考慮されて、非線形な分類もできる、ということらしい。

Conditional Neural Fields (NIPS09)

にあるグラフがわかりやすいと思う。細かい計算は尤度関数を偏微分して各パラメータを求めるところまではCRFなんかと同じで、その先で勉強会では落っこちてしまったが、CNFの気持ちがわかっただけでも収穫。この論文で使われたCNF自体はオープンソースらしいので、誰かツールを作って下さい(ぁ

※論文紹介をしてくださった@mhangyoさんから訂正を頂きました。

@caesar_wanya 論文を読んでCNFを実装した人がいて、それがオープンソースなので、論文のCNFはオープンソースではないですよ uchiumi log: Conditional Neural Fields on Google Code

ということだそうです。あしからず。


昨日ついに博士課程に出願した。これを出したからにはもう後には引けないので、あと3年頑張ろう。