からっぽのしょこ

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

4.5:トピックモデルの崩壊型ギブズサンプリングの導出:一様なハイパーパラメータの場合【青トピックモデルのノート】

はじめに

 『トピックモデル』(MLPシリーズ)の勉強会資料のまとめです。各種モデルやアルゴリズムを「数式」と「プログラム」を用いて解説します。
 本の補助として読んでください。

 この記事では、トピックモデルに対する崩壊型ギブスサンプリングの数式の行間を埋めます。

【前節の内容】

www.anarchive-beta.com

【他の節の内容】

www.anarchive-beta.com

【この節の内容】

4.5 トピックモデルの崩壊型ギブズサンプリングの導出:一様なハイパーパラメータの場合

 トピックモデル(topic model)に対する不動点反復法(固定点反復法・fixed point iteration)を用いた崩壊型ギブスサンプリング(周辺化ギブスサンプリング・collapsed Gibbs sampling)におけるパラメータの計算式を導出する。この記事では、ハイパーパラメータが一様な値の場合を扱う。トピックモデルに対してベイズ推定する手法は、LDA(latent Dirichlet allocation・潜在ディリクレ配分モデル)と呼ばれる。
 トピックモデルの定義や記号については「4.1:トピックモデルの生成モデルの導出【青トピックモデルのノート】 - からっぽのしょこ」、ハイパーパラメータが多様な値の場合については「4.5:トピックモデルの崩壊型ギブズサンプリングの導出:多様なハイパーパラメータの場合【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。

パラメータの周辺化の導出

 まずは、サンプリング式や更新式の導出に用いる文書集合とトピック集合の周辺分布の式を導出する。

 ここでは、トピック分布のハイパーパラメータ  \boldsymbol{\alpha} = (\alpha_1, \cdots, \alpha_K) と単語分布のハイパーパラメータ  \boldsymbol{\beta} = (\beta_1, \cdots, \beta_V) をそれぞれ一様な値  \alpha_1 = \cdots = \alpha_K = \alpha \beta_1 = \cdots = \beta_V = \beta として、 \alpha, \beta で表す(  K, V 次元ベクトルをスカラで表記する)。

結合周辺分布

 パラメータ  \boldsymbol{\Theta}, \boldsymbol{\Phi} を周辺化(積分消去)したときの文書集合  \mathbf{W} とトピック集合  \mathbf{Z} の結合分布(同時分布)を求める。

 \displaystyle
p(\mathbf{W}, \mathbf{Z} \mid \alpha, \beta)
    = \iint
          p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} \mid \alpha, \beta)
      \mathrm{d} \boldsymbol{\Theta} \mathrm{d} \boldsymbol{\Phi}

 トピックモデルの生成過程(依存関係)に従って、 \mathbf{W}, \mathbf{Z} の結合分布を分割する。

 \displaystyle
p(\mathbf{W}, \mathbf{Z} \mid \alpha, \beta)
    = p(\mathbf{Z} \mid \alpha)
      p(\mathbf{W} \mid \mathbf{Z}, \beta)
\tag{4.9}

  \mathbf{W}, \mathbf{Z} に関する周辺分布から得られることが分かった。

トピック集合の周辺分布

  \mathbf{W}, \mathbf{Z} の結合分布の式(4.9)の前の項は、トピック分布のパラメータ  \boldsymbol{\Theta} の事前分布  p(\boldsymbol{\Theta} \mid \alpha) を用いたトピック集合  \mathbf{Z} の周辺分布である。
 この式について、パラメータを明示して変形する。

 \displaystyle
\begin{aligned}
p(\mathbf{Z} \mid \alpha)
   &= \int
          p(\mathbf{Z}, \boldsymbol{\Theta} \mid \alpha)
      \mathrm{d} \boldsymbol{\Theta}
\\
   &= \int
          p(\mathbf{Z} \mid \boldsymbol{\Theta})
          p(\boldsymbol{\Theta} \mid \alpha)
      \mathrm{d} \boldsymbol{\Theta}
\\
   &= \prod_{d=1}^D \left[
          \int
              p(\mathbf{z}_d \mid \boldsymbol{\theta}_d)
              p(\boldsymbol{\theta}_d \mid \alpha)
          \mathrm{d} \boldsymbol{\theta}_d
      \right]
\\
   &= \prod_{d=1}^D \left[
          \int
              \left\{ \prod_{n=1}^{N_d}
                  p(z_{dn} \mid \boldsymbol{\theta}_d)
              \right\}
              p(\boldsymbol{\theta}_d \mid \alpha)
          \mathrm{d} \boldsymbol{\theta}_d
      \right]
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 周辺化された  \boldsymbol{\Theta} を明示する。
  • 2: 潜在変数  \mathbf{Z} とパラメータ  \boldsymbol{\Theta} の項を分割する。
  • 3: トピック集合  \mathbf{Z} の生成確率を、各文書のトピック集合  \mathbf{z}_d の生成確率の積に分解する。
  • 4: 各文書のトピック集合  \mathbf{z}_d の生成確率を、各単語のトピック  z_{dn} の生成確率の積に分解する。

 さらに、確率分布を具体的な式に置き換えて、式を整理する。

 \displaystyle
\begin{align}
p(\mathbf{Z} \mid \alpha)
   &= \prod_{d=1}^D \left[
          \int
              \left\{ \prod_{n=1}^{N_d}
                  \theta_{dz_{dn}}
              \right\}
              \frac{\Gamma(\sum_{k=1}^K \alpha)}{\prod_{k=1}^K \Gamma(\alpha)}
              \left\{ \prod_{k=1}^K
                  \theta_{dk}^{\alpha-1}
              \right\}
          \mathrm{d} \boldsymbol{\theta}_d
      \right]
\\
   &= \prod_{d=1}^D \left[
          \int
              \left\{ \prod_{k=1}^K
                  \theta_{dk}^{N_{dk}}
              \right\}
              \frac{\Gamma(K \alpha)}{\Gamma(\alpha)^K}
              \left\{ \prod_{k=1}^K
                  \theta_{dk}^{\alpha-1}
              \right\}
          \mathrm{d} \boldsymbol{\theta}_d
      \right]
\\
   &= \prod_{d=1}^D \left\{
          \frac{\Gamma(K \alpha)}{\Gamma(\alpha)^K}
              \int \prod_{k=1}^K
                  \theta_{dk}^{N_{dk} + \alpha-1}
              \mathrm{d} \boldsymbol{\theta}_d
      \right\}
\\
   &= \prod_{d=1}^D \left\{
          \frac{\Gamma(K \alpha)}{\Gamma(\alpha)^K}
          \frac{
              \prod_{k=1}^K
                  \Gamma(N_{dk} + \alpha)
          }{
              \Gamma(\sum_{k=1}^K \{N_{dk} + \alpha\})
          }
      \right\}
\\
   &= \prod_{d=1}^D \left\{
          \frac{\Gamma(K \alpha)}{\Gamma(\alpha)^K}
          \frac{
              \prod_{k=1}^K
                  \Gamma(N_{dk} + \alpha)
          }{
              \Gamma(N_d + K \alpha)
          }
      \right\}
\tag{4.10}\\
   &= \prod_{d=1}^D \left\{
          \frac{\Gamma(K \alpha)}{\Gamma(N_d + K \alpha)}
          \prod_{k=1}^K
              \frac{\Gamma(N_{dk} + \alpha)}{\Gamma(\alpha)}
      \right\}
