からっぽのしょこ

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

4.1:トピックモデルの生成モデルの導出【青トピックモデルのノート】

はじめに

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

 この記事では、トピックモデルで登場する数式の行間を埋めます。

【前節の内容】

www.anarchive-beta.com

【他の節の内容】

www.anarchive-beta.com

【この節の内容】

4.1 トピックモデルの生成モデルの導出

 トピックモデル(topic model)の定義(仮定)を確認する。
 bag-of-words表現の文書データについては「2.1:トピックモデルの文書表現【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。

生成過程の設定

 まずは、トピックモデルの生成過程(generative process)を数式で確認する。アルゴリズムについては図4.1を参照のこと。

 文書数を  D、文書番号(インデックス)を  d \in \{1, 2, \dots, D\} とする。
 語彙数を  V、語彙番号を  v \in \{1, 2, \dots, V\} とする。
 トピック数を  K、トピック番号を  k \in \{1, 2, \dots, K\} とする。

 単語  w_{dn} が持つ(割り当てられた)トピックを  z_{dn} で表す。各単語のトピック  z_{dn} の値としてトピック番号  k をとることでその単語のトピックを表す。これを次のように書く。

 \displaystyle
z_{dn}
    \in
      \{1, 2, \cdots, K\}

 また、単語のトピック  z_{dn} k であることを明示的に  z_{dn} = k と書くこともある。
 文書  d N_d 個の単語のトピックを集合  \mathbf{z}_d として扱い、文書  d のトピック集合と呼ぶ。

 \displaystyle
\mathbf{z}_d
    = \{z_{d1}, z_{d2}, \cdots, z_{dN_d}\}

 文書ごとにトピック集合を持ち、 D 個の文書のトピック集合を集合  \mathbf{Z} として扱い、トピック集合と呼ぶ。

 \displaystyle
\mathbf{Z}
    = \{\mathbf{z}_1, \mathbf{z}_2, \cdots, \mathbf{z}_D\}

 トピックは観測できないデータであるため潜在変数や潜在トピックとも呼ばれる。

 文書  d の単語にトピック  k が生成される(割り当てられる)確率を  \theta_{dk} で表す。
 各トピックに対応する  K 個(全て)の生成確率をまとめて、 K 次元ベクトル  \boldsymbol{\theta}_d で表す。

 \displaystyle
\boldsymbol{\theta}_d
    = (\theta_{d1}, \theta_{d2}, \cdots, \theta_{dK})

  \boldsymbol{\theta}_d の各要素は確率なので、それぞれ非負の値であり、総和(全てのトピックに関する和)が1になる条件を満たす必要がある。

 \displaystyle
0 \leq \theta_{dk} \leq 1
,\ 
\sum_{k=1}^K \theta_{dk}
    = 1

  \boldsymbol{\theta}_d を文書  d のトピック分布のパラメータと呼び、カテゴリ分布のパラメータとして用いる。
 文書ごとにトピック分布を持ち、 D 個の文書のトピック分布のパラメータを集合  \boldsymbol{\Theta} として扱い、トピック分布のパラメータ集合と呼ぶ。

 \displaystyle
\boldsymbol{\Theta}
    = \{\boldsymbol{\theta}_1, \boldsymbol{\theta}_2, \cdots, \boldsymbol{\theta}_D\}


 また、カテゴリ分布のパラメータ  \boldsymbol{\theta}_d (  \boldsymbol{\Theta} の各要素)は、 \boldsymbol{\alpha} をパラメータとするディリクレ分布に従って独立に生成されると仮定する。

 \displaystyle
\boldsymbol{\theta}_d
    \sim
      \mathrm{Dirichlet}(\boldsymbol{\alpha})

 ディリクレ分布の確率変数は、カテゴリ分布のパラメータの条件(非負の値で総和が1になる値)を満たす。
  \boldsymbol{\alpha} K 次元ベクトルである。

 \displaystyle
\boldsymbol{\alpha}
    = (\alpha_1, \alpha_2, \cdots, \alpha_K)

 パラメータのパラメータをハイパーパラメータ(超パラメータ)と言い、 \boldsymbol{\alpha} をトピック分布のハイパーパラメータと呼ぶ。
  \boldsymbol{\alpha} の各要素は、非負の値の条件を満たす必要がある。

 \displaystyle
\alpha_k \gt 0

  \alpha_k \theta_{1k}, \theta_{2k}, \cdots, \theta_{Dk} に影響する。

 各単語のトピック  z_{dn} は、 \boldsymbol{\theta}_d をパラメータとするカテゴリ分布に従って独立に生成されると仮定する。

 \displaystyle
z_{dn}
    \sim
      \mathrm{Categorical}(\boldsymbol{\theta}_d)


 トピック  k の単語に対して語彙  v が生成される(出現する)確率を  \phi_{kv} で表す。
 各語彙に対応する  V 個(全て)の生成確率をまとめて、 V 次元ベクトル  \boldsymbol{\phi}_k で表す。

 \displaystyle
\boldsymbol{\phi}_k
    = (\phi_{k1}, \phi_{k2}, \cdots, \phi_{kV})

  \boldsymbol{\phi}_k の各要素は確率なので、それぞれ非負の値であり、総和(全ての語彙に関する和)が1になる条件を満たす必要がある。

 \displaystyle
