からっぽのしょこ

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

3.5.2:LDAの粒子フィルタ【白トピックモデルのノート】

はじめに

 『トピックモデルによる統計的潜在意味解析』の学習時のメモです。基本的な内容は、数式の行間を読んで埋めたものになります。本と併せて読んでください。

 この記事では、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