\tag{4.10'}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 各単語のトピック  z_{dn} はカテゴリ分布、各文書のトピック分布のパラメータ  \boldsymbol{\theta}_d はディリクレ分布を仮定しているので、それぞれ定義式に置き換える。
 \displaystyle
\begin{aligned}
p(z_{dn} \mid \boldsymbol{\theta}_d)
   &= \mathrm{Cat}(z_{dn} \mid \boldsymbol{\theta}_d)
    = \theta_{dz_{dn}}
\\
p(\boldsymbol{\theta}_d \mid \alpha)
   &= \mathrm{Dir}(\boldsymbol{\theta}_d \mid \alpha)
    = \frac{\Gamma(\sum_{k=1}^K \alpha)}{\prod_{k=1}^K \Gamma(\alpha)}
      \prod_{k=1}^K
          \theta_{dk}^{\alpha-1}
\end{aligned}
  • 2: 各単語のトピック  z_{dn} = k と文書ごとの各トピックの単語数  N_{dk} を用いて、単語番号  n を用いた式から、トピック番号  k を用いた式に変換する。
 \displaystyle
\begin{aligned}
\prod_{n=1}^{N_d}
    \theta_{dz_{dn}}
   &= \underbrace{
          \theta_{dz_{d1}}
          * \theta_{dz_{d2}}
          * \cdots
          * \theta_{dz_{dN_d}}
      }_{N_d}
\\
   &= \underbrace{
          \theta_{d1} * \cdots * \theta_{d1}
      }_{N_{d1}}
      * \underbrace{
          \theta_{d2} * \cdots * \theta_{d2}
      }_{N_{d2}}
      * \cdots
      * \underbrace{
          \theta_{dK} * \cdots * \theta_{dK}
      }_{N_{dK}}
\\
   &= \underbrace{
          \theta_{d1}^{N_{d1}}
          * \theta_{d2}^{N_{d2}}
          * \cdots
          * \theta_{dK}^{N_{dK}}
      }_{K}
\\
   &= \prod_{k=1}^K
          \theta_{dk}^{N_{dk}}
\end{aligned}

  z_d = k に対応する  N_d 個の  \theta_{d,\cdot} を、単語番号  n の順番に並んだ状態(1行目)から、トピック番号  k の順番に並べ替えて(2行目)、トピックごとに(同じトピックが割り当てられた  N_{dk} 個の要素を)まとめて(3行目)いる。 N_d = \sum_{k=1}^K N_{dk} なので、全体の要素数は変わっていない。

  • 2: 一様なハイパーパラメータなので、正規化項は  \sum_{k=1}^K \alpha = K \alpha \prod_{k=1}^K \Gamma(\alpha) = \Gamma(\alpha)^K となる。
  • 3:  \boldsymbol{\theta}_d と無関係な正規化項を  \int の外に出す。
  • 3:  \theta_{dk} の項をまとめる。
  • 4: ディリクレ分布の正規化項(1.2.4項)より、積分全体を正規化項の逆数の形に置き換える。
  • 5: 文書ごとの各トピックの単語数  N_{dk} と各文書の単語数  N_d の関係より、 N_d = \sum_{k=1}^K N_{dk} である。
  • 6: 不動点反復法を行うために、 \prod_{k=1}^K \Gamma(\alpha) に戻し、分母を入れ替えて  \alpha, K \alpha の項をそれぞれまとめる。

  \mathbf{Z} の周辺分布の式が得られた。

文書集合の周辺分布

  \mathbf{W}, \mathbf{Z} の結合分布の式(4.9)の後の項は、単語分布のパラメータ  \boldsymbol{\Phi} の事前分布  p(\boldsymbol{\Phi} \mid \beta) を用いた文書集合  \mathbf{W} の周辺分布である。
 同様に、パラメータを明示して変形する。

 \displaystyle
\begin{align}
p(\mathbf{W} \mid \mathbf{Z}, \beta)
   &= \int
          p(\mathbf{W}, \boldsymbol{\Phi} \mid \mathbf{Z}, \beta)
      \mathrm{d} \boldsymbol{\Phi}
\\
   &= \int
          p(\mathbf{W} \mid \mathbf{Z}, \boldsymbol{\Phi})
          p(\boldsymbol{\Phi} \mid \beta)
      \mathrm{d} \boldsymbol{\Phi}
\\
   &= \int
          \left\{ \prod_{d=1}^D
              p(\mathbf{w}_d \mid \mathbf{z}_d, \boldsymbol{\Phi})
          \right\}
          \prod_{k=1}^K
              p(\boldsymbol{\phi}_k \mid \beta)
      \mathrm{d} \boldsymbol{\Phi}
\\
   &= \int
          \left\{ \prod_{d=1}^D \prod_{n=1}^{N_d}
              p(w_{dn} \mid \boldsymbol{\phi}_{z_{dn}})
          \right\}
          \prod_{k=1}^K
              p(\boldsymbol{\phi}_k \mid \beta)
      \mathrm{d} \boldsymbol{\Phi}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 周辺化された  \boldsymbol{\Phi} を明示する。
  • 2: 観測変数  \mathbf{W} とパラメータ  \boldsymbol{\Phi} の項を分割する。
  • 3: 文書集合  \mathbf{W} の生成確率を、各文書(単語集合)  \mathbf{w}_d の生成確率の積に分解する。
  • 3: パラメータ集合  \boldsymbol{\Phi} の生成確率を、各トピックのパラメータ  \boldsymbol{\phi}_k の生成確率の積に分解する。
  • 4: 単語集合  \mathbf{w}_d の生成確率を、各単語  w_{dn} の生成確率の積に分解する。

 さらに、確率分布を具体的な式に置き換えて、式を整理する。

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

途中式の途中式(クリックで展開)


  • 1: 各単語の語彙  w_{dn} はカテゴリ分布、各トピックの単語分布のパラメータ  \boldsymbol{\phi}_k はディリクレ分布を仮定しているので、それぞれ定義式に置き換える。
 \displaystyle
\begin{aligned}
p(w_{dn} \mid \boldsymbol{\phi}_{z_{dn}})
   &= \mathrm{Cat}(w_{dn} \mid \boldsymbol{\phi}_{z_{dn}})
    = \phi_{z_{dn}w_{dn}}
\\
p(\boldsymbol{\phi}_k \mid \beta)
   &= \mathrm{Dir}(\boldsymbol{\phi}_k \mid \beta)
    = \frac{\Gamma(\sum_{v=1}^V \beta)}{\prod_{v=1}^V \Gamma(\beta)}
      \prod_{v=1}^V
          \phi_{kv}^{\beta-1}
\end{aligned}
  • 2: 各単語のトピック  z_{dn} = k、各単語の語彙  w_{dn} = v とトピックごとの各語彙の単語数  N_{kv} を用いて、文書番号  d と単語番号  n を用いた式から、トピック番号  k と語彙番号  v を用いた式に変換する。
 \displaystyle
\begin{aligned}
\prod_{d=1}^D \prod_{n=1}^{N_d}
    \phi_{z_{d,n},w_{d,n}}
   &= \underbrace{
          \phi_{z_{1,1},w_{1,1}}
          * \phi_{z_{1,2},w_{1,2}}
          * \cdots
          * \phi_{z_{1,N_1},w_{1,N_1}}
      }_{N_1}
\\
   &\quad
      * \underbrace{
          \phi_{z_{2,1},w_{2,1}}
          * \phi_{z_{2,2},w_{2,2}}
          * \cdots
          * \phi_{z_{2,N_2},w_{2,N_2}}
        }_{N_2}
\\
   &\quad\ 
      \vdots
\\
   &\quad
      * \underbrace{
          \phi_{z_{D,1},w_{D,1}}
          * \phi_{z_{D,2},w_{D,2}}
          * \cdots
          * \phi_{z_{D,N_D},w_{D,N_D}}
        }_{N_D}
\\
   &= \underbrace{
          \phi_{1,1} * \cdots * \phi_{1,1}
      }_{N_{1,1}}
      * \underbrace{
          \phi_{1,2} * \cdots * \phi_{1,2}
        }_{N_{1,2}}
      * \cdots
      * \underbrace{
          \phi_{1,V} * \cdots * \phi_{1,V}
      }_{N_{1,V}}
\\
   &\quad
      * \underbrace{
          \phi_{2,1} * \cdots * \phi_{2,1}
      }_{N_{2,1}}
      * \underbrace{
          \phi_{2,2} * \cdots * \phi_{2,2}
        }_{N_{2,2}}
      * \cdots
      * \underbrace{
          \phi_{2,V} * \cdots * \phi_{2,V}
      }_{N_{2,V}}
\\
   &\quad\ 
      \vdots
\\
   &\quad
      * \underbrace{
          \phi_{K,1} * \cdots * \phi_{K,1}
      }_{N_{K,1}}
      * \underbrace{
          \phi_{K,2} * \cdots * \phi_{K,2}
        }_{N_{K,2}}
      * \cdots
      * \underbrace{
          \phi_{K,V} * \cdots * \phi_{K,V}
      }_{N_{K,V}}
\\
   &= \underbrace{
          \phi_{1,1}^{N_{1,1}}
          * \phi_{1,2}^{N_{1,2}}
          * \cdots
          * \phi_{1,V}^{N_{1,V}}
      }_{V}
\\
   &\quad
      * \underbrace{
          \phi_{2,1}^{N_{2,1}}
          * \phi_{2,2}^{N_{2,2}}
          * \cdots
          * \phi_{2,V}^{N_{2,V}}
      }_{V}
\\
   &\quad\ 
      \vdots
\\
   &\quad
      * \underbrace{
          \phi_{K,1}^{N_{K,1}}
          * \phi_{K,2}^{N_{K,2}}
          * \cdots
          * \phi_{K,V}^{N_{K,V}}
        }_{V}
\\
   &= \underbrace{
          \left\{ \prod_{v=1}^V
              \phi_{1,v}^{N_{1,v}}
          \right\}
          * \left\{ \prod_{v=1}^V
              \phi_{2,v}^{N_{2,v}}
            \right\}
          * \cdots
          * \left\{ \prod_{v=1}^V
              \phi_{K,v}^{N_{K,v}}
            \right\}
      }_{K}
\\
   &= \prod_{k=1}^K \prod_{v=1}^V
          \phi_{k,v}^{N_{k,v}}
\end{aligned}

  z_{dn} = k, w_{dn} = v に対応する  N 個の  \phi_{\cdot,\cdot} を、文書番号  d と単語番号  n の順番に縦横に並んだ状態(1つ目の等号)から、トピック番号  k と語彙番号  v の順番に縦横に並べ替えて(2つ目の等号)、語彙ごとに( 同じ語彙が出現した  N_{kv} 個の要素を)まとめて(3つ目の等号)いる。 N = \sum_{k=1}^K \sum_{v=1}^V N_{kv} = \sum_{d=1}^D \sum_{n=1}^{N_d} 1 なので、全体の要素数は変わっていない。

  • 2: 一様なハイパーパラメータなので、正規化項は  \sum_{v=1}^V \beta = V \beta \prod_{v=1}^V \Gamma(\beta) = \Gamma(\beta)^V となる。
  • 3:  \boldsymbol{\Phi} と無関係な正規化項を  \int の外に出す。
  • 3:  \phi_{kv} の項をまとめる。
  • 4: ディリクレ分布の正規化項(1.2.4項)より、積分全体を正規化項の逆数の形に置き換える。
  • 5: トピックごとの各語彙の単語数  N_{kv} と各トピックの単語数  N_k の関係より、 N_k = \sum_{v=1}^V N_{kv} である。
  • 6: 不動点反復法を行うために、 \prod_{v=1}^V \Gamma(\beta) に戻し、分母を入れ替えて  \beta, V \beta の項をそれぞれまとめる。

  \mathbf{W} の周辺分布の式が得られた。

結合周辺分布

  \mathbf{W}, \mathbf{Z} の結合分布の式(4.9)に、 \mathbf{Z} の周辺分布の式(4.10')と  \mathbf{W} の周辺分布の式(4.11')を代入する。

 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z} \mid \alpha, \beta)
   &= \prod_{d=1}^D \left\{
          \frac{\Gamma(K \alpha)}{\Gamma(N_d + K \alpha)}
          \prod_{k=1}^K
              \frac{\Gamma(N_{dk} + \alpha)}{\Gamma(\alpha)}
      \right\}
