からっぽのしょこ

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

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

はじめに

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

 この記事では、3.2.2節の一般的なモデルの周辺化ギブスサンプリングについて書いています。

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

【前節の内容】

www.anarchive-beta.com

【他の節一覧】

https://www.anarchive-beta.com/entry/2019/12/22/120000www.anarchive-beta.com

【この節の内容】

3.2.2 周辺化ギブスサンプリング

 $\boldsymbol{\phi}, \boldsymbol{\pi}$を積分消去して、潜在変数$\boldsymbol{z}_{1:n}$のみをサンプリングする。

 周辺化した結合確率は

$$ p(\boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n} | \eta, \alpha) = \int p(\boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi}, \boldsymbol{\pi} | \eta, \alpha) d\boldsymbol{\phi} d\boldsymbol{\pi} $$

となる。

・$z_i$のサンプリング式の導出

$$ \begin{aligned} p(z_i = k | \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) &= \frac{ p(z_i = k, \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i} | \eta, \alpha) }{ p(\boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i} | \eta, \alpha) } \\ &\propto p(z_i = k, \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i} | \eta, \alpha) \\ &= p(z_i = k, x_i, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i} | \eta, \alpha) \\ &= p(x_i | z_i = k, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) p(z_i = k, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i} | \eta, \alpha) \\ &= p(x_i | z_i = k, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) p(z_i = k | \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) p(\boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i} | \eta, \alpha) \\ &\propto p(x_i | z_i = k, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) p(z_i = k | \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) \end{aligned} $$

【途中式の途中式】

  1. $p(A |B, C) = \frac{p(A, B | C)}{p(B | C)}$より、変形する。
  2. $z_i = k$と関係のない分母を省く。
  3. $\boldsymbol{x}_{1:n}$を、$i$についての$x_i$とそれ以外の$\boldsymbol{x}_{1:n}^{\backslash i}$に分解する。
  4. $p(A, B | C) = p(A | B, C) p(B | C)$より、分解する。
  5. $p(A, B | C) = p(A | B, C) p(B | C)$より、後の項を分解する。
  6. $i$以外の項を省く。


 ここからは、積分消去した$\boldsymbol{\phi}, \boldsymbol{\pi}$を明示して進める。

$$ \begin{align*} p(z_i = k | \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) &\propto p(x_i | z_i = k, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) p(z_i = k | \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) \\ &= \int p(x_i, \boldsymbol{\phi} | z_i = k, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) d\boldsymbol{\phi} \int p(z_i = k, \boldsymbol{\pi} | \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) d\boldsymbol{\pi} \\ &= \int p(x_i | \boldsymbol{\phi}, z_i = k, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) p(\boldsymbol{\phi} | z_i = k, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) d\boldsymbol{\phi} \\ &\qquad * \int p(z_i = k | \boldsymbol{\pi}, \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) p(\boldsymbol{\pi} | \boldsymbol{x}_{1:n}^{\backslash i}, \boldsymbol{z}_{1:n}^{\backslash i}, \eta, \alpha) d\boldsymbol{\pi} \\ &= \int p(x_i | \boldsymbol{\phi}, z_i = k) p(\phi_k, \boldsymbol{\phi}^{\backslash k} | \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{x}_{1:n}^{\backslash i}, \eta) d\phi_k d\boldsymbol{\phi}^{\backslash k} \int p(z_i = k | \boldsymbol{\pi}) p(\boldsymbol{\pi} | \boldsymbol{z}_{1:n}^{\backslash i}, \alpha) d\boldsymbol{\pi} \\ &= \int p(x_i | \phi_k) p(\phi_k | \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{x}_{1:n}^{\backslash i}, \eta) d\phi_k \int p(\boldsymbol{\phi}^{\backslash k} | \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{x}_{1:n}^{\backslash i}, \eta) d\boldsymbol{\phi}^{\backslash k} \int p(z_i = k | \boldsymbol{\pi}) p(\boldsymbol{\pi} | \boldsymbol{z}_{1:n}^{\backslash i}, \alpha) d\boldsymbol{\pi} \\ &= \int p(x_i | \phi_k) p(\phi_k | \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{x}_{1:n}^{\backslash i}, \eta) d\phi_k \int p(z_i = k | \boldsymbol{\pi}) p(\boldsymbol{\pi} | \boldsymbol{z}_{1:n}^{\backslash i}, \alpha) d\boldsymbol{\pi} \\ &= \mathbb{E}_{p(\phi_k | \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{x}_{1:n}^{\backslash i}, \eta)}[ p(x_i | \phi_k) ] \mathbb{E}_{p(\boldsymbol{\pi} | \boldsymbol{z}_{1:n}^{\backslash i}, \alpha)}[ p(z_i = k | \boldsymbol{\pi}) ] \tag{3.25} \end{align*} $$

【途中式の途中式】

  1. 積分消去した確率変数を明示する。
  2. $p(A, B | C) = p(A | B, C) p(B | C)$より、項を分割する。
  3. 式を整理する。
    • 条件付き独立性から、影響しない条件を消す。
    • $\boldsymbol{\phi}$を、$k$についての$\phi_k$とそれ以外の$\boldsymbol{\phi}^{\backslash k}$に分解する。
  4. $\phi_k$と$\boldsymbol{\phi}^{\backslash k}$で項を分解する。
  5. $\int p(\boldsymbol{\phi}^{\backslash k} | \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{x}_{1:n}^{\backslash i}, \eta) d\boldsymbol{\phi}^{\backslash k} = 1$より消える。
  6. 期待値に置き換える。


参考文献

  • 佐藤一誠『トピックモデルによる統計的潜在意味解析』(自然言語処理シリーズ 8)奥村学監修,コロナ社,2015年.

おわりに

 更新時に表示されている記事の総文字数が1万文字を下回ると、なんだか少ない気がしてもやもやします。ほとんどLaTeXコマンドかコードなので、内容の濃さ云々とはあまり関係ないのですがね。

【次節の内容】

www.anarchive-beta.com