はじめに
『トピックモデルによる統計的潜在意味解析』の学習時のメモです。基本的な内容は、数式の行間を読んで埋めたものになります。本と併せて読んでください。
この記事では、3.6.6項の周辺化ギブスサンプリングと変分ベイズ法でハイパーパラメータの推定を行う方法について書いています。
数学よく解らない自分が理解できるレベルまで落として数式を書き下していますので、分かる人にはかなりくどいです。
【前節の内容】
www.anarchive-beta.com
【他の節一覧】
www.anarchive-beta.com
【この節の内容】
3.6.6 周辺化ギブスサンプリング/変分ベイズ法の場合
LDAのハイパーパラメータを点推定する。
・周辺化ギブスサンプリングの場合
周辺化ギブスサンプリングでハイパーパラメータの推定を行う。
パラメータ$\boldsymbol{\phi},\ \boldsymbol{\theta}$を積分消去した周辺尤度$p(\boldsymbol{w}, \boldsymbol{z} | \boldsymbol{\alpha}, \boldsymbol{\beta})$を考える。
$$
\begin{align}
p(\boldsymbol{w}, \boldsymbol{z} | \boldsymbol{\alpha}, \boldsymbol{\beta})
&= \int
p(\boldsymbol{w}, \boldsymbol{z}, \boldsymbol{\theta}, \boldsymbol{\phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\theta} d\boldsymbol{\phi}
\\
&= \int
p(\boldsymbol{w} | \boldsymbol{\phi}, \boldsymbol{z})
p(\boldsymbol{z} | \boldsymbol{\theta})
p(\boldsymbol{\phi} | \boldsymbol{\beta})
p(\boldsymbol{\theta} | \boldsymbol{\alpha})
d\boldsymbol{\theta} d\boldsymbol{\phi}
\\
&= \int \left[
\prod_{d=1}^M \prod_{i=1}^{N_d}
p(w_{d,i} | \boldsymbol{\phi}_{z_{d,i}})
p(z_{d,i} | \boldsymbol{\theta}_d)
\right] \left[
\prod_{k=1}^K
p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
\right] \left[
\prod_{d=1}^M
p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
\right]
d\boldsymbol{\theta} d\boldsymbol{\phi}
\\
&= \int \prod_{k=1}^K \left[
\prod_{v=1}^V
\phi_{k,v}^{\sum_{d=1}^M \sum_{i=1}^{N_d} \delta(z_{d,i} = k, w_{d,i} = v)}
\right]
p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\int \prod_{d=1}^M \left[
\prod_{k=1}^K
\theta_{d,k}^{\sum_{i=1}^{N_d} \delta(z_{d,i} = k)}
\right]
p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\tag{3.214}
\end{align}
$$
それぞれ
$$
\begin{aligned}
n_{k,v}
&= \sum_{d=1}^M \sum_{i=1}^{N_d} \delta(z_{d,i} = k, w_{d,i} = v)
\\
n_{d,k}
&= \sum_{i=1}^{N_d} \delta(z_{d,i} = k)
\end{aligned}
$$
とする。
$n_{k,v}$は、トピックkが割り当てられた語彙vの数を、デルタ関数を使って全文書の全単語について和をとることで求めたもの。$n_{d,k}$は、各文書においてトピックkが割り当てられた単語数を、デルタ関数を使って和をとることで求めたもの。
それぞれ置き換えると
$$
\begin{aligned}
p(\boldsymbol{w}, \boldsymbol{z} | \boldsymbol{\alpha}, \boldsymbol{\beta})
&= \int \prod_{k=1}^K \left[
\prod_{v=1}^V
\phi_{k,v}^{n_{k,v}}
\right]
p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\int \prod_{d=1}^M \left[
\prod_{k=1}^K
\theta_{d,k}^{n_{d,k}}
\right]
p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\\
&= \int \prod_{k=1}^K \left[
\prod_{v=1}^V
\phi_{k,v}^{n_{k,v}}
\right]
\frac{
\Gamma(\sum_{v=1}^V \beta_v)
}{
\prod_{v=1}^V \Gamma(\beta_v)
}
\prod_{v=1}^V
\phi_{k,v}^{\beta_v-1}
d\boldsymbol{\phi}_k \\
&\qquad
* \int \prod_{d=1}^M \left[
\prod_{k=1}^K
\theta_{d,k}^{n_{d,k}}
\right]
\frac{
\Gamma(\sum_{k=1}^K \alpha_k)
}{
\prod_{k=1}^K \Gamma(\alpha_k)
}
\prod_{k=1}^K
\theta_{d,k}^{\alpha_k-1}
d\boldsymbol{\theta}_d
\\
&= \int \prod_{k=1}^K
\frac{
\Gamma(\sum_{v=1}^V \beta_v)
}{
\prod_{v=1}^V \Gamma(\beta_v)
}
\prod_{v=1}^V
\phi_{k,v}^{n_{k,v}+\beta_v-1}
d\boldsymbol{\phi}_k \\
&\qquad
* \int \prod_{d=1}^M
\frac{
\Gamma(\sum_{k=1}^K \alpha_k)
}{
\prod_{k=1}^K \Gamma(\alpha_k)
}
\prod_{k=1}^K
\theta_{d,k}^{n_{d,k}+\alpha_k-1}
d\boldsymbol{\theta}_d
\end{aligned}
$$
となる。
$\prod_{v=1}^V \phi_{k,v}^{n_{k,v}+\beta_v-1},\ \prod_{k=1}^K \theta_{d,k}^{n_{d,k}+\alpha_k-1}$のみ取り出すと、それぞれパラメータ$n_{k,v} + \beta_v - 1,\ n_{d,k} + \alpha_k - 1$を持つ正規化項のないDirichlet分布とみることができる。よって定義より、正規化項の逆数の形に変形できる(そもそもこれの逆数が正規化項である)。
$$
\begin{align}
p(\boldsymbol{w}, \boldsymbol{z} | \boldsymbol{\alpha}, \boldsymbol{\beta})
&= \prod_{k=1}^K
\frac{
\Gamma(\sum_{v=1}^V \beta_v)
}{
\prod_{v=1}^V \Gamma(\beta_v)
}
\frac{
\prod_{v=1}^V \Gamma(n_{k,v} + \beta_v)
}{
\Gamma(\sum_{v=1}^V n_{k,v} + \beta_v)
}
\prod_{d=1}^M
\frac{
\Gamma(\sum_{k=1}^K \alpha_k)
}{
\prod_{k=1}^K \Gamma(\alpha_k)
}
\frac{
\prod_{k=1}^K \Gamma(n_{d,k} + \alpha_k)
}{
\Gamma(\sum_{k=1}^K n_{d,k} + \alpha_k)
}
\tag{3.215}
\\
&= \prod_{k=1}^K \left[
\frac{
\Gamma(\sum_{v=1}^V \beta_v)
}{
\Gamma(\sum_{v=1}^V n_{k,v} + \beta_v)
}
\prod_{v=1}^V
\frac{
\Gamma(n_{k,v} + \beta_v)
}{
\Gamma(\beta_v)
}
\right]
\prod_{d=1}^M \left[
\frac{
\Gamma(\sum_{k=1}^K \alpha_k)
}{
\Gamma(\sum_{k=1}^K n_{d,k} + \alpha_k)
}
\prod_{k=1}^K
\frac{
\Gamma(n_{d,k} + \alpha_k)
}{
\Gamma(\alpha_k)
}
\right]
\end{align}
$$
対数をとり対数周辺尤度として、サンプリングしたS個のトピック$\boldsymbol{z}^{(s)}$を用いると
$$
\begin{align}
\log p(\boldsymbol{w}, \boldsymbol{z}^{(s)} | \boldsymbol{\alpha}, \boldsymbol{\beta})
&= \sum_{k=1}^K
\log \left(
\frac{
\Gamma(\sum_{v=1}^V \beta_v)
}{
\Gamma(\sum_{v=1}^V n_{k,v}^{(s)} + \beta_v)
}
\prod_{v=1}^V
\frac{
\Gamma(n_{k,v}^{(s)} + \beta_v)
}{
\Gamma(\beta_v)
}
\right) \\
&\qquad
* \prod_{d=1}^M
\log \left(
\frac{
\Gamma(\sum_{k=1}^K \alpha_k)
}{
\Gamma(\sum_{k=1}^K n_{d,k}^{(s)} + \alpha_k)
}
\prod_{k=1}^K
\frac{
\Gamma(n_{d,k}^{(s)} + \alpha_k)
}{
\Gamma(\alpha_k)
}
\right)
\end{align}
$$
となる。
サンプルの平均
$$
\begin{align}
\mathbb{E}[n_{k,v}]
&= \frac{1}{S}
\sum_{s=1}^S
n_{k,v}^{(s)}
\\
\mathbb{E}[n_{d,k}]
&= \frac{1}{S}
\sum_{s=1}^S
n_{d,k}^{(s)}
\end{align}
$$
にそれぞれ置き換えると、(教科書の(このノートだと3行目を除いた))式(3.182)となる。
従って、ハイパーパラメータの更新式は3.6.3項と同様にして求まる。
また、単語分布のパラメータ$\boldsymbol{\beta}$についても同様にして導出できる。
・変分ベイズ法の場合
変分ベイズ法でハイパーパラメータの推定を行う。
潜在トピック集合$\boldsymbol{z}$とパラメータ$\boldsymbol{\phi},\ \boldsymbol{\theta}$を積分消去した周辺尤度$p(\boldsymbol{w} | \boldsymbol{\alpha}, \boldsymbol{\beta})$を考える。
$$
\begin{aligned}
p(\boldsymbol{w} | \boldsymbol{\alpha}, \boldsymbol{\beta})
&= \int \sum_{\boldsymbol{z}}
p(\boldsymbol{w}, \boldsymbol{z}, \boldsymbol{\theta}, \boldsymbol{\phi} | \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\theta} d\boldsymbol{\phi}
\\
&= \int \sum_{\boldsymbol{z}}
p(\boldsymbol{w} | \boldsymbol{\phi}, \boldsymbol{z})
p(\boldsymbol{z} | \boldsymbol{\theta})
p(\boldsymbol{\phi} | \boldsymbol{\beta})
p(\boldsymbol{\theta} | \boldsymbol{\alpha})
d\boldsymbol{\theta} d\boldsymbol{\phi}
\\
&= \int
\prod_{d=1}^M \prod_{i=1}^{N_d} \sum_{k=1}^K
p(w_{d,i} | z_{d,i} = k, \boldsymbol{\phi}_k)
p(z_{d,i} = k | \boldsymbol{\theta}_d)
p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\prod_{k=1}^K
p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\\
&= \int
\prod_{d=1}^M \prod_{i=1}^{N_d} \sum_{k=1}^K
(\phi_{k,w_{d,i}}
\theta_{d,k})
p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\prod_{k=1}^K
p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\end{aligned}
$$
$\sum_{k=1}^K \phi_{k,w_{d,i}} \theta_{d,k}$を$\sum_{k=1}^K f(\phi, \theta)$とおき、対数をとり、$\frac{q(z_{d,i} = k)}{q(z_{d,i} = k)} = 1$を掛けることで$q(z_{d,i} = k)$を導入し、イエンセンの不等式を用いて
$$
\begin{aligned}
\log \sum_{k=1}^K
f(\phi, \theta)
&= \log \sum_{k=1}^K
q(z_{d,i} = k)
\frac{f(\phi, \theta)}{q(z_{d,i} = k)}
\\
&\geq
\sum_{k=1}^K
q(z_{d,i} = k)
\log \frac{f(\phi, \theta)}{q(z_{d,i} = k)}
\\
&= \log \prod_{k=1}^K \left(
\frac{f(\phi, \theta)}{q(z_{d,i} = k)}
\right)^{q(z_{d,i} = k)}
\end{aligned}
$$
下限を求める。これを$\log$を外して用いると
$$
\begin{aligned}
p(\boldsymbol{w} | \boldsymbol{\alpha}, \boldsymbol{\beta})
&= \int
\prod_{d=1}^M \prod_{i=1}^{N_d} \sum_{k=1}^K
(\phi_{k,w_{d,i}}
\theta_{d,k})
p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\prod_{k=1}^K
p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\\
&\geq
\int
\prod_{d=1}^M \prod_{i=1}^{N_d} \prod_{k=1}^K \left(
\frac{
\phi_{k,w_{d,i}}
\theta_{d,k}
}{
q(z_{d,i} = k)
}
\right)^{q(z_{d,i}=k)}
p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\prod_{k=1}^K
p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\\
&= \left[
\prod_{k=1}^K \int \prod_{d=1}^M \prod_{i=1}^{N_d} \prod_{v=1}^V
\phi_{k,v}^{q(z_{d,i}=k) \delta(w_{d,i}=v)}
p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\right] \left[
\prod_{d=1}^M \int \prod_{i=1}^{N_d} \prod_{k=1}^K
\theta_{d,k}^{q(z_{d,i}=k)}
p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\right] \\
&\qquad
* \prod_{d=1}^M \prod_{i=1}^{N_d} \prod_{k=1}^K \left(
\frac{1}{q(z_{d,i} = k)}
\right)^{q(z_{d,i}=k)}
\\
&= \left[
\prod_{k=1}^K \int \prod_{v=1}^V
\phi_{k,v}^{\sum_{d=1}^M \sum_{i=1}^{N_d} q(z_{d,i}=k) \delta(w_{d,i}=v)}
p(\boldsymbol{\phi}_k | \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\right] \left[
\prod_{d=1}^M \int \prod_{k=1}^K
\theta_{d,k}^{\sum_{i=1}^{N_d} q(z_{d,i}=k)}
p(\boldsymbol{\theta}_d | \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\right] \\
&\qquad
* \prod_{d=1}^M \prod_{i=1}^{N_d} \prod_{k=1}^K \left(
\frac{1}{q(z_{d,i} = k)}
\right)^{q(z_{d,i}=k)}\end{aligned}
$$
となる。
それぞれ
$$
\begin{aligned}
\mathbb{E}[n_{k,v}]
&= \sum_{d=1}^M \sum_{i=1}^{N_d}
q(z_{d,i} = k)
\delta(w_{d,i} = v)
\\
\mathbb{E}[n_{d,k}]
&= \sum_{i=1}^{N_d}
q(z_{d,i} = k)
\end{aligned}
$$
とする。
$\mathbb{E}[n_{k,v}]$は、トピックkが割り当てられた語彙vの数の期待値を、各単語がトピックkとなる確率$q(z_{d,i} = k)$を全文書の全単語について和をとることで求めたもの。ただし、デルタ関数を使って各単語をそれぞれの語彙に変換している。$\mathbb{E}[n_{d,k}]$は、各文書においてトピックkが割り当てられた単語数の期待値を、各単語がトピックkとなる確率$q(z_{d,i} = k)$の全単語について和をとることで求めたもの。
それぞれ置き換えると
$$
\begin{align}
p(\boldsymbol{w} | \boldsymbol{\alpha}, \boldsymbol{\beta})
&= \prod_{k=1}^K \left[
\prod_{v=1}^V
\phi_{k,v}^{\mathbb{E}[n_{k,v}]}
\frac{
\Gamma(\sum_{v=1}^V \beta_v)
}{
\prod_{v=1}^V \Gamma(\beta_v)
}
\prod_{v=1}^V
\phi_{k,v}^{\beta_v-1}
\right]
\prod_{d=1}^M \left[
\prod_{k=1}^K
\theta_{d,k}^{\mathbb{E}[n_{d,k}]}
\frac{
\Gamma(\sum_{k=1}^K \alpha_k)
}{
\prod_{k=1}^K \Gamma(\alpha_k)
}
\prod_{k=1}^K
\theta_{d,k}^{\alpha_k-1}
\right] \\
&\qquad
* \prod_{d=1}^M \prod_{i=1}^{N_d} \prod_{k=1}^K \left(
\frac{1}{q(z_{d,i} = k)}
\right)^{q(z_{d,i}=k)}
\\
&= \prod_{k=1}^K \left[
\frac{
\Gamma(\sum_{v=1}^V \beta_v)
}{
\prod_{v=1}^V \Gamma(\beta_v)
}
\prod_{v=1}^V
\phi_{k,v}^{\mathbb{E}[n_{k,v}]+\beta_v-1}
\right]
\prod_{d=1}^M \left[
\frac{
\Gamma(\sum_{k=1}^K \alpha_k)
}{
\prod_{k=1}^K \Gamma(\alpha_k)
}
\prod_{k=1}^K
\theta_{d,k}^{\mathbb{E}[n_{d,k}]+\alpha_k-1}
\right] \\
&\qquad
* \prod_{d=1}^M \prod_{i=1}^{N_d} \prod_{k=1}^K \left(
\frac{1}{q(z_{d,i} = k)}
\right)^{q(z_{d,i}=k)}
\\
&= \prod_{k=1}^K \left[
\frac{
\Gamma(\sum_{v=1}^V \beta_v)
}{
\prod_{v=1}^V \Gamma(\beta_v)
}
\frac{
\prod_{v=1}^V \Gamma(\mathbb{E}[n_{k,v}] + \beta_v)
}{
\Gamma(\sum_{v=1}^V \mathbb{E}[n_{k,v}] + \beta_v)
}
\right]
\prod_{d=1}^M \left[
\frac{
\Gamma(\sum_{k=1}^K \alpha_k)
}{
\prod_{k=1}^K \Gamma(\alpha_k)
}
\frac{
\prod_{k=1}^K \Gamma(\mathbb{E}[n_{d,k}] + \alpha_k)
}{
\Gamma(\sum_{k=1}^K \mathbb{E}[n_{d,k}] + \alpha_k)
}
\right] \\
&\qquad
* \prod_{d=1}^M \prod_{i=1}^{N_d} \prod_{k=1}^K \left(
\frac{1}{q(z_{d,i} = k)}
\right)^{q(z_{d,i}=k)}
\\
&= \prod_{k=1}^K \left[
\frac{
\Gamma(\sum_{v=1}^V \beta_v)
}{
\Gamma(\sum_{v=1}^V \mathbb{E}[n_{k,v}] + \beta_v)
}
\prod_{v=1}^V
\frac{
\Gamma(\mathbb{E}[n_{k,v}] + \beta_v)
}{
\Gamma(\beta_v)
}
\right] \\
&\qquad
* \prod_{d=1}^M \left[
\frac{
\Gamma(\sum_{k=1}^K \alpha_k)
}{
\Gamma(\sum_{k=1}^K \mathbb{E}[n_{d,k}] + \alpha_k)
}
\prod_{k=1}^K
\frac{
\Gamma(\mathbb{E}[n_{d,k}] + \alpha_k)
}{
\Gamma(\alpha_k)
}
\right] \\
&\qquad
* \prod_{d=1}^M \prod_{i=1}^{N_d} \prod_{k=1}^K \left(
\frac{1}{q(z_{d,i} = k)}
\right)^{q(z_{d,i}=k)}
\tag{3.218}
\end{align}
$$
となる。
対数をとると(教科書だと3行目を除くと)式(3.182)となる。
従って、ハイパーパラメータの更新式は3.6.3項と同様にして導出できる。
また、単語分布のパラメータ$\boldsymbol{\beta}$についても同様にして導出できる。
参考文献
- 佐藤一誠『トピックモデルによる統計的潜在意味解析』(自然言語処理シリーズ 8)奥村学監修,コロナ社,2015年.
おわりに
この内容で、LDAの基本アルゴリズム編終了です。
この後の3.7から3.9節は様子見して2月中に、線形代数と微分積分をちゃんと勉強しつつ、R4DSを最後までやる予定です。で3月中に疑似コードをRで組んでみようと思います。その後4月に入ってから白本ノートの修正と青本ノートの3週目の修正作業をできたらいーなー。
ではまた宜しくお願いします。
【次節の内容】
つづいたらいいな