からっぽのしょこ

読んだら書く!書いたら読む!読書読読書読書♪同じ事は二度調べ(たく)ない

4.4:トピックモデルの変分ベイズ推定【『トピックモデル』の勉強ノート】

はじめに

 機械学習プロフェッショナルシリーズの『トピックモデル』の勉強時に自分の理解の助けになったことや勉強会資料のまとめです。トピックモデルの各種アルゴリズムを「数式」と「プログラム」から理解することを目指します。

 この記事は、4.4節「変分ベイズ推定」の内容です。変分ベイズ推定により、トピックモデルにおけるパラメータを推定します。

 この記事で用いる記号類や混合ユニグラムモデルの定義については「4.1-2:トピックモデル【『トピックモデル』の勉強ノート】 - からっぽのしょこ」をご確認ください。

【R言語で実装】

www.anarchive-beta.com

【前節の内容】

www.anarchive-beta.com

【他の節一覧】

www.anarchive-beta.com

【この節の内容】


4.4 変分ベイズ推定

4.4.1 周辺尤度の最大化

 最尤推定では、パラメータ$\boldsymbol{\Theta},\ \boldsymbol{\Phi}$(の各要素)を点推定した。変分ベイズ推定では、$\mathbf{Z},\ \boldsymbol{\Theta},\ \boldsymbol{\Phi}$を分布推定する。つまり各パラメータの事後分布を求める。ただし混合ユニグラムモデルのときと同様に、事後分布$p(\mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})$は解析的に求められないため、その近似分布である変分事後分布$q(\mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})$を求める。
 トピックモデルを変分ベイズ推定する手法は、潜在ディリクレ配分モデル(LDA)と呼ばれる。

 まずは、トピックモデルの対数周辺尤度$\log p(\mathbf{W} | \alpha, \beta)$の下限をイェンゼンの不等式を用いて求める。

$$ \begin{aligned} \log p(\mathbf{W} | \alpha, \beta) &= \log \int \int \sum_{\mathbf{Z}} p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} | \alpha, \beta) d\boldsymbol{\Theta} d\boldsymbol{\Phi} \\ &= \log \int \int \sum_{\mathbf{Z}} p(\mathbf{Z} | \boldsymbol{\Theta}) p(\boldsymbol{\Theta} | \alpha) p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) p(\boldsymbol{\Phi} | \beta) d\boldsymbol{\Theta} d\boldsymbol{\Phi} \\ &= \log \int \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}, \boldsymbol{\Phi}) \frac{ p(\mathbf{Z} | \boldsymbol{\Theta}) p(\boldsymbol{\Theta} | \alpha) p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) p(\boldsymbol{\Phi} | \beta) }{ q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) } d\boldsymbol{\Theta} d\boldsymbol{\Phi} \\ &\geq \int \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}, \boldsymbol{\Phi}) \log \frac{ p(\mathbf{Z} | \boldsymbol{\Theta}) p(\boldsymbol{\Theta} | \alpha) p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) p(\boldsymbol{\Phi} | \beta) }{ q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) } d\boldsymbol{\Theta} d\boldsymbol{\Phi} \equiv F \end{aligned} $$

【途中式の途中式】

  1. 周辺尤度$p(\mathbf{W} | \alpha, \beta)$は、尤度(生成モデル)$p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} | \alpha, \beta)$のパラメータ$\mathbf{Z},\ \boldsymbol{\Theta},\ \boldsymbol{\Phi}$を周辺化(積分消去)したものである。周辺化したパラメータを明示する。
  2. トピックモデルの生成過程(4.1節)より項を分解する。
  3. 変分事後分布$q(\mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})$を導入する。
    • 計算を容易にするため変分事後分布に、因子分解仮定$q(\mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi}) = q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi})$を置く。
    • 変分事後分布を$\frac{q(\mathbf{Z}) q(\boldsymbol{\Theta}, \boldsymbol{\Phi})}{q(\mathbf{Z}) q(\boldsymbol{\Theta}, \boldsymbol{\Phi})} = 1$として、分母分子を分割して掛ける。
  4. イェンゼンの不等式(1.1.10項)を用いて、下限を求める。


 対数尤度の下限$F$と置き、変分下限と呼ぶ。更にこの式を整理すると

