からっぽのしょこ

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

3.2.2:カテゴリ分布のベイズ推論の導出【緑ベイズ入門のノート】

はじめに

 『ベイズ推論による機械学習入門』(MLSシリーズ)の独学時のノートです。各種のモデルやアルゴリズムについて「数式・プログラム・図」を用いて解説します。
 本の補助として読んでください。

 この記事では、カテゴリ分布に対するベイズ推論の数式の行間を埋めます。

【前節の内容】

www.anarchive-beta.com

【他の節の内容】

www.anarchive-beta.com

【この節の内容】

3.2.2 カテゴリ分布のベイズ推論の導出

 カテゴリモデル(Categorical model)に対するベイズ推論(Bayesian inference)を導出する。カテゴリモデルでは、尤度関数をカテゴリ分布(Categorical distribution)、事前分布をディリクレ分布(direchlet distribution)とする。
 カテゴリモデルについては「3.2.2:カテゴリモデルの生成モデルの導出【緑ベイズ入門のノート】 - からっぽのしょこ」、カテゴリ分布については「カテゴリ分布の定義式 - からっぽのしょこ」を参照のこと。

事後分布の導出

 まずは、カテゴリ分布のパラメータ  \boldsymbol{\pi} の事後分布(posterior distribution)を導出する。
 ディリクレ分布については「ディリクレ分布の定義式 - からっぽのしょこ」を参照のこと。

 観測データ  \mathbf{X} が与えられた(条件とする)下でのパラメータ  \boldsymbol{\pi} の条件付き分布(事後分布)を求める。

 \displaystyle
\begin{align}
p(\boldsymbol{\pi} \mid \mathbf{S}, \boldsymbol{\alpha})
   &= \frac{
          p(\mathbf{S} \mid \boldsymbol{\pi})
          p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
      }{
          p(\mathbf{S} \mid \boldsymbol{\alpha})
      }
\\
   &\propto
      p(\mathbf{S} \mid \boldsymbol{\pi})
      p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
\\
   &= \left\{ \prod_{n=1}^N
          p(\mathbf{s}_n \mid \boldsymbol{\pi})
      \right\}
      p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
