からっぽのしょこ

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

4.5:トピックモデルのギブスサンプリング【『トピックモデル』の勉強ノート】

はじめに

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

 この記事は、4.5節「ギブスサンプリング」の内容です。周辺化ギブスサンプリングにより、トピックモデルにおけるパラメータを推定します。

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

【R言語で実装】

www.anarchive-beta.com

【前節の内容】

www.anarchive-beta.com

【他の節一覧】

www.anarchive-beta.com

【この節の内容】


4.5 ギブスサンプリング

4.5.1 パラメータの周辺化

 トピックモデルを崩壊型ギブスサンプリングを用いて推定する。混合ユニグラムモデルと同様に、パラメータ$\boldsymbol{\Theta},\ \boldsymbol{\Phi}$を積分消去し、トピック集合$\mathbf{Z}$の事後分布$p(\mathbf{Z} | \mathbf{W}, \alpha, \beta)$を推定する。
 トピックモデルをギブスサンプリングする手法は、潜在ディリクレ配分モデル(LDA)と呼ばれる。

 パラメータ$\boldsymbol{\Theta},\ \boldsymbol{\Phi}$を周辺化(積分消去)した文書集合$\mathbf{W}$とトピック集合$\mathbf{Z}$の同時分布$p(\mathbf{W}, \mathbf{Z} | \alpha, \beta)$は、周辺化したパラメータを明示して計算を進めると、生成過程(4.1節)より

$$ \begin{align} p(\mathbf{W}, \mathbf{Z} | \alpha, \beta) &= \int \int p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} | \alpha, \beta) d\boldsymbol{\Theta} d\boldsymbol{\Phi} \\ &= \int p(\mathbf{Z} | \boldsymbol{\Theta}) p(\boldsymbol{\Theta} | \alpha) d\boldsymbol{\Theta} \int p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) p(\boldsymbol{\Phi} | \beta) d\boldsymbol{\Phi} \\ &= p(\mathbf{Z} | \alpha) p(\mathbf{W} | \mathbf{Z}, \beta) \tag{4.9} \end{align} $$

と分解できる。

 この式の1つ目の項は

$$ \begin{align} p(\mathbf{Z} | \alpha) &= \int p(\mathbf{Z} | \boldsymbol{\Theta}) p(\boldsymbol{\Theta} | \alpha) d\boldsymbol{\Theta} \\ &= \int \prod_{d=1}^D \prod_{n=1}^{N_d} p(z_{dn} = k | \boldsymbol{\theta}_d) \prod_{d=1}^D p(\boldsymbol{\theta}_d | \alpha) d\boldsymbol{\theta}_d \\ &= \int \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}^{N_{dk}} \prod_{d=1}^D \frac{\Gamma(\alpha K)}{\Gamma(\alpha)^K} \prod_{k=1}^K \theta_{dk}^{\alpha-1} d\boldsymbol{\theta}_d \\ &= \frac{\Gamma(\alpha K)^D}{\Gamma(\alpha)^{KD}} \prod_{d=1}^D \int \prod_{k=1}^K \theta_{dk}^{N_{dk}+\alpha-1} d\boldsymbol{\theta}_d \\ &= \frac{\Gamma(\alpha K)^D}{\Gamma(\alpha)^{KD}} \prod_{d=1}^D \frac{ \prod_{k=1}^K \Gamma(N_{dk} + \alpha) }{ \Gamma(N_d + \alpha K) } \tag{4.10}\\ &= \prod_{d=1}^D \frac{ \Gamma(\alpha K) }{ \Gamma(N_d + \alpha K) } \prod_{d=1}^D \prod_{k=1}^K \frac{ \Gamma(N_{dk} + \alpha) }{ \Gamma(\alpha) } \tag{4.10'} \end{align} $$

【途中式の途中式】

  1. 積分消去した$\boldsymbol{\Theta}$を明示する。
  2. 項を分解する。
  3. トピックモデル(生成モデル)の定義(4.1節)より、具体的な式に置き換える。
    • $p(z_{dn} = k | \boldsymbol{\theta}_d) = \mathrm{Categorical}(z_{dn} = k | \boldsymbol{\theta}_d) = \theta_{dk}$である。ただし$\theta_{dk}$は、文書$d$においてトピックが$k$の単語数$N_{dk}$分重複する。
    • $p(\boldsymbol{\theta}_d | \alpha) = \mathrm{Dicichlet}(\boldsymbol{\theta}_d | \alpha)$である。
  4. $\boldsymbol{\theta}_d$と関係のない項を$\int$の外に出し、$\theta_{dk}$の項を1つにまとめる。
  5. ディリクレ分布の正規化項(1.13)より、置き換える。ただし$\sum_{k=1}^K N_{dk} + \alpha = N_d + \alpha K$である。
  6. 分母分子で$\alpha K$と$\alpha$を揃えるために、分母を入れ替える。


となる。

 2つ目の因子も同様に

$$ \begin{align} p(\mathbf{W} | \mathbf{Z}, \beta) &= \int p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) p(\boldsymbol{\Phi} | \beta) d\boldsymbol{\Phi} \\ &= \int \prod_{d=1}^D \prod_{n=1}^{N_d} p(w_{dn} = v | z_{dn} = k, \boldsymbol{\phi}_k) \prod_{k=1}^K p(\boldsymbol{\phi}_k | \beta) d\boldsymbol{\phi}_k \\ &= \int \prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{N_{kv}} \prod_{k=1}^K \frac{\Gamma(\beta V)}{\Gamma(\beta)^V} \prod_{v=1}^V \phi_{kv}^{\beta-1} d\boldsymbol{\phi}_K \\ &= \frac{\Gamma(\beta V)^K}{\Gamma(\beta)^{VK}} \prod_{k=1}^K \int \prod_{v=1}^V \phi_{kv}^{N_{kv}+\beta-1} d\boldsymbol{\phi}_K \\ &= \frac{\Gamma(\beta V)^K}{\Gamma(\beta)^{VK}} \prod_{k=1}^K \frac{ \prod_{v=1}^V \Gamma(N_{kv} + \beta) }{ \Gamma(N_k + \beta V) } \tag{4.11}\\ &= \prod_{k=1}^K \frac{ \Gamma(\beta V) }{ \Gamma(N_k + \beta V) } \prod_{k=1}^K \prod_{v=1}^V \frac{ \Gamma(N_{kv} + \beta) }{ \Gamma(\beta) } \tag{4.11'} \end{align} $$

【途中式の途中式】

  1. 積分消去した$\boldsymbol{\Phi}$を明示する。
  2. 項を分解する。
  3. トピックモデル(生成モデル)の定義(4.1節)より、具体的な式に置き換える。
    • $p(w_{dn} = v | z_{dn} = k, \boldsymbol{\phi}_k) = \mathrm{Categorical}(w_{dn} | \boldsymbol{\phi}_k) = \phi_{kv}$である。ただし$\phi_{kv}$は、文書全体においてトピックが$k$の単語数$N_{kv}$分重複する。
    • $p(\boldsymbol{\Phi} | \beta) = \prod_{k=1}^K \mathrm{Dirichlet}(\boldsymbol{\phi}_k | \beta)$である。
  4. $\boldsymbol{\phi}_K$と関係のない項を$\int$の外に出し、$\phi_{kv}$の項を1つにまとめる。
  5. ディリクレ分布の正規化項(1.13)より、置き換える。ただし$\sum_{v=1}^V N_{kv} + \beta = N_k + \beta V$である。
  6. 分母分子で$\beta V$と$\beta$を揃えるために、分母を入れ替える。


となる。

 周辺尤度(4.9)は、式(4.10)と式(4.11)の積で計算できることが分かった。次はこの周辺尤度を用いて、各単語のトピックのサンプリング確率を求める。

4.5.2 サンプリング式

・サンプリング式の導出

 ギブスサンプリングでは、単語ごとにトピックをサンプリングしていく。
 文書$d$の$n$番目の単語のトピック$z_{dn}$のサンプリング確率は、その単語のトピックを除いたトピック集合$\mathbf{Z}_{\backslash dn} = (z_{11}, \cdots, z_{d, n-1}, z_{d, n+1}, \cdots, z_{DN_d})$と文書集合$\mathbf{W}$が与えられたときの、トピック$z_{dn}$の条件付き確率$p(z_{dn} = k | \mathbf{W}, \mathbf{Z}_{\backslash dn}, \alpha, \beta)$で与えられる。

 $p(z_{dn} = k | \mathbf{W}, \mathbf{Z}_{\backslash dn}, \alpha, \beta)$は、周辺尤度$p(\mathbf{W}, \mathbf{Z} | \alpha, \beta)$に対してベイズの定理(1.4)を用いて

$$ \begin{align} p(z_{dn} = k | \mathbf{W}, \mathbf{Z}_{\backslash dn}, \alpha, \beta) &= \frac{ p(\mathbf{W}, z_{dn} = k, \mathbf{Z}_{\backslash dn} | \alpha, \beta) }{ p(\mathbf{W}, \mathbf{Z}_{\backslash dn} | \alpha, \beta) } \\ &= \frac{ p(w_{dn} | \mathbf{W}_{\backslash dn}, z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta) p(\mathbf{W}_{\backslash dn} | \mathbf{Z}_{\backslash dn}, \beta) p(z_{dn} = k | \mathbf{Z}_{\backslash dn}, \alpha) p(\mathbf{Z}_{\backslash dn} | \alpha) }{ p(\mathbf{W} | \beta) p(\mathbf{Z}_{\backslash dn} | \alpha) } \\ &\propto p(z_{dn} = k | \mathbf{Z}_{\backslash dn}, \alpha) p(w_{dn} | \mathbf{W}_{\backslash dn}, z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta) \tag{4.12} \end{align} $$

で求められる。周辺尤度(文書集合とトピック集合の同時分布)を生成仮定に従って分解している。

 この式の1つ目の項は、式(4.10)を用いて

$$ \begin{align} p(z_{dn} = k | \mathbf{Z}_{\backslash dn}, \alpha) &= \frac{ p(z_{dn} = k , \mathbf{Z}_{\backslash dn} | \alpha) }{ p(\mathbf{Z}_{\backslash dn} | \alpha) } \\ &= \frac{\Gamma(\alpha K)}{\Gamma(\alpha)^{K}} \frac{ \Gamma(N_{dk\backslash dn} + 1 + \alpha) \prod_{k' \neq k} \Gamma(N_{dk' \backslash dn} + \alpha) }{ \Gamma(N_d + \alpha K) } \frac{\Gamma(\alpha)^{K}}{\Gamma(\alpha K)} \frac{ \Gamma(N_d - 1 + \alpha K) }{ \prod_{k'=1}^K \Gamma(N_{dk'\backslash dn} + \alpha) } \\ &= \frac{ (N_{dk\backslash dn} + \alpha) \Gamma(N_{dk\backslash dn} + \alpha) \prod_{k' \neq k} \Gamma(N_{dk' \backslash dn} + \alpha) }{ (N_d - 1 + \alpha K) \Gamma(N_d - 1 + \alpha K) } \frac{ \Gamma(N_d - 1 + \alpha K) }{ \prod_{k'=1}^K \Gamma(N_{dk'\backslash dn} + \alpha) } \\ &= \frac{ N_{dk\backslash dn} + \alpha }{ N_d - 1 + \alpha K } \tag{4.13} \end{align} $$