0 \leq \phi_{kv} \leq 1
,\ 
\sum_{v=1}^V \phi_{kv}
    = 1

  \boldsymbol{\phi}_k をトピック  k の単語分布のパラメータと呼び、カテゴリ分布のパラメータとして用いる。(語意的には語彙分布と呼ぶ方が分かりやすいのかもしれない。)
 ある単語に割り当てられたトピック  z_{dn} の単語分布のパラメータを  \boldsymbol{\phi}_{z_{dn}}、ある単語  w_{dn} として出現した語彙の生成(出現)確率を  \phi_{kw_{dn}} と書くこともある。例えば、文書5の6番目の単語  w_{5,6} にトピック4が割り当てられた  z_{5,6} = 4 のとき、対応するパラメータは  \boldsymbol{\phi}_{z_{5,6}} = \boldsymbol{\phi}_4 であり、単語  w_{5,6} として語彙3が観測された(出現した)  w_{5,6} = 3 のとき、対応する確率は  \phi_{4,w_{5,6}} = \phi_{4,3} である。
 トピックごとに単語分布を持ち、 K 個のトピックの単語分布のパラメータを集合  \boldsymbol{\Phi} として扱い、単語分布のパラメータ集合と呼ぶ。

 \displaystyle
\boldsymbol{\Phi}
    = \{\boldsymbol{\phi}_1, \boldsymbol{\phi}_2, \cdots, \boldsymbol{\phi}_K\}


 また、各トピック分布のパラメータ  \boldsymbol{\phi}_k (  \boldsymbol{\Phi} の各要素)は、 \boldsymbol{\beta} をパラメータとするディリクレ分布に従って独立に生成されると仮定する。

 \displaystyle
\boldsymbol{\phi}_k
    \sim
      \mathrm{Dirichlet}(\boldsymbol{\beta})

 こちらもディリクレ分布の確率変数として定義されるので、カテゴリ分布のパラメータの条件を満たす。
  \boldsymbol{\beta} V 次元ベクトルである。

 \displaystyle
\boldsymbol{\beta}
    = (\beta_1, \beta_2, \cdots, \beta_V)

  \boldsymbol{\beta} を単語分布のハイパーパラメータと呼ぶ。
 こちらもディリクレ分布のパラメータとして定義されるので、 \boldsymbol{\beta} の各要素は、ディリクレ分布のパラメータの条件(非負の値)を満たす必要がある。

 \displaystyle
\beta_v \gt 0

  \beta_v \phi_{1v}, \phi_{2v}, \cdots, \phi_{Kv} に影響する。

 各単語  w_{dn} の語彙は、単語に割り当てられたトピックに応じた  \boldsymbol{\phi}_{z_{dn}} をパラメータとするカテゴリ分布に従って独立に生成されると仮定する。

 \displaystyle
w_{dn}
    \sim
      \mathrm{Categorical}(\boldsymbol{\phi}_{z_{dn}})


 以上で、トピックモデルの生成過程を確認した。生成過程を生成モデルとして定義して利用する。

数式での表記

 トピックモデル(4章)で用いる記号類を表にまとめる。