\\
   &\qquad * 
      \prod_{k=1}^K \left\{
          \frac{\Gamma(V \beta)}{\Gamma(N_k + V \beta)}
          \prod_{v=1}^V
              \frac{\Gamma(N_{kv} + \beta)}{\Gamma(\beta)}
      \right\}
\end{aligned}

  \mathbf{W}, \mathbf{Z} の結合周辺分布の式が得られた。

 以上で、文書集合とトピック集合の周辺分布の式、結合周辺分布の式が得られた。

サンプリング式の導出

 次は、文書集合とトピック集合の周辺分布を用いて、各単語のトピックのサンプリング式を導出する。

 全ての文書集合  \mathbf{W} から文書  d n 番目の単語  w_{dn} を除いた文書集合を  \mathbf{W}_{\backslash dn} = \{w_{11}, \cdots, w_{d,n-1}, w_{d,n+1}, \cdots, w_{DN_D}\} とする。全ての文書集合は  \mathbf{W} = \{w_{dn}, \mathbf{W}_{\backslash dn}\} で表わせる。
 全文書のトピック集合  \mathbf{Z} から単語  w_{dn} のトピック  z_{dn} を除いたトピック集合を  \mathbf{Z}_{\backslash dn} = \{z_{11}, \cdots, z_{d,n-1}, z_{d,n+1}, \cdots, z_{DN_d}\} とする。全てのトピック集合は  \mathbf{Z} = \{z_{dn}, \mathbf{Z}_{\backslash dn}\} で表せる。
 同様に、 w_{dn} を除く文書  d におけるピック  k が割り当てられた単語数を  N_{dk \backslash dn} w_{dn} を除くトピック  k が割り当てられた全文書における語彙  v の単語数を  N_{kv \backslash dn} w_{dn} を除くトピック  k が割り当てられた全文書の単語数を  N_{k \backslash dn} で表す。

トピックのサンプリング確率の設定

 全単語の文書集合  \mathbf{W} と単語  w_{dn} 以外のトピック集合  \mathbf{Z}_{\backslash dn} が与えられた(条件とする)ときの単語  w_{dn} のトピック  z_{dn} の条件付き分布を求める。

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

途中式の途中式(クリックで展開)


  • 1: 条件付き確率  p(A \mid B, C) = \frac{p(A, B \mid C)}{p(B \mid C)} より、 z_{dn} 以外の観測・潜在変数  w_{dn}, \mathbf{W}_{\backslash dn}, \mathbf{Z}_{\backslash dn} を条件に移した式を立てる。
  • 2:  z_{dn} と無関係な項を省く。
  • 3: 変数ごとの項に分割する。

 単語  w_{dn} に関する変数  w_{dn}, z_{dn} と単語  w_{dn} 以外に関する変数  \mathbf{W}_{\backslash dn}, \mathbf{Z}_{\backslash dn} の項を分割する。

 \displaystyle
p(
    w_{dn}, \mathbf{W}_{\backslash dn}, z_{dn} = k, \mathbf{Z}_{\backslash dn}
\mid
    \alpha, \beta
)
    = p(
          w_{dn}, z_{dn} = k
      \mid
          \mathbf{W}_{\backslash dn}, \mathbf{Z}_{\backslash dn}, \alpha, \beta
      )
      p(
          \mathbf{W}_{\backslash dn}, \mathbf{Z}_{\backslash dn}
      \mid
          \alpha, \beta
      )

 さらに前の項の、観測変数  w_{dn} と潜在変数  z_{dn} の項を分割する。

 \displaystyle
p(
    w_{dn}, z_{dn} = k
\mid
    \mathbf{W}_{\backslash dn}, \mathbf{Z}_{\backslash dn}, \alpha, \beta
)
    = p(
          w_{dn}
      \mid
          \mathbf{W}_{\backslash dn}, z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta
      )
      p(
          z_{dn} = k
      \mid
          \mathbf{Z}_{\backslash dn}, \alpha
      )

 後の項の、観測変数  \mathbf{W}_{\backslash dn} と潜在変数  \mathbf{Z}_{\backslash dn} の項を分割する。

 \displaystyle
p(\mathbf{W}_{\backslash dn}, \mathbf{Z}_{\backslash dn} \mid \alpha, \beta)
    = p(\mathbf{W}_{\backslash dn} \mid \mathbf{Z}_{\backslash dn}, \beta)
      p(\mathbf{Z}_{\backslash dn} \mid \alpha)
  • 4:  z_{dn} と無関係な項を省く。

  z_{dn} に影響しない項を省いて比例関係のみに注目すると、 w_{dn}, z_{dn} に関する事後周辺分布から得られることが分かった。

トピックの事後周辺分布

  z_{dn} の条件付き分布の式(4.12)の前の項は、単語  w_{dn} 以外のトピック集合  \mathbf{Z}_{\backslash dn} が与えられた(条件とする)ときの単語  w_{dn} のトピック  z_{dn} の事後分布である。
 この式は、 \mathbf{Z} の周辺分布の式(4.10)を用いて求められる。

 \displaystyle
\begin{align}
p(z_{dn} = k \mid \mathbf{Z}_{\backslash dn}, \alpha)
   &= \frac{
          p(z_{dn} = k, \mathbf{Z}_{\backslash dn} \mid \alpha)
      }{
          p(\mathbf{Z}_{\backslash dn} \mid \alpha)
      }
