からっぽのしょこ

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

3.2.4:LDAの周辺化ギブスサンプリング【白トピックモデルのノート】

はじめに

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

 この記事では、3.2.4節のLDAの周辺化ギブスサンプリングについて書いています。

 数学よく解らない自分が理解できるレベルまで落として数式を書き下していますので、分かる人にはかなりくどいです。

【実装編】

www.anarchive-beta.com

【前節の内容】

www.anarchive-beta.com

【他の節一覧】

www.anarchive-beta.com

【この節の内容】

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年.

おわりに

 次節のもですが、せっかく疑似コードが載ってるので、実際に組んでみるべきですよねぇ。

【次節の内容】

www.anarchive-beta.com