記号 意味 制約・関係性
 D 文書数
 d \in \{1, 2, \dots, D\} 文書インデックス
 V 語彙数(単語の種類数)  N \geq V
 v \in \{1, 2, \dots, V\} 語彙インデックス
 K トピック数
 k \in \{1, 2, \dots, K\} トピックインデックス
 N 全文書の単語数  N = \sum_{d=1}^D N_d = \sum_{v=1}^V N_v = \sum_{k=1}^K N_k
 N_d 文書  d の単語数  N_d = \sum_{v=1}^V N_{dv} = \sum_{k=1}^K N_{dk}
 N_{dv} 文書  d における語彙  v の単語数
 N_k トピック  k が割り当てられた単語数  N_k = \sum_{v=1}^V N_{kv} = \sum_{d=1}^D N_{dk}
 N_{kv} トピック  k が割り当てられた語彙  v の単語数
 N_{dk} 文書  d におけるトピック  k の単語数
 n \in \{1, 2, \dots, N_d\} 文書  d の単語インデックス
 \mathbf{W} = \{\mathbf{w}_1, \cdots, \mathbf{w}_d, \cdots, \mathbf{w}_D\} 文書集合
 \mathbf{w}_d = \{w_{d1}, \cdots, w_{dn}, \cdots, w_{dN_D}\} 文書  d の単語集合
 w_{dn} \in \{1, 2, \dots, V\} 文書  d n 番目の単語  w_{dn} \sim \mathrm{Cat}(\boldsymbol{\phi}_{z_{dn}})
 \mathbf{Z} = \{\mathbf{z}_1, \cdots, \mathbf{z}_d, \cdots, \mathbf{z}_D\} トピック集合
 \mathbf{z}_d = \{z_{d1}, \cdots, z_{dn}, \cdots, z_{dN_d}\} 文書  d のトピック集合
 z_{dn} \in \{1, 2, \dots, K \} 単語  w_{dn} のトピック  z_{dn} \sim \mathrm{Cat}(\boldsymbol{\theta}_d)
 \boldsymbol{\Theta} = \{\boldsymbol{\theta}_1, \cdots, \boldsymbol{\theta}_k, \cdots, \boldsymbol{\theta}_K\} トピック分布のパラメータ集合
 \boldsymbol{\theta}_d = (\theta_{d1}, \cdots, \theta_{dk}, \cdots, \theta_{dK}) 文書  d のトピック分布のパラメータ  \boldsymbol{\theta}_d \sim \mathrm{Dir}(\boldsymbol{\alpha})
 \theta_{dk} 文書  d におけるトピック  k の生成確率  \theta_{dk} \geq 0, \sum_{k=1}^K \theta_{dk} = 1
 \boldsymbol{\alpha} = (\alpha_1, \cdots, \alpha_k, \cdots, \alpha_K) トピック分布のハイパーパラメータ
 \alpha_k  \theta_{dk}\ (d = 1, \dots, D) に影響する値  \alpha_k \gt 0
 \boldsymbol{\Phi} = \{\boldsymbol{\phi}_1, \cdots, \boldsymbol{\phi}_k, \cdots, \boldsymbol{\phi}_K\} 単語分布のパラメータ集合
 \boldsymbol{\phi}_k = (\phi_{k1}, \cdots, \phi_{kv}, \cdots, \phi_{kV}) トピック  k の単語分布のパラメータ  \boldsymbol{\phi}_k \sim \mathrm{Dir}(\boldsymbol{\beta})
 \phi_{kv} トピック  k における語彙  v の生成確率  \phi_{kv} \geq 0, \sum_{v=1}^V \phi_{kv} = 1
 \boldsymbol{\beta} = (\beta_1, \cdots, \beta_v, \cdots, \beta_V) 単語分布のハイパーパラメータ
 \beta_v  \phi_{kv}\ (k = 1, \dots, K) に影響する値  \beta_v \gt 0
 \mathbf{q} = \{\mathbf{q}_{11}, \cdots, \mathbf{q}_{dn}, \cdots, \mathbf{q}_{DN_D}\} 負担率の集合
 \mathbf{q}_{dn} = (q_{dn1}, \cdots, q_{dnk}, \cdots, q_{dnK}) 単語  w_{dn} の負担率
 q_{dnk} 単語  w_{dn} がトピック  k である確率  q_{dnk} \geq 0, \sum_{k=1}^K q_{dnk} = 1

 ハイパーパラメータ  \boldsymbol{\alpha} が一様な(全て同じ)値の場合  \alpha_1 = \cdots = \alpha_K = \alpha はスカラ  \alpha で表す。
 同様に、ハイパーパラメータ  \boldsymbol{\beta} が一様な値の場合  \beta_1 = \cdots = \beta_v = \beta \beta と書く。

 以上の記号を用いて、トピックモデルやその推論アルゴリズムを定義する。

尤度関数の導出

 次は、トピックモデルにおける文書集合の尤度関数(likelihood function)を数式で確認する。パラメータが与えられたときのデータの生成確率(観測された全ての単語の同時確率)を尤度と呼ぶ。

事前分布なしの場合

 最尤推定(4.3節)では、事前分布を導入せずに、尤度関数のみを扱う。

 トピック分布のパラメータ  \boldsymbol{\Theta} と単語分布のパラメータ  \boldsymbol{\Phi} が与えられたときの文書集合  \mathbf{W} の生成確率  p(\mathbf{W} | \boldsymbol{\Theta}, \boldsymbol{\Phi}) を具体的な式に変形する。

 \displaystyle
