はじめに
『トピックモデルによる統計的潜在意味解析』の学習時のメモです。基本的な内容は、数式の行間を読んで埋めたものになります。本と併せて読んでください。
この記事では、3.5.2項のにLDAの学習に粒子フィルタを用いる方法について書いています。
数学よく解らない自分が理解できるレベルまで落として数式を書き下していますので、分かる人にはかなりくどいです。
【実装編】
www.anarchive-beta.com
【前節の内容】
www.anarchive-beta.com
【他の節一覧】
www.anarchive-beta.com
【この節の内容】
3.5.2 LDAの粒子フィルタ
LDAの学習に粒子フィルタを用いる方法を説明する。
観測された単語$\boldsymbol{w}$の下での、潜在トピック$\boldsymbol{z}$の条件付き分布$p(\boldsymbol{z} | \boldsymbol{w}, \boldsymbol{\alpha}, \boldsymbol{\beta})$を粒子フィルタを用いて近似する。
・サンプリング式の導出
3.2.4項(LDAの周辺化ギブスサンプリング)のサンプリング式(3.38)の導出過程と同様にして、$\boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i)}$が与えられた下での潜在変数$z_{d,i}$の分布を求める。
$$
\begin{aligned}
&p(z_{d,i} = k | w_{d,i} = v, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \frac{
p(z_{d,i} = k, w_{d,i} = v, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)} | \boldsymbol{\alpha}, \boldsymbol{\beta})
}{
p(w_{d,i} = v, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)} | \boldsymbol{\alpha}, \boldsymbol{\beta})
}
\\
&\propto
p(z_{d,i} = k, w_{d,i} = v, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)} | \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= p(w_{d,i} = v | z_{d,i} = k, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(z_{d,i} = k | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(\boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)} | \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&\propto
p(w_{d,i} = v | z_{d,i} = k, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(z_{d,i} = k | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\end{aligned}
$$
周辺化したパラメータを明示すると
$$
\begin{aligned}
&p(z_{d,i} = k | w_{d,i} = v, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&\propto
p(w_{d,i} = v | z_{d,i} = k, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)} | \boldsymbol{\alpha}, \boldsymbol{\beta})
p(z_{d,i} = k | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \int
p(w_{d,i} = v, \boldsymbol{\phi} | z_{d,i} = k, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\phi}
\int
p(z_{d,i} = k, \boldsymbol{\theta} | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\theta}
\\
&= \int
p(w_{d,i} = v | \boldsymbol{\phi}, z_{d,i} = k, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(\boldsymbol{\phi} | z_{d,i} = k, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\phi} \\
&\qquad
* \int
p(z_{d,i} = k | \boldsymbol{\theta}, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(\boldsymbol{\theta} | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
d\boldsymbol{\theta}
\\
&= \int
p(w_{d,i} = v | z_{d,i} = k, \boldsymbol{\phi})
p(\boldsymbol{\phi} | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\beta})
d\boldsymbol{\phi}
\int
p(z_{d,i} = k | \boldsymbol{\theta})
p(\boldsymbol{\theta} | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{\alpha})
d\boldsymbol{\theta}
\\
&\propto
\int
p(w_{d,i} = v | z_{d,i} = k, \boldsymbol{\phi}_k)
p(\boldsymbol{\phi}_k | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\int
p(z_{d,i} = k | \boldsymbol{\theta}_d)
p(\boldsymbol{\theta}_d | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\\
&= \int
\phi_{k,v}
p(\boldsymbol{\phi}_k | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\beta})
d\boldsymbol{\phi}_k
\int
\theta_{d,k}
p(\boldsymbol{\theta}_d | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{\alpha})
d\boldsymbol{\theta}_d
\\
&= \mathbb{E}_{p(\boldsymbol{\phi}_k | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\beta})} [
\phi_{k,v}
]
\mathbb{E}_{p(\boldsymbol{\theta}_d | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{\alpha})} [
\theta_{d,k}
]
\end{aligned}
$$
となる。$p(\boldsymbol{\phi}_k | \cdot), p(\boldsymbol{\theta}_d | \cdot)$をそれぞれ正規化した(正規化項を付けた)上で、Dirichlet分布の期待値計算(2.10)を行うと
$$
\begin{align}
p(z_{d,i} = k | w_{d,i} = v, \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
&= \mathbb{E}_{p(\boldsymbol{\phi}_k | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\beta})} [
\phi_{k,v}
]
\mathbb{E}_{p(\boldsymbol{\theta}_d | \boldsymbol{z}^{(d,i-1)}, \boldsymbol{\alpha})} [
\theta_{d,k}
]
\\
&= \frac{
n_{k,v}^{(d,i-1)}
+ \beta_v
}{
\sum_{v=1}^V (
n_{k,v}^{(d,i-1)}
+ \beta_v
)
}
\frac{
n_{d,k}^{(d,i-1)}
+ \alpha_k
}{
\sum_{k=1}^K (
n_{d,k}^{(d,i-1)}
+ \alpha_k
)
}
\tag{3.171}
\end{align}
$$
が得られる。
従って、S個の並列サンプルを$\{\boldsymbol{z}^{(d,i)(s)}\}_{s=1}^S$として表すと、それぞれのサンプル粒子$\boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i)}$が与えられた下での$z_{d,i}^{(s)}$の分布は
$$
p(z_{d,i}^{(s)} = k | w_{d,i} = v, \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\propto
\frac{
n_{k,v}^{(d,i-1)(s)}
+ \beta_v
}{
\sum_{v=1}^V (
n_{k,v}^{(d,i-1)(s)}
+ \beta_v
)
}
\frac{
n_{d,k}^{(d,i-1)(s)}
+ \alpha_k
}{
\sum_{k=1}^K (
n_{d,k}^{(d,i-1)(s)}
+ \alpha_k
)
}
\tag{3.172}
$$
となる。(正規化した上で期待値を出した結果がこの式なので両辺はイコールでいいと思うのだが??)
・重みの更新式の導出
3.5.1項の重みの更新式(3.168)より、LDAの重みの更新式は
$$
\frac{
\omega(\boldsymbol{z}^{(d,i)(s)})
}{
\omega(\boldsymbol{z}^{(d,i-1)(s)})
}
= \frac{
p(w_{d,i} | z_{d,i}^{(s)}, \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(z_{d,i}^{(s)} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}{
q(z_{d,i}^{(s)} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}
\tag{3.173}
$$
となる。
分母の提案分布を
$$
q(z_{d,i}^{(s)} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
= p(z_{d,i}^{(s)} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
$$
と設定すると
$$
\begin{align}
\frac{
\omega(\boldsymbol{z}^{(d,i)(s)})
}{
\omega(\boldsymbol{z}^{(d,i-1)(s)})
}
&\propto
p(w_{d,i} | z_{d,i}^{(s)}, \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\frac{
1
}{
p(z_{d,i}^{(s)} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}
p(z_{d,i}^{(s)} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \frac{
p(w_{d,i}, z_{d,i}^{(s)}, \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}{
p(z_{d,i}^{(s)}, \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}
\frac{
p(\boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}{
p(z_{d,i}^{(s)}, \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}
p(z_{d,i}^{(s)} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \frac{
p(\boldsymbol{z}^{(d,i)(s)}, \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}{
p(z_{d,i}^{(s)} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(\boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}
\frac{
p(\boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}{
p(\boldsymbol{z}^{(d,i)(s)}, \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
} \\
&\qquad
* p(z_{d,i}^{(s)} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \frac{
p(\boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}{
p(\boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}
\\
&= \frac{
p(w_{d,i}, \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}{
p(\boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
}
\\
&= p(w_{d,i} | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \sum_{k=1}^K
p(w_{d,i}, z_{d,i} = k | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\tag{3.174}
\end{align}
$$
となる。最後は周辺化$\sum_B p(A, B | C) = p(A | C)$する形式で、$z_{d,i}$を式に含めた。
従って、重みの更新式
$$
\omega(\boldsymbol{z}^{(d,i)(s)})
\propto
\omega(\boldsymbol{z}^{(d,i-1)(s)})
\sum_{k=1}^K
p(w_{d,i}, z_{d,i}^{(s)} = k | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\tag{3.175}
$$
が得られる。ここで、サンプリング式(3.171)の導出仮定より
$$
\begin{align}
&\sum_{k=1}^K
p(w_{d,i} = v, z_{d,i}^{(s)} = k | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \sum_{k=1}^K
p(w_{d,i} = v | z_{d,i}^{(s)} = k, \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
p(z_{d,i}^{(s)} = k | \boldsymbol{z}^{(d,i-1)(s)}, \boldsymbol{w}^{(d,i-1)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\\
&= \sum_{k=1}^K
\frac{
n_{k,v}^{(d,i-1)(s)}
+ \beta_v
}{
\sum_{v=1}^V (
n_{k,v}^{(d,i-1)(s)}
+ \beta_v
)
}
\frac{
n_{d,k}^{(d,i-1)(s)}
+ \alpha_k
}{
\sum_{k=1}^K (
n_{d,k}^{(d,i-1)(s)}
+ \alpha_k
)
}
\tag{3.176}
\end{align}
$$
である。
・事後分布の近似
重み$\omega(\boldsymbol{z}^{(d,i-1)(s)})$を次の式で正規化する。
$$
\bar{w}(\boldsymbol{z}^{(d,i-1)(s)})
= \frac{
\omega(\boldsymbol{z}^{(d,i-1)(s)})
}{
\sum_{s=1}^S
\omega(\boldsymbol{z}^{(d,i-1)(s)})
}
$$
これを用い、式(3.162)と同様にして、$p(\boldsymbol{z} | \boldsymbol{w}, \boldsymbol{\alpha}, \boldsymbol{\beta})$を近似できる。
$$
p(\boldsymbol{z}^{(d,i)} | \boldsymbol{w}^{(d,i)}, \boldsymbol{\alpha}, \boldsymbol{\beta})
\approx
\sum_{s=1}^S
\bar{w}(\boldsymbol{z}^{(d,i-1)(s)})
\delta(\boldsymbol{z}^{(d,i)} = \boldsymbol{z}^{(d,i)(s)})
\tag{3.177}
$$
参考文献
- 佐藤一誠『トピックモデルによる統計的潜在意味解析』(自然言語処理シリーズ 8)奥村学監修,コロナ社,2015年.
おわりに
3月末でトピックモデルを始めて1年になります。なのでそれまでにLDAの理論と実装を終わらせたいです。実装のためにRの方の勉強(R4DS)も進めたいので、1月中には3章の数式読解を終わらせたいなぁというつもりでしたが果てさて。推定アルゴリズムは次節までなので、せめてそれだけでも!
【次節の内容】
www.anarchive-beta.com