\\
   &= \frac{\Gamma(K \alpha)^D}{\Gamma(\alpha)^{DK}}
      \frac{
          \Gamma(N_{dk \backslash dn} + 1 + \alpha)
          \prod_{k' \neq k}
              \Gamma(N_{dk' \backslash dn} + \alpha)
      }{
          \Gamma(N_d + K \alpha)
      }
      \prod_{d' \neq d}
          \frac{
              \prod_{k'=1}^K
                  \Gamma(N_{d'k' \backslash dn} + \alpha)
          }{
              \Gamma(N_{d'} + K \alpha)
          }
\\
   &\qquad
      * \frac{\Gamma(\alpha)^{DK}}{\Gamma(K \alpha)^D}
        \frac{
          \Gamma(N_d-1 + K \alpha)
        }{
          \prod_{k'=1}^K
              \Gamma(N_{dk' \backslash dn} + \alpha)
        }
        \prod_{d' \neq d}
        \frac{
          \Gamma(N_{d'} + K \alpha)
        }{
          \prod_{k'=1}^K
              \Gamma(N_{d'k' \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 + K \alpha)
          \Gamma(N_d-1 + K \alpha)
      }
      \frac{
          \Gamma(N_d-1 + K \alpha)
      }{
          \prod_{k'=1}^K
              \Gamma(N_{dk' \backslash dn} + \alpha)
      }
\\
   &= \frac{
          N_{dk \backslash dn} + \alpha
      }{
          N_d-1 + K \alpha
      }
\tag{4.13}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 条件付き確率より、 z_{dn} 以外の潜在変数  \mathbf{Z}_{\backslash dn} を条件に移した式を立てる。
  • 2: 式(4.10)を用いて、分母分子を具体的な式に置き換える。

  \mathbf{Z} の周辺分布(分子)は式(4.10)であり、 \mathbf{Z}_{\backslash dn} の周辺分布(分母)は式(4.10)から単語  w_{dn} に関して取り除いた式である。

 \displaystyle
\begin{align}
p(z_{dn} = k, \mathbf{Z}_{\backslash dn} \mid \alpha)
   &= \prod_{d'=1}^D \left\{
          \frac{\Gamma(K \alpha)}{\Gamma(\alpha)^K}
          \frac{
              \prod_{k'=1}^K
                  \Gamma(N_{d'k'} + \alpha)
          }{
              \Gamma(N_{d'} + K \alpha)
          }
      \right\}
\tag{4.10}\\
p(\mathbf{Z}_{\backslash dn} \mid \alpha)
   &= \prod_{d'=1}^D \left\{
          \frac{\Gamma(K \alpha)}{\Gamma(\alpha)^K}
          \frac{
              \prod_{k'=1}^K
                  \Gamma(N_{d'k' \backslash dn} + \alpha)
          }{
              \Gamma(N_{d' \backslash dn} + K \alpha)
          }
      \right\}
\end{align}

 単語  w_{dn} のトピック  z_{dn} k のとき、 w_{dn} を含めない数  N_{dk \backslash dn} は、 w_{dn} を含めた数  N_{dk} から  w_{dn} の数  1 を引いた単語数となる。 k 以外のとき、 w_{dn} の数が元々含まれていないので、 N_{dk} である。また、文書  d や トピック  k 以外の単語数も変わらない。 N_{d \backslash dn} についても同様である。

 \displaystyle
\begin{aligned}
N_{dk \backslash dn}
   &= \begin{cases}
          N_{dk} - 1
             &\quad
                (z_{dn} = k) \\
          N_{dk}
             &\quad
                (z_{dn} \neq k)
      \end{cases}
\\
N_{d' \backslash dn}
   &= \begin{cases}
          N_{d'} - 1
             &\quad
                (d' = d) \\
          N_{d'}
             &\quad
                (d' \neq d)
      \end{cases}
\end{aligned}

 これを  N_{dk}, N_{d'} について解くと、次の関係が分かる。

 \displaystyle
\begin{aligned}
N_{dk}
   &= \begin{cases}
          N_{dk \backslash dn} + 1
             &\quad
                (z_{dn} = k) \\
          N_{dk \backslash dn}
             &\quad
                (z_{dn} \neq k)
      \end{cases}
\\
N_{d'}
   &= \begin{cases}
          N_{d' \backslash dn} + 1
             &\quad
                (d' = d) \\
          N_{d' \backslash dn}
             &\quad
                (d' \neq d)
      \end{cases}
\end{aligned}

  \mathbf{Z} の周辺分布の式について、 N_{d'k'} N_{d'k' \backslash dn} に置き換える。

 \displaystyle
\begin{aligned}
\prod_{k'=1}^K
    \Gamma(N_{dk'} + \alpha)
   &= \Gamma(N_{d1} + \alpha)
      * \cdots
      * \Gamma(N_{dk} + \alpha)
      * \cdots
      * \Gamma(N_{dK} + \alpha)
\\
   &= \Gamma(N_{d1 \backslash dn} + \alpha)
      * \cdots
      * \Gamma(N_{dk \backslash dn} + 1 + \alpha)
      * \cdots
      * \Gamma(N_{dK \backslash dn} + \alpha)
\\
   &= \Gamma(N_{dk \backslash dn} + 1 + \alpha)
      \prod_{k' \neq k}
          \Gamma(N_{dk' \backslash dn} + \alpha)
\end{aligned}

  z_{dn} = k のとき、 k' = 1, \dots, K のうち  k の項のみ形が異なるので、 \prod_{k=1}^K から取り出し、 k 以外の項の積を  \prod_{k' \neq k} で表す。
 正規化項を除く式全体を変形する。

 \displaystyle
\begin{aligned}
\prod_{d'=1}^D
    \frac{
        \prod_{k'=1}^K
            \Gamma(N_{d'k'} + \alpha)
    }{
        \Gamma(N_{d'} + K \alpha)
    }
   &= \frac{
          \prod_{k'=1}^K
              \Gamma(N_{1k'} + \alpha)
      }{
          \Gamma(N_1 + K \alpha)
      }
      * \cdots
      * \frac{
          \prod_{k'=1}^K
              \Gamma(N_{dk'} + \alpha)
        }{
          \Gamma(N_d + K \alpha)
        }
      * \cdots
      * \frac{
          \prod_{k'=1}^K
              \Gamma(N_{Dk'} + \alpha)
        }{
          \Gamma(N_D + K \alpha)
        }
\\
   &= \frac{
          \prod_{k'=1}^K
              \Gamma(N_{1k' \backslash dn} + \alpha)
      }{
          \Gamma(N_1 + K \alpha)
      }
      * \cdots
      * \frac{
          \Gamma(N_{dk' \backslash dn} + 1 + \alpha)
          \prod_{k' \neq k}
              \Gamma(N_{dk' \backslash dn} + \alpha)
        }{
          \Gamma(N_d + K \alpha)
        }
      * \cdots
      * \frac{
          \prod_{k'=1}^K
              \Gamma(N_{Dk' \backslash dn} + \alpha)
        }{
          \Gamma(N_D + K \alpha)
        }
\\
   &= \frac{
          \Gamma(N_{dk' \backslash dn} + 1 + \alpha)
          \prod_{k' \neq k}
              \Gamma(N_{dk' \backslash dn} + \alpha)
      }{
          \Gamma(N_d + K \alpha)
      }
      \prod_{d' \neq d}
          \frac{
              \prod_{k'=1}^K
                  \Gamma(N_{d'k' \backslash dn} + \alpha)
          }{
              \Gamma(N_{d'} + K \alpha)
          }
\end{aligned}

  z_{dn} = k のとき、 d' = 1, \dots, D のうち  d の項のみ形が異なるので、 \prod_{d=1}^D から取り出し、 d 以外の項の積を  \prod_{d' \neq d} で表す。

 同様に、 \mathbf{Z}_{\backslash dn} の周辺分布の式について、 N_{d' \backslash dn} N_{d'} に置き換える。

 \displaystyle
\begin{aligned}
\prod_{d'=1}^D
    \frac{
        \prod_{k'=1}^K
            \Gamma(N_{d'k' \backslash dn} + \alpha)
    }{
        \Gamma(N_{d' \backslash dn} + K \alpha)
    }
   &= \frac{
          \prod_{k'=1}^K
              \Gamma(N_{1k' \backslash dn} + \alpha)
      }{
          \Gamma(N_{1 \backslash dn} + K \alpha)
      }
      * \cdots
      * \frac{
            \prod_{k'=1}^K
                \Gamma(N_{dk' \backslash dn} + \alpha)
        }{
            \Gamma(N_{d \backslash dn} + K \alpha)
        }
      * \cdots
      * \frac{
            \prod_{k'=1}^K
                \Gamma(N_{Dk' \backslash dn} + \alpha)
        }{
            \Gamma(N_{D \backslash dn} + K \alpha)
        }
\\
   &= \frac{
          \prod_{k'=1}^K
              \Gamma(N_{1k' \backslash dn} + \alpha)
      }{
          \Gamma(N_1 + K \alpha)
      }
      * \cdots
      * \frac{
            \prod_{k'=1}^K
                \Gamma(N_{dk' \backslash dn} + \alpha)
        }{
            \Gamma(N_d-1  + K \alpha)
        }
      * \cdots
      * \frac{
            \prod_{k'=1}^K
                \Gamma(N_{Dk' \backslash dn} + \alpha)
        }{
            \Gamma(N_D + K \alpha)
        }
\\
   &= \frac{
          \prod_{k'=1}^K
              \Gamma(N_{dk' \backslash dn} + \alpha)
      }{
          \Gamma(N_d-1 + K \alpha)
      }
      \prod_{d' \neq d}
          \frac{
              \prod_{k'=1}^K
                  \Gamma(N_{d'k' \backslash dn} + \alpha)
          }{
              \Gamma(N_{d'} + K \alpha)
          }
\end{aligned}

 正規化項は  \prod_{d'=1}^D \frac{\Gamma(K \alpha)}{\Gamma(\alpha)^K} = \frac{\Gamma(K \alpha)^D}{\Gamma(\alpha)^{DK}} となる。

  • 3: ガンマ関数の性質  \Gamma(x + 1) = (x) \Gamma(x) より、項を変形する。
  • 4:  \prod_{k'=1}^K \Gamma(N_{dk' \backslash dn} + \alpha) = \Gamma(N_{dk \backslash dn} + \alpha) \prod_{k' \neq k} \Gamma(N_{dk' \backslash dn} + \alpha) なので、約分すると  d, k に関する項のみが残る。

  z_{dn} の事後周辺分布の式が得られた。

単語の事後周辺分布

  z_{dn} の条件付き分布の式(4.12)の後の項は、単語  w_{dn} 以外の文書集合  \mathbf{W}_{\backslash dn} と全単語のトピック集合  \mathbf{Z} が与えられた(条件とする)ときの単語  w_{dn} の事後分布である。
 同様に、 \mathbf{W} の周辺分布の式(4.11)を用いて求められる。

 \displaystyle
\begin{align}
p(w_{dn} \mid \mathbf{W}_{\backslash dn}, z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta)
   &= \frac{
          p(w_{dn}, \mathbf{W}_{\backslash dn} \mid z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta)
      }{
           p(\mathbf{W}_{\backslash dn} \mid \mathbf{Z}_{\backslash dn}, \beta)
      }
\\
   &= \frac{\Gamma(V \beta)^K}{\Gamma(\beta)^{KV}}
      \frac{
          \Gamma(N_{kw_{dn} \backslash dn} + 1 + \beta)
          \prod_{v \neq w_{dn}}
              \Gamma(N_{k'v \backslash dn} + \beta)
      }{
          \Gamma(N_{k \backslash dn} + 1 + V \beta)
      }
      \prod_{k' \neq k}
          \frac{
              \prod_{v=1}^V
                  \Gamma(N_{k'v \backslash dn} + \beta)
          }{
              \Gamma(N_{k' \backslash dn} + V \beta)
          }
\\
   &\qquad * 
      \frac{\Gamma(\beta)^{KV}}{\Gamma(V \beta)^K}
      \frac{
          \Gamma(N_{k \backslash dn} + V \beta)
      }{
          \prod_{v=1}^V
              \Gamma(N_{kv \backslash dn} + \beta)
      }
      \prod_{k' \neq k}
          \frac{
              \Gamma(N_{k' \backslash dn} + V \beta)
          }{
              \prod_{v=1}^V
                  \Gamma(N_{k'v \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} + V \beta)
          \Gamma(N_{k \backslash dn} + V \beta)
      }
      \frac{
          \Gamma(N_{k \backslash dn} + V \beta)
      }{
          \prod_{v=1}^V
              \Gamma(N_{kv \backslash dn} + \beta)
      }
\\
   &= \frac{
          N_{kw_{dn} \backslash dn} + \beta
      }{
          N_{k \backslash dn} + V \beta
      }
\tag{4.14}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 条件付き確率より、 w_{dn} 以外の観測変数  \mathbf{W}_{\backslash dn} を条件に移した式を立てる。
  • 2: 式(4.11)を用いて、分母分子の項を具体的な式に置き換える。

  \mathbf{W} の周辺分布(分子)は式(4.11)であり、 \mathbf{W}_{\backslash dn} の周辺分布(分母)は式(4.11)から単語  w_{dn} に関して取り除いた式である。

 \displaystyle
\begin{align}
p(w_{dn}, \mathbf{W}_{\backslash dn} \mid z_{dn} = k, \mathbf{Z}_{\backslash dn}, \beta)
   &= \prod_{k'=1}^K \left\{
          \frac{\Gamma(V \beta)}{\Gamma(\beta)^V}
          \frac{
              \prod_{v=1}^V
                  \Gamma(N_{k'v} + \beta)
          }{
              \Gamma(N_{k'} + V \beta)
          }
      \right\}
\tag{4.11}\\
p(\mathbf{W}_{\backslash dn} \mid \mathbf{Z}_{\backslash dn}, \beta)
   &= \prod_{k'=1}^K \left\{
          \frac{\Gamma(V \beta)}{\Gamma(\beta)^V}
          \frac{
              \prod_{v=1}^V
                  \Gamma(N_{k'v \backslash dn} + \beta)
          }{
              \Gamma(N_{k' \backslash dn} + V \beta)
          }
      \right\}
\end{align}

 単語  w_{dn} のトピック  z_{dn} k のとき、 w_{dn} を含めない(語彙  v = w_{dn} の)数  N_{kv \backslash dn}, N_{k \backslash dn} は、 w_{dn} 含めた数  N_{kv}, N_k から  w_{dn} の数  1 を引いた単語数となる。 k 以外のとき、 w_{dn} が含まれていないので、 N_{kv}, N_k である。また、トピック  k や語彙  w_{dn} 以外の補助情報数も変わらない。

 \displaystyle
\begin{aligned}
N_{kw_{dn} \backslash dn}
   &= \begin{cases}
          N_{kw_{dn}} - 1
             &\quad
                (z_{dn} = k) \\
          N_{kw_{dn}}
             &\quad
                (z_{dn} \neq k)
      \end{cases}
\\
N_{k \backslash dn}
   &= \begin{cases}
          N_k - 1
             &\quad
                (z_d = k) \\
          N_k
             &\quad
                (z_d \neq k)
      \end{cases}
\end{aligned}

 これを  N_{kv}, N_k についてそれぞれ解くと、次の関係が分かる。

 \displaystyle
\begin{aligned}
N_{kw_{dn}}
   &= \begin{cases}
          N_{kw_{dn} \backslash dn} + 1
             &\quad
                (z_{dn} = k) \\
          N_{kw_{dn} \backslash dn}
             &\quad
                (z_{dn} \neq k)
      \end{cases}
\\
N_k
   &= \begin{cases}
          N_{k \backslash dn} + N_d
             &\quad
                (z_d = k) \\
          N_{k \backslash dn}
             &\quad
                (z_d \neq k)
      \end{cases}
\end{aligned}

  \mathbf{W} の周辺分布の式について、 N_{kv}, N_k N_{kv \backslash dn}, N_{k \backslash dn} に置き換える。

 \displaystyle
\begin{aligned}
\prod_{v=1}^V
    \Gamma(N_{kv} + \beta)
   &= \Gamma(N_{k1} + \beta)
      * \cdots
      * \Gamma(N_{kw_{dn}} + \beta)
      * \cdots
      * \Gamma(N_{kV} + \beta)
\\
   &= \Gamma(N_{k1 \backslash dn} + \beta)
      * \cdots
      * \Gamma(N_{kw_{dn} \backslash dn} + 1 + \beta)
      * \cdots
      * \Gamma(N_{kV \backslash dn} + \beta)
\\
   &= \Gamma(N_{kw_{dn} \backslash dn} + 1 + \beta)
      \prod_{v \neq w_{dn}}
          \Gamma(N_{kv \backslash dn} + \beta)
\end{aligned}

  z_{dn} = k のとき、 v = 1, \dots, V のうち  v = w_{dn} の項のみ形が異なるので、 \prod_{v=1}^V から取り出し、語彙インデックスが  w_{dn} 以外の項の積を  \prod_{v \neq w_{dn}} で表す。
 正規化項を除く式全体を変形する。

 \displaystyle
\begin{aligned}
\prod_{k'=1}^K
    \frac{
        \prod_{v=1}^V
            \Gamma(N_{k'v} + \beta)
    }{
        \Gamma(N_{k'} + V \beta)
    }
   &= \frac{
          \prod_{v=1}^V
              \Gamma(N_{1v} + \beta)
      }{
          \Gamma(N_1 + V \beta)
      }
      * \cdots
      * \frac{
          \prod_{v=1}^V
              \Gamma(N_{kv} + \beta)
        }{
          \Gamma(N_k + V \beta)
        }
      * \cdots
      * \frac{
          \prod_{v=1}^V
              \Gamma(N_{Kv} + \beta)
        }{
          \Gamma(N_K + V \beta)
        }
\\
   &= \frac{
          \prod_{v=1}^V
              \Gamma(N_{1v \backslash dn} + \beta)
      }{
          \Gamma(N_{1 \backslash dn} + V \beta)
      }
      * \cdots
      * \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 + V \beta)
        }
      * \cdots
      * \frac{
          \prod_{v=1}^V
              \Gamma(N_{Kv \backslash dn} + \beta)
        }{
          \Gamma(N_{K \backslash dn} + V \beta)
        }
\\
   &= \frac{
          \Gamma(N_{kw_{dn}} + 1 + \beta)
          \prod_{v \neq w_{dn}}
              \Gamma(N_{k'v \backslash dn} + \beta)
      }{
          \Gamma(N_{k \backslash dn} + 1 + V \beta)
      }
      \prod_{k' \neq k}
          \frac{
              \prod_{v=1}^V
                  \Gamma(N_{k'v \backslash dn} + \beta)
          }{
              \Gamma(N_{k' \backslash dn} + V \beta)
          }
\end{aligned}

  z_{dn} = k のとき、 k' = 1, \dots, K のうち  k の項のみ形が異なるので、 \prod_{k=1}^K から取り出し、 k 以外の項の積を  \prod_{k' \neq k} で表す。

  \mathbf{W}_{\backslash dn} の周辺分布の式について、式の形を揃えるために、 k の項を  \prod_{k=1}^K から取り出しておく。

 \displaystyle
\prod_{k'=1}^K
    \frac{
        \prod_{v=1}^V
            \Gamma(N_{k'v \backslash dn} + \beta)
    }{
        \Gamma(N_{k' \backslash dn} + V \beta)
    }
    = \frac{
          \prod_{v=1}^V
              \Gamma(N_{kv \backslash dn} + \beta)
      }{
          \Gamma(N_{k \backslash dn} + V \beta)
      }
      \prod_{k' \neq k}
          \frac{
              \prod_{v=1}^V
                  \Gamma(N_{k'v \backslash dn} + \beta)
          }{
              \Gamma(N_{k' \backslash dn} + V \beta)
          }

 正規化項は  \prod_{k'=1}^K \frac{\Gamma(V \beta)}{\Gamma(\beta)^V} = \frac{\Gamma(V \beta)^K}{\Gamma(\beta)^{KV}} となる。

  • 3: ガンマ関数の性質  \Gamma(x + 1) = (x) \Gamma(x) より、項を変形する。
  • 4:  \prod_{v=1}^V \Gamma(N_{kv \backslash dn} + \beta) = \Gamma(N_{kw_{dn} \backslash dn} + \beta) \prod_{v \neq w_{dn}} \Gamma(N_{kv \backslash dn} + \beta) なので、約分すると  k, w_{dn} に関する項のみが残る。

  w_{dn} の事後周辺分布の式が得られた。

トピックのサンプリング確率

  z_{dn} の条件付き分布の式(4.12)に、 z_{dn} の事後分布の式(4.13)と  w_{dn} の事後分布の式(4.14)を代入する。

 \displaystyle
\begin{align}
p(z_{dn} = k \mid \mathbf{W}, \mathbf{Z}_{\backslash dn}, \alpha, \beta)
   &\propto
      \frac{
          N_{dk \backslash dn} + \alpha
      }{
          N_d-1 + K \alpha
      }
      \frac{
          N_{kw_{dn} \backslash dn} + \beta
      }{
          N_{k \backslash dn} + V \beta
      }
\\
   &\propto
      (N_{dk \backslash dn} + \alpha)
      \frac{
          N_{kw_{dn} \backslash dn} + \beta
      }{
          N_{k \backslash dn} + V \beta
      }
\tag{4.15}
\end{align}

  z_{dn} = k に影響しない項を省いた。
 他のトピックについても同様に計算でき、全てのトピックに関する総和で割ることで正規化できる。

 以上で、各単語のトピックのサンプリング式が得られた。

ハイパーパラメータの更新式の導出

 文書集合とトピック集合の周辺結合分布を最大化するハイパーパラメータを推定する。しかし、解析的に求められない。そこで、不動点反復法により周辺結合分布の下限を繰り返し更新することで最大化を行うためのハイパーパラメータの更新式を導出する。

周辺結合分布の下限の設定

  \mathbf{Z} の周辺分布の式(4.10')を

 \displaystyle
\begin{align}
p(\mathbf{Z} \mid \alpha)
   &= \prod_{d=1}^D \left\{
          \frac{\Gamma(K \alpha)}{\Gamma(N_d + K \alpha)}
          \prod_{k=1}^K
              \frac{\Gamma(N_{dk} + \alpha)}{\Gamma(\alpha)}
      \right\}
\tag{4.10'}\\
   &\geq
      \prod_{d=1}^D \left[
          \frac{\Gamma(K \alpha)}{\Gamma(N_d + K \alpha)}
          \exp \Bigl(
                  (K \alpha - K \alpha^{\mathrm{new}})
                  b_{\alpha}
          \Bigr)
          \prod_{k=1}^K \left\{
              \frac{\Gamma(N_{dk} + \alpha)}{\Gamma(\alpha)}
              \alpha^{-a_{\alpha}}
              (\alpha^{\mathrm{new}})^{a_{\alpha}}
          \right\}
      \right]
\end{align}

と変形し、また  \mathbf{W} の周辺分布の式(4.11')を

 \displaystyle
\begin{align}
p(\mathbf{W} \mid \mathbf{Z}, \beta)
   &= \prod_{k=1}^K \left\{
          \frac{\Gamma(V \beta)}{\Gamma(N_k + V \beta)}
          \prod_{v=1}^V
              \frac{\Gamma(N_{kv} + \beta)}{\Gamma(\beta)}
      \right\}
\tag{4.11'}\\
   &\geq
      \prod_{k=1}^K \left[
          \frac{\Gamma(V \beta)}{\Gamma(N_k + V \beta)}
          \exp \Bigl(
              (V \beta - V \beta^{\mathrm{new}})
              b_{\beta}
          \Bigr)
          \prod_{v=1}^V \left\{
              \frac{\Gamma(N_{kv} + \beta)}{\Gamma(\beta)}
              \beta^{-a_{\beta}}
              (\beta^{\mathrm{new}})^{a_{\beta}}
          \right\}
      \right]
\end{align}

と変形して、 \mathbf{W}, \mathbf{Z} の結合分布の式(4.9)を置き換え下限  G とおく。

 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z} \mid \alpha, \beta)
   &\geq
      \prod_{d=1}^D \Biggl[
          \frac{\Gamma(K \alpha)}{\Gamma(N_d + K \alpha)}
          \exp \Bigl(
              (K \alpha - K \alpha^{\mathrm{new}})
              b_{\alpha}
          \Bigr)
      \Biggr.
\\
   &\qquad \qquad * 
      \Biggl.
          \prod_{k=1}^K \left\{
              \frac{\Gamma(N_{dk} + \alpha)}{\Gamma(\alpha)}
              \alpha^{-a_{\alpha}}
              (\alpha^{\mathrm{new}})^{a_{\alpha}}
          \right\}
      \Biggr]
\\
   &\quad * 
      \prod_{k=1}^K \Biggl[
          \frac{\Gamma(V \beta)}{\Gamma(N_k + V \beta)}
          \exp \Bigl(
              (V \beta - V \beta^{\mathrm{new}})
              b_{\beta}
          \Bigr)
      \Biggr.
\\
   &\qquad \qquad * 
      \Biggl.
          \prod_{v=1}^V \left\{
              \frac{\Gamma(N_{kv} + \beta)}{\Gamma(\beta)}
              \beta^{-a_{\beta}}
              (\beta^{\mathrm{new}})^{a_{\beta}}
          \right\}
      \Biggr]
    \equiv
      G
\end{aligned}

 また、次のようにおいた。

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

途中式の途中式(クリックで展開)


  • 1: 対数ガンマとディガンマ関数の不等式を用いて、項を置き換える。

  \hat{x} \geq 0 に対して、 x \gt 0 n \geq 0 のとき、次の関係が成り立つ。

 \displaystyle
\begin{aligned}
\frac{\Gamma(x)}{\Gamma(n + x)}
   &\geq
      \frac{\Gamma(\hat{x})}{\Gamma(n + \hat{x})}
      \exp \Bigl(
          (\hat{x} - x) b
      \Bigr)
\\
b  &= \Psi(n + \hat{x})
      - \Psi(\hat{x})
\end{aligned}

 また、 \hat{x} \geq 0 に対して、 n \geq 1 のとき、次の関係が成り立つ。

 \displaystyle
\begin{aligned}
\frac{\Gamma(n + x)}{\Gamma(x)}
   &\geq
      \frac{\Gamma(n + \hat{x})}{\Gamma(\hat{x})}
      \hat{x}^{-a}
      x^a
\\
a  &= \Bigl(
          \Psi(n + \hat{x})
          - \Psi(\hat{x})
      \Bigr)
      \hat{x}
\end{aligned}

3  現在の値(中心)  \hat{x} \alpha, \beta、更新後の値(変数)  x \alpha^{\mathrm{new}}, \beta^{\mathrm{new}} と対応させて下限の式に変形する。


 現在の値を  \alpha, \beta、更新後の値を  \alpha^{\mathrm{new}}, \beta^{\mathrm{new}} とする(  a, b の添字の  \alpha, \beta は識別用で計算上の意味はない)。周辺尤度に関して  \alpha, \beta の周りでテイラー展開(近似)して下限として用いる。
 下限への変形については「対数ガンマ関数とディガンマ関数の不等式の導出【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。

  \mathbf{W}, \mathbf{Z} の結合分布の下限  G の対数をとり対数下限  F とおく。

 \displaystyle
\begin{aligned}
F  &= \log G
\\
   &= \sum_{d=1}^D \Biggl[
          \log \frac{\Gamma(K \alpha)}{\Gamma(N_d + K \alpha)}
          + (K \alpha - K \alpha^{\mathrm{new}})
            b_{\alpha}
      \Biggr.
\\
   &\qquad \qquad
      \Biggl.
          + \sum_{k=1}^K \left\{
              \log \frac{\Gamma(N_{dk} + \alpha)}{\Gamma(\alpha)}
              - a_{\alpha} \log \alpha
              + a_{\alpha} \log \alpha^{\mathrm{new}}
          \right\}
      \Biggr]
\\
   &\quad
      + \sum_{k=1}^K \Biggl[
          \log \frac{\Gamma(V \beta)}{\Gamma(N_k + V \beta)}
          + (V \beta - V \beta^{\mathrm{new}})
            b_{\beta}
      \Biggr.
\\
   &\qquad \qquad
      \Biggl.
          + \sum_{v=1}^V \left\{
              \log \frac{\Gamma(N_{kv} + \beta)}{\Gamma(\beta)}
              - a_{\beta} \log \beta
              + a_{\beta} \log \beta^{\mathrm{new}}
          \right\}
      \Biggr]
\end{aligned}

  \mathbf{W}, \mathbf{Z} の結合分布の対数下限の式が得られた。

トピック分布のハイパーパラメータ

  \mathbf{W}, \mathbf{Z} の結合分布の対数下限  F から  \alpha^{\mathrm{new}} に関する項を取り出し(無関係な項を定数  \mathrm{const.} にまとめ)関数  F(\alpha^{\mathrm{new}}) とおく。

 \displaystyle
F(\alpha^{\mathrm{new}})
    = \sum_{d=1}^D \left\{
          - K b_{\alpha} \alpha^{\mathrm{new}}
          + \sum_{k=1}^K
              a_{\alpha} \log \alpha^{\mathrm{new}}
      \right\}
      + \mathrm{const.}

 関数  F(\alpha^{\mathrm{new}}) \alpha^{\mathrm{new}} に関して微分する。

 \displaystyle
\begin{aligned}
\frac{\partial F(\alpha^{\mathrm{new}})}{\partial \alpha^{\mathrm{new}}}
   &= \frac{\partial}{\partial \alpha^{\mathrm{new}}} \left\{
          \sum_{d=1}^D \left\{
              - K b_{\alpha} \alpha^{\mathrm{new}}
              + \sum_{k=1}^K
                  a_{\alpha} \log \alpha^{\mathrm{new}}
          \right\}
          + \mathrm{const.}
      \right\}
\\
   &= \sum_{d=1}^D
          \frac{\partial}{\partial \alpha^{\mathrm{new}}} \Bigl\{
              - K b_{\alpha} \alpha^{\mathrm{new}}
          \Bigr\}
      + \sum_{d=1}^D \sum_{k=1}^K
          \frac{\partial}{\partial \alpha^{\mathrm{new}}} \Bigl\{
              a_{\alpha} \log \alpha^{\mathrm{new}}
        \Bigr\}
      + \frac{\partial \mathrm{const.}}{\partial \alpha^{\mathrm{new}}}
\\
   &= - \sum_{d=1}^D
          K b_{\alpha}
          \frac{\partial \alpha^{\mathrm{new}}}{\partial \alpha^{\mathrm{new}}}
      + \sum_{d=1}^D \sum_{k=1}^K
          a_{\alpha}
          \frac{\partial \log \alpha^{\mathrm{new}}}{\partial \alpha^{\mathrm{new}}}
      + 0
\\
   &= - \sum_{d=1}^D
          K b_{\alpha}
      + \sum_{d=1}^D \sum_{k=1}^K
          a_{\alpha}
          \frac{1}{\alpha^{\mathrm{new}}}
\end{aligned}

途中式の途中式(クリックで展開)


  • 1:  F の式全体の偏微分を考える。ただし、 \alpha^{\mathrm{new}} に関する微分なので、 \alpha は定数として扱う。
  • 2: 和の微分  \{f(x) + g(x)\}' = f'(x) + g'(x) より、項ごとの微分の和に分割する。
  • 3:  \alpha^{\mathrm{new}} の係数は  \frac{\partial}{\partial \alpha^{\mathrm{new}}} の外に出せる。
  • 4: 自然対数の微分は  \{\log x\}' = \frac{1}{x} である。

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

 \displaystyle
\begin{align}
&&
- \sum_{d=1}^D
    K b_{\alpha}
+ \frac{
      \sum_{d=1}^D \sum_{k=1}^K
          a_{\alpha}
  }{
      \alpha^{\mathrm{new}}
  }
   &= 0
\\
\Rightarrow &&
\alpha^{\mathrm{new}}
   &= \frac{
          \sum_{d=1}^D \sum_{k=1}^K
              a_{\alpha}
      }{
          \sum_{d=1}^D
              K b_{\alpha}
      }
\\
&&
   &= \frac{
          \sum_{d=1}^D \sum_{k=1}^K \Bigl(
              \Psi(N_{dk} + \alpha)
              - \Psi(\alpha)
          \Bigr)
          \alpha
      }{
          \sum_{d=1}^D
              K \Bigl(
                  \Psi(N_d + K \alpha)
                  - \Psi(K \alpha)
              \Bigr)
      }
\\
&&
   &= \alpha
      \frac{
          \sum_{d=1}^D \sum_{k=1}^K
              \Psi(D_k + \alpha)
          - D K \Psi(\alpha)
      }{
          \sum_{d=1}^D
              K \Psi(D + K \alpha)
          - D K \Psi(K \alpha)
      }
\tag{4.16}
\end{align}

途中式の途中式(クリックで展開)


  • 1:  \frac{\partial F(\alpha^{\mathrm{new}})}{\partial \alpha^{\mathrm{new}}} 0 とおく。
  • 2:  \alpha^{\mathrm{new}} について式を整理する。
  • 3:  a_{\alpha}, b_{\alpha} に式(7)を代入する。
  • 4: 括弧を展開する。

 不動点反復法によるハイパーパラメータの更新式が得られた。

  i 回目の更新において、 \alpha を更新前の値(  i-1 回目の更新値)  \alpha^{(i-1)} \alpha^{\mathrm{new}} を更新後の値(  i 回目の更新値)  \alpha^{(i)} とする。また、初期値は  \alpha^{(0)} とする。

 \displaystyle
\alpha^{(i)}
    = \alpha^{(i-1)}
      \frac{
          \sum_{d=1}^D \sum_{k=1}^K
              \Psi \Bigl(
                  N_{dk}^{(i-1)} + \alpha^{(i-1)}
              \Bigr)
              - D K
                \Psi \Bigl(
                  \alpha^{(i-1)}
                \Bigr)
      }{
          \sum_{d=1}^D
              K
              \Psi \Bigl(
                  N_d^{(i-1)} + K \alpha^{(i-1)}
              \Bigr)
              - D K
                \Psi \Bigl(
                  K \alpha^{(i-1)}
                \Bigr)
      }

  \alpha の更新式が得られた。

単語分布のハイパーパラメータ

  \mathbf{W}, \mathbf{Z} の結合分布の対数下限  F から  \beta^{\mathrm{new}} に関する項を取り出し関数  F(\beta^{\mathrm{new}}) とおく。

 \displaystyle
F(\beta^{\mathrm{new}})
    = \sum_{k=1}^K \left\{
          - V b_{\beta} \beta^{\mathrm{new}}
          + \sum_{v=1}^V
              a_{\beta} \log \beta^{\mathrm{new}}
      \right\}
      + \mathrm{const.}

 関数  F(\beta^{\mathrm{new}}) \beta^{\mathrm{new}} に関して微分する。

 \displaystyle
\begin{aligned}
\frac{\partial F(\beta^{\mathrm{new}})}{\partial \beta^{\mathrm{new}}}
   &= \frac{\partial}{\partial \beta^{\mathrm{new}}} \left\{
          \sum_{k=1}^K \left\{
              - V b_{\beta} \beta^{\mathrm{new}}
              + \sum_{v=1}^V
                  a_{\beta} \log \beta^{\mathrm{new}}
          \right\}
          + \mathrm{const.}
      \right\}
\\
   &= \sum_{k=1}^K
          \frac{\partial}{\partial \beta^{\mathrm{new}}} \Bigl\{
              - V b_{\beta} \beta^{\mathrm{new}}
          \Bigr\}
      + \sum_{k=1}^K \sum_{v=1}^V
          \frac{\partial}{\partial \beta^{\mathrm{new}}} \Bigl\{
              a_{\beta} \log \beta^{\mathrm{new}}
          \Bigr\}
      + \frac{\partial \mathrm{const.}}{\partial \beta^{\mathrm{new}}}
\\
   &= - \sum_{k=1}^K
          V b_{\beta}
          \frac{\partial \beta^{\mathrm{new}}}{\partial \beta^{\mathrm{new}}}
      + \sum_{k=1}^K \sum_{v=1}^V
          a_{\beta}
          \frac{\partial \log \beta^{\mathrm{new}}}{\partial \beta^{\mathrm{new}}}
      + 0
\\
   &= - \sum_{k=1}^K
          V b_{\beta}
      + \sum_{k=1}^K \sum_{v=1}^V
          a_{\beta}
          \frac{1}{\beta^{\mathrm{new}}}
\end{aligned}

途中式の途中式(クリックで展開)


  • 1:  F の式全体の偏微分を考える。ただし、 \beta^{\mathrm{new}} に関する微分なので、 \beta は定数として扱う。
  • 2-4: 和の微分より、項ごとの微分の和に分割して、それぞれ係数を  \frac{\partial}{\partial \beta^{\mathrm{new}}} の外に出して、微分する。

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

 \displaystyle
\begin{align}
&&
- \sum_{k=1}^K
    V b_{\beta}
+ \frac{
      \sum_{k=1}^K \sum_{v=1}^V
          a_{\beta}
  }{
      \beta^{\mathrm{new}}
  }
   &= 0
\\
\Rightarrow &&
\beta^{\mathrm{new}}
   &= \frac{
          \sum_{k=1}^K \sum_{v=1}^V
              a_{\beta}
      }{
          \sum_{k=1}^K
              V b_{\beta}
      }
\\
&&
   &= \frac{
          \sum_{k=1}^K \sum_{v=1}^V
              \Bigl(
                  \Psi(N_{kv} + \beta)
                  - \Psi(\beta)
              \Bigr)
              \beta
      }{
          \sum_{k=1}^K
              V \Bigl(
                  \Psi(N_k + V \beta)
                  - \Psi(V \beta)
              \Bigr)
      }
\\
&&
   &= \beta
      \frac{
          \sum_{k=1}^K \sum_{v=1}^V
              \Psi(N_{kv} + \beta)
          - K V \Psi(\beta)
      }{
          \sum_{k=1}^K
              V \Psi(N_k + V \beta)
          - K V \Psi(V \beta)
      }
\tag{4.17}
\end{align}

途中式の途中式(クリックで展開)


  • 1:  \frac{\partial F(\beta^{\mathrm{new}})}{\partial \beta^{\mathrm{new}}} 0 とおく。
  • 2:  \beta^{\mathrm{new}} について式を整理する。
  • 3:  a_{\beta}, b_{\beta} に式(7)を代入する。
  • 4: 括弧を展開する。

 不動点反復法によるハイパーパラメータの更新式が得られた。

  i 回目の更新において、 \beta を更新前の値(  i-1 回目の更新値)  \beta^{(i-1)} \beta^{\mathrm{new}} を更新後の値(  i 回目の更新値)  \beta^{(i)} とする。また、初期値は  \beta^{(0)} とする。

 \displaystyle
\beta^{(i)}
    = \beta^{(i-1)}
      \frac{
          \sum_{k=1}^K \sum_{v=1}^V
              \Psi \Bigl(
                  N_{kv}^{(i-1)} + \beta^{(i-1)}
              \Bigr)
          - K V
            \Psi \Bigl(
              \beta^{(i-1)}
            \Bigr)
      }{
          \sum_{k=1}^K
              V
              \Psi \Bigl(
                  N_k^{(i-1)} + V \beta^{(i-1)}
              \Bigr)
          - K V
            \Psi \Bigl(
              V \beta^{(i-1)}
            \Bigr)
      }

  \beta の更新式が得られた。

 以上で、トピック分布と単語分布のハイパーパラメータの更新式が得られた。

事後予測分布の導出

 最後は、文書集合とトピック集合の事後周辺分布を用いて、未知(新規)の単語とトピックの事後予測分布を導出する。

 既存の文書  d において新たに生成される(  N_d+1 番目の)単語(の語彙)を  w_d^{*}、トピックを  z_d^{*} で表す。

トピックの事後予測分布の設定

 トピック集合  \mathbf{Z} が与えられたときの文書  d の未知の単語  w_d^{*} のトピックの  z_d^{*} の予測分布を求める。

 \displaystyle
\begin{aligned}
p(z_d^{*} = k \mid \mathbf{Z}, \alpha)
   &= \int
          p(z_d^{*} = k, \boldsymbol{\theta}_d \mid \mathbf{Z}, \alpha)
      \mathrm{d} \boldsymbol{\theta}_d
\\
   &= \int
          p(z_d^{*} = k \mid \boldsymbol{\theta}_d)
          p(\boldsymbol{\theta}_d \mid \mathbf{Z}, \alpha)
      \mathrm{d} \boldsymbol{\theta}_d
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 観測(サンプリング)した潜在変数  \mathbf{Z} と事前分布のパラメータ  \alpha を条件とする未観測の潜在変数  z_d^{*} とパラメータ  \boldsymbol{\theta}_d の結合分布を  \boldsymbol{\theta}_d に関して周辺化した式を立てる。
  • 2: 変数  z_d^{*} とパラメータ  \boldsymbol{\theta}_d の項を分割する。

  p(\boldsymbol{\theta}_d \mid \mathbf{Z}, \alpha) は、 \mathbf{Z} が与えられたときの文書  d のトピック分布のパラメータ  \boldsymbol{\theta}_d の事後分布である。つまり、 p(z_d^{*} = k \mid \mathbf{Z}, \alpha) は、 \boldsymbol{\theta}_d の事後分布を用いたトピック  z_d^{*} の周辺分布である。

トピック分布のパラメータ

  z_d^{*} の予測分布の式は、 \mathbf{Z} の周辺分布の式(4.10)を用いて求められる。

 \displaystyle
\begin{aligned}
p(z_d^{*} = k \mid \mathbf{Z}, \alpha)
   &= \frac{
          p(z_d^{*} = k, \mathbf{Z} \mid \alpha)
      }{
          p(\mathbf{Z} \mid \alpha)
      }
\\
   &= \frac{\Gamma(K \alpha)^D}{\Gamma(\alpha)^{DK}}
      \frac{
          \Gamma(N_{dk} + 1 + \alpha)
          \prod_{k' \neq k}
              \Gamma(N_{dk'} + \alpha)
      }{
          \Gamma(N_d+1 + K \alpha)
      }
      \prod_{d' \neq d}
          \frac{
              \prod_{k'=1}^K
                  \Gamma(N_{d'k'} + \alpha)
          }{
              \Gamma(N_{d'} + K \alpha)
          }
\\
   &\qquad
      * \frac{\Gamma(\alpha)^{DK}}{\Gamma(K \alpha)^D}
        \frac{
          \Gamma(N_d + K \alpha)
        }{
          \prod_{k'=1}^K
              \Gamma(N_{dk'} + \alpha)
        }
        \prod_{d' \neq d}
        \frac{
          \Gamma(N_{d'} + K \alpha)
        }{
          \prod_{k'=1}^K
              \Gamma(N_{d'k'} + \alpha)
        }
\\
   &= \frac{
          (N_{dk} + \alpha)
          \Gamma(N_{dk} + \alpha)
          \prod_{k' \neq k}
              \Gamma(N_{dk'} + \alpha)
      }{
          (N_d + K \alpha)
          \Gamma(N_d + K \alpha)
      }
      \frac{
          \Gamma(N_d + K \alpha)
      }{
          \prod_{k'=1}^K
              \Gamma(N_{dk'} + \alpha)
      }
\\
   &= \frac{
          N_{dk} + \alpha
      }{
          N_d + K \alpha
      }
    \equiv
        \hat{\theta}_{dk}
\end{aligned}

 1つの単語  w_{dn} を除いた「トピックの事後周辺分布」のときと同様に、1つの単語  w_d^{*} を追加した場合を考えて、 \hat{\theta}_{dk} とおく。

 他のトピックについても同様に求められるので、 z_d^{*} の予測分布のパラメータは、次の  K 次元ベクトルになる。

 \displaystyle
\begin{aligned}
\hat{\boldsymbol{\theta}}_d
   &= (\hat{\theta}_{d1}, \hat{\theta}_{d2}, \cdots, \hat{\theta}_{dK})
\\
   &= \left(
          \frac{N_{d1} + \alpha}{N_d + K \alpha}, 
          \frac{N_{d2} + \alpha}{N_d + K \alpha}, 
          \cdots, 
          \frac{N_{dK} + \alpha}{N_d + K \alpha}
      \right)
\end{aligned}

 非負の分子の総和が分母に一致するので、カテゴリ分布のパラメータの条件を満たす。
 観測データ  \mathbf{Z} から推定したトピック分布のパラメータ  \mathbf{\theta}_d の推定値と言える。

単語の事後予測分布の設定

 文書集合  \mathbf{W} とトピック集合  \mathbf{Z}、未知の単語のトピック  z_d^{*} が与えられたときの未知の単語(の語彙)  w_d^{*} の予測分布を求める。

 \displaystyle
\begin{aligned}
p(w_d^{*} = v \mid z_d^{*} = k, \mathbf{W}, \mathbf{Z}, \beta)
   &= \int
          p(w_d^{*} = v, \boldsymbol{\phi}_k \mid z_d^{*} = k, \mathbf{W}, \mathbf{Z}, \beta)
      \mathrm{d} \boldsymbol{\phi}_k
\\
   &= \int
          p(w_d^{*} = v \mid z_d^{*} = k, \boldsymbol{\phi}_k)
          p(\boldsymbol{\phi}_k \mid \mathbf{W}, \mathbf{Z}, \beta)
      \mathrm{d} \boldsymbol{\phi}_k
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 観測(またはサンプリング)した変数  z_d^{*}, \mathbf{W}, \mathbf{Z} と事前分布のパラメータ  \beta を条件とする未観測の観測変数  w_d^{*} とパラメータ  \boldsymbol{\phi}_k の結合分布を  \boldsymbol{\phi}_k に関して周辺化した式を立てる。
  • 2: 変数  w_d^{*} とパラメータ  \boldsymbol{\phi}_k の項を分割する。

  p(\boldsymbol{\phi}_k \mid \mathbf{W}, \mathbf{Z}, \beta) は、 \mathbf{W}, \mathbf{Z} が与えられたときのトピック  k の単語分布のパラメータ  \boldsymbol{\phi}_k の事後分布である。つまり、 p(w_d^{*} = v \mid z_d^{*} = k, \mathbf{W}, \mathbf{Z}, \beta) は、 \boldsymbol{\phi}_k の事後分布を用いた単語  w_d^{*} の周辺分布である。

単語分布のパラメータ

  w_d^{*} の予測分布の式は、 \mathbf{W} の周辺分布の式(4.11)を用いて求められる。

 \displaystyle
\begin{aligned}
p(w_d^{*} = v \mid z_d^{*} = k, \mathbf{W}, \mathbf{Z}, \beta)
   &= \frac{
          p(w_d^{*} = v, \mathbf{W} \mid z_d^{*} = k, \mathbf{Z}, \beta)
      }{
          p(\mathbf{W} \mid \mathbf{Z}, \beta)
      }
\\
   &= \frac{\Gamma(V \beta)^K}{\Gamma(\beta)^{KV}}
      \frac{
          \Gamma(N_{kv}+1 + \beta)
          \prod_{v' \neq v}
              \Gamma(N_{kv'} + \beta)
      }{
          \Gamma(N_k+1 + V \beta)
      }
      \prod_{k' \neq k}
          \frac{
              \prod_{v'=1}^V
                  \Gamma(N_{k'v'} + \beta)
          }{
              \Gamma(N_{k'} + V \beta)
          }
\\
   &\qquad * 
      \frac{\Gamma(\beta)^{KV}}{\Gamma(V \beta)^K}
      \frac{
          \Gamma(N_k + V \beta)
      }{
          \prod_{v'=1}^V
              \Gamma(N_{kv'} + \beta)
      }
      \prod_{k' \neq k}
          \frac{
              \Gamma(N_{k'} + V \beta)
          }{
              \prod_{v'=1}^V
                  \Gamma(N_{k'v'} + \beta)
          }\
\\
   &= \frac{
          (N_{kv} + \beta)
          \Gamma(N_{kv} + \beta)
          \prod_{v' \neq v} \Gamma(N_{kv'} + \beta)
      }{
          (N_k + V \beta)
          \Gamma(N_k + V \beta)
      }
      \frac{
          \Gamma(N_k + V \beta)
      }{
          \prod_{v'=1}^V
              \Gamma(N_{kv'} + \beta)
      }
\\
   &= \frac{
          N_{kv} + \beta
      }{
          N_k + V \beta
      }
    \equiv
        \hat{\phi}_{kv}
\end{aligned}

 1つの単語  w_{dn} を除いた「単語の事後周辺分布」のときと同様に、1つの単語  w_d^{*} を追加した場合を考えて、 \hat{\phi}_{kv} とおく。

 他の語彙についても同様に求められるので、 w_d^{*} の予測分布のパラメータは、次の  V 次元ベクトルになる。

 \displaystyle
\begin{aligned}
\hat{\boldsymbol{\phi}}_k
   &= (\hat{\phi}_{k1}, \hat{\phi}_{k2}, \cdots, \hat{\phi}_{kV})
\\
   &= \left(
          \frac{N_{k1} + \beta}{N_k + V \beta}, 
          \frac{N_{k2} + \beta}{N_k + V \beta}, 
          \cdots, 
          \frac{N_{kV} + \beta}{N_k + V \beta}
      \right)
\end{aligned}

 非負の分子の総和が分母に一致するので、カテゴリ分布のパラメータの条件を満たす。
 観測データ  \mathbf{W}, \mathbf{Z} から推定した単語分布のパラメータ  \mathbf{\phi}_k の推定値と言える。

 以上で、各単語とトピックの事後予測分布の式が得られた。

 この記事では、一様なハイパーパラメータの場合のトピックモデルに対する崩壊型ギブスサンプリングによるパラメータの計算式を導出した。

参考書籍

おわりに

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

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

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

  • 2024.07.12:加筆修正の際に「多様なハイパーパラメータの場合」を別の記事として分割しました。

 記事の一部を独立させたのに文量は増えました。
 これまでは勉強会資料の名残で手元のノートはpdf化して持っていました。今回からはブログ記事を前提に作成しています。数式編では途中式の途中式を閉じるようにしたので、見た目上の文量は減っているはずで、サクっと読む分には読みやすくなっていると思いますがどうでしょうか。プログラム編では必要に応じてグラフをアニメ化してアルゴリズムを図で表現しようと試みます(予定)。

 8章の内容を理解するに当たってほんの少し論文を見ました(読んだとは言えないレベル)、必要に迫られ仕方なくでしたが。
 当初想定していたのはトピックモデルを用いた分析のことだったんだと思いますが、それはまるで手付かずです……私は英語がからっきしダメなのでトピックモデルの元論文なんかは全然読めず、目的っぽい数式を探してその周辺を機械翻訳にかけて読んでる風を装うのが精一杯です。
 和文で勉強できる有難さを噛み締めながら微力ではありますがこのブログが何かに貢献できればと思っています。

【次節の内容】

  • スクラッチ実装編

 一様なハイパーパラメータのトピックモデルの崩壊型ギブスサンプリングをプログラムで確認します。

www.anarchive-beta.com


  • 数式読解編

 多様なハイパーパラメータのトピックモデルの崩壊型ギブスサンプリングを数式で確認します。

www.anarchive-beta.com