\begin{aligned}
p(\mathbf{W} | \boldsymbol{\Theta}, \boldsymbol{\Phi})
   &= \prod_{d=1}^D
          p(\mathbf{w}_d | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\\
   &= \prod_{d=1}^D \prod_{n=1}^{N_d}
          p(w_{dn} | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\\
   &= \prod_{d=1}^D \prod_{n=1}^{N_d} \sum_{k=1}^K
          p(w_{dn}, z_{dn} = k | \boldsymbol{\theta}_d, \boldsymbol{\phi}_{z_{dn}})
\\
   &= \prod_{d=1}^D \prod_{n=1}^{N_d} \sum_{k=1}^K \Bigl\{
          p(z_{dn} = k | \boldsymbol{\theta}_d)
          p(w_{dn} | z_{dn} = k, \boldsymbol{\phi}_{z_{dn}})
      \Bigr\}
\\
   &= \prod_{d=1}^D \prod_{n=1}^{N_d} \sum_{k=1}^K \Bigl\{
          p(z_{dn} = k | \boldsymbol{\theta}_d)
          p(w_{dn} | \boldsymbol{\phi}_k)
      \Bigr\}
\\
   &= \prod_{d=1}^D \prod_{n=1}^{N_d} \sum_{k=1}^K
          \theta_{dk}
          \phi_{kw_{dn}}
\\
   &= \prod_{d=1}^D \prod_{v=1}^V
          \left\{
              \sum_{k=1}^K
                  \theta_{dk} \phi_{kv}
          \right\}^{N_{dv}}
\end{aligned}

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


  • 1:  D 個の文書は独立に生成されることから、文書集合の生成確率は、各文書の生成確率の積に分解できる。
 \displaystyle
\begin{aligned}
p(\mathbf{W} | \boldsymbol{\Theta}, \boldsymbol{\Phi})
   &= p(\mathbf{w}_1, \mathbf{w}_2, \cdots, \mathbf{w}_D | \boldsymbol{\Theta}, \boldsymbol{\Phi})
\\
   &= p(\mathbf{w}_1 | \boldsymbol{\Theta}, \boldsymbol{\Phi})
      * p(\mathbf{w}_2 | \boldsymbol{\Theta}, \boldsymbol{\Phi})
      * \cdots
      * p(\mathbf{w}_D | \boldsymbol{\Theta}, \boldsymbol{\Phi})
\\
   &= \prod_{d=1}^D
          p(\mathbf{w}_d | \boldsymbol{\Theta}, \boldsymbol{\Phi})
\end{aligned}

 また、各項の文書と依存関係のないトピック分布のパラメータを条件から省ける。

 \displaystyle
\begin{aligned}
p(\mathbf{w}_d | \boldsymbol{\Theta}, \boldsymbol{\Phi})
   &= p(\mathbf{w}_d | \boldsymbol{\theta}_1, \boldsymbol{\theta}_2, \cdots, \boldsymbol{\theta}_D, \boldsymbol{\Phi})
\\
   &= p(\mathbf{w}_d | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\end{aligned}
  • 2: 各文書(単語集合)の  N_d 個の単語は独立に生成されることから、単語集合の生成確率は、各単語の生成確率の積に分解できる。
 \displaystyle
\begin{aligned}
p(\mathbf{w}_d | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
   &= p(w_{d1}, w_{d2}, \cdots, w_{dN_d} | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\\
   &= p(w_{d1} | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
      * p(w_{d2} | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
      * \cdots
      * p(w_{dN_d} | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\\
   &= \prod_{n=1}^{N_d}
          p(w_{dn} | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\end{aligned}
  • 3: 各単語の生成確率について、周辺化されたトピック(潜在変数)  z_{dn} \in \{1, \dots, K\} を明示する。
 \displaystyle
\begin{aligned}
p(w_{dn} | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
   &= p(w_{dn}, z_{dn} = 1 | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
      + p(w_{dn}, z_{dn} = 2 | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\\
   &\qquad
      + \cdots
      + p(w_{dn}, z_{dn} = K | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\\
   &= \sum_{k=1}^K
          p(w_{dn}, z_{dn} = k | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\end{aligned}

 また、各項のトピック  z_{dn} と依存関係のない単語分布のパラメータを条件から省ける。

 \displaystyle
\begin{aligned}
p(w_{dn}, z_{dn} = k | \boldsymbol{\theta}_d, \boldsymbol{\Phi})
   &= p(w_{dn}, z_{dn} = k | \boldsymbol{\theta}_d, \boldsymbol{\phi}_1, \boldsymbol{\phi}_2, \cdots, \boldsymbol{\phi}_K)
\\
   &= p(w_{dn}, z_{dn} = k | \boldsymbol{\theta}_d, \boldsymbol{\phi}_{z_{dn}})
\end{aligned}

 単語の生成確率は、全てのトピックの可能性を考慮した値と言える。

  • 4:  w_{dn}, z_{dn} の依存関係(生成過程)に従い、条件付きの乗法定理  p(A, B | C) = p(A | B, C) p(B | C) より、項を分割する。
 \displaystyle
\begin{aligned}
p(w_{dn}, z_{dn} = k | \boldsymbol{\theta}_d, \boldsymbol{\phi}_{z_{dn}})
   &= p(z_{dn} = k | \boldsymbol{\theta}_d, \boldsymbol{\phi}_{z_{dn}})
      p(w_{dn} | z_{dn} = k, \boldsymbol{\theta}_d, \boldsymbol{\phi}_{z_{dn}})
\\
   &= p(z_{dn} = k | \boldsymbol{\theta}_d)
      p(w_{dn} | z_{dn} = k, \boldsymbol{\phi}_{z_{dn}})
\end{aligned}

  z_{dn}, \boldsymbol{\Phi} w_{dn}, \boldsymbol{\Theta} はそれぞれ依存関係がないので条件から省ける。

  • 5: 条件部分のトピックの表記について、 p(w_{dn} | z_{dn} = k, \boldsymbol{\phi}_{z_{dn}}) = p(w_{dn} | \boldsymbol{\phi}_k) で置き替える。
  • 6 各単語のトピック  z_{dn} と各単語の語彙  w_{dn} はそれぞれカテゴリ分布に従い生成されることから、 z_{dn} のトピックと  w_{dn} の語彙それぞれに関するパラメータが生成確率に対応する。
 \displaystyle
\begin{aligned}
p(z_{dn} = k | \boldsymbol{\theta}_d)
   &= \theta_{dk}
\\
p(w_{dn} | \boldsymbol{\phi}_k)
   &= \phi_{kw_{dn}}
\end{aligned}
  • 7: 各単語の語彙  w_{dn} = v と各文書での各語彙の出現回数  N_{dv} を用いて、文書番号  d と単語番号  n を用いた式(表現)から、語彙番号  v を用いた式(表現)に変換する。
 \displaystyle
\begin{aligned}
\prod_{n=1}^{N_d} \sum_{k=1}^K
    \theta_{dk} \phi_{kw_{dn}}
   &= \underbrace{
          \left\{
              \sum_{k=1}^K \theta_{dk} \phi_{kw_{d1}}
          \right\}
          * \left\{
              \sum_{k=1}^K \theta_{dk} \phi_{kw_{d2}}
            \right\}
          * \cdots
          * \left\{
              \sum_{k=1}^K \theta_{dk} \phi_{kw_{dN_d}}
            \right\}
      }_{N_d}
\\
   &= \overbrace{
          \underbrace{
              \left\{
                  \sum_{k=1}^K \theta_{dk} \phi_{k1}
              \right\}
              * \cdots
              * \left\{
                  \sum_{k=1}^K \theta_{dk} \phi_{k1}
                \right\}
          }_{N_{d1}}
          * \underbrace{
              \left\{
                  \sum_{k=1}^K \theta_{dk} \phi_{k2}
              \right\}
              * \cdots
              * \left\{
                  \sum_{k=1}^K \theta_{dk} \phi_{k2}
                \right\}
          }_{N_{d2}}
          * \cdots
          * \underbrace{
              \left\{
                  \sum_{k=1}^K \theta_{dk} \phi_{kV}
              \right\}
              * \cdots
              * \left\{
                  \sum_{k=1}^K \theta_{dk} \phi_{kV}
                \right\}
          }_{N_{dV}}
      }^{N_d}
\\
   &= \underbrace{
          \left\{
              \sum_{k=1}^K \theta_{dk} \phi_{k1}
          \right\}^{N_{d1}}
          * \left\{
              \sum_{k=1}^K \theta_{dk} \phi_{k2}
            \right\}^{N_{d2}}
          * \cdots
          * \left\{
              \sum_{k=1}^K \theta_{dk} \phi_{kV}
            \right\}^{N_{dV}}
      }_{V}
\\
   &= \prod_{v=1}^V
          \left\{
              \sum_{k=1}^K \theta_{dk} \phi_{kv}
          \right\}^{N_{dv}}
\end{aligned}

 各単語の語彙  w_{dn} = v に対応する  N_d 個の  \sum_{k=1}^K \theta_{dk} \phi_{k,\cdot} を、単語番号  n の順番に並んだ状態から、語彙番号  v の順番に並べ替えて語彙ごとにまとめている。


 トピック分布・単語分布のパラメータと語彙頻度を用いた式が得られた。

事前分布ありの場合

 変分ベイズ推定(4.4節)では、事前分布を導入して、尤度関数のパラメータを周辺化した周辺尤度関数(marginal likelihood function)として扱う。ただし、こちらの式は使わない。

 トピック分布のパラメータ  \boldsymbol{\Theta} とハイパーパラメータ  \boldsymbol{\alpha}、単語分布のパラメータ  \boldsymbol{\Phi} とハイパーパラメータ  \boldsymbol{\beta} が与えられたときの  \boldsymbol{\Theta}, \boldsymbol{\Phi} を周辺化した文書集合  \mathbf{W} の生成確率  p(\mathbf{W} | \boldsymbol{\alpha}, \boldsymbol{\beta}) を変形する。

 \displaystyle
\begin{aligned}
p(\mathbf{W} | \boldsymbol{\alpha}, \boldsymbol{\beta})
   &= \iint \sum_{\mathbf{Z}}
          p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
      \mathrm{d} \boldsymbol{\Theta} \mathrm{d} \boldsymbol{\Phi}
\\
   &= \iint
          \sum_{\mathbf{Z}} \Bigl\{
              p(\mathbf{Z} | \boldsymbol{\Theta})
              p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
          \Bigr\}
          p(\boldsymbol{\Theta} | \boldsymbol{\alpha})
          p(\boldsymbol{\Phi} | \boldsymbol{\beta})
      \mathrm{d} \boldsymbol{\Theta} \mathrm{d} \boldsymbol{\Phi}
\\
   &= \iint
          \prod_{d=1}^D \left[
              \sum_{\mathbf{z}_d} \Bigl\{
                  p(\mathbf{z}_d | \boldsymbol{\theta}_d)
                  p(\mathbf{w}_d | \mathbf{z}_d, \boldsymbol{\Phi})
              \Bigr\}
              p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
          \right]
          \left\{
              \prod_{k=1}^K
                  p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
          \right\}
      \mathrm{d} \boldsymbol{\Theta} \mathrm{d} \boldsymbol{\Phi}
\\
   &= \iint
          \prod_{d=1}^D \left[
              \prod_{n=1}^{N_d} \sum_{z_{dn}=1}^K \Bigl\{
                  p(z_{dn} | \boldsymbol{\theta}_d)
                  p(w_{dn} | z_{dn}, \boldsymbol{\phi}_{z_{dn}})
              \Bigr\}
              p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
          \right]
          \left\{
              \prod_{k=1}^K
                  p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
          \right\}
      \mathrm{d} \boldsymbol{\Theta} \mathrm{d} \boldsymbol{\Phi}
\\
   &= \iint
          \prod_{d=1}^D \left[
              \prod_{n=1}^{N_d} \sum_{k=1}^K \Bigl\{
                  p(z_{dn} = k | \boldsymbol{\theta}_d)
                  p(w_{dn} | z_{dn} = k, \boldsymbol{\phi}_{z_{dn}})
              \Bigr\}
              p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
          \right]
          \left\{
              \prod_{k=1}^K
                  p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
          \right\}
      \mathrm{d} \boldsymbol{\Theta} \mathrm{d} \boldsymbol{\Phi}
\\
   &= \iint
          \prod_{d=1}^D \left[
              \prod_{n=1}^{N_d} \sum_{k=1}^K \Bigl\{
                  p(z_{dn} = k | \boldsymbol{\theta}_d)
                  p(w_{dn} | \boldsymbol{\phi}_k)
              \Bigr\}
              p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
          \right]
          \left\{
              \prod_{k=1}^K
                  p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
          \right\}
      \mathrm{d} \boldsymbol{\Theta} \mathrm{d} \boldsymbol{\Phi}
\end{aligned}

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


  • 1: 周辺化されたパラメータ  \boldsymbol{\Theta}, \boldsymbol{\Phi} とトピック集合  \mathbf{Z} を明示する。各単語に対する全てのトピックに関する和をまとめて  \sum_{\mathbf{Z}} \equiv \sum_{\mathbf{z}_1}, \cdots, \sum_{\mathbf{z}_D} \sum_{\mathbf{z}_d} \equiv \sum_{z_{d1}=1}^K \cdots \sum_{z_{dN_d}=1}^K で表す。
  • 2:  \mathbf{W}, \mathbf{Z}, \boldsymbol{\theta}, \boldsymbol{\Phi} の依存関係に従い、項を分割する。
 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\theta}, \boldsymbol{\Phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
   &= p(\mathbf{W}, \mathbf{Z} | \boldsymbol{\theta}, \boldsymbol{\Phi}, \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\theta}, \boldsymbol{\Phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\theta}, \boldsymbol{\Phi}, \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\mathbf{Z} | \boldsymbol{\theta}, \boldsymbol{\Phi}, \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\theta} | \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\Phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} | \boldsymbol{\theta})
      p(\boldsymbol{\theta} | \boldsymbol{\alpha})
      p(\boldsymbol{\Phi} | \boldsymbol{\beta})
\end{aligned}

 確率変数と依存関係がない場合は条件から省ける。より詳しくは「生成モデルの導出」で確認する。

  • 3: 文書集合、(文書単位の)トピック集合の生成確率をそれぞれ文書ごとの生成確率の積に分解する。
  • 3:  D 個のトピック分布のパラメータ、 K 個の単語分布のパラメータは独立に生成されることから、パラメータ集合の生成確率は、各パラメータの生成確率の積に分解できる。
  • 4: 単語集合、(単語単位の)トピック集合の生成確率を各単語の生成確率の積に分解する。
  • 5: 各文書のトピックについてトピック番号を明示する。
  • 6: 条件部分のトピックの表記について、文書のトピック  z_{dn} を用いた表記から、トピック番号  k を用いた表記に変更する。

 この式は、積分の中に総和があり簡単に計算できない。そこで変分ベイズ推定では、イェンゼンの不等式を用いて推定を行う。

生成モデルの導出

 続いて、トピックモデルの生成モデル(generative model)を数式で確認する。文書集合やパラメータを全て確率変数とみなした同時分布(結合分布)を生成モデルと呼ぶ。

事前分布なしの場合

 先に、事前分布を含めない場合を考える。ただし以降の節では、こちらの式は使わない。

 変数  \mathbf{W} と潜在変数  \mathbf{Z}、パラメータ  \boldsymbol{\Theta}, \boldsymbol{\Phi} をそれぞれ確率変数として、同時分布を依存関係(生成過程)に従って分割する。

 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} | \boldsymbol{\Theta})
      p(\boldsymbol{\Theta})
      p(\boldsymbol{\Phi})
\\
   &= \left[
          \prod_{d=1}^D
              p(\mathbf{w}_d | \mathbf{z}_d, \boldsymbol{\Phi})
              p(\mathbf{z}_d | \boldsymbol{\theta}_d)
              p(\boldsymbol{\theta}_d)
      \right]
      \prod_{k=1}^K
          p(\boldsymbol{\phi}_k)
\\
   &= \left[
          \prod_{d=1}^D
          \left\{
              \prod_{n=1}^{N_d}
                  p(w_{dn} | z_{dn}, \boldsymbol{\phi}_{z_{dn}})
                  p(z_{dn} | \boldsymbol{\theta}_d)
          \right\}
          p(\boldsymbol{\theta}_d)
      \right]
      \prod_{k=1}^K
          p(\boldsymbol{\phi}_k)
\end{aligned}

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


  • 1:  \mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} の依存関係に従い、項を分割する。

 乗法定理  p(A, B) = p(A | B) p(B) より、パラメータを分割する。

 \displaystyle
p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})
    = p(\mathbf{W}, \mathbf{Z} | \boldsymbol{\Theta}, \boldsymbol{\Phi})
      p(\boldsymbol{\Theta}, \boldsymbol{\Phi})

 さらに前の項から、条件付きの乗法定理より、潜在変数を分割する。

 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z} | \boldsymbol{\Theta}, \boldsymbol{\Phi})
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})
      p(\mathbf{Z} | \boldsymbol{\Theta}, \boldsymbol{\Phi})
\\
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} | \boldsymbol{\Theta})
\end{aligned}

  \mathbf{W}, \boldsymbol{\Theta} \mathbf{Z}, \boldsymbol{\Phi} はそれぞれ依存関係がないので条件から省ける。
 後の項の  \boldsymbol{\Theta}, \boldsymbol{\Phi} は無関係なので分割する。

 \displaystyle