$$ \begin{align} F &= \int \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}, \boldsymbol{\Phi}) \Bigl( \log p(\mathbf{Z} | \boldsymbol{\Theta}) p(\boldsymbol{\Theta} | \alpha) p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) p(\boldsymbol{\Phi} | \beta) - \log q(\mathbf{Z}) q(\boldsymbol{\Theta} q(\boldsymbol{\Phi}) \Bigr) d\boldsymbol{\Theta} d\boldsymbol{\Phi} \tag{4.4}\\ &= \int \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) \Bigl( \log p(\mathbf{Z} | \boldsymbol{\Theta}) + \log p(\boldsymbol{\Theta} | \alpha) + \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) + \log p(\boldsymbol{\Phi} | \beta) \\ &\qquad - \log q(\mathbf{Z}) - \log q(\boldsymbol{\Theta}) - \log q(\boldsymbol{\Phi}) \Bigr) d\boldsymbol{\Theta} d\boldsymbol{\Phi} \end{align} $$

となる。

 この変分下限$F$を最大化する各パラメータの変分事後分布を求めていく。

4.4.2 変分事後分布の推定

・トピック分布の変分事後分布の導出

 $\int q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} = 1$の制約の下で変分下限$F$が最大となるトピック分布の変分事後分布$q(\boldsymbol{\Theta})$を、ラグランジュの未定乗数法を用いて求める。

$$ \begin{aligned} F(q(\boldsymbol{\Theta})) &= \int \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) \Bigl( \log p(\mathbf{Z} | \boldsymbol{\Theta}) + \log p(\boldsymbol{\Theta} | \alpha) + \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) + \log p(\boldsymbol{\Phi} | \beta) \\ &\qquad - \log q(\mathbf{Z}) - \log q(\boldsymbol{\Theta}) - \log q(\boldsymbol{\Phi}) \Bigr) d\boldsymbol{\Theta} d\boldsymbol{\Phi} + \lambda \left( \int q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} - 1 \right) \end{aligned} $$

 $F(q(\boldsymbol{\Theta}))$を$q(\boldsymbol{\Theta})$に関して変分する。

$$ \begin{aligned} \frac{ \partial F(q(\boldsymbol{\Theta})) }{ \partial q(\boldsymbol{\Theta}) } &= \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Phi}) \Bigl( \log p(\mathbf{Z} | \boldsymbol{\Theta}) + \log p(\boldsymbol{\Theta} | \alpha) + \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) + \log p(\boldsymbol{\Phi} | \beta) \\ &\qquad - \log q(\mathbf{Z}) - \log q(\boldsymbol{\Theta}) - \log q(\boldsymbol{\Phi}) \Bigr) - q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) \frac{1}{q(\boldsymbol{\Theta})} d\boldsymbol{\Phi} + \lambda \\ &= \sum_{\mathbf{Z}} q(\mathbf{Z}) \log p(\mathbf{Z} | \boldsymbol{\Theta}) + \log p(\boldsymbol{\Theta} | \alpha) + \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Phi}) \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) d\boldsymbol{\Phi} + \int q(\boldsymbol{\Phi}) \log p(\boldsymbol{\Phi} | \beta) d\boldsymbol{\Phi} \\ &\qquad - \sum_{\mathbf{Z}} q(\mathbf{Z}) \log q(\mathbf{Z}) - \log q(\boldsymbol{\Theta}) - q(\boldsymbol{\Phi}) \log q(\boldsymbol{\Phi}) - 1 + \lambda \\ &= \mathbb{E}_{q(\mathbf{Z})} [ \log p(\mathbf{Z} | \boldsymbol{\Theta}) ] + \log p(\boldsymbol{\Theta} | \alpha) - \log q(\boldsymbol{\Theta}) + \lambda - C \end{aligned} $$

【途中式の途中式】

  1. 括弧を展開する。ただし$\sum_{\mathbf{Z}} q(\mathbf{Z}) = 1$、$\int q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} = 1$である。
  2. $q(\boldsymbol{\Theta})$に影響しない項を$C$と置く。


 $\frac{\partial F(q(\boldsymbol{\Theta}))}{\partial q(\boldsymbol{\Theta})} = 0$となる$q(\boldsymbol{\Theta})$を求める。$q_{dnk} \equiv q(z_{dn} = k)$を、文書$d$の$n$番目の単語のトピック$z_{dn}$が$k$となる変分事後確率(負担率)とする。

