はじめに
機械学習プロフェッショナルシリーズの『トピックモデル』の勉強時に自分の理解の助けになったことや勉強会資料のまとめです。トピックモデルの各種アルゴリズムを「数式」と「プログラム」から理解することを目指します。
この記事は、4.4節「変分ベイズ推定」の内容です。変分ベイズ推定により、トピックモデルにおけるパラメータを推定します。
この記事で用いる記号類や混合ユニグラムモデルの定義については「4.1-2:トピックモデル【『トピックモデル』の勉強ノート】 - からっぽのしょこ」をご確認ください。
【R言語で実装】
www.anarchive-beta.com
【前節の内容】
www.anarchive-beta.com
【他の節一覧】
www.anarchive-beta.com
【この節の内容】
4.4 変分ベイズ推定
4.4.1 周辺尤度の最大化
最尤推定では、パラメータ$\boldsymbol{\Theta},\ \boldsymbol{\Phi}$(の各要素)を点推定した。変分ベイズ推定では、$\mathbf{Z},\ \boldsymbol{\Theta},\ \boldsymbol{\Phi}$を分布推定する。つまり各パラメータの事後分布を求める。ただし混合ユニグラムモデルのときと同様に、事後分布$p(\mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})$は解析的に求められないため、その近似分布である変分事後分布$q(\mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})$を求める。
トピックモデルを変分ベイズ推定する手法は、潜在ディリクレ配分モデル(LDA)と呼ばれる。
まずは、トピックモデルの対数周辺尤度$\log p(\mathbf{W} | \alpha, \beta)$の下限をイェンゼンの不等式を用いて求める。
$$
\begin{aligned}
\log p(\mathbf{W} | \alpha, \beta)
&= \log \int \int \sum_{\mathbf{Z}}
p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} | \alpha, \beta)
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
\\
&= \log \int \int \sum_{\mathbf{Z}}
p(\mathbf{Z} | \boldsymbol{\Theta})
p(\boldsymbol{\Theta} | \alpha)
p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
p(\boldsymbol{\Phi} | \beta)
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
\\
&= \log \int \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta}, \boldsymbol{\Phi})
\frac{
p(\mathbf{Z} | \boldsymbol{\Theta})
p(\boldsymbol{\Theta} | \alpha)
p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
p(\boldsymbol{\Phi} | \beta)
}{
q(\mathbf{Z})
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi})
}
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
\\
&\geq
\int \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta}, \boldsymbol{\Phi})
\log \frac{
p(\mathbf{Z} | \boldsymbol{\Theta})
p(\boldsymbol{\Theta} | \alpha)
p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
p(\boldsymbol{\Phi} | \beta)
}{
q(\mathbf{Z})
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi})
}
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
\equiv F
\end{aligned}
$$
【途中式の途中式】
- 周辺尤度$p(\mathbf{W} | \alpha, \beta)$は、尤度(生成モデル)$p(\mathbf{W}, \mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi} | \alpha, \beta)$のパラメータ$\mathbf{Z},\ \boldsymbol{\Theta},\ \boldsymbol{\Phi}$を周辺化(積分消去)したものである。周辺化したパラメータを明示する。
- トピックモデルの生成過程(4.1節)より項を分解する。
- 変分事後分布$q(\mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi})$を導入する。
- 計算を容易にするため変分事後分布に、因子分解仮定$q(\mathbf{Z}, \boldsymbol{\Theta}, \boldsymbol{\Phi}) = q(\mathbf{Z}) q(\boldsymbol{\Theta}) q(\boldsymbol{\Phi})$を置く。
- 変分事後分布を$\frac{q(\mathbf{Z}) q(\boldsymbol{\Theta}, \boldsymbol{\Phi})}{q(\mathbf{Z}) q(\boldsymbol{\Theta}, \boldsymbol{\Phi})} = 1$として、分母分子を分割して掛ける。
- イェンゼンの不等式(1.1.10項)を用いて、下限を求める。
対数尤度の下限$F$と置き、変分下限と呼ぶ。更にこの式を整理すると
$$
\begin{align}
F &= \int \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta}, \boldsymbol{\Phi}) \Bigl(
\log p(\mathbf{Z} | \boldsymbol{\Theta})
p(\boldsymbol{\Theta} | \alpha)
p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
p(\boldsymbol{\Phi} | \beta)
- \log
q(\mathbf{Z})
q(\boldsymbol{\Theta}
q(\boldsymbol{\Phi})
\Bigr)
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
\tag{4.4}\\
&= \int \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi}) \Bigl(
\log p(\mathbf{Z} | \boldsymbol{\Theta})
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
+ \log p(\boldsymbol{\Phi} | \beta) \\
&\qquad
- \log q(\mathbf{Z})
- \log q(\boldsymbol{\Theta})
- \log q(\boldsymbol{\Phi})
\Bigr)
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
\end{align}
$$
となる。
この変分下限$F$を最大化する各パラメータの変分事後分布を求めていく。
4.4.2 変分事後分布の推定
・トピック分布の変分事後分布の導出
$\int q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} = 1$の制約の下で変分下限$F$が最大となるトピック分布の変分事後分布$q(\boldsymbol{\Theta})$を、ラグランジュの未定乗数法を用いて求める。
$$
\begin{aligned}
F(q(\boldsymbol{\Theta}))
&= \int \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi}) \Bigl(
\log p(\mathbf{Z} | \boldsymbol{\Theta})
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
+ \log p(\boldsymbol{\Phi} | \beta) \\
&\qquad
- \log q(\mathbf{Z})
- \log q(\boldsymbol{\Theta})
- \log q(\boldsymbol{\Phi})
\Bigr)
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
+ \lambda \left(
\int q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} - 1
\right)
\end{aligned}
$$
$F(q(\boldsymbol{\Theta}))$を$q(\boldsymbol{\Theta})$に関して変分する。
$$
\begin{aligned}
\frac{
\partial F(q(\boldsymbol{\Theta}))
}{
\partial q(\boldsymbol{\Theta})
}
&= \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Phi}) \Bigl(
\log p(\mathbf{Z} | \boldsymbol{\Theta})
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
+ \log p(\boldsymbol{\Phi} | \beta) \\
&\qquad
- \log q(\mathbf{Z})
- \log q(\boldsymbol{\Theta})
- \log q(\boldsymbol{\Phi})
\Bigr)
- q(\mathbf{Z})
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi})
\frac{1}{q(\boldsymbol{\Theta})}
d\boldsymbol{\Phi}
+ \lambda
\\
&= \sum_{\mathbf{Z}}
q(\mathbf{Z})
\log p(\mathbf{Z} | \boldsymbol{\Theta})
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Phi})
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
d\boldsymbol{\Phi}
+ \int
q(\boldsymbol{\Phi})
\log p(\boldsymbol{\Phi} | \beta)
d\boldsymbol{\Phi} \\
&\qquad
- \sum_{\mathbf{Z}}
q(\mathbf{Z})
\log q(\mathbf{Z})
- \log q(\boldsymbol{\Theta})
- q(\boldsymbol{\Phi})
\log q(\boldsymbol{\Phi})
- 1 + \lambda
\\
&= \mathbb{E}_{q(\mathbf{Z})} [
\log p(\mathbf{Z} | \boldsymbol{\Theta})
]
+ \log p(\boldsymbol{\Theta} | \alpha)
- \log q(\boldsymbol{\Theta})
+ \lambda - C
\end{aligned}
$$
【途中式の途中式】
- 括弧を展開する。ただし$\sum_{\mathbf{Z}} q(\mathbf{Z}) = 1$、$\int q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} = 1$である。
- $q(\boldsymbol{\Theta})$に影響しない項を$C$と置く。
$\frac{\partial F(q(\boldsymbol{\Theta}))}{\partial q(\boldsymbol{\Theta})} = 0$となる$q(\boldsymbol{\Theta})$を求める。$q_{dnk} \equiv q(z_{dn} = k)$を、文書$d$の$n$番目の単語のトピック$z_{dn}$が$k$となる変分事後確率(負担率)とする。
$$
\begin{aligned}
\mathbb{E}_{q(\mathbf{Z})} [
\log p(\mathbf{Z} | \boldsymbol{\Theta})
]
+ \log p(\boldsymbol{\Theta} | \alpha)
&- \log q(\boldsymbol{\Theta})
+ \lambda - C
= 0
\\
\log q(\boldsymbol{\Theta})
&= \mathbb{E}_{q(\mathbf{Z})} [
\log p(\mathbf{Z} | \boldsymbol{\Theta})
]
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \lambda - C
\\
q(\boldsymbol{\Theta})
&= \exp \Bigl(
\mathbb{E}_{q(\mathbf{Z})} [
\log p(\mathbf{Z} | \boldsymbol{\Theta})
]
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \lambda - C
\Bigr)
\\
&= \exp \left\{
\sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K
q_{dnk} \log \theta_{dk}
+ \log
\frac{\Gamma(\alpha D)^K}{\Gamma(\alpha)^{DK}}
\prod_{d=1}^D \prod_{k=1}^K
\theta_{dk}^{\alpha - 1}
+ \lambda - C
\right\}
\\
&= \exp \left(
\sum_{d=1}^D \sum_{k=1}^K
\log \theta_{dk}^{\sum_{n=1}^{N_d} q_{dnk}}
+ \log \frac{\Gamma(\alpha D)^K}{\Gamma(\alpha)^{DK}}
+ \sum_{d=1}^D \sum_{k=1}^K
\log \theta_{dk}^{\alpha-1}
+ \lambda - C
\right)
\\
&\propto
\exp \left(
\sum_{d=1}^D \sum_{k=1}^K
\log \theta_{dk}^{
\sum_{n=1}^{N_d} q_{dnk} + \alpha - 1
}
\right)
\\
&= \prod_{d=1}^D \prod_{k=1}^K
\theta_{dk}^{
\alpha + \sum_{n=1}^{N_d} q_{dnk} - 1
}
\end{aligned}
$$
【途中式の途中式】
- $q(\boldsymbol{\Theta})$に関して式を整理する。
- $\log$を外す。
- それぞれ具体的な式に置き換える。
- $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$であり、また負担率$q(z_{dn} = k) \equiv q_{dnk}$とする。
- $p(\mathbf{Z} | \boldsymbol{\Theta}) = \prod_{d=1}^D \prod_{n=1}^{N_d} p(z_{dn} = k | \boldsymbol{\theta}_d) = \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}$である。
- $p(\boldsymbol{\Theta} | \alpha) = \prod_{d=1}^D \mathrm{Dirichlet}(\boldsymbol{\theta_d} | \alpha)$である。
- 対数をとる。
- $\theta_{dk}$の項をまとめる。また$q(\boldsymbol{\Theta})$に影響しない項を除く。
- $\exp$と$\log$を外す。
式の形が(正規化項のない)ディリクレ分布の形であることから、変分事後分布$q(\boldsymbol{\theta}_d)$は事前分布と同じディリクレ分布になることが分かった。
そこでこの式について
$$
\alpha_{dk}
= \alpha
+ \sum_{n=1}^{N_d} q_{dnk}
$$
と置き、式全体を正規化する(正規化項を与える)と
$$
\begin{align}
q(\boldsymbol{\Theta})
&= \prod_{d=1}^D
\frac{\Gamma(\sum_{k=1}^K \alpha_{dk})}{\prod_{k=1}^K \Gamma(\alpha_{dk})}
\prod_{k=1}^K
\theta_{dk}^{\alpha_{dk}-1}
\\
&= \prod_{d=1}^D
\mathrm{Dirichlet}(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})
\tag{1}
\end{align}
$$
(ハイパー)パラメータ$(\alpha_{d1}, \alpha_{d2}, \cdots, \alpha_{dK})$を持つディリクレ分布が得られる。
また、上の式がハイパーパラメータの更新式となる。
・単語分布の変分事後分布の導出
単語分布についても同様に、$\int q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} = 1$の制約の下で変分下限$F$が最大となる単語分布の変分事後
分布$q(\boldsymbol{\Phi})$を、ラグランジュの未定乗数法を用いて求める。
$$
\begin{aligned}
F(q(\boldsymbol{\Phi}))
&= \int \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi})
\Bigl(
\log p(\mathbf{Z} | \boldsymbol{\Theta})
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
+ \log p(\boldsymbol{\Phi} | \beta) \\
&\qquad
- \log q(\mathbf{Z})
- \log q(\boldsymbol{\Theta})
- \log q(\boldsymbol{\Phi})
\Bigr)
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
+ \lambda \left(
\int q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} - 1
\right)
\end{aligned}
$$
$F(q(\boldsymbol{\Phi}))$を$q(\boldsymbol{\Phi})$に関して変分する。
$$
\begin{aligned}
\frac{
\partial F(q(\boldsymbol{\Phi}))
}{
\partial q(\boldsymbol{\Phi})
}
&= \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta}) \Bigl(
\log p(\mathbf{Z} | \boldsymbol{\Theta})
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
+ \log p(\boldsymbol{\Phi} | \beta) \\
&\qquad
- \log q(\mathbf{Z})
- \log q(\boldsymbol{\Theta})
- \log q(\boldsymbol{\Phi})
\Bigr)
- q(\mathbf{Z})
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi})
\frac{1}{q(\boldsymbol{\Phi})}
d\boldsymbol{\Theta}
+ \lambda
\\
&= \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta})
\log p(\mathbf{Z} | \boldsymbol{\Theta})
d\boldsymbol{\Theta}
+ \int
q(\boldsymbol{\Theta})
\log p(\boldsymbol{\Theta} | \alpha)
d\boldsymbol{\Theta}
+ \sum_{\mathbf{Z}}
q(\mathbf{Z})
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
+ \log p(\boldsymbol{\Phi} | \beta) \\
&\qquad
- \sum_{\mathbf{Z}}
q(\mathbf{Z})
\log q(\mathbf{Z})
- \int
q(\boldsymbol{\Theta})
\log q(\boldsymbol{\Theta})
d\boldsymbol{\Theta}
- \log q(\boldsymbol{\Phi})
- 1 + \lambda
\\
&= \mathbb{E}_{q(\mathbf{Z})} [
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
]
+ \log p(\boldsymbol{\Phi} | \beta)
- \log q(\boldsymbol{\Phi})
+ \lambda - C
\end{aligned}
$$
【途中式の途中式】
- 括弧を展開する。ただし$\sum_{\mathbf{Z}} q(\mathbf{Z}) = 1$、$\int q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} = 1$である。
- $q(\boldsymbol{\Phi})$に影響しない項を$C$と置く。
$\frac{\partial F(q(\boldsymbol{\Phi}))}{\partial q(\boldsymbol{\Phi})} = 0$となる$q(\boldsymbol{\Phi})$を求める。
$$
\begin{aligned}
\mathbb{E}_{q(\mathbf{Z})} [
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
]
+ \log p(\boldsymbol{\Phi} | \beta)
&- \log q(\boldsymbol{\Phi})
+ \lambda - C
= 0
\\
\log q(\boldsymbol{\Phi})
&= \mathbb{E}_{q(\mathbf{Z})} [
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
]
+ \log p(\boldsymbol{\Phi} | \beta)
+ \lambda - C
\\
q(\boldsymbol{\Phi})
&= \exp \Bigl(
\mathbb{E}_{q(\mathbf{Z})} [
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
]
+ \log p(\boldsymbol{\Phi} | \beta)
+ \lambda - C
\Bigr)
\\
&= \exp \left\{
\sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K
q_{dnk}
\log \prod_{v=1}^V \phi_{kv}^{N_{dv}}
+ \log
\frac{\Gamma(\beta V)^K}{\Gamma(\beta)^{KV}}
\prod_{k=1}^K \prod_{v=1}^V
\phi_{kv}^{\beta - 1}
+ \lambda - C
\right\}
\\
&= \exp \left(
\sum_{k=1}^K \sum_{v=1}^V
\log \phi_{kv}^{\sum_{d=1}^D \sum_{n:w_{dn}=v} q_{dnk}}
+ \log \frac{\Gamma(\beta V)^K}{\Gamma(\beta)^{KV}}
+ \sum_{k=1}^K \sum_{v=1}^V
\log \phi_{kv}^{\beta-1}
+ \lambda - C
\right)
\\
&\propto
\exp \left(
\sum_{k=1}^K \sum_{v=1}^V
\log \phi_{kv}^{\sum_{d=1}^D \sum_{n:w_{dn}=v} q_{dnk} + \beta - 1}
\right)
\\
&= \prod_{k=1}^K \prod_{v=1}^V
\phi_{kv}^{\beta + \sum_{d=1}^D \sum_{n:w_{dn}=v} q_{dnk} - 1}
\end{aligned}
$$
【途中式の途中式】
- $q(\boldsymbol{\Phi})$に関して式を整理する。
- $\log$を外す。
- それぞれ具体的な式に置き換える。
- $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$であり、また負担率$q(z_{dn} = k) \equiv q_{dnk}$とする。
- $p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(w_{dn} | z_{dn} = k, \boldsymbol{\phi}_k) = \prod_{d=1}^D \prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{N_{dv}}$である。
- $p(\boldsymbol{\Phi} | \beta) = \prod_{k=1}^K \mathrm{Dirichlet}(\boldsymbol{\phi}_k | \beta)$である。
- 対数をとる。
- $\phi_{kv}$の項をまとめる。また$q(\boldsymbol{\Phi})$に影響しない項を省く。
- $\exp$と$\log$を外す。
式の形が(正規化項のない)ディリクレ分布であることから、単語分布の変分事後分布$q(\boldsymbol{\phi}_k)$は事前分布と同じディリクレ分布になることが分かった。ここで$\sum_{n:w_{dn}=v}$は、$w_{dn} = v$である単語に関する和を表す。ちなみに、文書$d$に含まれる同一単語(語彙)$v = w_{dn}$の数は、語彙$v$の出現回数$N_{dv}$と同じである。
この式について
$$
\beta_{kv}
= \beta
+ \sum_{d=1}^D \sum_{n:w_{dn}=v}
q_{dnk}
$$
と置き、式全体を正規化する(正規化項を与える)と
$$
\begin{align}
q(\boldsymbol{\Phi})
&= \prod_{k=1}^K
\frac{\Gamma(\sum_{v=1}^V \beta_{kv})}{\prod_{v=1}^V \Gamma(\beta_{kv})}
\prod_{v=1}^V
\phi_{kv}^{\beta_{kv}-1}
\\
&= \prod_{k=1}^K
\mathrm{Dirichlet}(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})
\tag{2}
\end{align}
$$
(ハイパー)パラメータ$(\beta_{k1}, \beta_{k2}, \cdots, \beta_{kV})$を持つディリクレ分布が得られる。
また、上の式がハイパーパラメータ$\beta_{kv}$の更新式となる。
・トピック集合の変分事後分布の導出
最後に、トピック集合の変分事後分布$q(\mathbf{Z})$を推定する。これまでと同様に、ラグランジュの未定乗数法を用いて、$\sum_{\mathbf{Z}} q(\mathbf{Z}) = 1$の制約の下で変分下限$F$が最大となる$q(\mathbf{Z})$を求める。
$$
\begin{aligned}
F(q(\mathbf{Z}))
&= \int \int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi}) \Bigl(
\log p(\mathbf{Z} | \boldsymbol{\Theta})
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
+ \log p(\boldsymbol{\Phi} | \beta) \Bigr.\\
&\qquad \Bigl.
- \log q(\mathbf{Z})
- \log q(\boldsymbol{\Theta})
- \log q(\boldsymbol{\Phi})
\Bigr)
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
+ \lambda \left(
\sum_{\mathbf{Z}} q(\mathbf{Z}) - 1
\right)
\end{aligned}
$$
$F(q(\mathbf{Z}))$を$q(\mathbf{Z})$に関して変分する。
$$
\begin{aligned}
\frac{F(q(\mathbf{Z}))}{q(\mathbf{Z})}
&= \int \int
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi}) \Bigl(
\log p(\mathbf{Z} | \boldsymbol{\Theta})
+ \log p(\boldsymbol{\Theta} | \alpha)
+ \log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
+ \log p(\boldsymbol{\Phi} | \beta) \Bigr.\\
&\qquad \Bigl.
- \log q(\mathbf{Z})
- \log q(\boldsymbol{\Theta})
- \log q(\boldsymbol{\Phi})
\Bigr)
- q(\mathbf{Z})
q(\boldsymbol{\Theta})
q(\boldsymbol{\Phi})
\frac{1}{q(\mathbf{Z})}
d\boldsymbol{\Theta} d\boldsymbol{\Phi}
+ \lambda
- 1 + \lambda
\\
&= \int
q(\boldsymbol{\Theta})
\log p(\mathbf{Z} | \boldsymbol{\Theta})
d\boldsymbol{\Theta}
+ \int
q(\boldsymbol{\Theta})
\log p(\boldsymbol{\Theta} | \alpha)
d\boldsymbol{\Theta}
+ \int
q(\boldsymbol{\Phi})
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
d\boldsymbol{\Phi}
+ \int
q(\boldsymbol{\Phi})
\log p(\boldsymbol{\Phi} | \beta)
d\boldsymbol{\Phi} \\
&\qquad
- \log q(\mathbf{Z})
- \int
q(\boldsymbol{\Theta})
\log q(\boldsymbol{\Theta})
d\boldsymbol{\Theta}
- \int
q(\boldsymbol{\Phi})
\log q(\boldsymbol{\Phi})
d\boldsymbol{\Phi}
- 1 + \lambda
\\
&= \mathbb{E}_{q(\boldsymbol{\Theta})} [
\log p(\mathbf{Z} | \boldsymbol{\Theta})
]
+ \mathbb{E}_{q(\boldsymbol{\Phi})} [
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
]
- \log q(\mathbf{Z})
+ \lambda - C
\end{aligned}
$$
【途中式の途中式】
- 括弧を展開する。ただし$\int q(\boldsymbol{\Theta}) d\boldsymbol{\Theta} = 1$、$\int q(\boldsymbol{\Phi}) d\boldsymbol{\Phi} = 1$である。
- $q(\mathbf{Z})$に影響しない項を$C$と置く。
$\frac{\partial F(q(\mathbf{Z}))}{\partial q(\mathbf{Z})} = 0$となる$q(\mathbf{Z})$を求める。
$$
\begin{align}
\mathbb{E}_{q(\boldsymbol{\Theta})} [
\log p(\mathbf{Z} | \boldsymbol{\Theta})
]
&+ \mathbb{E}_{q(\boldsymbol{\Phi})} [
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
]
- \log q(\mathbf{Z})
+ \lambda - C
= 0
\\
\log q(\mathbf{Z})
&= \mathbb{E}_{q(\boldsymbol{\Theta})} [
\log p(\mathbf{Z} | \boldsymbol{\Theta})
]
+ \mathbb{E}_{q(\boldsymbol{\Phi})} [
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
]
+ \lambda - C
\\
q(\mathbf{Z})
&= \exp \left(
\mathbb{E}_{q(\boldsymbol{\Theta})} [
\log p(\mathbf{Z} | \boldsymbol{\Theta})
]
+ \mathbb{E}_{q(\boldsymbol{\Phi})} [
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
]
+ \lambda - C
\right)
\\
&= \exp \left(
\int
\sum_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})
\sum_{k=1}^K \log \theta_{dk}
d\boldsymbol{\theta}_d \right.\\
&\qquad \qquad \left.
+ \int
\sum_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})
\sum_{v=1}^V N_{dv} \log \phi_{kv}
d\boldsymbol{\phi}_k
+ \lambda - C
\right)
\\
\prod_{d=1}^D \prod_{k=1}^K
q_{dnk}
&\propto
\prod_{d=1}^D \prod_{k=1}^K
\exp \left\{
\Psi(\alpha_{dk})
- \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigr)
+ N_{dv} \left(
\Psi(\beta_{kv})
- \Psi \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr)
\right)
\right\}
\\
q_{dnk}
&\propto
\exp \left\{
\Psi(\alpha_{dk})
- \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigr)
+ N_{dv} \left(
\Psi(\beta_{kv})
- \Psi \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr)
\right)
\right\}
\tag{4.8'}
\end{align}
$$
【途中式の途中式】
- $q(\mathbf{Z})$に関して式を整理する。
- $\log$を外す。
- それぞれ具体的な式に置き換える。
- 式(1)より、$q(\boldsymbol{\Theta}) = \prod_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})$である。
- $p(\mathbf{Z} | \boldsymbol{\Theta}) = \prod_{d=1}^D \prod_{n=1}^{N_d} p(z_{dn} = k | \boldsymbol{\theta}_d) = \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}$である。
- 式(2)より、$q(\boldsymbol{\Phi}) = \prod_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})$である。
- $p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(\mathbf{w}_d | z_{dn} = k, \boldsymbol{\phi}_d) = \prod_{d=1}^D \prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{N_{dv}}$より、置き換える。
- ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。
この式を$k = 1, 2, \cdots, K$に関する和が1となるように正規化した式が、トピックの変分事後分布(負担率)$q_{dnk}$の更新式となる。
4.4.3 変分下限
トピックモデルの変分下限$F$は、生成過程と因子分解仮定より
$$
\begin{aligned}
F &= \overbrace{
\int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta})
\log p(\mathbf{Z} | \boldsymbol{\Theta})
d\boldsymbol{\Theta}
}^{\mathrm{1st\ term}}
+ \overbrace{
\int
q(\boldsymbol{\Theta})
\log p(\boldsymbol{\Theta} | \alpha)
d\boldsymbol{\Theta}
}^{\mathrm{2nd\ term}}
+ \overbrace{
\int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Phi})
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
d\boldsymbol{\Phi}
}^{\mathrm{3rd\ term}} \\
&\qquad
+ \overbrace{
\int
q(\boldsymbol{\Phi})
\log p(\boldsymbol{\Phi} | \beta)
d\boldsymbol{\Phi}
}^{\mathrm{4th\ term}}
- \overbrace{
\sum_{\mathbf{Z}}
q(\mathbf{Z})
\log q(\mathbf{Z})
}^{\mathrm{5th\ term}}
- \overbrace{
\int
q(\boldsymbol{\Theta})
\log q(\boldsymbol{\Theta})
d\boldsymbol{\Theta}
}^{\mathrm{6th\ term}}
- \overbrace{
\int
q(\boldsymbol{\Phi})
\log q(\boldsymbol{\Phi})
d\boldsymbol{\Phi}
}^{\mathrm{7th\ term}}
\end{aligned}
$$
と分解できる。それぞれの因子は以下のように計算できる。
・第1項
$$
\begin{aligned}
&\int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Theta})
\log p(\mathbf{Z} | \boldsymbol{\Theta})
d\boldsymbol{\Theta}
\\
&= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K
q_{dnk}
\int
q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})
\log \theta_{dk}
d\boldsymbol{\theta}_d
\\
&= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K
q_{dnk} \left(
\Psi(\alpha_{dk})
- \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigr)
\right)
\end{aligned}
$$
【途中式の途中式】
- それぞれ項を置き換える。
- $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$であり、また負担率$q(z_{dn} = k) \equiv q_{dnk}$とする。
- 式(1)より、$q(\boldsymbol{\Theta}) = \prod_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})$である。
- $p(\mathbf{Z} | \boldsymbol{\Theta}) = \prod_{d=1}^D \prod_{n=1}^{N_d} p(z_{dn} = k | \boldsymbol{\theta}_d) = \prod_{d=1}^D \prod_{k=1}^K \theta_{dk}$である。
- ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。
・第2項
$$
\begin{aligned}
&\int
q(\boldsymbol{\Theta})
\log p(\boldsymbol{\Theta} | \alpha)
d\boldsymbol{\Theta}
\\
&= \int \sum_{d=1}^D
q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})
\log
\frac{\Gamma(\alpha K)^D}{\Gamma(\alpha)^{DK}}
\prod_{k=1}^K \theta_{dk}^{\alpha-1}
d\boldsymbol{\theta}_d
\\
&= \int \sum_{d=1}^D
q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK}) \left\{
D \log \Gamma(\alpha K)
- D K \log \Gamma(\alpha)
+ (\alpha - 1) \sum_{k=1}^K \log \theta_{dk}
\right\}
d\boldsymbol{\theta}_d
\\
&= \int \sum_{d=1}^D
q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})
D \log \Gamma(\alpha K)
d\boldsymbol{\theta}_d
- \int \sum_{d=1}^D
q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})
D K \log \Gamma(\alpha)
d\boldsymbol{\theta}_d \\
&\qquad
+ (\alpha - 1)
\sum_{d=1}^D \sum_{k=1}^K \int
q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})
\log \theta_{dk}
d\boldsymbol{\theta}_d
\\
&= D \log \Gamma(\alpha K)
- D K \log \Gamma(\alpha)
+ (\alpha - 1)
\sum_{d=1}^D \sum_{k=1}^K \left(
\Psi(\alpha_{dk})
- \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigr)
\right)
\end{aligned}
$$
【途中式の途中式】
- それぞれ項を置き換える。
- 式(1)より、$q(\boldsymbol{\Theta}) = \prod_{d=1}^D q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})$である。
- $p(\boldsymbol{\Theta} | \alpha) = \prod_{d=1}^D \mathrm{Dirichlet}(\boldsymbol{\theta}_d | \alpha)$である。
- 対数をとる。
- 括弧を展開して、また$\theta_{dk}$と関係のない項を$\int$の外に出す。
- ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。
・第3項
$$
\begin{aligned}
&\int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Phi})
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
d\boldsymbol{\Phi}
\\
&= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K
q_{dnk}
\int
q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kw_{dn}})
\log \phi_{kw_{dn}}
d\boldsymbol{\phi}_k
\\
&= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K
q_{dnk} \left(
\Psi(\beta_{kw_{dn}})
- \Psi \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr)
\right)
\end{aligned}
$$
【途中式の途中式】
- それぞれ項を具体的な式に置き換える。
- $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$、また$q(z_{dn} = k) \equiv q_{dnk}$である。
- 式(2)より、$q(\boldsymbol{\Phi}) = q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kw_{dn}})$である。
- $p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(w_{dn} | z_{dn} = k, \boldsymbol{\phi}_d) = \prod_{d=1}^D \prod_{n=1}^{N_d} \prod_{k=1}^K \phi_{kw_{dn}}$である。
- ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。
ただし、語彙レベルで考えると
$$
\begin{aligned}
&\int \sum_{\mathbf{Z}}
q(\mathbf{Z})
q(\boldsymbol{\Phi})
\log p(\mathbf{W} | \mathbf{Z}, \boldsymbol{\Phi})
d\boldsymbol{\Phi}
\\
&= \sum_{d=1}^D \sum_{v=1}^V \sum_{k=1}^K
q_{dvk}
\int
q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})
\log \phi_{kv}^{N_{dv}}
d\boldsymbol{\phi}_k \\
&= \sum_{d=1}^D \sum_{v=1}^V \sum_{k=1}^K
q_{dvk}
\int N_{dv}
q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})
\log \phi_{kv}
d\boldsymbol{\phi}_k \\
&= \sum_{d=1}^D \sum_{v=1}^V \sum_{k=1}^K
q_{dvk} N_{dv} \left(
\Psi(\beta_{kv})
- \Psi \Bigl(\sum_{v'=1}^V \beta_{kv'} \Bigr)
\right)
\end{aligned}
$$
となる。
・第4項
$$
\begin{aligned}
&\int
q(\boldsymbol{\Phi})
\log p(\boldsymbol{\Phi} | \beta)
d\boldsymbol{\Phi}
\\
&= \int \sum_{k=1}^K
q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})
\log
\frac{
\Gamma (\beta V)^K
}{
\Gamma(\beta)^{KV}
}
\prod_{k=1}^K \prod_{v=1}^V \phi_{kv}^{\beta-1}
d\boldsymbol{\phi}_k
\\
&= \int \sum_{k=1}^K
q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV}) \left\{
V \log \Gamma (\beta V)
- K V \log \Gamma(\beta)
+ (\beta - 1) \sum_{k=1}^K \sum_{v=1}^V \log \phi_{kv}
\right\}
d\boldsymbol{\phi}_k
\\
&= \int \sum_{k=1}^K
q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})
K \log \Gamma(\beta V)
- \int \sum_{k=1}^K
q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})
K V \log \Gamma(\beta) \\
&\qquad
+ (\beta - 1)
\sum_{k=1}^K \sum_{v=1}^V \int
q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})
\log \phi_{kv}
d\boldsymbol{\phi}_k
\\
&= K \log \Gamma(\beta V)
- K V \log \Gamma(\beta)
+ (\beta - 1)
\sum_{k=1}^K \sum_{v=1}^V \left(
\Psi(\beta_{kv})
- \Psi \Bigl(\sum_{v'=1}^V \beta_{kv'} \Bigr)
\right)
\end{aligned}
$$
【途中式の途中式】
- それぞれ項を置き換える。
- 式(2)より、$q(\boldsymbol{\Phi}) = \prod_{k=1}^K q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})$である。
- $p(\boldsymbol{\Phi} | \beta) = \prod_{k=1}^K \mathrm{Dirichlet}(\boldsymbol{\phi}_k | \beta)$である。
- $\phi_{kv}$と関係のない項を$\int$の外に出して、式を整理する。
- ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。
・第5項
$$
\begin{aligned}
&\sum_{\mathbf{Z}}
q(\mathbf{Z})
\log q(\mathbf{Z})
\\
&= \sum_{d=1}^D \sum_{n=1}^{N_d} \sum_{k=1}^K
q_{dnk}
\log q_{dnk}
\end{aligned}
$$
【途中式の途中式】
- $q(\mathbf{Z}) = \prod_{d=1}^D \prod_{n=1}^{N_d} q(z_{dn})$、また$q(z_{dn} = k) \equiv q_{dnk}$より、置き換える。
・第6項
$$
\begin{aligned}
&\int
q(\boldsymbol{\Theta})
\log q(\boldsymbol{\Theta})
d\boldsymbol{\Theta}
\\
&= \sum_{d=1}^D \left(
\int
q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})
\log
\frac{
\Gamma(\sum_{k=1}^K \alpha_{dk})
}{
\prod_{k=1}^K \Gamma(\alpha_{dk})
}
\prod_{k=1}^K \theta_{dk}^{\alpha_{dk}-1}
d\boldsymbol{\theta}_d
\right)
\\
&= \sum_{d=1}^D \left(
\log \Gamma \Bigl(\sum_{k=1}^K \alpha_{dk} \Bigr)
- \sum_{k=1}^K \log \Gamma(\alpha_{dk})
+ \sum_{k=1}^K (\alpha_{dk} - 1)
\int
q(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})
\log \theta_{dk}
d\boldsymbol{\theta}_d
\right)
\\
&= \sum_{d=1}^D \left\{
\log \Gamma \Bigl(\sum_{k=1}^K \alpha_{dk} \Bigr)
- \sum_{k=1}^K \log \Gamma(\alpha_{dk})
+ \sum_{k=1}^K (\alpha_{dk} - 1) \left(
\Psi(\alpha_{dk})
- \Psi \Bigl(\sum_{k'=1}^K \alpha_{dk'} \Bigl)
\right)
\right\}
\end{aligned}
$$
【途中式の途中式】
- 式(1)より、$q(\boldsymbol{\Theta}) = \prod_{d=1}^D \mathrm{Dirichlet}(\boldsymbol{\theta}_d | \alpha_{d1}, \cdots, \alpha_{dK})$で置き換える。
- 対数をとり、また$\theta_{dk}$と関係のない項を$\int$の外に出す。
- ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。
・第7項
$$
\begin{aligned}
&\int
q(\boldsymbol{\Phi})
\log q(\boldsymbol{\Phi})
d\boldsymbol{\Phi}
\\
&= \sum_{k=1}^K \left\{
\int
q(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})
\log
\frac{
\Gamma (\sum_{v=1}^V \beta_{kv})
}{
\prod_{v=1}^V \log \Gamma(\beta_{kv})
}
\prod_{v=1}^V \phi_{kv}^{\beta_{kv}-1}
d\boldsymbol{\phi}_k
\right\}
\\
&= \sum_{k=1}^K \left(
\log \Gamma \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr)
- \sum_{v=1}^V \log \Gamma(\beta_{kv})
+ \sum_{v=1}^V (\beta_{kv} - 1)
\int
q(\boldsymbol{\phi}_k)
\log \phi_{kv}
d\boldsymbol{\phi}_k
\right)
\\
&= \sum_{k=1}^K \left\{
\log \Gamma \Bigl(\sum_{v=1}^V \beta_{kv} \Bigr)
- \sum_{v=1}^V \log \Gamma(\beta_{kv})
+ \sum_{v=1}^V (\beta_{kv} - 1) \left(
\Psi(\beta_{kv})
- \Psi \Bigl(\sum_{v'=1}^V \beta_{kv'} \Bigr)
\right)
\right\}
\end{aligned}
$$
【途中式の途中式】
- 式(2)より、$q(\boldsymbol{\Phi}) = \prod_{k=1}^K \mathrm{Dirichlet}(\boldsymbol{\phi}_k | \beta_{k1}, \cdots, \beta_{kV})$で置き換える。
- 対数をとり、また$\phi_{kv}$と関係のない項を$\int$の外に出す。
- ディリクレ分布に従う変数の対数の期待値(1.17)より、置き換える。
参考書籍
- 岩田具治(2015)『トピックモデル』(機械学習プロフェッショナルシリーズ)講談社
おわりに
LDAまで来た!そしてできた(大体)!!まじですかスカ!?自分でも信じられません。
あとはギブズサンプリングを残すのみ。
2019/07/29:加筆修正しました。
2020/08/24:加筆修正しました。
【次節の内容】
www.anarchive-beta.com