からっぽのしょこ

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

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

はじめに

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

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

【前節の内容】

www.anarchive-beta.com

【他の節の内容】

www.anarchive-beta.com

【この節の内容】

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

 トピックモデル(topic model)の定義(仮定)を確認する。
 文書集合(語彙頻度データ)については「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, \dots, 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} はディリクレ分布のパラメータなので、各要素は非負の値の条件を満たす必要がある。

 \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} の各要素は、ディリクレ分布のパラメータの条件(非負の値)を満たす必要がある。

 \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章)や拡張トピックモデル(5章)で用いる記号類を表にまとめる。

記号 意味 制約・関係性
 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_{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_{dk} 文書  d におけるトピック  k の単語数
 N_{kv} トピック  k における語彙  v の単語数
 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}_d, \cdots, \boldsymbol{\theta}_D\} トピック分布のパラメータ集合
 \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}, \boldsymbol{\beta} が一様な(全て同じ)値の場合  \alpha_1 = \cdots = \alpha_K = \alpha \beta_1 = \cdots = \beta_v = \beta はそれぞれスカラ  \alpha, \beta で表す。

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

尤度関数の導出

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

尤度の場合

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

 パラメータ  \boldsymbol{\Theta}, \boldsymbol{\Phi} が与えられた(条件とする)ときの観測データ  \mathbf{W} の生成確率  p(\mathbf{W} \mid \boldsymbol{\Theta}, \boldsymbol{\Phi}) は、生成過程(依存関係)に従い次のように変形できる。

 \displaystyle
\begin{aligned}
p(\mathbf{W} \mid \boldsymbol{\Theta}, \boldsymbol{\Phi})
   &= \prod_{d=1}^D
          p(\mathbf{w}_d \mid \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\\
   &= \prod_{d=1}^D \prod_{n=1}^{N_d}
          p(w_{dn} \mid \boldsymbol{\theta}_d, \boldsymbol{\Phi})
\\
   &= \prod_{d=1}^D \prod_{n=1}^{N_d} \sum_{k=1}^K
          p(w_{dn}, z_{dn} = k \mid \boldsymbol{\theta}_d, \boldsymbol{\phi}_k)
\\
   &= \prod_{d=1}^D \prod_{n=1}^{N_d} \sum_{k=1}^K \Bigl\{
          p(z_{dn} = k \mid \boldsymbol{\theta}_d)
          p(w_{dn} \mid z_{dn} = k, \boldsymbol{\phi}_k)
      \Bigr\}
\end{aligned}

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


 依存関係のない場合は条件付き独立  p(A, B \mid C) = p(A \mid C) p(B \mid C)、依存関係のある場合は条件付きの乗法定理  p(A, B \mid C) = p(A \mid B, C) p(B \mid C) により、式を変形していく。

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

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

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

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

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

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

  • 4: 依存関係のある  w_{dn}, z_{dn} の項を分割する。
 \displaystyle
\begin{aligned}
p(w_{dn}, z_{dn} = k \mid \boldsymbol{\theta}_d, \boldsymbol{\phi}_k)
   &= p(z_{dn} = k \mid \boldsymbol{\theta}_d, \boldsymbol{\phi}_k)
      p(w_{dn} \mid z_{dn} = k, \boldsymbol{\theta}_d, \boldsymbol{\phi}_k)
\\
   &= p(z_{dn} = k \mid \boldsymbol{\theta}_d)
      p(w_{dn} \mid z_{dn} = k, \boldsymbol{\phi}_k)
\end{aligned}

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


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

 \displaystyle
\begin{aligned}
p(\mathbf{W} \mid \boldsymbol{\Theta}, \boldsymbol{\Phi})
   &= \prod_{d=1}^D \prod_{n=1}^{N_d} \sum_{k=1}^K \Bigl\{
          \theta_{dk}
          \phi_{kw_{dn}}
      \Bigr\}
\\
   &= \prod_{d=1}^D \prod_{v=1}^V \Bigl\{
          \sum_{k=1}^K
              \theta_{dk} \phi_{kv}
      \Bigr\}^{N_{dv}}
\end{aligned}

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


  • 1 各単語のトピック  z_{dn} と各単語の語彙  w_{dn} はそれぞれカテゴリ分布を仮定しているので、 z_{dn} のトピック(インデックス)と  w_{dn} の語彙(インデックス)のパラメータが生成確率に対応する。
 \displaystyle
\begin{aligned}
p(z_{dn} = k \mid \boldsymbol{\theta}_d)
   &= \mathrm{Cat}(k \mid \boldsymbol{\theta}_d)
    = \theta_{dk}
\\
p(w_{dn} \mid z_{dn} = k, \boldsymbol{\phi}_k)
   &= \mathrm{Cat}(w_{dn} \mid \boldsymbol{\phi}_k)
    = \phi_{kw_{dn}}
\end{aligned}
  • 2: 各単語の語彙  w_{dn} = v と各文書での各語彙の出現回数  N_{dv} を用いて、単語番号  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 の順番に並んだ状態(1行目)から、語彙番号  v の順番に並べ替えて(2行目)、語彙ごとに(同じ語彙が出現した  N_{dv} 個の要素)まとめて(3行目)いる。 N_d  = \sum_{v=1}^V N_{dv} なので、全体の要素数は変わっていない。


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

周辺尤度の場合

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

 ハイパーパラメータ  \boldsymbol{\alpha}, \boldsymbol{\beta} が与えられた(条件とする)ときのパラメータ  \boldsymbol{\Theta}, \boldsymbol{\Phi} を周辺化した観測データ  \mathbf{W} の生成確率  p(\mathbf{W} \mid \boldsymbol{\alpha}, \boldsymbol{\beta}) は、生成過程(依存関係)に従い次のように変形できる。

 \displaystyle
\begin{aligned}
p(\mathbf{W} \mid \boldsymbol{\alpha}, \boldsymbol{\beta})
   &= \iint \sum_{\mathbf{Z}}
          p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} \mid \boldsymbol{\alpha}, \boldsymbol{\beta})
      \mathrm{d} \boldsymbol{\Theta} \mathrm{d} \boldsymbol{\Phi}