$$ \begin{aligned} \mathbb{E}_{q(\mathbf{Z})} [ \log p(\mathbf{Z} | \boldsymbol{\Theta}) ] + \log p(\boldsymbol{\Theta} | \alpha) &- \log q(\boldsymbol{\Theta}) + \lambda - C = 0 \\ \log q(\boldsymbol{\Theta}) &= \mathbb{E}_{q(\mathbf{Z})} [ \log p(\mathbf{Z} | \boldsymbol{\Theta}) ] + \log p(\boldsymbol{\Theta} | \alpha) + \lambda - C \\ q(\boldsymbol{\Theta}) &= \exp \Bigl( \mathbb{E}_{q(\mathbf{Z})} [ \log p(\mathbf{Z} | \boldsymbol{\Theta}) ] + \log p(\boldsymbol{\Theta} | \alpha) + \lambda - C \Bigr) \\ &= \exp \left\{ \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K q_{dnk} \log \theta_{dk} + \log \frac{\Gamma(\alpha D)^K}{\Gamma(\alpha)^{DK}} \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}^{\alpha - 1} + \lambda - C \right\} \\ &= \exp \left( \sum_{d=1}^D \sum_{k=1}^K \log \theta_{dk}^{\sum_{n=1}^{N_d} q_{dnk}} + \log \frac{\Gamma(\alpha D)^K}{\Gamma(\alpha)^{DK}} + \sum_{d=1}^D \sum_{k=1}^K \log \theta_{dk}^{\alpha-1} + \lambda - C \right) \\ &\propto \exp \left( \sum_{d=1}^D \sum_{k=1}^K \log \theta_{dk}^{ \sum_{n=1}^{N_d} q_{dnk} + \alpha - 1 } \right) \\ &= \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}^{ \alpha + \sum_{n=1}^{N_d} q_{dnk} - 1 } \end{aligned} $$

【途中式の途中式】

  1. $q(\boldsymbol{\Theta})$に関して式を整理する。
  2. $\log$を外す。
  3. それぞれ具体的な式に置き換える。
    • $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$であり、また負担率$q(z_{dn} = k) \equiv q_{dnk}$とする。
    • $p(\mathbf{Z} | \boldsymbol{\Theta}) = \prod_{d=1}^D \prod_{n=1}^{N_d} p(z_{dn} = k | \boldsymbol{\theta}_d) = \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}$である。
    • $p(\boldsymbol{\Theta} | \alpha) = \prod_{d=1}^D \mathrm{Dirichlet}(\boldsymbol{\theta_d} | \alpha)$である。
  4. 対数をとる。
  5. $\theta_{dk}$の項をまとめる。また$q(\boldsymbol{\Theta})$に影響しない項を除く。
  6. $\exp$と$\log$を外す。


 式の形が(正規化項のない)ディリクレ分布の形であることから、変分事後分布$q(\boldsymbol{\theta}_d)$は事前分布と同じディリクレ分布になることが分かった。

 そこでこの式について

$$ \alpha_{dk} = \alpha + \sum_{n=1}^{N_d} q_{dnk} $$

と置き、式全体を正規化する(正規化項を与える)と

$$ \begin{align} q(\boldsymbol{\Theta}) &= \prod_{d=1}^D \frac{\Gamma(\sum_{k=1}^K \alpha_{dk})}{\prod_{k=1}^K \Gamma(\alpha_{dk})} \prod_{k=1}^K \theta_{dk}^{\alpha_{dk}-1} \\ &= \prod_{d=1}^D \mathrm{Dirichlet}(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) \tag{1} \end{align} $$

(ハイパー)パラメータ$(\alpha_{d1}, \alpha_{d2}, \cdots, \alpha_{dK})$を持つディリクレ分布が得られる。
 また、上の式がハイパーパラメータの更新式となる。

・単語分布の変分事後分布の導出

 単語分布についても同様に、$\int q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} = 1$の制約の下で変分下限$F$が最大となる単語分布の変分事後 分布$q(\boldsymbol{\Phi})$を、ラグランジュの未定乗数法を用いて求める。  

$$ \begin{aligned} F(q(\boldsymbol{\Phi})) &= \int \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) \Bigl( \log p(\mathbf{Z} | \boldsymbol{\Theta}) + \log p(\boldsymbol{\Theta} | \alpha) + \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) + \log p(\boldsymbol{\Phi} | \beta) \\ &\qquad - \log q(\mathbf{Z}) - \log q(\boldsymbol{\Theta}) - \log q(\boldsymbol{\Phi}) \Bigr) d\boldsymbol{\Theta} d\boldsymbol{\Phi} + \lambda \left( \int q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} - 1 \right) \end{aligned} $$

 $F(q(\boldsymbol{\Phi}))$を$q(\boldsymbol{\Phi})$に関して変分する。