p(\boldsymbol{\Theta}, \boldsymbol{\Phi})
    = p(\boldsymbol{\Theta})
      p(\boldsymbol{\Phi})
  • 2: 文書集合、トピック集合、トピック分布のパラメータ集合の生成確率をそれぞれ文書ごとの生成確率の積に分解する。
  • 2: 単語分布のパラメータ集合の生成確率をトピックごとの生成確率の積に分解する。
  • 3: 単語集合、トピック集合の生成確率をそれぞれ単語ごとの生成確率の積に分解する。

 単語レベルに項を分解した。

事前分布ありの場合

 変分ベイズ推定(4.4節)と周辺化ギブスサンプリング(4.5節)では、事前分布を導入する。

 変数  \mathbf{W} と潜在変数  \mathbf{Z}、パラメータ  \boldsymbol{\Theta}, \boldsymbol{\Phi}、ハイパーパラメータ  \boldsymbol{\alpha}, \boldsymbol{\beta} をそれぞれ確率変数として、同時分布を依存関係(生成過程)に従って分割する。

 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi}, \boldsymbol{\alpha}, \boldsymbol{\beta})
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} | \boldsymbol{\Theta})
      p(\boldsymbol{\Theta} | \boldsymbol{\alpha})
      p(\boldsymbol{\alpha})
      p(\boldsymbol{\Phi} | \boldsymbol{\beta})
      p(\boldsymbol{\beta})