\\
   &= \left\{\prod_{n=1}^N
          \mathrm{Cat}(\mathbf{s}_n \mid \boldsymbol{\pi})
      \right\}
      \mathrm{Dir}(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
\tag{3.25}
\end{align}

途中式の途中式(クリックで展開)


  • 1: ベイズの定理  p(y \mid x) = \frac{p(x \mid y) p(y)}{p(x)} より、観測変数  \mathbf{S} を条件に移した式を立てる。

 事後分布は、 \mathbf{S}, \boldsymbol{\pi} の結合分布と  \mathbf{S} の周辺分布を用いて、次のようにも求められる。

 \displaystyle
\begin{aligned}
p(\boldsymbol{\pi} \mid \mathbf{S}, \boldsymbol{\alpha})
   &= \frac{
          p(\mathbf{S}, \boldsymbol{\pi} \mid \boldsymbol{\alpha})
      }{
          p(\mathbf{S} \mid \boldsymbol{\alpha})
      }
\\
   &= \frac{
          p(\mathbf{S}, \boldsymbol{\pi} \mid \boldsymbol{\alpha})
      }{
          \int
              p(\mathbf{S}, \boldsymbol{\pi} \mid \boldsymbol{\alpha})
          \mathrm{d} \boldsymbol{\pi}
      }
\\
   &= \frac{
          p(\mathbf{S} \mid \boldsymbol{\pi})
      p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
      }{
          \int
              p(\mathbf{S} \mid \boldsymbol{\pi})
              p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
          \mathrm{d} \boldsymbol{\pi}
      }
\end{aligned}

 1行目では、条件付き分布  p(y \mid x) = \frac{p(x, y)}{p(x)} より、 \mathbf{S} を条件に移している。
 2行目では、周辺化  p(y) = \int p(x, y) \mathrm{d} x した  \boldsymbol{\pi} を明示している。
 3行目では、 \mathbf{S}, \boldsymbol{\pi} の依存関係に従い項を分割している。
 生成モデル(結合分布)については「生成モデルの導出」を参照のこと。

  • 2:  \boldsymbol{\pi} と無関係な項を省く。
  • 3: 観測データ集合  \mathbf{S} の生成確率を、各データ  \mathbf{s}_n の生成確率の積に分解する。
  • 4: カテゴリモデルの定義より、尤度関数をカテゴリ分布、事前分布をディリクレ分布に置き換える。

 周辺分布(分母)は  \boldsymbol{\pi} に影響しないため省いて、比例関係のみに注目する。省略した項については、最後に正規化することで対応できる。

 両辺の対数をとり、指数部分の計算を分かりやすくして、 \boldsymbol{\pi} に関して式を整理する。

 \displaystyle
\begin{aligned}
\ln p(\boldsymbol{\pi} \mid \mathbf{S}, \boldsymbol{\alpha})
   &= \ln \Bigl(
          \frac{
              \left\{ \prod_{n=1}^N
                  p(\mathbf{s}_n \mid \boldsymbol{\pi})
              \right\}
              p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
          }{
              p(\mathbf{S} \mid \boldsymbol{\alpha})
          }
      \Bigr)
\\
   &= \ln \Bigl(
          \prod_{n=1}^N
              p(\mathbf{s}_n \mid \boldsymbol{\pi})
      \Bigr)
      + \ln p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
      - \ln p(\mathbf{S} \mid \boldsymbol{\alpha})
\\
   &= \sum_{n=1}^N
          \ln p(\mathbf{s}_n \mid \boldsymbol{\pi})
      + \ln p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
      + \mathrm{const.}
\\
   &= \sum_{n=1}^N
          \ln \mathrm{Cat}(\mathbf{s}_n \mid \boldsymbol{\pi})
      + \ln \mathrm{Dir}(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
      + \mathrm{const.}
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 式(3.25)に関して、対数をとった式を立てる。
  • 2-3: 自然対数の性質  \ln(x y) = \ln x + \ln y \ln \frac{x}{y} = \ln x - \ln y より、分数の項を展開する。

 対数の性質より、総乗  \prod_n の対数をとると、対数の総和  \sum_n になる。

 \displaystyle
\begin{aligned}
\ln p(\mathbf{S} \mid \boldsymbol{\pi})
   &= \ln \Bigl(
          \prod_{n=1}^N
              p(\mathbf{s}_n \mid \boldsymbol{\pi})
      \Bigr)
\\
   &= \ln \Bigl(
          p(\mathbf{s}_1 \mid \boldsymbol{\pi})
          * p(\mathbf{s}_2 \mid \boldsymbol{\pi})
          * \cdots
          * p(\mathbf{s}_N \mid \boldsymbol{\pi})
      \Bigr)
\\
   &= \ln p(\mathbf{s}_1 \mid \boldsymbol{\pi})
      + \ln p(\mathbf{s}_2 \mid \boldsymbol{\pi})
      + \cdots
      + \ln p(\mathbf{s}_N \mid \boldsymbol{\pi})
\\
   &= \sum_{n=1}^N
          \ln p(\mathbf{s}_n \mid \boldsymbol{\pi})
\end{aligned}
  • 3:  \boldsymbol{\pi} と無関係な項を  \mathrm{const.} とおく。
  • 4: カテゴリモデルの定義より、尤度関数をカテゴリ分布、事前分布をディリクレ分布に置き換える。

  \boldsymbol{\pi} に影響しない項を  \mathrm{const.} とおく。省略した項については、最後に正規化することで対応できる。

 右辺の各分布に具体的な式を代入して、式の形状を明らかにしていく。

 \displaystyle
\begin{align}
\ln p(\boldsymbol{\pi} \mid \mathbf{S}, \boldsymbol{\alpha})
   &= \sum_{n=1}^N
          \ln \Bigl(
              \prod_{k=1}^K
                  \pi_k^{s_{n,k}}
          \Bigr)
\\
   &\quad
      + \ln \Bigl(
          \mathrm{C}_{\mathrm{Dir}}(\boldsymbol{\alpha})
          \prod_{k=1}^K
              \pi_k^{\alpha_k-1}
        \Bigr)
      + \mathrm{const.}
\\
   &= \sum_{n=1}^N \sum_{k=1}^K
          s_{n,k} \ln \pi_k
\\
   &\quad
      + \ln \mathrm{C}_{\mathrm{Dir}}(\boldsymbol{\alpha})
      + \sum_{k=1}^K
          (\alpha_k - 1) \ln \pi_k
      + \mathrm{const.}
\\
   &= \sum_{k=1}^K \left\{
          \sum_{n=1}^N
              s_{n,k} \ln \pi_k
          + (\alpha_k - 1) \ln \pi_k
      \right\}
      + \mathrm{const.}
\\
   &= \sum_{k=1}^K
          \left(
              \sum_{n=1}^N s_{n,k}
              + \alpha_k - 1
          \right)
          \ln \pi_k
      + \mathrm{const.}
\tag{3.26}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 尤度関数はカテゴリ分布、事前分布はディリクレ分布を仮定しているので、それぞれ定義式に置き換える。
 \displaystyle
\begin{align}
p(\mathbf{s}_n \mid \boldsymbol{\pi})
   &= \mathrm{Cat}(\mathbf{s}_n \mid \boldsymbol{\pi})
\tag{3.23}\\
   &= \prod_{k=1}^K
          \pi_k^{s_{n,k}}
\\
p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
   &= \mathrm{Dir}(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
\tag{3.24}\\
   &= \mathrm{C}_{\mathrm{Dir}}(\boldsymbol{\alpha})
          \prod_{k=1}^K
              \pi_k^{\alpha_k-1}
\end{align}

 ここで、 \mathrm{C}_\mathrm{Dir}(\boldsymbol{\alpha}) = \frac{\Gamma(\sum_{k=1}^K \alpha_k)}{\prod_{k=1}^K \Gamma(\alpha_k)} は、ディリクレ分布(事前分布)の正規化項である。(式変形に影響しないので簡易的に表記している。)

  • 2: 自然対数の性質  \ln(x y) = \ln x + \ln y \ln x^y = y \ln x より、定義式の項を展開する。
  • 3:  k に関する総和  \sum_k の項をまとめる。
  • 4:  \pi_k の項をまとめる。

 適宜、 \boldsymbol{\pi} に影響しない項を  \mathrm{const.} にまとめている。

 事後分布の式(3.26)について、次のようにおく。

 \displaystyle
\begin{align}
\hat{\boldsymbol{\alpha}}
   &= (\hat{\alpha}_1, \hat{\alpha}_2, \cdots, \hat{\alpha}_K)
\\
\hat{\alpha}_k
   &= \sum_{n=1}^N s_{n,k}
      + \alpha_k
\tag{3.28}
\end{align}

 式(3.26)について、 \hat{\boldsymbol{\alpha}} で置き換える。

 \displaystyle
\ln p(\boldsymbol{\pi} \mid \mathbf{S}, \boldsymbol{\alpha})
    = \sum_{k=1}^K
          (\hat{\alpha}_k - 1)
          \ln \pi_k
      + \mathrm{const.}

 さらに、 \ln を外して  \mathrm{const.} を正規化項に置き換える(正規化する)と、事後分布は式の形状から、パラメータ  \hat{\boldsymbol{\alpha}} のディリクレ分布であることが分かる。

 \displaystyle
\begin{align}
p(\boldsymbol{\pi} \mid \mathbf{S}, \boldsymbol{\alpha})
   &= \mathrm{C}_\mathrm{Dir}(\hat{\boldsymbol{\alpha}})
      \prod_{k=1}^K
          \pi_k^{\hat{\alpha}_k-1}
\\
   &= \frac{\Gamma(\sum_{k=1}^K \hat{\alpha}_k)}{\prod_{k=1}^K \Gamma(\hat{\alpha}_k)}
      \prod_{k=1}^K
          \pi_k^{\hat{\alpha}_k-1}
\\
   &= \mathrm{Dir}(\boldsymbol{\pi} \mid \hat{\boldsymbol{\alpha}})
\tag{3.27}
\end{align}

  \boldsymbol{\pi} の事後分布の式が得られた。
 ここで、 \mathrm{C}_\mathrm{Dir}(\hat{\boldsymbol{\alpha}}) は、ディリクレ分布(事後分布)の正規化項である。
 また、式(3.28)が、事後分布のパラメータ(超パラメータ)  \hat{\boldsymbol{\alpha}} の計算式(更新式)である。

 以上で、カテゴリモデルにおける事後分布を導出した。

スポンサードリンク

予測分布の導出

 次は、カテゴリ分布に従う未観測データ  \mathbf{s}_{*} = (s_{*,1}, \cdots, s_{*,K}) の予測分布(predict distribution)を導出する。

事前分布による予測分布

 事前分布(観測データによる学習を行っていない  \boldsymbol{\pi} の分布)を用いた予測分布(事前予測分布)を求める。

 \displaystyle
\begin{align}
p(\mathbf{s}_{*} \mid \boldsymbol{\alpha})
   &= \int
          p(\mathbf{s}_{*}, \boldsymbol{\pi} \mid \boldsymbol{\alpha})
      \mathrm{d} \boldsymbol{\pi}
\\
   &= \int
          p(\mathbf{s}_{*} \mid \boldsymbol{\pi})
          p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
      \mathrm{d} \boldsymbol{\pi}
\\
   &= \int
          \mathrm{Cat}(\mathbf{s}_{*} \mid \boldsymbol{\pi})
          \mathrm{Dir}(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
      \mathrm{d} \boldsymbol{\pi}
\tag{1}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 未知変数  \mathbf{s}_{*} とパラメータ  \boldsymbol{\pi} の結合分布に対して、 \boldsymbol{\pi} を周辺化した式を立てる。
  • 2: 依存関係のある  \mathbf{s}_{*}, \boldsymbol{\pi} の項を分割する。
  • 3: カテゴリモデルの定義より、尤度関数をカテゴリ分布、事前分布をディリクレ分布に置き換える。

 事前予測分布は、未知のデータ  \mathbf{s}_{*} の生成分布(3.23)と、パラメータ  \boldsymbol{\pi} の事前分布(3.24)を用いた、 \mathbf{s}_{*} の周辺分布である。

 右辺の各分布について具体的な式を代入して、式の形状を明らかにしていく。

 \displaystyle
\begin{align}
p(\mathbf{s}_{*} \mid \boldsymbol{\alpha})
   &= \int
          \left\{ \prod_{k=1}^K
              \pi_k^{s_{*,k}}
          \right\}
          \mathrm{C}_\mathrm{Dir}(\boldsymbol{\alpha})
          \left\{ \prod_{k=1}^K
              \pi_k^{\alpha_k-1}
          \right\}
      \mathrm{d} \boldsymbol{\pi}
\\
   &= \mathrm{C}_\mathrm{Dir}(\boldsymbol{\alpha})
      \int \prod_{k=1}^K
          \pi_k^{s_{*,k}}
          \pi_k^{\alpha_k-1}
      \mathrm{d} \boldsymbol{\pi}
\\
   &= \mathrm{C}_\mathrm{Dir}(\boldsymbol{\alpha})
      \int \prod_{k=1}^K
          \pi_k^{s_{*,k} + \alpha_k-1}
      \mathrm{d} \boldsymbol{\pi}
\tag{2}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 尤度関数はカテゴリ分布、事前分布はディリクレ分布を仮定しているので、それぞれ定義式に置き換える。
 \displaystyle
\begin{align}
p(\mathbf{s}_{*} \mid \boldsymbol{\pi})
   &= \mathrm{Cat}(\mathbf{s}_{*} \mid \boldsymbol{\pi})
\tag{3.23}\\
   &= \prod_{k=1}^K
          \pi_k^{s_{*,k}}
\\
p(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
   &= \mathrm{Dir}(\boldsymbol{\pi} \mid \boldsymbol{\alpha})
\tag{3.24}\\
   &= \mathrm{C}_{\mathrm{Dir}}(\boldsymbol{\alpha})
          \prod_{k=1}^K
              \pi_k^{\alpha_k-1}
\end{align}
  • 2:  \boldsymbol{\pi} と無関係な項を  \int \mathrm{d} \boldsymbol{\pi} の外に出す。
  • 2:  k に関する総和  \sum_k の項をまとめる。
  • 3: 指数の性質  x^{a+b} = x^a x^b より、 \pi_k の項をまとめる。

  \boldsymbol{\pi} に関する積分の項に注目すると、パラメータ  (s_{*,k} + \alpha_k)_{k=1}^K = (s_{*,1} + \alpha_1, \cdots, s_{*,K} + \alpha_K) の正規化項のないディリクレ分布の形をしている。 K 次元ベクトルを(  K 個の要素をまとめて)  (x_k)_{k=1}^K = (x_1, \cdots, x_K) で表す。
 この積分の項は、ディリクレ分布の正規化項の逆数

 \displaystyle
\int \prod_{k=1}^K
    \pi_k^{s_{*,k} + \alpha_k-1}
\mathrm{d} \boldsymbol{\pi}
    = \frac{1}{\mathrm{C}_{\mathrm{Dir}}(\boldsymbol{\alpha})((s_{*,k} + \alpha_k)_{k=1}^K)}
\tag{3}

に変形できる(そもそも確率分布の関数(正規化項以外)の項を積分した逆数が正規化項である)。
 予測分布の式(2)について、正規化項の逆数の式(3)で置き換える。

 \displaystyle
p(\mathbf{s}_{*} \mid \boldsymbol{\alpha})
    = \frac{
          \mathrm{C}_{\mathrm{Dir}}(\boldsymbol{\alpha})
      }{
          \mathrm{C}_{\mathrm{Dir}} \Bigl(
               (s_{*,k} + \alpha_k)_{k=1}^K
          \Bigr)
      }
\tag{3.29}

 右辺の各正規化項について具体的な式を代入して、式の形状を明らかにしていく。

 \displaystyle
\begin{align}
p(\mathbf{s}_{*} \mid \boldsymbol{\alpha})
   &= \frac{
          \Gamma(\sum_{k=1}^K \alpha_k)
      }{
          \prod_{k=1}^K \Gamma(\alpha_k)
      }
      \frac{
          \prod_{k=1}^K \Gamma(s_{*,k} + \alpha_k)
      }{
          \Gamma(
              \sum_{k=1}^K \{
                  s_{*,k} + \alpha_k
              \}
          )
      }
\\
   &= \frac{
          \Gamma(\sum_{k=1}^K \alpha_k)
      }{
          \prod_{k=1}^K \Gamma(\alpha_k)
      }
      \frac{
          \prod_{k=1}^K \Gamma(s_{*,k} + \alpha_k)
      }{
          \Gamma(1 + \sum_{k=1}^K \alpha_k)
      }
\\
   &= \frac{
          \Gamma(\sum_{k=1}^K \alpha_k)
      }{
          \prod_{k=1}^K \Gamma(\alpha_k)
      }
      \frac{
          \prod_{k=1}^K \Gamma(s_{*,k} + \alpha_k)
      }{
          (\sum_{k=1}^K \alpha_k)
          \Gamma(\sum_{k=1}^K \alpha_k)
      }
\\
   &= \frac{1}{\prod_{k=1}^K \Gamma(\alpha_k)}
      \frac{
          \prod_{k=1}^K \Gamma(s_{*,k} + \alpha_k)
      }{
          \sum_{k=1}^K \alpha_k
      }
\tag{3.30}
\end{align}

途中式の途中式(クリックで展開)


  • 1: ディリクレ分布の正規化項(2.49)より、それぞれ置き換える。
  • 2:  k に関する総和  \sum_k の項を分割すると、カテゴリ分布の変数  \mathbf{s}_{*} は1 of K表現のベクトル(1つの要素のみが1で他の要素は0)なので、 \sum_{k=1}^K s_{*,k} = 1 である。
  • 3: ガンマ関数の性質  \Gamma(x + 1) = x \Gamma(x) より、ガンマ関数の項を分割する。
  • 4: 約分して、式を整理する。

 カテゴリ分布の変数  \mathbf{s}_n の各項  s_{n,k} は0か1の2値しかとらないため、場合分けしてこの式を整理する。
  s_{*,i} = 1 の(  i 番目の項が1となる)とき、式(3.30)は

 \displaystyle
\begin{align}
p(s_{*,i} = 1 \mid \boldsymbol{\alpha})
   &= \frac{1}{\prod_{k=1}^K \Gamma(\alpha_k)}
      \frac{
          \Gamma(s_{*,i} + \alpha_i)
          \prod_{j \neq i}
              \Gamma(s_{*,j} + \alpha_j)
      }{
          \sum_{k=1}^K \alpha_k
      }
\tag{3.30}\\
   &= \frac{1}{\prod_{k=1}^K \Gamma(\alpha_k)}
      \frac{
          \Gamma(1 + \alpha_i)
          \prod_{j \neq i}
              \Gamma(0 + \alpha_j)
      }{
          \sum_{k=1}^K \alpha_k
      }
\\
   &= \frac{1}{\prod_{k=1}^K \Gamma(\alpha_k)}
      \frac{
          \alpha_i
          \Gamma(\alpha_i)
          \prod_{j \neq i}
              \Gamma(\alpha_j)
      }{
          \sum_{k=1}^K \alpha_k
      }
\\
   &= \frac{\alpha_i}{\sum_{k=1}^K \alpha_k}
\tag{3.31}
\end{align}

途中式の途中式(クリックで展開)


  • 1:  k に関する総乗  \prod_{k=1}^K x_k から、 i 番目の項を取り出して、 i 番目以外  j = 1, \dots, i-1, i+1, \dots, K の項の積を  \prod_{j \neq i} x_j で表す。
 \displaystyle
\begin{aligned}
\prod_{k=1}^K
    x_k
   &= x_1 * x_2 * \cdots * x_{i-1} * x_i * x_{i+1} * \cdots * x_K
\\
   &= x_i
      * (x_1 * x_2 * \cdots * x_{i-1} * x_{i+1} * \cdots * x_K)
\\
   &= x_i
      \prod_{j \neq i}
          x_j
\end{aligned}
  • 2: 式(3.30)に  s_{*,i} = 1, s_{*,j} = 0 を代入する。
  • 2: ガンマ関数の性質より、ガンマ分布の項を分割する。
  • 3:  \prod_{k=1}^K \Gamma(\alpha_k) = \Gamma(\alpha_i) \prod_{j \neq i} \Gamma(\alpha_j) より、約分して、式を整理する。

となる。 s_{*,i} 以外の項  s_{*,1}, \cdots, s_{*,i-1}, s_{*,i+1}, \cdots, s_{*,K} が1となる場合も同様に求められる。
 1 of K表現の変数  \mathbf{s}_{*} (2値変数  s_{*,k} )を用いて、 K 個の式(3.31)をまとめる。

 \displaystyle
p(\mathbf{s}_{*} \mid \boldsymbol{\alpha})
    = \prod_{k=1}^K \Bigl(
          \frac{\alpha_{k}}{\sum_{k'=1}^K \alpha_{k'}}
      \Bigr)^{s_{*,k}}
\tag{4}

途中式の途中式(クリックで展開)


  • 指数の性質  x^0 = 1 より、 s_{*,i} = 1 のとき式(3.31)となるように式を立てる。

  i 番目の項が  s_{*,i} = 1 のとき、 i 番目以外の項が0乗により1となるので、式(3.31)が成り立つ。

 予測分布の式(4)について、次のようにおく。

 \displaystyle
\begin{align}
\boldsymbol{\pi}_{*}
   &= (\pi_{*,1}, \pi_{*,2}, \cdots, \pi_{*,K})
\\
\pi_{*,k}
   &= \frac{\alpha_k}{\sum_{k'=1}^K \alpha_{k'}}
\tag{5}
\end{align}

 式(4)について、 \boldsymbol{\pi}_{*} で置き換えると、予測分布は式の形状から、パラメータ  \boldsymbol{\pi}_{*} のカテゴリ分布であることが分かる。

 \displaystyle
\begin{align}
p(\mathbf{s}_{*} \mid \boldsymbol{\alpha})
   &= \prod_{k=1}^K
          \pi_{*,k}^{s_{*,k}}
\\
   &= \mathrm{Cat}(\mathbf{s}_{*} \mid \boldsymbol{\pi}_{*})
\tag{3.32}
\end{align}

  \mathbf{s}_{*} の事前予測分布の式が得られた。
 また、式(5)が、予測分布のパラメータ  \boldsymbol{\pi}_{*} の計算式である。

事後分布による予測分布

 予測分布の計算に事前分布  p(\boldsymbol{\pi} \mid \boldsymbol{\alpha}) を用いて、観測データ  \mathbf{S} による学習を行っていない予測分布(事前予測分布)  p(\mathbf{s}_{*} \mid \boldsymbol{\alpha}) (のパラメータ  \boldsymbol{\pi}_{*} )を求めた。事後分布  p(\boldsymbol{\pi} \mid \mathbf{S}, \boldsymbol{\alpha}) を用いると、観測データ  \mathbf{S} によって学習した予測分布(事後予測分布)  p(\mathbf{s}_{*} \mid \mathbf{X}, \boldsymbol{\alpha}) (のパラメータ  \hat{\boldsymbol{\pi}}_{*} )を求められる。

 \displaystyle
\begin{align}
p(\mathbf{s}_{*} \mid \mathbf{S}, \boldsymbol{\alpha})
   &= \int
          p(\mathbf{s}_{*}, \boldsymbol{\pi} \mid \mathbf{S}, \boldsymbol{\alpha})
      \mathrm{d} \boldsymbol{\pi}
\\
   &= \int
          p(\mathbf{s}_{*} \mid \boldsymbol{\pi})
          p(\boldsymbol{\pi} \mid \mathbf{S}, \boldsymbol{\alpha})
      \mathrm{d} \boldsymbol{\pi}
\\
   &= \int
          \mathrm{Cat}(\mathbf{s}_{*} \mid \boldsymbol{\pi})
          \mathrm{Dir}(\boldsymbol{\pi} \mid \hat{\boldsymbol{\alpha}})
      \mathrm{d} \boldsymbol{\pi}
\tag{1'}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 観測変数  \mathbf{S} を条件として、未知変数  \mathbf{s}_{*} とパラメータ  \boldsymbol{\pi} の結合分布に対して、 \boldsymbol{\pi} を周辺化した式を立てる。
  • 2: 依存関係のある  \mathbf{s}_{*}, \boldsymbol{\pi} の項を分割する。
  • 3: カテゴリモデルの定義より、尤度関数をカテゴリ分布、事後分布をディリクレ分布に置き換える。

 事後予測分布は、未知のデータ  \mathbf{s}_{*} の生成分布(3.23)と、パラメータ  \boldsymbol{\pi} の事後分布(3.27)を用いた、 \mathbf{s}_{*} の周辺分布である。

 事後分布は事前分布と同じくディリクレ分布なので、事前予測分布の式(3.32)と、同様の手順で事後予測分布の式も求められる。
 そこで、事前予測分布のパラメータ  \boldsymbol{\pi}_{*} の式(5)を構成する事前分布のパラメータ  \boldsymbol{\alpha} について、事後分布のパラメータ  \hat{\boldsymbol{\alpha}} の式(3.28)に置き換えたものを事後予測分布のパラメータ  \hat{\boldsymbol{\pi}}_{*} とおく。

 \displaystyle
\begin{align}
\hat{\boldsymbol{\pi}}_{*}
   &= (\hat{\pi}_{*,1}, \hat{\pi}_{*,2}, \cdots, \hat{\pi}_{*,K})
\\
\hat{\pi}_{*,k}
   &= \frac{
          \hat{\alpha}_k
      }{
          \sum_{k'=1}^K \hat{\alpha}_{k'}
      }
\\
   &= \frac{
          \sum_{n=1}^N s_{n,k}
          + \alpha_k
      }{
          \sum_{k'=1}^K \left\{
              \sum_{n=1}^N s_{n,k'}
              + \alpha_{k'}
          \right\}
      }
\tag{5'}
\end{align}

 予測分布の式(3.32)についても置き換える(同様の手順で導出する)と、パラメータ  \hat{\boldsymbol{\pi}}_{*} のカテゴリ分布となる。

 \displaystyle
\begin{align}
p(\mathbf{s}_{*} \mid \mathbf{S}, \boldsymbol{\alpha})
   &= \prod_{k=1}^K
          \hat{\pi}_{*,k}^{s_{*,k}}
\\
   &= \mathrm{Cat}(\mathbf{s}_{*} \mid \hat{\boldsymbol{\pi}}_{*})
\tag{3.32'}
\end{align}

  \mathbf{s}_{*} の事後予測分布の式が得られた。
 また、式(5')が、予測分布のパラメータ  \hat{\boldsymbol{\pi}}_{*} の計算式(更新式)である。

 ちなみに、事後分布の期待値は  \mathbb{E}_{\mathrm{Dir}(\boldsymbol{\pi} \mid \hat{\boldsymbol{\alpha}})}[\pi_k] = \frac{\hat{\alpha}_k}{\sum_{k'=1}^K \hat{\alpha}_{k'}} であり、予測分布のパラメータ  \hat{\pi}_{*,k} = \frac{\hat{\alpha}_k}{\sum_{k'=1}^K \hat{\alpha}_{k'}} や、予測分布の期待値  \mathbb{E}_{\mathrm{Cat}(\mathbf{s}_{*} \mid \hat{\boldsymbol{\pi}}_{*})}[s_{*,k}] = \hat{\pi}_{*,k} と一致する。

 以上で、カテゴリモデルにおける事後予測分布を導出した。

 この記事では、カテゴリ分布に対するベイズ推論を導出した。次の記事では、実装する。

参考文献

おわりに

 記事を分割したらコメントがなくなっちゃった。

2020/03/04:加筆修正しました。
2021/04/04:加筆修正しました。その際にRで実装編と記事を分割しました。途中微妙に間違ってた、、恥ずかしい。

  • 2026.01.23:加筆修正しました。

 実装編は、ディリクレ分布の作図が手間がかかるため、時間がかかりそうなので、先に導出編のみ加筆修正を反映させておきます。

 更新日に公開された、Buono!の元メンバーの鈴木愛理さんの歌唱動画をどうぞ♪

 このブログで度々書いてると思うのですが、私はBuono!にハマるのがグループの解散にギリギリ間に合わなくてBuono!のオタクになれなかった亡霊なんです。
 今でも現役で歌ってくれてありがとうございます。2人の名前も出してくれてありがとうございます。ショート超可愛い…

【次の節の内容】

  • スクラッチ実装編

 カテゴリモデルに対するベイズ推論をプログラムで確認します。

www.anarchive-beta.com

www.anarchive-beta.com


  • 数式読解編

 ポアソンモデルの生成モデルを数式で確認します。

www.anarchive-beta.com


 カテゴリ分布を用いたモデルに対するパラメータ推定については、こちらの本のシリーズも参考にしてみてください。

www.anarchive-beta.com