LDAでは何故ディリクレ分布を仮定するのか
LDAについて勉強してみた結果の雑記。間違っている可能性もあるので注意されたし。
LDAにおける文書モデル
LDA(Latent Dirichlet Allocation)では文書は次のようにして生成されると考える
準備
- 文書dは高々K個のトピックzから成る
- K面のトピックサイコロを作る
- 各面のでかたの分布をで表す
- K面のトピックサイコロを作る
- V個の単語wがある
- トピックごとに語サイコロを作る(V面サイコロをK個作る)
- 例えば「スポーツ」トピックのサイコロでは「経済」トピックのサイコロに比べて「サッカー」の面が出やすい、などの違いがある
- トピックごとに語サイコロを作る(V面サイコロをK個作る)
文書生成
- トピックサイコロをふってトピックを決定する
- 出たトピックの語サイコロを振って語を決定する
- 文書ごとにふるサイコロの割合は違う(なぜならが文書ごとに異なるから)
- 例えば「スポーツ」トピックが高めの文書では「スポーツ」トピックのサイコロを多めにふる
- 文書ごとにふるサイコロの割合は違う(なぜならが文書ごとに異なるから)
- 1, 2を繰り返す
- 文書完成!
ディリクレ分布はどこに出てくるか?
各文書は複数のトピックから成るので、これの事前分布としてトピックの分布がディリクレ分布に従っていると仮定する。
つまり
ディリクレ分布については後述する
なぜ、ディリクレ分布なのか?
結論は「単語やトピックの選び方に対して多項分布を仮定できるから」
じゃあ、多項分布って何よ?
互いに独立でJ個の状態をとれる確率変数XをN個観測したとき、jが回出たとする。このとき、jが出る確率がとするときの尤度関数は多項分布と等しい。
つまり、jの面がの確率で出るJ面サイコロをN回ふるのと同じ。
トピックや単語はサイコロを振った結果得られる。つまり、尤度関数が多項分布になると仮定できる。
ベイズの定理
二つの確率変数
ここでをパラメータ、を観測データとすると、は事前確率、は事後確率と見なせる。
そして、はデータに対する評価であり、パラメータの関数と見なせ、尤度関数と呼ばれる。
つまり
事後分布 ∝ 尤度関数 × 事前分布
それで?
先ほど述べたように、トピックサイコロや語サイコロによる選択は尤度関数が多項分布。
尤度関数と似た事前分布を選択すれば、事後分布も似た形になる。
特に、ある尤度関数に対して、事後分布の形が事前分布と同じになる場合、このような事前分布は共役性を持つという。
共役性を持つ事前分布のことを共役事前分布という。
共役事前分布がディリクレ分布とどう関係してくるの?
ディリクレ分布は多項分布に対する共役性を持っている。
ディリクレ分布
αはこの分布のパラメータを与える。
事前分布をディリクレ分布とおくと
事後分布は
確率分布にするために正規化すると(ディリクレ分布の式と比較してみれば正規化は簡単にできる)
ただし、
結局、事前分布をディリクレ分布にすると、事後分布がディリクレ分布になって簡単に表せることになる。
LDAではどうなってんの?
- トピックサイコロの目の出方がディリクレ分布(事前分布)
- サイコロの試行は尤度関数が多項分布になる
- つまり事後分布がディリクレ分布になる
- トピックサイコロの目の出方によって使われる語サイコロが変わるので、語サイコロの事前分布は1の事後分布に比例
- サイコロの試行は尤度関数が多項分布
- またまた事後分布がディリクレ分布になる
- 結局、全体の事後分布もディリクレ分布になる
というわけで、θがディリクレ分布に従うと仮定すると、このようなモデルが比較的簡単に数式化できる、ということなのだろうと思います。