$$ \begin{aligned} \frac{ \partial F(q(\boldsymbol{\Phi})) }{ \partial q(\boldsymbol{\Phi}) } &= \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}) \Bigl( \log p(\mathbf{Z} | \boldsymbol{\Theta}) + \log p(\boldsymbol{\Theta} | \alpha) + \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) + \log p(\boldsymbol{\Phi} | \beta) \\ &\qquad - \log q(\mathbf{Z}) - \log q(\boldsymbol{\Theta}) - \log q(\boldsymbol{\Phi}) \Bigr) - q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) \frac{1}{q(\boldsymbol{\Phi})} d\boldsymbol{\Theta} + \lambda \\ &= \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}) \log p(\mathbf{Z} | \boldsymbol{\Theta}) d\boldsymbol{\Theta} + \int q(\boldsymbol{\Theta}) \log p(\boldsymbol{\Theta} | \alpha) d\boldsymbol{\Theta} + \sum_{\mathbf{Z}} q(\mathbf{Z}) \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) + \log p(\boldsymbol{\Phi} | \beta) \\ &\qquad - \sum_{\mathbf{Z}} q(\mathbf{Z}) \log q(\mathbf{Z}) - \int q(\boldsymbol{\Theta}) \log q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} - \log q(\boldsymbol{\Phi}) - 1 + \lambda \\ &= \mathbb{E}_{q(\mathbf{Z})} [ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) ] + \log p(\boldsymbol{\Phi} | \beta) - \log q(\boldsymbol{\Phi}) + \lambda - C \end{aligned} $$

【途中式の途中式】

  1. 括弧を展開する。ただし$\sum_{\mathbf{Z}} q(\mathbf{Z}) = 1$、$\int q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} = 1$である。
  2. $q(\boldsymbol{\Phi})$に影響しない項を$C$と置く。


 $\frac{\partial F(q(\boldsymbol{\Phi}))}{\partial q(\boldsymbol{\Phi})} = 0$となる$q(\boldsymbol{\Phi})$を求める。

$$ \begin{aligned} \mathbb{E}_{q(\mathbf{Z})} [ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) ] + \log p(\boldsymbol{\Phi} | \beta) &- \log q(\boldsymbol{\Phi}) + \lambda - C = 0 \\ \log q(\boldsymbol{\Phi}) &= \mathbb{E}_{q(\mathbf{Z})} [ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) ] + \log p(\boldsymbol{\Phi} | \beta) + \lambda - C \\ q(\boldsymbol{\Phi}) &= \exp \Bigl( \mathbb{E}_{q(\mathbf{Z})} [ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) ] + \log p(\boldsymbol{\Phi} | \beta) + \lambda - C \Bigr) \\ &= \exp \left\{ \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K q_{dnk} \log \prod_{v=1}^V \phi_{kv}^{N_{dv}} + \log \frac{\Gamma(\beta V)^K}{\Gamma(\beta)^{KV}} \prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{\beta - 1} + \lambda - C \right\} \\ &= \exp \left( \sum_{k=1}^K \sum_{v=1}^V \log \phi_{kv}^{\sum_{d=1}^D \sum_{n:w_{dn}=v} q_{dnk}} + \log \frac{\Gamma(\beta V)^K}{\Gamma(\beta)^{KV}} + \sum_{k=1}^K \sum_{v=1}^V \log \phi_{kv}^{\beta-1} + \lambda - C \right) \\ &\propto \exp \left( \sum_{k=1}^K \sum_{v=1}^V \log \phi_{kv}^{\sum_{d=1}^D \sum_{n:w_{dn}=v} q_{dnk} + \beta - 1} \right) \\ &= \prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{\beta + \sum_{d=1}^D \sum_{n:w_{dn}=v} q_{dnk} - 1} \end{aligned} $$

【途中式の途中式】

  1. $q(\boldsymbol{\Phi})$に関して式を整理する。
  2. $\log$を外す。
  3. それぞれ具体的な式に置き換える。
    • $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$であり、また負担率$q(z_{dn} = k) \equiv q_{dnk}$とする。
    • $p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(w_{dn} | z_{dn} = k, \boldsymbol{\phi}_k) = \prod_{d=1}^D \prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{N_{dv}}$である。
  4. $p(\boldsymbol{\Phi} | \beta) = \prod_{k=1}^K \mathrm{Dirichlet}(\boldsymbol{\phi}_k | \beta)$である。
  5. 対数をとる。
  6. $\phi_{kv}$の項をまとめる。また$q(\boldsymbol{\Phi})$に影響しない項を省く。
  7. $\exp$と$\log$を外す。


 式の形が(正規化項のない)ディリクレ分布であることから、単語分布の変分事後分布$q(\boldsymbol{\phi}_k)$は事前分布と同じディリクレ分布になることが分かった。ここで$\sum_{n:w_{dn}=v}$は、$w_{dn} = v$である単語に関する和を表す。ちなみに、文書$d$に含まれる同一単語(語彙)$v = w_{dn}$の数は、語彙$v$の出現回数$N_{dv}$と同じである。

 この式について