\\
   &= \left[
          \prod_{d=1}^D
              p(\mathbf{W}_d | \mathbf{z}_d, \boldsymbol{\Phi})
              p(\mathbf{z}_d | \boldsymbol{\theta}_d)
              p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
      \right]
      p(\boldsymbol{\alpha})
      \left\{
          \prod_{k=1}^K
              p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
      \right\}
      p(\boldsymbol{\beta})
\\
   &= \left[
          \prod_{d=1}^D
          \left\{
              \prod_{n=1}^{N_d}
                  p(w_{dn} | z_{dn}, \boldsymbol{\phi}_{z_{dn}})
                  p(z_{dn} | \boldsymbol{\theta}_d)
          \right\}
          p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
      \right]
      p(\boldsymbol{\alpha})
      \left\{
          \prod_{k=1}^K
              p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
      \right\}
      p(\boldsymbol{\beta})
\end{aligned}

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


  • 1:  \mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi}, \boldsymbol{\alpha}, \boldsymbol{\beta} の依存関係に従い、項を分割する。

 乗法定理より、ハイパーパラメータとパラメータを分割する。

 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi}, \boldsymbol{\alpha}, \boldsymbol{\beta})
   &= p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\alpha}, \boldsymbol{\beta})
\\
   &= p(\mathbf{W}, \mathbf{Z} | \boldsymbol{\Theta}, \boldsymbol{\Phi}, \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\Theta}, \boldsymbol{\Phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\alpha}, \boldsymbol{\beta})