\\
   &= \iint
          \sum_{\mathbf{Z}} \Bigl\{
              p(\mathbf{Z} \mid \boldsymbol{\Theta})
              p(\mathbf{W} \mid \mathbf{Z}, \boldsymbol{\Phi})
          \Bigr\}
          p(\boldsymbol{\Theta} \mid \boldsymbol{\alpha})
          p(\boldsymbol{\Phi} \mid \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 \mid \boldsymbol{\theta}_d)
                  p(\mathbf{w}_d \mid \mathbf{z}_d, \boldsymbol{\Phi})
              \Bigr\}
              p(\boldsymbol{\theta}_d \mid \boldsymbol{\alpha})
          \right]
          \left\{ \prod_{k=1}^K
              p(\boldsymbol{\phi}_k \mid \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} \mid \boldsymbol{\theta}_d)
                  p(w_{dn} \mid \boldsymbol{\phi}_{z_{dn}})
              \Bigr\}
              p(\boldsymbol{\theta}_d \mid \boldsymbol{\alpha})
          \right]
          \left\{ \prod_{k=1}^K
              p(\boldsymbol{\phi}_k \mid \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 \mid \boldsymbol{\theta}_d)
                  p(w_{dn} \mid z_{dn} = k, \boldsymbol{\phi}_k)
              \Bigr\}
              p(\boldsymbol{\theta}_d \mid \boldsymbol{\alpha})
          \right]
\\
   &\qquad \qquad * 
          \left\{ \prod_{k=1}^K
              p(\boldsymbol{\phi}_k \mid \boldsymbol{\beta})
          \right\}
      \mathrm{d} \boldsymbol{\Theta} \mathrm{d} \boldsymbol{\Phi}
\end{aligned}

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


  • 1: 周辺化されたトピック分布・単語分布のパラメータ  \boldsymbol{\Theta}, \boldsymbol{\Phi} とトピック(潜在変数)  \mathbf{Z} を明示する。
  • 2:  \mathbf{W}, \mathbf{Z}, \boldsymbol{\theta}, \boldsymbol{\Phi} の項に分割する。
 \displaystyle
\begin{aligned}
p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\theta}, \boldsymbol{\Phi} \mid \boldsymbol{\alpha}, \boldsymbol{\beta})
   &= p(\mathbf{W}, \mathbf{Z} \mid \boldsymbol{\theta}, \boldsymbol{\Phi})
      p(\boldsymbol{\theta}, \boldsymbol{\Phi} \mid \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
   &= p(\mathbf{W} \mid \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} \mid \boldsymbol{\theta})
      p(\boldsymbol{\theta} \mid \boldsymbol{\alpha})
      p(\boldsymbol{\Phi} \mid \boldsymbol{\beta})