$$ \beta_{kv} = \beta + \sum_{d=1}^D \sum_{n:w_{dn}=v} q_{dnk} $$

と置き、式全体を正規化する(正規化項を与える)と

$$ \begin{align} q(\boldsymbol{\Phi}) &= \prod_{k=1}^K \frac{\Gamma(\sum_{v=1}^V \beta_{kv})}{\prod_{v=1}^V \Gamma(\beta_{kv})} \prod_{v=1}^V \phi_{kv}^{\beta_{kv}-1} \\ &= \prod_{k=1}^K \mathrm{Dirichlet}(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) \tag{2} \end{align} $$

(ハイパー)パラメータ$(\beta_{k1}, \beta_{k2}, \cdots, \beta_{kV})$を持つディリクレ分布が得られる。
 また、上の式がハイパーパラメータ$\beta_{kv}$の更新式となる。

・トピック集合の変分事後分布の導出

 最後に、トピック集合の変分事後分布$q(\mathbf{Z})$を推定する。これまでと同様に、ラグランジュの未定乗数法を用いて、$\sum_{\mathbf{Z}} q(\mathbf{Z}) = 1$の制約の下で変分下限$F$が最大となる$q(\mathbf{Z})$を求める。

$$ \begin{aligned} F(q(\mathbf{Z})) &= \int \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) \Bigl( \log p(\mathbf{Z} | \boldsymbol{\Theta}) + \log p(\boldsymbol{\Theta} | \alpha) + \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) + \log p(\boldsymbol{\Phi} | \beta) \Bigr.\\ &\qquad \Bigl. - \log q(\mathbf{Z}) - \log q(\boldsymbol{\Theta}) - \log q(\boldsymbol{\Phi}) \Bigr) d\boldsymbol{\Theta} d\boldsymbol{\Phi} + \lambda \left( \sum_{\mathbf{Z}} q(\mathbf{Z}) - 1 \right) \end{aligned} $$

 $F(q(\mathbf{Z}))$を$q(\mathbf{Z})$に関して変分する。

$$ \begin{aligned} \frac{F(q(\mathbf{Z}))}{q(\mathbf{Z})} &= \int \int q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) \Bigl( \log p(\mathbf{Z} | \boldsymbol{\Theta}) + \log p(\boldsymbol{\Theta} | \alpha) + \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) + \log p(\boldsymbol{\Phi} | \beta) \Bigr.\\ &\qquad \Bigl. - \log q(\mathbf{Z}) - \log q(\boldsymbol{\Theta}) - \log q(\boldsymbol{\Phi}) \Bigr) - q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi}) \frac{1}{q(\mathbf{Z})} d\boldsymbol{\Theta} d\boldsymbol{\Phi} + \lambda - 1 + \lambda \\ &= \int q(\boldsymbol{\Theta}) \log p(\mathbf{Z} | \boldsymbol{\Theta}) d\boldsymbol{\Theta} + \int q(\boldsymbol{\Theta}) \log p(\boldsymbol{\Theta} | \alpha) d\boldsymbol{\Theta} + \int q(\boldsymbol{\Phi}) \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) d\boldsymbol{\Phi} + \int q(\boldsymbol{\Phi}) \log p(\boldsymbol{\Phi} | \beta) d\boldsymbol{\Phi} \\ &\qquad - \log q(\mathbf{Z}) - \int q(\boldsymbol{\Theta}) \log q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} - \int q(\boldsymbol{\Phi}) \log q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} - 1 + \lambda \\ &= \mathbb{E}_{q(\boldsymbol{\Theta})} [ \log p(\mathbf{Z} | \boldsymbol{\Theta}) ] + \mathbb{E}_{q(\boldsymbol{\Phi})} [ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) ] - \log q(\mathbf{Z}) + \lambda - C \end{aligned} $$

【途中式の途中式】

  1. 括弧を展開する。ただし$\int q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} = 1$、$\int q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} = 1$である。
  2. $q(\mathbf{Z})$に影響しない項を$C$と置く。


 $\frac{\partial F(q(\mathbf{Z}))}{\partial q(\mathbf{Z})} = 0$となる$q(\mathbf{Z})$を求める。