【途中式の途中式】

  1. 式(4.10)を用いて、分母分子の項をそれぞれ次の具体的な式に置き換える。
$$ \begin{aligned} p(z_{dn} = k, \mathbf{Z}_{\backslash dn} | \alpha) &= \frac{\Gamma(\alpha K)}{\Gamma(\alpha)^K} \frac{ \Gamma(N_{dk} + \alpha) \prod_{k' \neq k} \Gamma(N_{dk'} + \alpha) }{ \Gamma(N_d + \alpha K) } \prod_{d'\neq d} \frac{\Gamma(\alpha K)}{\Gamma(\alpha)^K} \frac{ \prod_{k=1}^K \Gamma(N_{d'k} + \alpha) }{ \Gamma(N_{d'} + \alpha K) } \\ p(\mathbf{Z}_{\backslash dn} | \alpha) &= \frac{\Gamma(\alpha K)}{\Gamma(\alpha)^K} \frac{ \prod_{k=1}^K \Gamma(N_{dk} + \alpha) }{ \Gamma(N_d - 1 + \alpha K) } \prod_{d' \neq d} \frac{\Gamma(\alpha K)}{\Gamma(\alpha)^K} \frac{ \prod_{k=1}^K \Gamma(N_{d'k} + \alpha) }{ \Gamma(N_{d'} + \alpha K) } \end{aligned} $$

 $d$以外の文書($d'$)についてはそのまま計算できる。
 $p(\mathbf{Z}_{\backslash dn} | \alpha)$は文書$d$の$n$番目の単語$w_{dn}$に関する項を含まないため、分母の文書$d$の単語数に関する項が$N_d - 1$になる。これは計算過程$\sum_{k=1}^K N_{dk \backslash dn} = N_{d \backslash dn} = N_d - 1$からも分かる。
 また以下の理由から、$p(z_{dn} = k, \mathbf{Z}_{\backslash dn} | \alpha)$の$\prod_{k=1}^K$からトピック$k$に関する項のみ取り出しておく。
 $N_{dk}$は、文書$d$においてトピックが$k$の単語数である。$w_{dn}$のトピック$z_{dn}$が$k$のとき、$w_{dn}$を除いた単語数$N_{dk \backslash dn}$は$N_{dk} - 1$である。しかし$z_{dn}$が$k$以外のトピックであれば、$N_{dk}$にはそもそも$w_{dn}$が含まれていないため、$N_{dk \backslash dn} = N_{dk}$である。これをまとめると

$$ \begin{aligned} N_{dk \backslash dn} = \left\{ \begin{array}{ll} N_{dk} - 1 &\quad \text{if} \quad z_{dn} = k \\ N_{dk} &\quad \text{if} \quad z_{dn} \neq k \end{array} \right. \end{aligned} $$

という関係である。これを$N_{dk}$について解くと

$$ \begin{aligned} N_{dk} = \left\{ \begin{array}{ll} N_{dk \backslash dn} + 1 &\quad \text{if} \quad z_{dn} = k \\ N_{dk \backslash dn} &\quad \text{if} \quad z_{dn} \neq k \end{array} \right. \end{aligned} $$

となる。(つまり$z_{dn} = k$のとき$k'$の項は下にあたる。)
 これを上の式に代入して、元の式の分母分子の計算を行う。ただし文書$d$以外については、そのまま約分できる。

  1. ガンマ関数の性質$\Gamma(x + 1) = (x) \Gamma(x)$を用いて変形する。
  2. 約分して式を整理する。ただし$\Gamma(N_{dk\backslash dn} + \alpha) \prod_{k' \neq k} \Gamma(N_{dk' \backslash dn} + \alpha) = \prod_{k'=1}^K \Gamma(N_{dk'\backslash dn} + \alpha)$である。


となる。

 同様に2つ目の項は、式(4.11)を用いて

$$ \begin{align} p(w_{dn} | \mathbf{W}_{\backslash dn}, z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta) &= \frac{ p(w_{dn}, \mathbf{W}_{\backslash dn} | z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta) }{ p(\mathbf{W}_{\backslash dn} | z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta) } \\ &= \frac{\Gamma(\beta V)}{\Gamma(\beta)^{V}} \frac{ \Gamma(N_{kw_{dn} \backslash dn} + 1 + \beta) \prod_{v' \neq w_{dn}} \Gamma(N_{kv' \backslash dn} + \beta) }{ \Gamma(N_{k \backslash dn} + 1 + \beta V) } \frac{\Gamma(\beta)^{V}}{\Gamma(\beta V)} \frac{ \Gamma(N_{k \backslash dn} + \beta V) }{ \prod_{v=1}^V \Gamma(N_{kv \backslash dn} + \beta) } \\ &= \frac{ (N_{kw_{dn} \backslash dn} + \beta) \Gamma(N_{kw_{dn} \backslash dn} + \beta) \prod_{v' \neq w_{dn}} \Gamma(N_{kv' \backslash dn} + \beta) }{ (N_{k \backslash dn} + \beta V) \Gamma(N_{k \backslash dn} + \beta V) } \frac{ \Gamma(N_{k \backslash dn} + \beta V) }{ \prod_{v=1}^V \Gamma(N_{kv \backslash dn} + \beta) } \\ &= \frac{ N_{kw_{dn} \backslash dn} + \beta }{ N_{k \backslash dn} + \beta V } \tag{4.14} \end{align} $$

【途中式の途中式】

  1. 式(4.11)を用いて、分母分子の項をそれぞれ次の具体的な式に置き換える。
$$ \begin{aligned} p(w_{dn}, \mathbf{W}_{\backslash dn} | z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta) &= \frac{\Gamma(\beta V)}{\Gamma(\beta)^V} \frac{ \Gamma(N_{kw_{dn}} + \beta) \prod_{v' \neq w_{dn}} \Gamma(N_{kv'} + \beta) }{ \Gamma(N_k + \beta V) } \prod_{k'\neq k} \frac{\Gamma(\beta V)}{\Gamma(\beta)^V} \frac{ \prod_{v=1}^V \Gamma(N_{k'v} + \beta) }{ \Gamma(N_{k'} + \beta V) } \\ p(\mathbf{W}_{\backslash dn} | z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta) &= \frac{\Gamma(\beta V)}{\Gamma(\beta)V} \frac{ \prod_{v=1}^V \Gamma(N_{kv} + \beta) }{ \Gamma(N_k - 1 + \beta V) } \prod_{k'\neq k} \frac{\Gamma(\beta V)}{\Gamma(\beta)^V} \frac{ \prod_{v=1}^V \Gamma(N_{k'v} + \beta) }{ \Gamma(N_{k'} + \beta V) } \end{aligned} $$

 $k$以外のトピック($k'$)についてはそのまま計算できる。
 $p(\mathbf{W}_{\backslash dn} | z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta)$は文書$d$の$n$番目の単語$w_{dn}$に関する項を含まないため、分母の文書全体においてトピック$k$が割り当てられた単語数に関する項が$N_k - 1$になる。これは計算過程$\sum_{v=1}^V N_{kv\backslash dn} = N_{k\backslash dn} = N_k - 1$からも分かる。
 また以下の理由から、$p(w_{dn}, \mathbf{W}_{\backslash dn} | z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta)$の$\prod_{v=1}^V$から$w_{dn}$に関する項のみ取り出しておく。
 $N_{kw_{dn}}$は、文書全体においてトピック$k$が割り当てられた$w_{dn}$と同じ語彙の数である。つまり$v = w_{dn}$のときの$N_{kv}$のことで、単語の種類が$w_{dn}$であることを明示している。$w_{dn}$のトピック$z_{dn}$が$k$のとき、$w_{dn}$を除いた語彙$v = w_{dn}$の数$N_{kv\backslash dn}$は$N_{kv} - 1$である。しかし$z_{dn}$が$k$以外のトピック($k'$)、または$w_{dn}$以外の語彙($v'$)であれば、$N_{kv}$にはそもそも$w_{dn}$が含まれていないため、$N_{kv \backslash dn} = N_{kv}$である。これをまとめると

$$ \begin{aligned} N_{kv \backslash dn} = \left\{ \begin{array}{ll} N_{kv} - 1 &\quad \text{if} \quad z_{dn} = k\ \text{and}\ v = w_{dn} \\ N_{kv} &\quad \text{if} \quad z_{dn} \neq k\ \text{or}\ v \neq w_{dn} \end{array} \right. \end{aligned} $$

である。これを$N_{kv}$について解くと

$$ \begin{aligned} N_{kv} = \left\{ \begin{array}{ll} N_{kv \backslash dn} + 1 &\quad \text{if} \quad z_{dn} = k\ \text{and}\ v = w_{dn} \\ N_{kv \backslash dn} &\quad \text{if} \quad z_{dn} \neq k\ \text{or}\ v \neq w_{dn} \end{array} \right. \end{aligned} $$

となる。(つまり$v = w_{dn}$のとき$v'$の項は下にあたる。)
 また分母の$N_k$について、$w_{dn}$を除いた文書全体においてトピック$k$が割り当てられた単語数$N_{k\backslash dn}$に$w_{dn}$も含めた値なので、$N_k = N_{k \backslash dn} + 1$である。
 これを上の式に代入して、元の式の分母分子の計算を行う。ただしトピック$k$以外については、そのまま約分できる。

  1. ガンマ関数の性質$\Gamma(x + 1) = (x) \Gamma(x)$を用いて変形する。
  2. $\Gamma(N_{kw_{dn} \backslash dn} + \beta) \prod_{v' \neq w_{dn}} \Gamma(N_{kv' \backslash dn} + \beta) = \prod_{v=1}^V \Gamma(N_{kv \backslash dn} + \beta)$より、約分して式を整理する。


となる。

 式(4.13)と(4.14)を式(4.12)に代入して

$$ p(z_{dn} = k | \mathbf{W}, \mathbf{Z}_{\backslash dn}, \alpha, \beta) \propto (N_{dk \backslash dn} + \alpha) \frac{ N_{kw_{dn} \backslash dn} + \beta }{ N_{k \backslash dn} + \beta V } \tag{4.15} $$

が得られる。式(4.13)の分母は$k$に依存しないため省いて、比例関係に注目する。

 1つ目の因子は、$w_{dn}$を除いた文書$d$においてトピック$k$が割り当てられた単語数を表している。つまり対象の単語のトピックは、その単語が含まれる文書において多く割り当てられているトピックになりやすいことが分かる。
 また2つ目の因子は、$w_{dn}$と同じ語彙$v$においてトピック$k$が割り当てられた単語数に比例している。つまり対象の単語のトピックは、同じ語彙において多く割り当てられているトピックになりやすいことが分かる。

・ハイパーパラメータの更新式

 ハイパーパラメータ$\alpha,\ \beta$は、周辺同時尤度(4.9)に不動点反復法を用いて最大化することで求める。

・Tips

 次の関係性(2.7節)を用いて、不動点反復法が使えるように式を変形する(下限を求める)。

$$ \begin{aligned} \frac{\Gamma(x)}{\Gamma(n + x)} &\geq \frac{ \Gamma(\hat{x}) \exp\{(\hat{x} - x) b \} }{ \Gamma(n + \hat{x}) } ,\quad b = \Psi(n + \hat{x}) - \Psi(\hat{x}) \\ \\ \frac{\Gamma(n + x)}{\Gamma(x)} &\geq c x^a ,\quad a = \Bigl( \Psi(n + \hat{x}) - \Psi(\hat{x}) \Bigr) \hat{x} ,\ c = \frac{\Gamma(n + \hat{x})}{\Gamma(\hat{x})} \hat{x}^{-a} \end{aligned} $$


 式(4.10')の$\alpha K,\ \alpha$を$x$、$N_d,\ N_{dk}$を$n$に対応させて

$$ \begin{align} p(\mathbf{Z} | \alpha) &= \prod_{d=1}^D \frac{ \Gamma(\alpha K) }{ \Gamma(N_d + \alpha K) } \prod_{d=1}^D \prod_{k=1}^K \frac{ \Gamma(N_{dk} + \alpha) }{ \Gamma(\alpha) } \tag{4.10'}\\ &\geq \prod_{d=1}^D \frac{ \Gamma(\hat{\alpha} K) \exp \Bigl\{ (\hat{\alpha} K - \alpha K) b_{\alpha} \Bigr\} }{ \Gamma(N_d + \hat{\alpha} K) } \prod_{d=1}^D \prod_{k=1}^K \frac{ \Gamma(N_{dk} + \hat{\alpha}) }{ \Gamma(\hat{\alpha}) } \hat{\alpha}^{-a_{\alpha}} \alpha^{a_{\alpha}} \end{align} $$

と変形できる。同様に、式(4.11')の$\beta V,\ \beta$を$x$、$N_k,\ N_{kv}$を$n$に対応させて

$$ \begin{align} p(\mathbf{W} | \beta) &= \prod_{k=1}^K \frac{ \Gamma(\beta V) }{ \Gamma(N_k + \beta V) } \prod_{k=1}^K \prod_{v=1}^V \frac{ \Gamma(N_{kv} + \beta) }{ \Gamma(\beta) } \tag{4.11'}\\ &\geq \prod_{k=1}^K \frac{ \Gamma(\hat{\beta} V) \exp \Bigl\{ (\hat{\beta} V - \beta V) b_{\beta} \Bigr\} }{ \Gamma(N_k + \hat{\beta} V) } \prod_{k=1}^K \prod_{v=1}^V \frac{ \Gamma(N_{kv} + \hat{\beta}) }{ \Gamma(\hat{\beta}) } \hat{\beta}^{-a_{\beta}} \beta^{a_{\beta}} \end{align} $$

と変形する。この2つの式を式(4.9)に代入して、$F$と置く。

$$ \begin{align} p(\mathbf{Z}, \mathbf{W} | \alpha, \beta) &= \prod_{d=1}^D \frac{ \Gamma(\alpha K) }{ \Gamma(N_d + \alpha K) } \prod_{d=1}^D \prod_{k=1}^K \frac{ \Gamma(N_{dk} + \alpha) }{ \Gamma(\alpha) } \prod_{k=1}^K \frac{ \Gamma(\beta V) }{ \Gamma(N_k + \beta V) } \prod_{k=1}^K \prod_{v=1}^V \frac{ \Gamma(N_{kv} + \beta) }{ \Gamma(\beta) } \tag{4.9}\\ &\geq \prod_{d=1}^D \frac{ \Gamma(\hat{\alpha} K) \exp \Bigl\{ (\hat{\alpha} K - \alpha K) b_{\alpha} \Bigr\} }{ \Gamma(N_d + \hat{\alpha} K) } \prod_{d=1}^D \prod_{k=1}^K \frac{ \Gamma(N_{dk} + \hat{\alpha}) }{ \Gamma(\hat{\alpha}) } \hat{\alpha}^{-a_{\alpha}} \alpha^{a_{\alpha}} \\ &\qquad * \prod_{k=1}^K \frac{ \Gamma(\hat{\beta} V) \exp \Bigl\{ (\hat{\beta} V - \beta V) b_{\beta} \Bigr\} }{ \Gamma(N_k + \hat{\beta} V) } \prod_{k=1}^K \prod_{v=1}^V \frac{ \Gamma(N_{kv} + \hat{\beta}) }{ \Gamma(\hat{\beta}) } \hat{\beta}^{-a_{\beta}} \beta^{a_{\beta}} = F \end{align} $$

 ここで

$$ \begin{aligned} a_{\alpha} &= \Bigl( \Psi(N_{dk} + \hat{\alpha}) - \Psi(\hat{\alpha}) \Bigr) \hat{\alpha} \\ b_{\alpha} &= \Psi(N_d + \hat{\alpha} K) - \Psi(\hat{\alpha} K) \\ a_{\beta} &= \Bigl( \Psi(N_{kv} + \hat{\beta}) - \Psi(\hat{\beta}) \Bigr) \hat{\beta} \\ b_{\beta} &= \Psi(N_k + \hat{\beta} V) - \Psi(\hat{\beta} V) \end{aligned} $$

である。

・トピック分布のパラメータの更新式の導出

 $F$から$\alpha$に関する項を取り出して、対数をとった式を$F(\alpha)$と置く(取り出さなくても次の微分時に消える)。

$$ \begin{aligned} F(\alpha) &= \sum_{d=1}^D \left\{ \log \Gamma(\hat{\alpha} K) + (\hat{\alpha} K - \alpha K) \Bigl( \Psi(N_d + \hat{\alpha} K) - \Psi(\hat{\alpha} K) \Bigr) - \log \Gamma(N_d + \hat{\alpha} K) \right\} \\ &\qquad + \sum_{d=1}^D \sum_{k=1}^K \left\{ \log \Gamma(N_{dk} + \hat{\alpha}) - \log \Gamma(\hat{\alpha}) - \Bigl( \Psi(N_{dk} + \hat{\alpha}) - \Psi(\hat{\alpha}) \Bigr) \hat{\alpha} \log \hat{\alpha} + \Bigl( \Psi(N_{dk} + \hat{\alpha}) - \Psi(\hat{\alpha}) \Bigr) \hat{\alpha} \log \alpha \right\} \end{aligned} $$

 この式を$\alpha$に関して微分して

$$ \frac{\partial F(\alpha)}{\partial \alpha} = - \sum_{d=1}^D K \Bigl( \Psi(N_d + \hat{\alpha}) - \Psi(\hat{\alpha}) \Bigr) + \sum_{d=1}^D \sum_{k=1}^K \Bigl( \Psi(N_{dk} + \hat{\alpha}) - \Psi(\hat{\alpha}) \Bigr) \hat{\alpha} \frac{1}{\alpha} $$

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

$$ \begin{aligned} - \sum_{d=1}^D K \Bigl( \Psi(N_d + \hat{\alpha}) - \Psi(\hat{\alpha}) \Bigr) &+ \sum_{d=1}^D \sum_{k=1}^K \frac{1}{\alpha} \Bigl( \Psi(N_{dk} + \hat{\alpha}) - \Psi(\hat{\alpha}) \Bigr) \hat{\alpha} = 0 \\ \alpha &= \hat{\alpha} \frac{ \sum_{d=1}^D \sum_{k=1}^K \Psi(N_{dk} + \hat{\alpha}) - D K \Psi(\hat{\alpha}) }{ K \sum_{d=1}^D \Psi(N_d + \hat{\alpha} K) - D K \Psi(\hat{\alpha} K) } \end{aligned} $$

 この式の$\hat{\alpha}$を現ステップの$\alpha$、左辺の$\alpha$を更新後(次ステップ)のパラメータ$\alpha^{\mathrm{new}}$とした次の式が更新式となる。

$$ \alpha^{\mathrm{new}} = \alpha \frac{ \sum_{d=1}^D \sum_{k=1}^K \Psi(N_{dk} + \alpha) - D K \Psi(\alpha) }{ K \sum_{d=1}^D \Psi(N_d + \alpha K) - D K \Psi(\alpha K) } \tag{4.16} $$


・単語分布のパラメータの更新式の導出

 $\beta$の更新についても同様に、$F$から$\beta$に関する項を取り出して対数をとる。

$$ \begin{aligned} F(\beta) &= \sum_{k=1}^K \left\{ \log \Gamma(\hat{\beta} V) + (\hat{\beta} V - \beta V) \Bigl( \Psi(N_k + \hat{\beta} V) - \Psi(\hat{\beta} V) \Bigr) - \log \Gamma(N_k + \hat{\beta} V) \right\} \\ &\qquad + \sum_{k=1}^K \sum_{v=1}^V \left\{ \log \Gamma(N_{kv} + \hat{\beta}) - \log \Gamma(\hat{\beta}) - \Bigl( \Psi(N_{kv} + \hat{\beta}) - \Psi(\hat{\beta}) \Bigr) \hat{\beta} \log \hat{\beta} + \Bigl( \Psi(N_{kv} + \hat{\beta}) - \Psi(\hat{\beta}) \Bigr) \hat{\beta} \log \beta \right\} \end{aligned} $$

 この式を$\beta$に関して微分して

$$ \frac{\partial F(\beta)}{\partial \beta} = - \sum_{k=1}^K V \Bigl( \Psi(N_k + \hat{\beta} V) - \Psi(\hat{\beta} V) \Bigr) + \sum_{k=1}^K \sum_{v=1}^V \Bigl( \Psi(N_{kv} + \hat{\beta}) - \Psi(\hat{\beta}) \Bigr) \hat{\beta} \frac{1}{\beta} $$

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

$$ \begin{aligned} - \sum_{k=1}^K V \Bigl( \Psi(N_k + \hat{\beta} V) - \Psi(\hat{\beta} V) \Bigr) &+ \sum_{k=1}^K \sum_{v=1}^V \frac{1}{\beta} \Bigl( \Psi(N_{kv} + \hat{\beta}) - \Psi(\hat{\beta}) \Bigr) \hat{\beta} = 0 \\ \beta &= \hat{\beta} \frac{ \sum_{k=1}^K \sum_{v=1}^V \Psi(N_{kv} + \hat{\beta}) - K V \Psi(\hat{\beta}) }{ V \sum_{k=1}^K \Psi(N_k + \hat{\beta} V) - K V \Psi(\hat{\beta} V) } \end{aligned} $$

 この式の$\hat{\beta}$を現ステップの$\beta$、左辺の$\beta$を更新後(次ステップ)のパラメータ$\beta^{\mathrm{new}}$とした次の式が更新式となる。  

$$ \beta^{\mathrm{new}} = \beta \frac{ \sum_{k=1}^K \sum_{v=1}^V \Psi(N_{kv} + \beta) - K V \Psi(\beta) }{ V \sum_{k=1}^K \Psi(N_k + \beta V) - K V \Psi(\beta V) } \tag{4.17} $$


 ここまでは、ディリクレ事前分布のパラメータが全て同じ値の場合を考えてきた。次は一様でない場合の更新式を考える。

・ハイパーパラメータが多様な場合

 トピック分布のディリクレ事前分布について、トピックごとに違う値のパラメータ$\boldsymbol{\alpha} = (\alpha_1, \cdots, \alpha_{k}, \cdots, \alpha_{K})$を持つとする。単語分布のディリクレ事前分布についても、語彙ごとに違う値のパラメータ$\boldsymbol{\beta} = (\beta_1, \cdots, \beta_v, \cdots, \beta_V)$を持つとする。このときの各単語のトピックのサンプリング式とハイパーパラメータの更新式を、一様の場合と同様の手順で求めていく。

・パラメータの周辺化

 パラメータ$\boldsymbol{\Theta},\ \boldsymbol{\Phi}$を周辺化した文書集合$\mathbf{W}$とトピック集合$\mathbf{Z}$の同時分布を、生成過程より

$$ p(\mathbf{Z}, \mathbf{W} | \boldsymbol{\alpha}, \boldsymbol{\beta}) = p(\mathbf{Z} | \boldsymbol{\alpha}) p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\beta}) \tag{1} $$

と分解する。

 この式の1つ目の項に具体的な式を代入して計算すると

$$ \begin{align} p(\mathbf{Z} | \boldsymbol{\alpha}) &= \int p(\mathbf{Z} | \boldsymbol{\Theta}) p(\boldsymbol{\Theta} | \boldsymbol{\alpha}) d\boldsymbol{\Theta} \\ &= \int \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}^{N_{dk}} \prod_{d=1}^D \frac{\Gamma(\sum_{k=1}^K \alpha_k)}{\prod_{k=1}^K \Gamma(\alpha_k)} \prod_{k=1}^K \theta_{dk}^{\alpha_k -1} d\boldsymbol{\theta}_d \\ &= \frac{\Gamma(\sum_{k=1}^K \alpha_k)^D}{\prod_{k=1}^K \Gamma(\alpha_k)^D} \prod_{d=1}^D \int \prod_{k=1}^K \theta_{dk}^{N_{dk}+\alpha_k -1} d\boldsymbol{\theta}_d \\ &= \frac{\Gamma(\sum_{k=1}^K \alpha_k)^D}{\prod_{k=1}^K \Gamma(\alpha_k)^D} \prod_{d=1}^D \frac{ \prod_{k=1}^K \Gamma(N_{dk} + \alpha_k) }{ \Gamma(N_d + \sum_{k=1}^K \alpha_k) } \tag{2}\\ &= \prod_{d=1}^D \frac{ \Gamma(\sum_{k=1}^K \alpha_k) }{ \Gamma(N_d + \sum_{k=1}^K \alpha_k) } \prod_{d=1}^D \prod_{k=1}^K \frac{ \Gamma(N_{dk} + \alpha_k) }{ \Gamma(\alpha_k) } \tag{2'} \end{align} $$

となる。
 2つ目の項も同様に

$$ \begin{align} p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\beta}) &= \int p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) p(\boldsymbol{\Phi} | \boldsymbol{\beta}) d\boldsymbol{\Phi} \\ &= \int \prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{N_{kv}} \prod_{k=1}^K \frac{\Gamma(\sum_{v=1}^V \beta_v)}{\prod_{v=1}^V \Gamma(\beta_v)} \prod_{v=1}^V \phi_{kv}^{\beta_v -1} d\boldsymbol{\phi}_K \\ &= \frac{\Gamma(\sum_{v=1}^V \beta_v)^K}{\prod_{v=1}^V \Gamma(\beta_v)^K} \prod_{k=1}^K \int \prod_{v=1}^V \phi_{kv}^{N_{kv}+\beta_v -1} d\boldsymbol{\phi}_K \\ &= \frac{\Gamma(\sum_{v=1}^V \beta_v)^K}{\prod_{v=1}^V \Gamma(\beta_v)^K} \prod_{k=1}^K \frac{ \prod_{v=1}^V \Gamma(N_{kv} + \beta_v) }{ \Gamma(N_k + \sum_{v=1}^V \beta_v) } \tag{3}\\ &= \prod_{k=1}^K \frac{ \Gamma(\sum_{v=1}^V \beta_v) }{ \Gamma(N_k + \sum_{v=1}^V \beta_v) } \prod_{k=1}^K \prod_{v=1}^V \frac{ \Gamma(N_{kv} + \beta_v) }{ \Gamma(\beta_v) } \tag{3'} \end{align} $$

となる。

・サンプリング式

 各単語のトピックのサンプリング確率は、周辺尤度$p(\mathbf{W}, \mathbf{Z} | \boldsymbol{\alpha}, \boldsymbol{\beta})$に対してベイズの定理を用いて

$$ \begin{align} p(z_{dn} = k | \mathbf{W}, \mathbf{Z}_{\backslash dn}, \boldsymbol{\alpha}, \boldsymbol{\beta}) &= \frac{ p(\mathbf{W}, \mathbf{Z} | \boldsymbol{\alpha}, \boldsymbol{\beta}) }{ p(\mathbf{W}, \mathbf{Z}_{\backslash dn} | \boldsymbol{\alpha}, \boldsymbol{\beta}) } \\ &= \frac{ p(w_{dn} | \mathbf{W}_{\backslash dn}, z_{dn} = k, \mathbf{Z}_{\backslash dn}, \boldsymbol{\beta}) p(\mathbf{W}_{\backslash dn} | \mathbf{Z}_{\backslash dn}, \boldsymbol{\beta}) p(z_{dn} = k | \mathbf{Z}_{\backslash dn}, \boldsymbol{\alpha}) p(\mathbf{Z}_{\backslash dn} | \boldsymbol{\alpha}) }{ p(\mathbf{W} | \boldsymbol{\beta}) p(\mathbf{Z}_{\backslash dn} | \boldsymbol{\alpha}) } \\ &\propto p(z_{dn} = k | \mathbf{Z}_{\backslash dn}, \boldsymbol{\alpha}) p(w_{dn} | \mathbf{W}_{\backslash dn}, z_{dn} = k, \mathbf{Z}_{\backslash dn}, \boldsymbol{\beta}) \tag{4} \end{align} $$

となる。

 この式の1つ目の項は、式(2)を用いて

$$ \begin{align} p(z_{dn} = k | \mathbf{Z}_{\backslash dn}, \boldsymbol{\alpha}) &= \frac{ p(z_{dn} = k , \mathbf{Z}_{\backslash dn} | \boldsymbol{\alpha}) }{ p(\mathbf{Z}_{\backslash dn} | \boldsymbol{\alpha}) } \\ &= \frac{\Gamma(\sum_{k=1}^K \alpha_k)}{\prod_{k=1}^K \Gamma(\alpha_k)} \frac{ \Gamma(N_{dk\backslash dn} + 1 + \alpha_k) \prod_{k' \neq k} \Gamma(N_{dk' \backslash dn} + \alpha_k) }{ \Gamma(N_d + \sum_{k=1}^K \alpha_k) } \\ &\qquad * \frac{\prod_{k=1}^K \Gamma(\alpha_k)}{\Gamma(\sum_{k=1}^K \alpha_k)} \frac{ \Gamma(N_d - 1 + \sum_{k=1}^K \alpha_k) }{ \prod_{k'=1}^K \Gamma(N_{dk'\backslash dn} + \alpha_k) } \\ &= \frac{ (N_{dk\backslash dn} + \alpha_k) \Gamma(N_{dk\backslash dn} + \alpha_k) \prod_{k' \neq k} \Gamma(N_{dk' \backslash dn} + \alpha_{k'}) }{ (N_d - 1 + \sum_{k=1}^K \alpha_k) \Gamma(N_d - 1 + \sum_{k=1}^K \alpha_k) } \frac{ \Gamma(N_d - 1 + \sum_{k=1}^K \alpha_k) }{ \prod_{k'=1}^K \Gamma(N_{dk'\backslash dn} + \alpha_k) } \\ &= \frac{ N_{dk\backslash dn} + \alpha_k }{ N_d - 1 + \sum_{k'=1}^K \alpha_{k'} } \tag{5} \end{align} $$

となる。
 同様に2つ目の項は、式(3)を用いて

$$ \begin{align} p(w_{dn} | \mathbf{W}_{\backslash dn}, z_{dn} = k, \mathbf{Z}_{\backslash dn}, \boldsymbol{\beta}) &= \frac{ p(w_{dn}, \mathbf{W}_{\backslash dn} | z_{dn} = k, \mathbf{Z}_{\backslash dn}, \boldsymbol{\beta}) }{ p(\mathbf{W}_{\backslash dn} | z_{dn} = k, \mathbf{Z}_{\backslash dn}, \boldsymbol{\beta}) } \\ &= \frac{\Gamma(\sum_{v=1}^V \beta_v)}{\prod_{v=1}^V \Gamma(\beta_v)} \frac{ \Gamma(N_{kw_{dn} \backslash dn} + 1 + \beta_v) \prod_{v' \neq w_{dn}} \Gamma(N_{kv' \backslash dn} + \beta_{v'}) }{ \Gamma(N_{k \backslash dn} + 1 + \sum_{v=1}^V \beta_v) } \\ &\qquad * \frac{\prod_{v=1}^V \Gamma(\beta_v)}{\Gamma(\sum_{v=1}^V \beta_v)} \frac{ \Gamma(N_{k \backslash dn} + \sum_{v=1}^V \beta_v) }{ \prod_{v=1}^V \Gamma(N_{kv \backslash dn} + \beta_v) } \\ &= \frac{ (N_{kw_{dn} \backslash dn} + \beta_v) \Gamma(N_{kw_{dn} \backslash dn} + \beta_v) \prod_{v' \neq w_{dn}} \Gamma(N_{kv' \backslash dn} + \beta_{v'}) }{ (N_{k \backslash dn} + \sum_{v=1}^V \beta_v) \Gamma(N_{k \backslash dn} + \sum_{v=1}^V \beta_v) } \frac{ \Gamma(N_{k \backslash dn} + \sum_{v=1}^V \beta_v) }{ \prod_{v=1}^V \Gamma(N_{kv \backslash dn} + \beta_v) } \\ &= \frac{ N_{kw_{dn} \backslash dn} + \beta_v }{ N_{k \backslash dn} + \sum_{v'=1}^V \beta_{v'} } \tag{6} \end{align} $$

となる。ここで$N_{kw_{dn} \backslash dn}$は、$w_{dn}$を除く$w_{dn}$同じ語彙$v$においてトピック$k$を割り当てられた単語数である。

 式(5),(6)を式(4)に代入して、サンプリング式

$$ p(z_{dn} = k | \mathbf{W}, \mathbf{Z}_{\backslash dn}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \propto (N_{dk\backslash dn} + \alpha_k) \frac{ N_{kw_{dn} \backslash dn} + \beta_v }{ N_{k \backslash dn} + \sum_{v'=1}^V \beta_{v'} } $$

が得られる。式(5)の分母は、トピック$k$に影響しないため省いている。

・ハイパーパラメータの更新式

 式(2'),(3')を式(1)に代入して、「Tips」の関係性を用いて不動点反復法を行えるように変形する。

$$ \begin{aligned} p(\mathbf{Z}, \mathbf{W} | \boldsymbol{\alpha}, \boldsymbol{\beta}) &= \prod_{d=1}^D \frac{ \Gamma(\sum_{k=1}^K \alpha_k) }{ \Gamma(N_d + \sum_{k=1}^K \alpha_k) } \prod_{d=1}^D \prod_{k=1}^K \frac{ \Gamma(N_{dk} + \alpha_k) }{ \Gamma(\alpha_k) } \prod_{k=1}^K \frac{ \Gamma(\sum_{v=1}^V \beta_v) }{ \Gamma(N_k + \sum_{v=1}^V \beta_v) } \prod_{k=1}^K \prod_{v=1}^V \frac{ \Gamma(N_{kv} + \beta_v) }{ \Gamma(\beta_v) } \\ &\geq \prod_{d=1}^D \frac{ \Gamma(\sum_{k=1}^K \hat{\alpha}_k) \exp \Bigl\{ (\sum_{k=1}^K \hat{\alpha}_k - \alpha_k) b_{\alpha} \Bigr\} }{ \Gamma(N_d + \sum_{k=1}^K \hat{\alpha}_k) } \prod_{d=1}^D \prod_{k=1}^K \frac{ \Gamma(N_{dk} + \hat{\alpha}_k) }{ \Gamma(\hat{\alpha}_k) } \hat{\alpha}_k^{-a_{\alpha}} \alpha_k^{a_{\alpha}} \\ &\qquad * \prod_{k=1}^K \frac{ \Gamma(\sum_{v=1}^V \hat{\beta}_v) \exp \Bigl\{ (\sum_{v=1}^V \hat{\beta}_v - \beta_v) b_{\beta} \Bigr\} }{ \Gamma(N_k + \sum_{v=1}^V \hat{\beta}_v) } \prod_{k=1}^K \prod_{v=1}^V \frac{ \Gamma(N_{kv} + \hat{\beta}_v) }{ \Gamma(\hat{\beta}_v) } \hat{\beta}_v^{-a_{\beta}} \beta_v^{a_{\beta}} = F \end{aligned} $$

 ここで

$$ \begin{aligned} a_{\alpha} &= \Bigl( \Psi(N_{dk} + \hat{\alpha}_k) - \Psi(\hat{\alpha}_k) \Bigr) \hat{\alpha}_k \\ b_{\alpha} &= \Psi \Bigl( N_d + \sum_{k=1}^K \hat{\alpha}_k \Bigr) - \Psi \Bigl( \sum_{k=1}^K \hat{\alpha}_k \Bigr) \\ a_{\beta} &= \Bigl( \Psi(N_{kv} + \hat{\beta}_v) - \Psi(\hat{\beta}_v) \Bigr) \hat{\beta}_v \\ b_{\beta} &= \Psi \Bigl( N_k + \sum_{v=1}^V \hat{\beta}_v \Bigr) - \Psi \Bigl( \sum_{v=1}^V \hat{\beta}_v \Bigr) \end{aligned} $$

である。

 ここから$\alpha_k$に関する項を取り出して、対数をとる。

$$ \begin{aligned} F(\alpha_k) &= \sum_{d=1}^D \left\{ \log \Gamma \Bigl( \sum_{k=1}^K \hat{\alpha}_k \Bigr) + \Bigl( \sum_{k=1}^K \hat{\alpha}_k - \alpha_k \Bigr) \left( \Psi \Bigl( N_d + \sum_{k=1}^K \hat{\alpha}_k \Bigr) - \Psi \Bigl( \sum_{k=1}^K \hat{\alpha}_k \Bigr) \right) - \log \Gamma \Bigl( N_d + \sum_{k=1}^K \hat{\alpha}_k \Bigr) \right\} \\ &\qquad + \sum_{d=1}^D \sum_{k=1}^K \left\{ \log \Gamma(N_{dk} + \hat{\alpha}_k) - \log \Gamma(\hat{\alpha}_k) - \Bigl( \Psi(N_{dk} + \hat{\alpha}_k) - \Psi(\hat{\alpha}_k) \Bigr) \hat{\alpha}_k \log \hat{\alpha}_k \right.\\ &\qquad \left. + \Bigl( \Psi(N_{dk} + \hat{\alpha}_k) - \Psi(\hat{\alpha}_k) \Bigr) \hat{\alpha}_k \log \alpha_k \right\} \end{aligned} $$

 この式を$\alpha_k$に関して微分し$\frac{\partial F(\alpha_k)}{\partial \alpha_k} = 0$となる$\alpha_k$を求める。

$$ \begin{aligned} \frac{\partial F(\alpha_k)}{\partial \alpha_k} = - \sum_{d=1}^D \left( \Psi \Bigl( N_d + \sum_{k'=1}^K \hat{\alpha}_{k'} \Bigr) - \Psi \Bigl( \sum_{k'=1}^K \hat{\alpha}_{k'} \Bigr) \right) &+ \sum_{d=1}^D \Bigl( \Psi(N_{dk} + \hat{\alpha}_k) - \Psi(\hat{\alpha}_k) \Bigr) \hat{\alpha}_k \frac{1}{\alpha_k} = 0 \\ \alpha_k &= \hat{\alpha}_k \frac{ \sum_{d=1}^D \Psi(N_{dk} + \hat{\alpha}_k) - D \Psi(\hat{\alpha}_k) }{ \sum_{d=1}^D \Psi(N_d + \sum_{k'=1}^K \hat{\alpha}_{k'}) - D \Psi(\sum_{k'=1}^K \hat{\alpha}_{k'}) } \end{aligned} $$

 この式の$\hat{\alpha}_k$を現ステップの$\alpha_k$、左辺の$\alpha_k$を更新後のパラメータ$\alpha_k^{\mathrm{new}}$とした次の式が更新式となる。

$$ \alpha_k^{\mathrm{new}} = \alpha_k \frac{ \sum_{d=1}^D \Psi(N_{dk} + \alpha_k) - D \Psi(\alpha_k) }{ \sum_{d=1}^D \Psi(N_d + \sum_{k'=1}^K \alpha_{k'}) - D \Psi(\sum_{k'=1}^K \alpha_{k'}) } $$


 単語分布のパラメータについても同様に、$F$から$\beta_v$に関する項を取り出して、対数をとった

$$ \begin{aligned} F(\beta_v) &= \sum_{k=1}^K \left\{ \log \Gamma \Bigl( \sum_{v=1}^V \hat{\beta}_v \Bigr) + \Bigl( \sum_{v=1}^V \hat{\beta}_v - \beta_v \Bigr) \left( \Psi \Bigl( N_k + \sum_{v=1}^V \hat{\beta}_v \Bigr) - \Psi \Bigl( \sum_{v=1}^V \hat{\beta}_v \Bigr) \right) - \log \Gamma \Bigl( N_k + \sum_{v=1}^V \hat{\beta}_v \Bigr) \right\} \\ &\qquad + \sum_{k=1}^K \sum_{v=1}^V \left\{ \log \Gamma(N_{kv} + \hat{\beta}_v) - \log \Gamma(\hat{\beta}_v) - \Bigl( \Psi(N_{kv} + \hat{\beta}_v) - \Psi(\hat{\beta}_v) \Bigr) \hat{\beta}_v \log \hat{\beta}_v \right.\\ &\qquad \left. + \Bigl( \Psi(N_{kv} + \hat{\beta}_v) - \Psi(\hat{\beta}_v) \Bigr) \hat{\beta}_v \log \beta_v \right\} \end{aligned} $$

を$\beta_v$に関して微分し、$\frac{\partial F(\beta_v)}{\partial \beta_v} = 0$となる$\beta_v$を求める。

$$ \begin{aligned} \frac{\partial F(\beta_v)}{\partial \beta_v} = - \sum_{k=1}^K \left( \Psi \Bigl( N_k + \sum_{v'=1}^V \hat{\beta}_{v'} \Bigr) - \Psi \Bigl( \sum_{v'=1}^V \hat{\beta}_{v'} \Bigr) \right) &+ \sum_{k=1}^K \Bigl( \Psi(N_{kv} + \hat{\beta}_v) - \Psi(\hat{\beta}_v) \Bigr) \hat{\beta}_v \frac{1}{\beta_v} = 0 \\ \beta_v &= \hat{\beta}_v \frac{ \sum_{k=1}^K \Psi(N_{kv} + \hat{\beta}_v) - K \Psi(\hat{\beta}_v) }{ \sum_{k=1}^K \Psi(N_k + \sum_{v'=1}^V \hat{\beta}_{v'}) - K \Psi(\sum_{v'=1}^V \hat{\beta}_{v'}) } \end{aligned} $$

 この式の$\hat{\beta}_v$を現ステップの$\beta_v$、左辺の$\beta_v$を更新後のパラメータ$\beta_v^{\mathrm{new}}$とした次の式が更新式となる。

$$ \beta_v^{\mathrm{new}} = \beta_v \frac{ \sum_{k=1}^K \Psi(N_{kv} + \beta_v) - K \Psi(\beta_v) }{ \sum_{k=1}^K \Psi(N_k + \sum_{v'=1}^V \beta_{v'}) - K \Psi(\sum_{v'=1}^V \beta_{v'}) } $$


参考書籍

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

おわりに

 これにて4章トピックモデル完了です。この先にはトピックモデルの応用の章が続くのですが、数式理解についてはここで一旦終了します。今後は、まとめたものの加筆修正、別本での理解の確認、LDAを活用した論文を読む、をやっていく予定です。その前に、3・4章のギブスサンプリングをRで実装できていないので、それを完成させないといけないのですがね。

 自分の学習の為にやっているとはいえ、この一連の記事を書くのは割と大変だったので、これが誰かの役に立てば幸いです。答えられるかは分かりませんが、記事内のことで分からないことなどありましたら質問いただければ極力対応します。
 また、何か間違いなどあればご指摘いただけると本当に嬉しいです。よろしくお願いいたします。

2020/09/24:加筆修正しました。論文は読めてません…

【次節の内容】

www.anarchive-beta.com

 10か月ぶりに続きを更新しました!