ディリクレ分布、ディガンマ関数、指数分布族、十分統計量

東京ではPRML読書会の最終回があっていたらしいですが、こちらはすごく初歩的な話。

LDAのinferenceをGibbs samplingでやる話とかを紹介したので、こちらは変分ベイズでやるほう(というか元論文)を読んでいた。変分ベイズはいいんだけど、途中で出てくる
E[\log \theta_i | \alpha] = \Psi(\alpha_i) - \Psi(\sum_{j=1}^k \alpha_j)
(つまりはパラメータのエントロピー)がよく分からんくなっていた。ディガンマ関数\Psi(\cdot)はガンマ関数の対数を取ったものの一階微分で
\Psi(x) = \frac{d \log(\Gamma(x))}{d x} = \frac{\Gamma^\prime(x)}{\Gamma(x)}
だけど、「期待値取る操作のところに何で微分のoperationが入ってくるねん!」と小一時間悩んでいたのでメモ。

指数型分布族

そういえば昔のPRML読書会で指数型分布族の発表担当でレジメを作っていたようだ。
www.yasuhisay.info

PRMLで出てくるような基本的な確率分布はほとんど指数型分布族に属していると考えていい(例外は混合分布くらい)。ベルヌーイもガウスも今回のディリクレも指数型分布族の一つである。\mathbf{x}上の指数型分布族は\etaをパラメータとして以下のように書き表わされることが知られている(はてなのTeX記法は\etaとかベクトルで書けないのかなぁ)。
p(\mathbf{x} | \eta) = h(x) g(\eta) \exp\{\exp^T \mathbf{u}(\mathbf{x})\}
ここで、\sum_n \mathbf{u}(\mathbf{x}_n)は分布の十分統計量と呼ばれ、指数型分布族の最尤推定をする際にはデータ全体を保持しておく必要はなく、十分統計量のみを保持しておけばよい*1。例えばガウスだったら、データの和と二乗和を保持しておけばよい。データの数を無限に持っていくと\lim_{N \rightarrow \infty} \sum_n^N \mathbf{u}(\mathbf{x}_n) = E[\mathbf{u}(\mathbf{x})]だけど、E[\mathbf{u}(\mathbf{x})] = - \Delta \log g(\eta)と書けることが知られている(PRMLの(2.226)式付近)。

ディリクレ分布の場合

今回取り扱いたいディリクレ分布を指数分布族の形式で書くと
p(\theta | \alpha) = \exp\{(\sum_{i=1}^K (\alpha_i - 1) \log \theta_i) + \log \Gamma(\sum_{i=1}^K \alpha_i) - \sum_{i=1}^K \log \Gamma(\alpha_i)\}
とできる。ここで上の\mathbf{u}(\mathbf{x})に対応しているのは(\log \theta_1, \cdots, \log \theta_K)^Tであり、g(\eta)に対応しているのが\exp\{\log \Gamma(\sum_{i=1}^K \alpha_i) - \sum_{i=1}^K \log \Gamma(\alpha_i)\} = \frac{\Gamma(\sum_{i=1}^K \alpha_i)}{\prod_{i=1}^K \Gamma(\alpha_i)}
である(つまりはディリクレの規格化項)。\log \theta_iのみに注目すると
\begin{align} E[\log \theta_i | \alpha] &= - \Delta \log \frac{\Gamma(\sum_{i=1}^K \alpha_i)}{\Gamma(\alpha_i)} \\ &= \Delta \log \frac{\Gamma(\alpha_i)}{\Gamma(\sum_{i=1}^K \alpha_i)} \\ &= \Delta \log \Gamma(\alpha_i) - \Delta \log \Gamma(\sum_{i=1}^K \alpha_i) \\ &= \Psi(\alpha_i) - \Psi(\sum_{j=1}^k \alpha_j) \end{align}
となり、ディガンマ関数が出てくる。指数型分布族を経由しなくても積率母関数とかでどうにかなりそうである。変分ベイズのほうは実装もなかなか大変そうなので、自分で作るかはちょっと不明。

関連



変分ベイズ学習 (機械学習プロフェッショナルシリーズ)

変分ベイズ学習 (機械学習プロフェッショナルシリーズ)

*1:場合によっては十分統計量がデータ全体になっている場合もあるが...順序統計量とか。気になる人は最小十分統計量とか勉強すればいいんじゃないかな