$$ \begin{align} \mathbb{E}_{q(\boldsymbol{\Theta})} [ \log p(\mathbf{Z} | \boldsymbol{\Theta}) ] &+ \mathbb{E}_{q(\boldsymbol{\Phi})} [ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) ] - \log q(\mathbf{Z}) + \lambda - C = 0 \\ \log q(\mathbf{Z}) &= \mathbb{E}_{q(\boldsymbol{\Theta})} [ \log p(\mathbf{Z} | \boldsymbol{\Theta}) ] + \mathbb{E}_{q(\boldsymbol{\Phi})} [ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) ] + \lambda - C \\ q(\mathbf{Z}) &= \exp \left( \mathbb{E}_{q(\boldsymbol{\Theta})} [ \log p(\mathbf{Z} | \boldsymbol{\Theta}) ] + \mathbb{E}_{q(\boldsymbol{\Phi})} [ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) ] + \lambda - C \right) \\ &= \exp \left( \int \sum_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) \sum_{k=1}^K \log \theta_{dk} d\boldsymbol{\theta}_d \right.\\ &\qquad \qquad \left. + \int \sum_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) \sum_{v=1}^V N_{dv} \log \phi_{kv} d\boldsymbol{\phi}_k + \lambda - C \right) \\ \prod_{d=1}^D \prod_{k=1}^K q_{dnk} &\propto \prod_{d=1}^D \prod_{k=1}^K \exp \left\{ \Psi(\alpha_{dk}) - \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigr) + N_{dv} \left( \Psi(\beta_{kv}) - \Psi \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr) \right) \right\} \\ q_{dnk} &\propto \exp \left\{ \Psi(\alpha_{dk}) - \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigr) + N_{dv} \left( \Psi(\beta_{kv}) - \Psi \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr) \right) \right\} \tag{4.8'} \end{align} $$

【途中式の途中式】

  1. $q(\mathbf{Z})$に関して式を整理する。
  2. $\log$を外す。
  3. それぞれ具体的な式に置き換える。
    • 式(1)より、$q(\boldsymbol{\Theta}) = \prod_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})$である。
    • $p(\mathbf{Z} | \boldsymbol{\Theta}) = \prod_{d=1}^D \prod_{n=1}^{N_d} p(z_{dn} = k | \boldsymbol{\theta}_d) = \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}$である。
    • 式(2)より、$q(\boldsymbol{\Phi}) = \prod_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})$である。
    • $p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(\mathbf{w}_d | z_{dn} = k, \boldsymbol{\phi}_d) = \prod_{d=1}^D \prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{N_{dv}}$より、置き換える。
  4. ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。


 この式を$k = 1, 2, \cdots, K$に関する和が1となるように正規化した式が、トピックの変分事後分布(負担率)$q_{dnk}$の更新式となる。

4.4.3 変分下限

 トピックモデルの変分下限$F$は、生成過程と因子分解仮定より

$$ \begin{aligned} F &= \overbrace{ \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}) \log p(\mathbf{Z} | \boldsymbol{\Theta}) d\boldsymbol{\Theta} }^{\mathrm{1st\ term}} + \overbrace{ \int q(\boldsymbol{\Theta}) \log p(\boldsymbol{\Theta} | \alpha) d\boldsymbol{\Theta} }^{\mathrm{2nd\ term}} + \overbrace{ \int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Phi}) \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) d\boldsymbol{\Phi} }^{\mathrm{3rd\ term}} \\ &\qquad + \overbrace{ \int q(\boldsymbol{\Phi}) \log p(\boldsymbol{\Phi} | \beta) d\boldsymbol{\Phi} }^{\mathrm{4th\ term}} - \overbrace{ \sum_{\mathbf{Z}} q(\mathbf{Z}) \log q(\mathbf{Z}) }^{\mathrm{5th\ term}} - \overbrace{ \int q(\boldsymbol{\Theta}) \log q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} }^{\mathrm{6th\ term}} - \overbrace{ \int q(\boldsymbol{\Phi}) \log q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} }^{\mathrm{7th\ term}} \end{aligned} $$

と分解できる。それぞれの因子は以下のように計算できる。

・第1項
$$ \begin{aligned} &\int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Theta}) \log p(\mathbf{Z} | \boldsymbol{\Theta}) d\boldsymbol{\Theta} \\ &= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K q_{dnk} \int q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) \log \theta_{dk} d\boldsymbol{\theta}_d \\ &= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K q_{dnk} \left( \Psi(\alpha_{dk}) - \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigr) \right) \end{aligned} $$

【途中式の途中式】

  1. それぞれ項を置き換える。
    • $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$であり、また負担率$q(z_{dn} = k) \equiv q_{dnk}$とする。
    • 式(1)より、$q(\boldsymbol{\Theta}) = \prod_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})$である。
    • $p(\mathbf{Z} | \boldsymbol{\Theta}) = \prod_{d=1}^D \prod_{n=1}^{N_d} p(z_{dn} = k | \boldsymbol{\theta}_d) = \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}$である。
  2. ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。


