トピックモデル入門編

自然言語処理特論も最後の話題、トピックモデルに先週から入ってます。今日の資料はこの辺の最初の付近。

前々回までの内容は最尤推定に基づいていたものがほとんどで、(ベイズ的な流れではない)スムージングの方法の説明などがあっていました。

  • Good-Turing
  • 線形補完
  • Kneser-Ney smoothing

などなど。あとは最大エントロピー法などですね。

なんでトピックモデルなのか?

で、こういう方法があるにも関わらずなんでトピックモデルというのがわざわざ出てくるか。それは、単語の出現確率というのは変動しまくる!という現実があるからのようです。例えば、最尤推定に基づくN-gramでは、文章に関わらず真の出現確率というのがあると想定している。しかし、Unigramを考えているとして、「東証」という単語が出てくる確率は、社説、経済、スポーツ、芸能などでは激しく違う。こういう出現確率を変動させる要因のことを「トピック」と呼ぶらしいです。トピックになるような他のものとしては

  • 時期(年とか月とか)
  • キャッシュ(単語の出現のバースト性)
  • トリガー(共起)

などが取り上げられています。最尤推定はNLP以外でも色々な分野に使われていますが、こういう状況を踏まえると最尤推定よりベイズ推定のほうがあってるかなーとか思えてきます。関係ないけど、先生が授業のときに「頻度論者ですか、ベイジアンですかと聞かれたらエンジニアですと答えます」と言われていたのが記憶に残ってますw。

Unigram Mixtures

で、そんなトピックモデルの一番簡単と言えるようなバージョンであるUnigram Mixturesから。Unigram Mixturesは端的に言えば、(有限)混合モデル。いくつかトピックがあったら、切り変えようというような感じのモデル。

考え方としては、生成モデルの感覚で考えると分かりやすい。本当のトピックがいくつかあるとしましょう。例えば「政治」「スポーツ」、「経済」の3つ。出てくる文章はこの3つの「いづれか」から生成されている。で、その生成してくるモデルはそれぞれパラメータを持っている、というような感じ。「どのトピックから選ばれたのか」というのが隠れ変数ということですねえ。

これをベイズの枠組みで考えたいので、事前分布を置きましょう。ちなみに、トピックモデルでは尤度はどれも多項分布ですが、事前分布の置き方が違うそうです。

「多項分布の事前分布といったら、(共役性から)ディリクレ分布だろjk」と思ってしまったのですが、Unigram Mixturesでは事前分布をDiracのデルタ関数で置くそうです。ちなみに、ディリクレ分布でおくと次回やるDirichlet Mixturesらしいです。

Diracのデルタ関数ということなので、ある点では無限大の高さを持つ棒がたってて、それ以外は0というような事前分布。「もっと滑かでも、、、」と思うのはDirichletのほうを知ってるから出てくる感じなのかそれとも。ともあれ、これでモデル化してやるとやりやすい形にすることができます。スライドでは、事前分布を経験ベイズによってモデル化しなおしてやり(グラフィカルモデルの付近が分かりやすいですね)、最尤推定に持っていけばEMアルゴリズムで推定できる、というやりかたで書いてあります。

それで事前分布を求めてあげると事後分布、予測分布が計算できる。いくつか混合したわけですが、ちょっと近似をしてあげると、maxの形を作り出すことができる。つまり、どれかの確率だけでほとんどよい、ということですね。スライドには「ユニトピックモデルだから当然」という感じで説明してありました。ふむふむ。

Dirichlet Mixtures

Unigram Mixturesでは無限大の高さを持つDiracのデルタ関数を事前分布に置いてたわけですが、自分としてはDirichlet Mixturesのほうがしっくりくる感じです。共役性もあるからちょっと安心感もあるし。「ディリクレ分布がなんでこれに使えるか?」というのの直感的な理解のところはスライドの「企業」「活動」「全国」の相対頻度が平面に書かれているやつが分かりやすいいですね。

まあ、この辺は来週以降ということで。

トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)

トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)