今日の自然言語処理特論は言語モデルから一旦離れて*1、ベイズ入門なお話。ベイズについては多少知っているので、その辺はもう書かない。
新しく出てきたものの中に経験ベイズの話があった。経験ベイズを考える状況としては
- ベイズ的なフレームワークで考えている
- 事前分布を何かおいてやらないといけない
- しかし、無情報事前分布のようなものだとベイジアンな意味があまりない*2
- なにかしら意味のある事前分布とそのパラメータを決めてあげたい
というような状況で経験ベイズが発動する。経験ベイズというのは一言で言えばデータの尤度のことで
のこと。ここで、事前分布を母数で決まる分布としている。尤度をこのような母数を含む形で書いてやれば、最尤法により母数を推定することができ、事前分布の推定された母数が手に入る。ベイジアンなのに、最尤推定が出てくるというなんとも変な感覚である。
経験ベイズの例として、単語出現dfのモデル化の話が出てきた。一文章中に、何回「政治」という言葉が登場したかを横軸に、その文章数を縦軸にしたものをポアソン分布でモデル化したい。こいつをそのまま最尤推定してあげると全然だめで、「政治」が4回以上登場する文章の数はほとんど0になってしまう。しかし、単語というのは「バースト性」という性質を持っているらしく、出てこないときはちっとも出てこないが、出てくるときはわーっと出てくるという性質があり、10回以上登場する文章数もちらほらある。うまくモデル化できなかったバースト性以外の原因のとしては、単語はトピックごとに偏って出現するという性質がある。トピックというのは「小説」とか「新聞」といった具合だ。
最尤推定では、こうした要因に負けてしまうので、階層的ベイズ的な考え方で処理することにしよう、というのが階層モデルの発想。例えば文章数をポアソン分布でモデル化するにしても、各文章ではその母数は異なるだろう、そいつも考慮に入れてあげよう。どうやって考慮に入れるかというと、混合分布を使って。といった感じである。
各文章ではポアソン分布に従うと考えているので、としておき、文章ごとにが異なる(すなわち分布している)と考えると、とできる。こいつを混合してやると
とできる。
この辺でtwo poissonとかnegative binomialの話が出てきたんだけど、ちょっと忘れてしまった><とりあえず覚えていることは
- 積分が解析的にできそうな事前分布を選択する
- 積分が解析的にできなさそうな事前分布を選択したときは、MCMCなどでその分布に従う乱数を生成して、積分計算をしてやる
という付近。来週からはUM、DM、LDAなど、どこかで聞いた恐しい名前が出てくるらしいので、gkbrしているところ。
- 作者: 黒橋禎夫,柴田知秀
- 出版社/メーカー: サイエンス社
- 発売日: 2016/10
- メディア: 単行本
- この商品を含むブログを見る