Polya分布のパラメータ最適化

Polya分布とは

多項分布の共役事前分布にディリクレ分布を取って、ディリクレ分布のパラメータを積分消去するとPolya分布が出てくる。Latent Dirichlet Allocation(LDA)に代表されるトピックモデルでよく登場する確率分布。ガンマ関数を使って綺麗に書きくだせる。

\mbox{Polya}(\mathbf{x}; \mathbf{\alpha}) = \int \mbox{Multi}(\mathbf{x}, \mathbf{\theta}) \mbox{Dir}(\mathbf{\theta}; \mathbf{\alpha}) d \mathbf{\theta}

LDAの場合をClojureで実装すると、こんな感じ。

github.com

Polya分布のパラメータ推定(最適化)

残ったディリクレ分布のパラメータ(普通の変数から見ればハイパーパラメータ)をどうやって決めましょうか?というお話*1。たぶんベースになる論文は[1]だろうが、[2]を参考にしながら追ってみた。[2]の論文では

  • a fixed-point iteration on the log evidence
  • a Newton iteration on the log evidence
  • a fixed-point iteration on the leave-one-out log evidence

などが上げられていて、それぞれの手法の性質などが実験によって色々書かれている(性質の違いは[1]には書いてない)。今回は一番最初のやつを追ってみた。Polya分布はパラメータについてconcaveであるらしいので、それを使う。concaveだから下限をゴリゴリ最適化してやれば局所最適に陥いらずにいいところに行ってくれる(どうしてこの下限になるかはまだ自分で計算してない)。Polya分布の対数尤度に下限の式を2回当ててあげる。ガンマ関数に対数を取ったものに微分をするので、ディガンマ関数が登場してくる。あとはパラメータに関係あるところだけに注目して、普通に微分。closedな形で出てくるのがうれしいところ。ただし、その代償(?)としてディガンマ関数を計算しないといけないので、そこは重いかもしれない。

全然内容と関係ないですけど、D論って何か勉強しようと思ったときにすごい参考になったりしますよね。

参考

  • [1] T. Minka. Estimating a Dirichlet distribution. Technical report, M.I.T., 2000.
  • [2] H. Wallach. Structured Topic Models for Language. PhD thesis, University of Cambridge, 2008.

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

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

*1:経験ベイズと周辺尤度 - yasuhisa's blogのよい例になっていると思う。