\end{aligned}

 詳しくは「生成モデルの導出」で確認する。

  • 3: 全文書に関する集合  \mathbf{W}, \mathbf{Z} の生成確率を、文書ごとの集合  \mathbf{w}_d, \mathbf{z}_d の生成確率の積に分解する。
  • 3:  D 個のトピック分布のパラメータは独立に生成されることから、パラメータ集合  \boldsymbol{\Theta} の生成確率を、各文書のパラメータ  \boldsymbol{\theta}_d の生成確率の積に分解する。
  • 3:  K 個の単語分布のパラメータは独立に生成されることから、パラメータ集合  \boldsymbol{\Phi} の生成確率を、各トピックのパラメータ  \boldsymbol{\phi}_k の生成確率の積に分解する。
  • 4: 各文書に関する集合  \mathbf{w}_d, \mathbf{z}_d の生成確率を、単語ごとの要素  w_{dn}, z_{dn} の生成確率の積に分解する。
  • 5: 各単語のトピック  z_{dn} についてトピック番号  k を明示する。

 ここで、 \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 は、全てのトピックの組み合わせに関する和を表す。

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

生成モデルの導出

 続いて、トピックモデルの生成モデル(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} \mid \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} \mid \boldsymbol{\Theta})
      p(\boldsymbol{\Theta})
      p(\boldsymbol{\Phi})
\\
   &= \prod_{d=1}^D \Bigl[
          p(\mathbf{w}_d \mid \mathbf{z}_d, \boldsymbol{\Phi})
          p(\mathbf{z}_d \mid \boldsymbol{\theta}_d)
          p(\boldsymbol{\theta}_d)
      \Bigr]
      \prod_{k=1}^K
          p(\boldsymbol{\phi}_k)
\\
   &= \prod_{d=1}^D \left[
          \prod_{n=1}^{N_d} \Bigl\{
              p(w_{dn} \mid \boldsymbol{\phi}_{z_{dn}})
              p(z_{dn} \mid \boldsymbol{\theta}_d)
          \Bigr\}
          p(\boldsymbol{\theta}_d)
      \right]
      \prod_{k=1}^K
          p(\boldsymbol{\phi}_k)
\end{aligned}

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


 依存関係のない場合は独立な関係  p(A, B) = p(A) p(B)、依存関係のある場合は乗法定理  p(A, B) = p(A \mid B) p(B) により、式を変形していく。

  • 1: 変数やパラメータごとの項に分割する。

 依存関係のある変数とパラメータの項を分割する。

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

 さらに前の項の、依存関係のある観測変数と潜在変数の項を分割する。

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

  \mathbf{W} \boldsymbol{\Theta} \mathbf{Z} \boldsymbol{\Phi} はそれぞれ無関係なので条件から省ける。
 後の項の、独立なパラメータの項を分割する。

 \displaystyle
p(\boldsymbol{\Theta}, \boldsymbol{\Phi})
    = p(\boldsymbol{\Theta})
      p(\boldsymbol{\Phi})
  • 2: 全文書に関する  \mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta} の項を、各文書に関する  \mathbf{w}_d, \mathbf{z}_d, \boldsymbol{\theta}_d の項の積に分解する。
  • 2: 全トピックに関する  \boldsymbol{\Phi} の項を、各トピックに関する  \boldsymbol{\phi}_k の項の積に分解する。
  • 3: 全単語に関する  \mathbf{w}_d, \mathbf{z}_d の項を、各単語に関する  w_{dn}, z_{dn} の項の積に分解する。

 単語レベルに分解した。

事前分布を設定する場合

 変分ベイズ推定(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} \mid \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} \mid \boldsymbol{\Theta})
      p(\boldsymbol{\Theta} \mid \boldsymbol{\alpha})
      p(\boldsymbol{\alpha})
\\
   &\qquad * 
      p(\boldsymbol{\Phi} \mid \boldsymbol{\beta})
      p(\boldsymbol{\beta})
\\
   &= \prod_{d=1}^D \Bigl[
          p(\mathbf{W}_d \mid \mathbf{z}_d, \boldsymbol{\Phi})
          p(\mathbf{z}_d \mid \boldsymbol{\theta}_d)
          p(\boldsymbol{\theta}_d \mid \boldsymbol{\alpha})
      \Bigr]
      p(\boldsymbol{\alpha})
\\
   &\qquad * 
      \left\{ \prod_{k=1}^K
          p(\boldsymbol{\phi}_k \mid \boldsymbol{\beta})
      \right\}
      p(\boldsymbol{\beta})