\\
   &= p(\mathbf{W}, \mathbf{Z} | \boldsymbol{\Theta}, \boldsymbol{\Phi})
      p(\boldsymbol{\Theta}, \boldsymbol{\Phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\alpha}, \boldsymbol{\beta})
\end{aligned}

 さらに、1つ目の項を「事前分布なしの場合」と同様にして、項を分割する。

 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z} | \boldsymbol{\Theta}, \boldsymbol{\Phi})
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})
      p(\mathbf{Z} | \boldsymbol{\Theta}, \boldsymbol{\Phi})
\\
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} | \boldsymbol{\Theta})
\end{aligned}

 2つ目の項は、 \boldsymbol{\Theta}, \boldsymbol{\Phi} が無関係なので分割する。

 \displaystyle
\begin{aligned}
p(\boldsymbol{\Theta}, \boldsymbol{\Phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
   &= p(\boldsymbol{\Theta} | \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\Phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
   &= p(\boldsymbol{\Theta} | \boldsymbol{\alpha})
      p(\boldsymbol{\Phi} | \boldsymbol{\beta})
\end{aligned}

 3つ目の項は、 \boldsymbol{\alpha}, \boldsymbol{\beta} が無関係なので分割する。

 \displaystyle
p(\boldsymbol{\alpha}, \boldsymbol{\beta})
    = p(\boldsymbol{\alpha})
      p(\boldsymbol{\beta})

 確率変数と依存関係のない条件を省く。

  • 2-3: 「事前分布なしの場合」のときと同様にして、文書集合、トピック集合、トピック分布のパラメータの項と単語分布のパラメータの項をそれぞれ分解する。

 この式自体が変数やパラメータ間の依存関係を表している。

グラフィカルモデル

 最後は、トピックモデルの生成モデルをグラフィカルモデル表現(graphical model representation)で確認する。グラフィカルモデルについては4.2節(図4.3)を参照のこと。

事前分布なしの場合

 最尤推定(4.3節)では、こちらのモデルが対応する。

 事前分布を設定しない場合のトピックモデルの生成モデルは、次の式に分解できた。

 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} | \boldsymbol{\Theta})
      p(\boldsymbol{\Theta})
      p(\boldsymbol{\Phi})
\\
   &= \left[
          \prod_{d=1}^D
          \left\{
              \prod_{n=1}^{N_d}
                  p(w_{dn} | z_{dn}, \boldsymbol{\phi}_{z_{dn}})
                  p(z_{dn} | \boldsymbol{\theta}_d)
          \right\}
          p(\boldsymbol{\theta}_d)
      \right]
      \prod_{k=1}^K
          p(\boldsymbol{\phi}_k)
\end{aligned}

 この式をグラフィカルモデルにすると、次の図になる。

トピックモデルのグラフィカルモデル:事前分布なし

 「  \boldsymbol{\theta}_d \to z_{dn} 」が、各文書のトピック分布  p(z_{dn} | \boldsymbol{\theta}_d) に対応し、トピック分布(のパラメータ)に従って各単語のトピック  z_{dn} が生成されることを示している。
 「  z_{dn} \to w_{dn} 」と「  \boldsymbol{\phi}_k \to w_{dn} 」が、各トピックの単語分布  p(w_{dn} | \boldsymbol{\phi}_k) に対応し、単語分布(のパラメータ)に従って各単語(の語彙)  w_{dn} が生成されることを示している。
 「  [N_d] 」が、 \prod_{n=1}^{N_d} に対応し、 N_d 個のトピック  z_{dn} と単語  w_{dn} が繰り返し生成されることを示している。
 「  [D] 」が、 \prod_{d=1}^D に対応し、 D 個のトピック集合  \mathbf{z}_d と文書  \mathbf{w}_d、またトピック分布(のパラメータ)  \boldsymbol{\theta}_d が繰り返し生成されることを示している。
 「  [K] 」が、 \prod_{k=1}^K に対応し、 K 個の単語分布(のパラメータ)  \boldsymbol{\phi}_k が繰り返し生成されることを示している。

事前分布ありの場合

 変分ベイズ推定(4.4節)と周辺化ギブスサンプリング(4.5節)では、こちらのモデルが対応する。

 事前分布を設定する場合は、次の式になった。

 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi}, \boldsymbol{\alpha}, \boldsymbol{\beta})
   &= p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} | \boldsymbol{\Theta})
      p(\boldsymbol{\Theta} | \boldsymbol{\alpha})
      p(\boldsymbol{\alpha})
      p(\boldsymbol{\Phi} | \boldsymbol{\beta})
      p(\boldsymbol{\beta})
