はじめに
『ベイズ推論による機械学習入門』の学習時のノートです。基本的な内容は「数式の行間を読んでみた」とそれを「Rで組んでみた」になります。「数式」と「プログラム」から理解するのが目標です。
この記事は4.4.4項の内容です。平均、精度行列が未知の多次元ガウス分布(多変量正規分布)を用いた混合モデルにおける崩壊型ギブスサンプリングを導出します。
省略してある内容等ありますので、本と併せて読んでください。初学者な自分が理解できるレベルまで落として書き下していますので、分かる人にはかなりくどくなっています。同じような立場の人のお役に立てれば幸いです。
【前節の内容】
www.anarchive-beta.com
【他の節一覧】
www.anarchive-beta.com
【この節の内容】
4.4.4 崩壊型ギブスサンプリング
ガウス混合モデルに対する崩壊型ギブスサンプリングを導出する。
ガウス混合モデルからパラメータ$\boldsymbol{\mu},\ \boldsymbol{\Lambda},\ \boldsymbol{\pi}$を周辺化除去したモデル
$$
p(\mathbf{X}, \mathbf{S})
= \int \int \int
p(\mathbf{X}, \mathbf{S}, \boldsymbol{\mu}, \boldsymbol{\Lambda}, \boldsymbol{\pi})
d\boldsymbol{\mu} d\boldsymbol{\Lambda} d\boldsymbol{\pi}
\tag{4.123}
$$
を用いる。
・潜在変数のサンプリング
観測データ$\mathbf{x}_n$のクラスタ(潜在変数)$\mathbf{s}_n$を除いた集合$\mathbf{S}_{\backslash n} = {\mathbf{s}_1, \cdots, \mathbf{s}_{n-1}, \mathbf{s}_{n+1}, \cdots, \mathbf{s}_N}$がサンプルされたものとした(条件とした)とき、$\mathbf{s}_n$に関する事後分布は
$$
\begin{align}
p(\mathbf{s}_n | \mathbf{X}, \mathbf{S}_{\backslash n})
&= \frac{
p(\mathbf{X}, \mathbf{s}_n, \mathbf{S}_{\backslash n})
}{
p(\mathbf{X}, \mathbf{S}_{\backslash n})
}
\\
&\propto
p(\mathbf{X}, \mathbf{s}_n, \mathbf{S}_{\backslash n})
\\
&= p(\mathbf{x}_n | \mathbf{X}_{\backslash n}, \mathbf{s}_n, \mathbf{S}_{\backslash n})
p(\mathbf{X}_{\backslash n} | \mathbf{S}_{\backslash n})
p(\mathbf{s}_n | \mathbf{S}_{\backslash n})
p(\mathbf{S}_{\backslash n})
\\
&\propto
p(\mathbf{x}_n | \mathbf{X}_{\backslash n}, \mathbf{s}_n, \mathbf{S}_{\backslash n})
p(\mathbf{s}_n | \mathbf{S}_{\backslash n})
\tag{4.124}
\end{align}
$$
で求められる。適宜$\mathbf{s}_n$に影響しない項を省いている。また$\mathbf{S} = {\mathbf{s}_n, \mathbf{S}_{\backslash n}}$、$\mathbf{X} = {\mathbf{x}_n, \mathbf{X}_{\backslash n}}$である。
前の項は、周辺化したパラメータを明示すると
$$
\begin{align}
p(\mathbf{x}_n | \mathbf{X}_{\backslash n}, \mathbf{s}_n, \mathbf{S}_{\backslash n})
&= \int \int
p(\mathbf{x}_n, \boldsymbol{\mu}, \boldsymbol{\Lambda} | \mathbf{X}_{\backslash n}, \mathbf{s}_n, \mathbf{S}_{\backslash n})
d\boldsymbol{\mu} d\boldsymbol{\Lambda}
\\
&= \int \int
p(\mathbf{x}_n | \mathbf{s}_n, \boldsymbol{\mu}, \boldsymbol{\Lambda})
p(\boldsymbol{\mu}, \boldsymbol{\Lambda} | \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
d\boldsymbol{\mu} d\boldsymbol{\Lambda}
\tag{4.125}
\end{align}
$$
と分解できる。
更にこの式の前の項は、ガウス混合モデルの定義(4.4.1項)より
$$
p(\mathbf{x}_n | \mathbf{s}_n, \boldsymbol{\mu}, \boldsymbol{\Lambda})
= \prod_{k=1}^K
\mathcal{N}(\mathbf{x}_n | \boldsymbol{\mu}_k, \boldsymbol{\Lambda}_k^{-1})^{s_{n,k}}
\tag{4.85}
$$
である。
後の項は
$$
\begin{align}
p(\boldsymbol{\mu}, \boldsymbol{\Lambda} | \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
&= \frac{
p(\mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n}, \boldsymbol{\mu}, \boldsymbol{\Lambda})
}{
p(\mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
}
\\
&\propto
p(\mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n}, \boldsymbol{\mu}, \boldsymbol{\Lambda})
\\
&= p(\mathbf{X}_{\backslash n} | \mathbf{S}_{\backslash n}, \boldsymbol{\mu}, \boldsymbol{\Lambda})
p(\mathbf{S}_{\backslash n})
p(\boldsymbol{\mu}, \boldsymbol{\Lambda})
\\
&\propto
p(\mathbf{X}_{\backslash n} | \mathbf{S}_{\backslash n}, \boldsymbol{\mu}, \boldsymbol{\Lambda})
p(\boldsymbol{\mu}, \boldsymbol{\Lambda})
\tag{4.126}
\end{align}
$$
となる。適宜$\boldsymbol{\mu},\ \boldsymbol{\Lambda}$に影響しない項を省いている。またこの項は
$$
p(\boldsymbol{\mu}, \boldsymbol{\Lambda} | \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
= p(\boldsymbol{\mu} | \boldsymbol{\Lambda}, \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
p(\boldsymbol{\Lambda} | \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
$$
と分解できる。
この式(4.126)は$N - 1$個の観測データ$\mathbf{X}_{\backslash n}$によって学習した$\boldsymbol{\mu},\ \boldsymbol{\Lambda}$の事後分布(のパラメータ)である。よって、4.4.2項の事後分布(4.95)と同じ手順で求められる。
式(4.126)を$p(\boldsymbol{\mu} | \boldsymbol{\Lambda}, \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})$に関して整理すると、式(4.97)と式(4.99)の導出と同様にして
$$
\begin{aligned}
p(\boldsymbol{\mu} | \boldsymbol{\Lambda}, \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
&= \prod_{k=1}^K
p(\boldsymbol{\mu}_k | \boldsymbol{\Lambda}_k, \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
\\
&= \prod_{k=1}^K
\mathcal{N}(\boldsymbol{\mu}_k | \hat{\mathbf{m}}_{k \backslash n}, (\hat{\beta}_{k \backslash n} \boldsymbol{\Lambda}_k)^{-1})
\end{aligned}
$$
が得られる。ここで
$$
\begin{align}
\hat{\beta}_{k \backslash n}
&= \sum_{n'\neq n}
s_{n',k}
+ \beta
\\
\hat{\mathbf{m}}_{k \backslash n}
&= \frac{
\sum_{n'\neq n}
s_{n',k} \mathbf{x}_{n'}
+ \beta \mathbf{m}
}{
\hat{\beta}_{k \backslash n}
}
\tag{4.128.a}
\end{align}
$$
である。
また式(4.126)を$p(\boldsymbol{\Lambda} | \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})$に関して整理すると、式(4.101)と式(4.103)の導出と同様にして
$$
\begin{aligned}
p(\boldsymbol{\Lambda} | \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
&= \prod_{k=1}^K
p(\boldsymbol{\Lambda}_k | \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
\\
&= \prod_{k=1}^K
\mathcal{W}(\boldsymbol{\Lambda}_k | \hat{\nu}_{k \backslash n}, \hat{\mathbf{W}}_{k \backslash n})
\end{aligned}
$$
が得られる。ここで
$$
\begin{align}
\hat{\mathbf{W}}_{k \backslash n}^{-1}
&= \sum_{n'\neq n}
s_{n',k} \mathbf{x}_{n'} \mathbf{x}_{n'}^{\top}
+ \beta \mathbf{m} \mathbf{m}^{\top}
- \hat{\beta}_{k \backslash n} \hat{\mathbf{m}}_{k \backslash n} \hat{\mathbf{m}}_{k \backslash n}^{\top}
+ \mathbf{W}^{-1}
\\
\hat{\nu}_{k \backslash n}
&= \sum_{n'\neq n}
s_{n',k}
+ \nu
\tag{4.128.b}
\end{align}
$$
である。
それぞれ代入すると
$$
p(\boldsymbol{\mu}, \boldsymbol{\Lambda} | \mathbf{X}_{\backslash n}, \mathbf{S}_{\backslash n})
= \prod_{k=1}^K
\mathcal{N}(\boldsymbol{\mu}_k | \hat{\mathbf{m}}_{k \backslash n}, (\hat{\beta}_{k \backslash n} \boldsymbol{\Lambda}_k)^{-1})
\mathcal{W}(\boldsymbol{\Lambda}_k | \hat{\nu}_{k \backslash n}, \hat{\mathbf{W}}_{k \backslash n})
\tag{4.127}
$$
となる。
式(4.85)と式(4.127)を式(4.25)に代入して、$s_{n,k} = 1$の場合を考える。$k$以外の$k' = 1, \cdots, k - 1, k + 1, \cdots, K$は$s_{n,k'} = 0$なので、式全体が1となる(0乗となる)ことから(?)
$$
p(\mathbf{x}_n | \mathbf{X}_{\backslash n}, s_{n,k} = 1, \mathbf{S}_{\backslash n})
= \int \int
\mathcal{N}(\mathbf{x}_n | \boldsymbol{\mu}_k, \boldsymbol{\Lambda}_k^{-1})
\mathcal{N}(\boldsymbol{\mu}_k | \hat{\mathbf{m}}_{k \backslash n}, (\hat{\beta}_{k \backslash n} \boldsymbol{\Lambda}_k)^{-1})
\mathcal{W}(\boldsymbol{\Lambda}_k | \hat{\nu}_{k \backslash n}, \hat{\mathbf{W}}_{k \backslash n})
d\boldsymbol{\mu} d\boldsymbol{\Lambda}
$$
となる。この式は、3.4.3項の予測分布(3.134)と同じ形状である。よって、式(3.139)の導出と同様にして
$$
p(\mathbf{x}_n | \mathbf{X}_{\backslash n}, s_{n,k} = 1, \mathbf{S}_{\backslash n})
= \mathrm{St}(\mathbf{x}_n | \hat{\mathbf{m}}^{(s)}_{k \backslash n}, \hat{\boldsymbol{\Lambda}}^{(s)}_{k \backslash n}, \hat{\nu}^{(s)}_{k \backslash n})
\tag{4.129}
$$
が得られる。ここで
$$
\begin{aligned}
\hat{\mathbf{m}}^{(s)}_{k \backslash n}
&= \hat{\mathbf{m}}_{k \backslash n}
\\
\hat{\boldsymbol{\Lambda}}^{(s)}_{k \backslash n}
&= \frac{
(1 - D + \hat{\nu}_{k \backslash n})
\hat{\beta}_{k \backslash n}
}{
1 + \hat{\beta}_{k \backslash n}
}
\hat{\mathbf{W}}_{k \backslash n}
\\
\hat{\nu}^{(s)}_{k \backslash n}
&= 1 - D + \hat{\nu}_{k \backslash n}
\end{aligned}
$$
である(右肩の$(s)$はスチューデント分布のパラメータを表している)。
式(4.124)の後の項は、$\mathbf{s}_n$の事後分布であり、4.3.4項で求めた
$$
p(\mathbf{s}_n | \mathbf{S}_{\backslash n})
= \mathrm{Cat}(\mathbf{s}_n | \boldsymbol{\eta}_{\backslash n})
\tag{4.74}
$$
である。ここで
$$
\begin{align}
\hat{\alpha}_{k \backslash n}
&= \sum_{n' \neq n}
s_{n,k}
+ \alpha
\tag{4.73}\\
\eta_{k \backslash n}
&= \frac{
\hat{\alpha}_{k \backslash n}
}{
\sum_{k'=1}^K \hat{\alpha}_{k' \backslash n}
}
\tag{4.75}
\end{align}
$$
である。ただし$0 \leq \eta_{k \backslash n} \leq 1 ,\ \sum_{k=1}^K \eta_{k \backslash n} = 1$である。
【本に載ってないのでここから妄想】
$\mathbf{s}_n$の事後分布(サンプリング式)の具体的な形状を求める。$s_{n,k} = 1$の場合について考えた式(4.129)に関して、$x^0 = 1$であることを利用して他の項とまとめると
$$
p(\mathbf{x}_n | \mathbf{X}_{\backslash n}, \mathbf{s}_n, \mathbf{S}_{\backslash n})
= \prod_{k=1}^K
\mathrm{St}(\mathbf{x}_n | \hat{\mathbf{m}}^{(s)}_{k \backslash n}, \hat{\boldsymbol{\Lambda}}^{(s)}_{k \backslash n}, \hat{\nu}^{(s)}_{k \backslash n})^{s_{n,k}}
$$
となる。この式と式(4.74)を、計算を分かりやすくするため対数をとった式(4.124)に代入すると
$$
\begin{align}
\ln p(\mathbf{s}_n | \mathbf{X}, \mathbf{S}_{\backslash n})
&= \ln p(\mathbf{x}_n | \mathbf{X}_{\backslash n}, \mathbf{s}_n, \mathbf{S}_{\backslash n})
+ \ln p(\mathbf{s}_n | \mathbf{S}_{\backslash n})
+ \mathrm{const.}
\tag{4.124}\\
&= \sum_{k=1}^K
s_{n,k}
\ln \mathrm{St}(\mathbf{x}_n | \hat{\mathbf{m}}_{(s) k}, \hat{\boldsymbol{\Lambda}}_{(s) k}, \hat{\nu}_{(s) k})
+ \ln \mathrm{Cat}(\mathbf{s}_n | \boldsymbol{\eta}_{\backslash n})
+ \mathrm{const.}
\\
&= \sum_{k=1}^K
s_{n,k} \left[
- \frac{\hat{\nu}^{(s)}_{k \backslash n} + D}{2}
\ln \Bigl\{
1
+ \frac{1}{\hat{\nu}^{(s)}_{k \backslash n}}
(\mathbf{x}_n - \hat{\mathbf{m}}^{(s)}_{k \backslash n})^{\top}
\hat{\boldsymbol{\Lambda}}^{(s)}_{k \backslash n}
(\mathbf{x}_n - \hat{\mathbf{m}}^{(s)}_{k \backslash n})
\Bigr\}
\right]
+ \sum_{k=1}^K
s_{n,k}
\ln \eta_{n,k \backslash n}
+ \mathrm{const.}
\\
&= \sum_{k=1}^K
s_{n,k} \left[
- \frac{\hat{\nu}^{(s)}_{k \backslash n} + D}{2}
\ln \Bigl\{
1
+ \frac{1}{\hat{\nu}^{(s)}_{k \backslash n}}
(\mathbf{x}_n - \hat{\mathbf{m}}^{(s)}_{k \backslash n})^{\top}
\hat{\boldsymbol{\Lambda}}^{(s)}_{k \backslash n}
(\mathbf{x}_n - \hat{\mathbf{m}}^{(s)}_{k \backslash n})
\Bigr\}
+ \ln \eta_{n,k \backslash n}
+ \mathrm{const.}
\right]
\end{align}
$$
となる???(パラメータの計算式にも$s_{n,k}$が含まれてますが、取り出して整理する必要とかあるんですかね、、、)
参考文献
- 須山敦志『ベイズ推論による機械学習入門』(機械学習スタートアップシリーズ)杉山将監修,講談社,2017年.
おわりに
明けましておめでとうございます。哀しいかな、他にすることもなかったので元日からブログを更新することになりました。と言っても、(去年中に終わらせたかった章なので)ほとんど資料としてできていたものを確認して転載しただけですが。まぁ何はともあれ、ブログとしては幸先のいいスタートを切ることになりました。今年もよろしくお願いします。
ところで、最後の最後が本に載ってないんですが?自明なんですか?分かりません。。MLPシリーズの『ノンパラメトリックベイズ』には最後のところも載ってるようですが、パラパラと見ただけでは分かりませんでした(記号が違ったりするからね)。ここのためだけに買うのは躊躇ったので尻切れトンボです、、が一応これで4章の数式行間埋め編は終了です。
全然幸先よくないですが、今年もこんな感じで発狂しながらも楽しんでやっていきます。
【次節の内容】
続きはいつか