・第2項
$$ \begin{aligned} &\int q(\boldsymbol{\Theta}) \log p(\boldsymbol{\Theta} | \alpha) d\boldsymbol{\Theta} \\ &= \int \sum_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) \log \frac{\Gamma(\alpha K)^D}{\Gamma(\alpha)^{DK}} \prod_{k=1}^K \theta_{dk}^{\alpha-1} d\boldsymbol{\theta}_d \\ &= \int \sum_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) \left\{ D \log \Gamma(\alpha K) - D K \log \Gamma(\alpha) + (\alpha - 1) \sum_{k=1}^K \log \theta_{dk} \right\} d\boldsymbol{\theta}_d \\ &= \int \sum_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) D \log \Gamma(\alpha K) d\boldsymbol{\theta}_d - \int \sum_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) D K \log \Gamma(\alpha) d\boldsymbol{\theta}_d \\ &\qquad + (\alpha - 1) \sum_{d=1}^D \sum_{k=1}^K \int q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) \log \theta_{dk} d\boldsymbol{\theta}_d \\ &= D \log \Gamma(\alpha K) - D K \log \Gamma(\alpha) + (\alpha - 1) \sum_{d=1}^D \sum_{k=1}^K \left( \Psi(\alpha_{dk}) - \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigr) \right) \end{aligned} $$

【途中式の途中式】

  1. それぞれ項を置き換える。
    • 式(1)より、$q(\boldsymbol{\Theta}) = \prod_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})$である。
    • $p(\boldsymbol{\Theta} | \alpha) = \prod_{d=1}^D \mathrm{Dirichlet}(\boldsymbol{\theta}_d | \alpha)$である。
  2. 対数をとる。
  3. 括弧を展開して、また$\theta_{dk}$と関係のない項を$\int$の外に出す。
  4. ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。


・第3項
$$ \begin{aligned} &\int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Phi}) \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) d\boldsymbol{\Phi} \\ &= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K q_{dnk} \int q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kw_{dn}}) \log \phi_{kw_{dn}} d\boldsymbol{\phi}_k \\ &= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K q_{dnk} \left( \Psi(\beta_{kw_{dn}}) - \Psi \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr) \right) \end{aligned} $$

【途中式の途中式】

  1. それぞれ項を具体的な式に置き換える。
    • $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$、また$q(z_{dn} = k) \equiv q_{dnk}$である。
    • 式(2)より、$q(\boldsymbol{\Phi}) = q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kw_{dn}})$である。
    • $p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(w_{dn} | z_{dn} = k, \boldsymbol{\phi}_d) = \prod_{d=1}^D \prod_{n=1}^{N_d} \prod_{k=1}^K \phi_{kw_{dn}}$である。
  2. ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。


 ただし、語彙レベルで考えると

$$ \begin{aligned} &\int \sum_{\mathbf{Z}} q(\mathbf{Z}) q(\boldsymbol{\Phi}) \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) d\boldsymbol{\Phi} \\ &= \sum_{d=1}^D \sum_{v=1}^V \sum_{k=1}^K q_{dvk} \int q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) \log \phi_{kv}^{N_{dv}} d\boldsymbol{\phi}_k \\ &= \sum_{d=1}^D \sum_{v=1}^V \sum_{k=1}^K q_{dvk} \int N_{dv} q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) \log \phi_{kv} d\boldsymbol{\phi}_k \\ &= \sum_{d=1}^D \sum_{v=1}^V \sum_{k=1}^K q_{dvk} N_{dv} \left( \Psi(\beta_{kv}) - \Psi \Bigl(\sum_{v'=1}^V \beta_{kv'} \Bigr) \right) \end{aligned} $$

となる。

・第4項
$$ \begin{aligned} &\int q(\boldsymbol{\Phi}) \log p(\boldsymbol{\Phi} | \beta) d\boldsymbol{\Phi} \\ &= \int \sum_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) \log \frac{ \Gamma (\beta V)^K }{ \Gamma(\beta)^{KV} } \prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{\beta-1} d\boldsymbol{\phi}_k \\ &= \int \sum_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) \left\{ V \log \Gamma (\beta V) - K V \log \Gamma(\beta) + (\beta - 1) \sum_{k=1}^K \sum_{v=1}^V \log \phi_{kv} \right\} d\boldsymbol{\phi}_k \\ &= \int \sum_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) K \log \Gamma(\beta V) - \int \sum_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) K V \log \Gamma(\beta) \\ &\qquad + (\beta - 1) \sum_{k=1}^K \sum_{v=1}^V \int q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) \log \phi_{kv} d\boldsymbol{\phi}_k \\ &= K \log \Gamma(\beta V) - K V \log \Gamma(\beta) + (\beta - 1) \sum_{k=1}^K \sum_{v=1}^V \left( \Psi(\beta_{kv}) - \Psi \Bigl(\sum_{v'=1}^V \beta_{kv'} \Bigr) \right) \end{aligned} $$