\\
   &= \prod_{d=1}^D \left[
          \prod_{n=1}^{N_d} \Bigl\{
              p(w_{dn} \mid \boldsymbol{\phi}_{z_{dn}})
              p(z_{dn} \mid \boldsymbol{\theta}_d)
          \Bigr\}
          p(\boldsymbol{\theta}_d \mid \boldsymbol{\alpha})
      \right]
      p(\boldsymbol{\alpha})
\\
   &\qquad * 
      \left\{ \prod_{k=1}^K
          p(\boldsymbol{\phi}_k \mid \boldsymbol{\beta})
      \right\}
      p(\boldsymbol{\beta})
\end{aligned}

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


 依存関係のない場合は条件付き独立  p(A, B \mid C) = p(A \mid C) p(B \mid C)、依存関係のある場合は条件付きの乗法定理  p(A, B \mid C) = p(A \mid B, C) p(B \mid C) により、式を変形していく。

  • 1: 変数やパラメータごとの項に分割する。

 依存関係のある変数、パラメータ、ハイパーパラメータの項を分割する。

 \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} \mid \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\alpha}, \boldsymbol{\beta})
\\
   &= p(\mathbf{W}, \mathbf{Z} \mid \boldsymbol{\Theta}, \boldsymbol{\Phi}, \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\Theta}, \boldsymbol{\Phi} \mid \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\alpha}, \boldsymbol{\beta})
\\
   &= p(\mathbf{W}, \mathbf{Z} \mid \boldsymbol{\Theta}, \boldsymbol{\Phi})
      p(\boldsymbol{\Theta}, \boldsymbol{\Phi} \mid \boldsymbol{\alpha}, \boldsymbol{\beta})
      p(\boldsymbol{\alpha}, \boldsymbol{\beta})
\end{aligned}

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

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

 2つ目の項の、独立なパラメータの項を分割する。

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

 3つ目の項の、独立なハイパーパラメータの項を分割する。

 \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} \mid \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} \mid \boldsymbol{\Theta})
      p(\boldsymbol{\Theta})
      p(\boldsymbol{\Phi})
\\
   &= \prod_{d=1}^D \left[
          \prod_{n=1}^{N_d} \Bigl\{
              p(w_{dn} \mid \boldsymbol{\phi}_{z_{dn}})
              p(z_{dn} \mid \boldsymbol{\theta}_d)
          \Bigr\}
          p(\boldsymbol{\theta}_d)
      \right]
      \prod_{k=1}^K
          p(\boldsymbol{\phi}_k)
\end{aligned}

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

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

 「  \boldsymbol{\theta}_d \to z_{dn} 」が、各文書のトピック分布  p(z_{dn} \mid \boldsymbol{\theta}_d) に対応し、トピック分布(のパラメータ)に従って各単語のトピック  z_{dn} が生成されることを示している。
 「  z_{dn} \to w_{dn} 」と「  \boldsymbol{\phi}_k \to w_{dn} 」が、各トピックの単語分布  p(w_{dn} \mid \boldsymbol{\phi}_{z_{dn}}) に対応し、単語分布(のパラメータ)に従って各単語(の語彙)  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} \mid \mathbf{Z}, \boldsymbol{\Phi})
      p(\mathbf{Z} \mid \boldsymbol{\Theta})
      p(\boldsymbol{\Theta} \mid \boldsymbol{\alpha})
      p(\boldsymbol{\alpha})
      p(\boldsymbol{\Phi} \mid \boldsymbol{\beta})
      p(\boldsymbol{\beta})
\\
   &= \prod_{d=1}^D \left[
          \prod_{n=1}^{N_d} \Bigl\{
              p(w_{dn} \mid \boldsymbol{\phi}_{z_{dn}})
              p(z_{dn} \mid \boldsymbol{\theta}_d)
          \Bigr\}
          p(\boldsymbol{\theta}_d \mid \boldsymbol{\alpha})
      \right]
      p(\boldsymbol{\alpha})
      \left\{ \prod_{k=1}^K
          p(\boldsymbol{\phi}_k \mid \boldsymbol{\beta})
      \right\}
      p(\boldsymbol{\beta})
\end{aligned}

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

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

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

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

参考書籍

おわりに

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

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

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

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

【次節の内容】

  • スクラッチ実装編

www.anarchive-beta.com


  • 数式読解編

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

www.anarchive-beta.com

 結合トピックモデルの生成モデルを数式で確認します。

www.anarchive-beta.com