はじめに
『トピックモデルによる統計的潜在意味解析』の学習時のメモです。基本的な内容は、数式の行間を読んで埋めたものになります。本と併せて読んでください。
この記事では、3.2.4節のLDAの周辺化ギブスサンプリングについて書いています。
数学よく解らない自分が理解できるレベルまで落として数式を書き下していますので、分かる人にはかなりくどいです。
【実装編】
【前節の内容】
【他の節一覧】
【この節の内容】
3.2.4 LDAの周辺化ギブスサンプリング
LDAの周辺化ギブスサンプリングを導出する。
パラメータ$\boldsymbol{\phi}, \boldsymbol{\theta}$について周辺化(積分消去)した
$$
p(\boldsymbol{w}, \boldsymbol{z} | \boldsymbol{\alpha}, \boldsymbol{\beta})
= \int
p(\boldsymbol{w}, \boldsymbol{z}, \boldsymbol{\phi}, \boldsymbol{\theta} | \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\phi} d\boldsymbol{\theta}
$$
を用いる。
・潜在トピックのサンプリング式の導出
$$
\begin{aligned}
&p(z_{d,i} = k | w_{d,i} = v, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \frac{
p(z_{d,i} = k, w_{d,i} = v, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i} | \boldsymbol{\alpha}, \boldsymbol{\beta})
}{
p(w_{d,i} = v, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i} | \boldsymbol{\alpha}, \boldsymbol{\beta})
}
\\
&\propto
p(z_{d,i} = k, w_{d,i} = v, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i} | \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= p(w_{d,i} = v | z_{d,i} = k, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(z_{d,i} = k | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(\boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i} | \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&\propto
p(w_{d,i} = v | z_{d,i} = k, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(z_{d,i} = k | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\end{aligned}
$$
ここからは、周辺化したパラメータを明示して進める。
$$
\begin{aligned}
&p(z_{d,i} = k | w_{d,i} = v, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&\propto
p(w_{d,i} = v | z_{d,i} = k, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(z_{d,i} = k | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \int
p(w_{d,i} = v, \boldsymbol{\phi} | z_{d,i} = k, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\phi}
\int
p(z_{d,i} = k, \boldsymbol{\theta} | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\theta}
\\
&= \int
p(w_{d,i} = v | \boldsymbol{\phi}, z_{d,i} = k, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(\boldsymbol{\phi} | z_{d,i} = k, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\phi} \\
&\qquad
* \int
p(z_{d,i} = k | \boldsymbol{\theta}, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(\boldsymbol{\theta} | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\theta}
\\
&= \int
p(w_{d,i} = v | z_{d,i} = k, \boldsymbol{\phi})
p(\boldsymbol{\phi} | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\beta})
d\boldsymbol{\phi}
\int
p(z_{d,i} = k | \boldsymbol{\theta})
p(\boldsymbol{\theta} | \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha})
d\boldsymbol{\theta}
\\
&\propto
\int
p(w_{d,i} = v | \boldsymbol{\phi}_k)
p(\boldsymbol{\phi}_k | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\int
p(z_{d,i} = k | \boldsymbol{\theta}_d)
p(\boldsymbol{\theta}_d | \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\\
&= \int
\phi_{k,v}
p(\boldsymbol{\phi}_k | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\int
\theta_{d,k}
p(\boldsymbol{\theta}_d | \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\\
&= \mathbb{E}_{p(\boldsymbol{\phi}_k | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\beta})} [
\phi_{k,v}
]
\mathbb{E}_{p(\boldsymbol{\theta}_d | \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha})} [
\theta_{d,k}
]
\end{aligned}
$$
式(3.36)と式(3.37)から$p(\boldsymbol{\phi}_k | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\beta}), p(\boldsymbol{\theta}_d | \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha})$もDirichlet分布である。よって、Dirichlet分布の期待値計算(2.10)を行うと
$$
\begin{align*}
p(z_{d,i} = k | w_{d,i} = v, \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha}, \boldsymbol{\beta})
&= \mathbb{E}_{p(\boldsymbol{\phi}_k | \boldsymbol{w}^{\backslash d,i}, \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\beta})} [
\phi_{k,v}
]
\mathbb{E}_{p(\boldsymbol{\theta}_d | \boldsymbol{z}^{\backslash d,i}, \boldsymbol{\alpha})} [
\theta_{d,k}
]
\\
&= \frac{
n_{k,v}^{\backslash d,i}
+ \beta_v
}{
\sum_{v'=1}^V
n_{k,v'}^{\backslash d,i}
+ \beta_{v'}
}
\frac{
n_{d,k}^{\backslash d,i}
+ \alpha_k
}{
\sum_{k'=1}^K
n_{d,k'}^{\backslash d,i}
+ \alpha_{k'}
}
\\
&= \frac{
n_{k,v}^{\backslash d,i}
+ \beta_v
}{
n_{k,\cdot}^{\backslash d,i}
+ \sum_{v'=1}^V \beta_{v'}
}
\frac{
n_{d,k}^{\backslash d,i}
+ \alpha_k
}{
n_d^{\backslash d,i}
+ \sum_{k'=1}^K \alpha_{k'}
}
\tag{3.38}
\end{align*}
$$
が得られる。
参考文献
- 佐藤一誠『トピックモデルによる統計的潜在意味解析』(自然言語処理シリーズ 8)奥村学監修,コロナ社,2015年.
おわりに
次節のもですが、せっかく疑似コードが載ってるので、実際に組んでみるべきですよねぇ。
【次節の内容】