からっぽのしょこ

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

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

はじめに

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

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

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

【他の節一覧】

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

【この節の内容】

3.2 サンプリング近似法

 確率分布からのサンプリングに基づく近似アルゴリズムについて説明する。

3.2.1 ギブスサンプリング

 $\boldsymbol{\phi}, \boldsymbol{\pi}$を経由して、潜在変数$\boldsymbol{z}_{1:n}$をサンプリングする。

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

を用いる。

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

$$ \begin{align*} p(z_i = k | \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{\phi}, \boldsymbol{\pi}, \eta, \alpha) &= \frac{ p(z_i = k, \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{\phi}, \boldsymbol{\pi} | \eta, \alpha) }{ p(\boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{\phi}, \boldsymbol{\pi} | \eta, \alpha) } \tag{3.17}\\ &\propto p(z_i = k, \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{\phi}, \boldsymbol{\pi} | \eta, \alpha) \tag{3.18}\\ &= p(x_i | z_i = k, \boldsymbol{\phi}) p(\boldsymbol{x}_{1:n}^{\backslash i} | \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{\phi}) p(z_i | \boldsymbol{\pi}) p(\boldsymbol{z}_{1:n}^{\backslash i} | \boldsymbol{\pi}) p(\boldsymbol{\phi} | \eta) p(\boldsymbol{\pi} | \alpha) \\ &= \left[ \prod_{i'=1}^n p(x_{i'} | z_{i'} = k, \boldsymbol{\phi}) p(z_{i'} | \boldsymbol{\pi}) \right] \left[ \prod_{k=1}^K p(\phi_k | \eta) \right] p(\boldsymbol{\pi} | \alpha) \tag{3.19}\\ &\propto p(x_i | z_i = k, \boldsymbol{\phi}) p(z_i | \boldsymbol{\pi}) \\ &= p(x_i | \phi_k) p(z_i | \boldsymbol{\pi}) \tag{3.20} \end{align*} $$

【途中式の途中式】

  1. $p(A | B, C) = \frac{p(A, B | C)}{p(B | C)}$より、項を変形する。
  2. $z_i = k$と関係のない分母を省く。
  3. 生成過程より分解する。
  4. $i$を含む$i' = 1, 2, \cdots, n$として項をまとめる。また、それぞれ項を分解する。
  5. $z_i$に関係のある項のみを残す。


 条件付き独立性から

$$ p(z_i = k | \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}^{\backslash i}, \boldsymbol{\phi}, \boldsymbol{\pi}, \eta, \alpha) = p(z_i = k | x_i, \phi_k, \boldsymbol{\pi}) $$

である(?)。
 これを正規化すると

$$ p(z_i = k | x_i, \phi_k, \boldsymbol{\pi}) = \frac{ p(x_i | \phi_k) p(z_i = k | \boldsymbol{\pi}) }{ \sum_{k'=1}^K p(x_i | \phi_{k'}) p(z_i = k' | \boldsymbol{\pi}) } $$

が得られる。

・$\phi_k$のサンプリング式の導出

$$ \begin{align*} p(\phi_k | \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi}^{\backslash k}, \boldsymbol{\pi}, \eta, \alpha) &= \frac{ p(\phi_k, \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi}^{\backslash k}, \boldsymbol{\pi} | \eta, \alpha) }{ p(\boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi}^{\backslash k}, \boldsymbol{\pi} | \eta, \alpha) } \\ &\propto p(\phi_k, \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi}^{\backslash k}, \boldsymbol{\pi} | \eta, \alpha) \\ &= p(\boldsymbol{x}_{1:n} | \boldsymbol{z}_{1:n}, \phi_k, \boldsymbol{\phi}^{\backslash k}) p(\boldsymbol{z}_{1:n} | \boldsymbol{\pi}) p(\phi_k, \boldsymbol{\phi}^{\backslash k} | \eta) p(\boldsymbol{\pi} | \alpha) \\ &= \left[ \prod_{i=1}^n p(x_i | z_i, \boldsymbol{\phi}) p(z_i | \boldsymbol{\pi}) \right] p(\phi_k | \eta) p(\boldsymbol{\phi}^{\backslash k} | \eta) p(\boldsymbol{\pi} | \alpha) \\ &\propto \left[ \prod_{i=1}^n p(x_i | \phi_{z_i})^{\delta({z_i=k)}} \right] p(\phi_k | \eta) \end{align*} $$

 条件付き独立性から

$$ p(\phi_k | \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi}^{\backslash k}, \boldsymbol{\pi}, \eta, \alpha) = p(\phi_k | \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \eta) $$

である。
 これを正規化すると

$$ p(\phi_k | \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \eta) = \frac{ \left[ \prod_{i=1}^n p(x_i | \phi_{z_i})^{\delta({z_i=k)}} \right] p(\phi_k | \eta) }{ \sum_{k'=1}^K \left[ \prod_{i=1}^n p(x_i | \phi_{z_i})^{\delta({z_i=k)}} \right] p(\phi_k | \eta) } $$

が得られる。

・$\boldsymbol{\pi}$のサンプリング式の導出

$$ \begin{align*} p(\boldsymbol{\pi} | \boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi}, \eta, \alpha) &= \frac{ p(\boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi}, \boldsymbol{\pi} | \eta, \alpha) }{ p(\boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi} | \eta, \alpha) } \\ &\propto p(\boldsymbol{x}_{1:n}, \boldsymbol{z}_{1:n}, \boldsymbol{\phi}, \boldsymbol{\pi} | \eta, \alpha) \\ &= p(\boldsymbol{x}_{1:n} | \boldsymbol{z}_{1:n}, \boldsymbol{\phi}) p(\boldsymbol{z}_{1:n} | \boldsymbol{\pi}) p(\boldsymbol{\phi} | \eta) p(\boldsymbol{\pi} | \alpha) \\ &= \left[ \prod_{i=1}^n p(x_i | z_i, \boldsymbol{\phi}) p(z_i | \boldsymbol{\pi}) \right] \left[ \prod_{k=1}^K p(\phi_k | \eta) \right] p(\boldsymbol{\pi} | \alpha) \\ &\propto \left[ \prod_{i=1}^n p(z_i | \boldsymbol{\pi}) \right] p(\boldsymbol{\pi} | \alpha) \tag{3.22} \end{align*} $$

 条件付き独立性から

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

である。
 これを正規化すると

$$ p(\boldsymbol{\pi} | \boldsymbol{z}_{1:n}, \alpha) = \frac{ [ \prod_{i=1}^n p(z_i | \boldsymbol{\pi}) ] p(\boldsymbol{\pi} | \alpha) }{ \int [ \prod_{i=1}^n p(z_i | \boldsymbol{\pi}) ] p(\boldsymbol{\pi} | \alpha) d\boldsymbol{\pi} } $$

が得られる。

参考文献

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

おわりに

 一旦戻ってきました。

 数式展開は何となくできるようになったのですが、根本的な理解が足りていないので、あくまで数式パズル的な理解に留まっているのを何とかしたいです。と、ずっと言っているのですが、あれもこれも手を広げられずにいます。
 という訳ですので、何か変なところがあれば、私はそれを確実に知りませんので教えてください。お願い致します。

【次節の内容】

www.anarchive-beta.com