\\
   &= \left[
          \prod_{d=1}^D
          \left\{
              \prod_{n=1}^{N_d}
                  p(w_{dn} | z_{dn}, \boldsymbol{\phi}_{z_{dn}})
                  p(z_{dn} | \boldsymbol{\theta}_d)
          \right\}
          p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
      \right]
      p(\boldsymbol{\alpha})
      \left\{
          \prod_{k=1}^K
              p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
      \right\}
      p(\boldsymbol{\beta})
\end{aligned}

 この式をグラフィカルモデルにすると、次の図になる。

トピックモデルのグラフィカルモデル:事前分布あり

 「  \boldsymbol{\alpha} \to \boldsymbol{\theta}_d 」が、トピック分布のパラメータの事前分布  p(\boldsymbol{\theta}_d | \boldsymbol{\alpha}) に対応し、事前分布(のパラメータ)に従ってパラメータ  \boldsymbol{\theta}_d が生成されることを示している。
 「  \boldsymbol{\beta} \to \boldsymbol{\phi}_k 」が、単語分布のパラメータの事前分布  p(\boldsymbol{\phi}_k | \boldsymbol{\beta}) に対応し、事前分布(のパラメータ)に従ってパラメータ  \boldsymbol{\phi}_k が生成されることを示している。

 この記事では、トピックモデルで用いる記号や定義を確認した。次の記事では、生成モデルを実装して、各種アルゴリズムに用いる人工データを作成する。

参考書籍

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

おわりに

 漸くトピックモデルにまで辿り着きました!

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

  • 2024.06.02:加筆修正しました。グラフィカルモデルについては、それぞれモデルの記事に移行し、作図コードはGitHubでの管理にしました。

 今までは混合ユニグラムモデルから少し複雑になったというなんとなくな認識でしたが、仮定の違いが同時分布の式やパラメータの計算式へどう影響するのかを具体的に認識できました。特に、式を単語のレベルで扱いときと語彙のレベルで扱いたいときの変形が分かったのが今回の収穫です。
 理解が進んだので、(一部の内容を分割したのに)文量も増えました。

【次節の内容】

  • スクラッチ実装編

www.anarchive-beta.com


  • 数式読解編

 トピックモデルに対する最尤推定を数式で確認します。

www.anarchive-beta.com