【途中式の途中式】

  1. それぞれ項を置き換える。
    • 式(2)より、$q(\boldsymbol{\Phi}) = \prod_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})$である。
    • $p(\boldsymbol{\Phi} | \beta) = \prod_{k=1}^K \mathrm{Dirichlet}(\boldsymbol{\phi}_k | \beta)$である。
  2. $\phi_{kv}$と関係のない項を$\int$の外に出して、式を整理する。
  3. ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。


・第5項
$$ \begin{aligned} &\sum_{\mathbf{Z}} q(\mathbf{Z}) \log q(\mathbf{Z}) \\ &= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K q_{dnk} \log q_{dnk} \end{aligned} $$

【途中式の途中式】

  1. $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$、また$q(z_{dn} = k) \equiv q_{dnk}$より、置き換える。


・第6項
$$ \begin{aligned} &\int q(\boldsymbol{\Theta}) \log q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} \\ &= \sum_{d=1}^D \left( \int q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) \log \frac{ \Gamma(\sum_{k=1}^K \alpha_{dk}) }{ \prod_{k=1}^K \Gamma(\alpha_{dk}) } \prod_{k=1}^K \theta_{dk}^{\alpha_{dk}-1} d\boldsymbol{\theta}_d \right) \\ &= \sum_{d=1}^D \left( \log \Gamma \Bigl(\sum_{k=1}^K \alpha_{dk} \Bigr) - \sum_{k=1}^K \log \Gamma(\alpha_{dk}) + \sum_{k=1}^K (\alpha_{dk} - 1) \int q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) \log \theta_{dk} d\boldsymbol{\theta}_d \right) \\ &= \sum_{d=1}^D \left\{ \log \Gamma \Bigl(\sum_{k=1}^K \alpha_{dk} \Bigr) - \sum_{k=1}^K \log \Gamma(\alpha_{dk}) + \sum_{k=1}^K (\alpha_{dk} - 1) \left( \Psi(\alpha_{dk}) - \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigl) \right) \right\} \end{aligned} $$

【途中式の途中式】

  1. 式(1)より、$q(\boldsymbol{\Theta}) = \prod_{d=1}^D \mathrm{Dirichlet}(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})$で置き換える。
  2. 対数をとり、また$\theta_{dk}$と関係のない項を$\int$の外に出す。
  3. ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。


・第7項
$$ \begin{aligned} &\int q(\boldsymbol{\Phi}) \log q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} \\ &= \sum_{k=1}^K \left\{ \int q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) \log \frac{ \Gamma (\sum_{v=1}^V \beta_{kv}) }{ \prod_{v=1}^V \log \Gamma(\beta_{kv}) } \prod_{v=1}^V \phi_{kv}^{\beta_{kv}-1} d\boldsymbol{\phi}_k \right\} \\ &= \sum_{k=1}^K \left( \log \Gamma \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr) - \sum_{v=1}^V \log \Gamma(\beta_{kv}) + \sum_{v=1}^V (\beta_{kv} - 1) \int q(\boldsymbol{\phi}_k) \log \phi_{kv} d\boldsymbol{\phi}_k \right) \\ &= \sum_{k=1}^K \left\{ \log \Gamma \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr) - \sum_{v=1}^V \log \Gamma(\beta_{kv}) + \sum_{v=1}^V (\beta_{kv} - 1) \left( \Psi(\beta_{kv}) - \Psi \Bigl(\sum_{v'=1}^V \beta_{kv'} \Bigr) \right) \right\} \end{aligned} $$

【途中式の途中式】

  1. 式(2)より、$q(\boldsymbol{\Phi}) = \prod_{k=1}^K \mathrm{Dirichlet}(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})$で置き換える。
  2. 対数をとり、また$\phi_{kv}$と関係のない項を$\int$の外に出す。
  3. ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。


参考書籍

  • 岩田具治(2015)『トピックモデル』(機械学習プロフェッショナルシリーズ)講談社

おわりに

 LDAまで来た!そしてできた(大体)!!まじですかスカ!?自分でも信じられません。
 あとはギブズサンプリングを残すのみ。

2019/07/29:加筆修正しました。

2020/08/24:加筆修正しました。

【次節の内容】

www.anarchive-beta.com