LoginSignup
0
0

More than 3 years have passed since last update.

PRML 演習問題 2.10(標準) 解答

Last updated at Posted at 2020-06-05

 この記事では統計学・機械学習の教科書である、C. M. Bishop 著「パターン認識と機械学習」(略称:PRML)の演習問題を私が解いた結果を載せています。この本は私が所属する研究室の輪読会で現在扱われていて、勉強の一環として演習問題を解いています。

問題

ガンマ関数の性質 $\Gamma (x + 1) = x \Gamma (x)$ を用いて、$(2.38)$ のディリクレ分布の平均、分散、および共分散の結果を導出せよ。

\begin{align}
\mathbb{E}[\mu_j]
  &= \frac {\alpha_j} {\alpha_0}
  \tag{2.273} \\
{\rm var}[\mu_j]
  &= \frac {\alpha_j (\alpha_0 - \alpha_j)} {\alpha_0^2 (\alpha_0 + 1)}
  \tag{2.274} \\
{\rm cov}[\mu_j, \mu_l]
  &= - \frac {\alpha_j \alpha_l} {\alpha_0^2 (\alpha_0 + 1)}
  \qquad \qquad j \neq l
  \tag{2.273}
\end{align}

ただし、$\alpha_0$ は $(2.39)$ で定義されている。

ディリクレ分布とは

ディリクレ分布

\begin{align}
{\rm Dir} (\boldsymbol{\mu} | \boldsymbol{\alpha}) & =
  \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_1) \cdots \Gamma(\alpha_K)}
  \prod_{k=1}^K \mu_k^{\alpha_k - 1}
  \tag{2.38} \\
\alpha_0 & = \sum_{k=1}^K \alpha_k
  \tag{2.39}
\end{align}

は、多項分布

\begin{align}
  {\rm Mult}(m_1, m_2, ..., m_K | \mu, N)
    & = \frac {N!} {m_1! m_2! \cdots m_K!}
  \prod_{k=1}^K \mu_k^{m_k} \tag{2.34, 2.35} \\
  N & = \sum_{k=1}^K m_k
\end{align}

の共役分布として導入された。見比べると、自然数だった多項分布の $m_k$ が、正の実数の値を取れるように拡張したものともいえる。ガンマ関数 $\Gamma(x)$ は、階乗 $x!$ を実数に拡張したものだ。

ベクトルの期待値について

ディリクレ分布の対象となる変数 $\boldsymbol \mu$ はベクトルなので、本来は期待値 $\mathbb{E}[\boldsymbol \mu]$ もベクトルになり、

\begin{align}
\mathbb{E}[\boldsymbol \mu]
  & = \int \boldsymbol{\mu} {\rm Dir} (\boldsymbol{\mu} | \boldsymbol{\alpha}) 
    d \boldsymbol{\mu} \\
  & = \left(
      \int \mu_1 {\rm Dir} (\boldsymbol{\mu} | \boldsymbol{\alpha}) 
        d \boldsymbol{\mu}, ... ,
      \int \mu_K {\rm Dir} (\boldsymbol{\mu} | \boldsymbol{\alpha}) 
        d \boldsymbol{\mu}
    \right) ^ {\rm T}
  \tag{ex0.1}
\end{align}

と書ける。ここではこの $j$ 番目の成分を $\mathbb{E}[\mu_j]$ と呼んでいる。なお、ベクトルによる積分は以下のように書き下せる。

\int \mu_j {\rm Dir} (\boldsymbol{\mu} | \boldsymbol{\alpha}) 
  d \boldsymbol{\mu}
  = \int \cdots \int \mu_j {\rm Dir} (\boldsymbol{\mu} | \boldsymbol{\alpha}) 
  d \mu_1 \cdots d \mu_K
  \tag{ex0.2} 

解答

期待値

\mathbb{E}[\mu_j] = \frac {\alpha_j} {\alpha_0} \tag{2.273}

証明

\begin{align}
\mathbb{E}[\mu_j] 
  & = \int \mu_j {\rm Dir} (\boldsymbol{\mu} | \boldsymbol{\alpha}) 
    d \boldsymbol{\mu} \\
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_1) \cdots \Gamma(\alpha_K)}
    \int \mu_j \prod_{k=1}^K \mu_k^{\alpha_k - 1}
    d \boldsymbol{\mu}
    \tag{ex1.1}
\end{align}

ここで、次のようなベクトル $\boldsymbol{\beta} = (\beta_1, ..., \beta_K) ^ {\rm T}$ を定義する。

\beta_k = \left\{
    \begin{array}{ll}
      \alpha_k     & (k \neq j) \\
      \alpha_k + 1 & (k = j)
    \end{array}
  \right. \tag{ex1.2}

また、このように $\beta_0$ を定義する。

\beta_0 = \sum_{k=1}^K \beta_k = \alpha_0 + 1 \tag{ex1.3}

すると、式 $\rm (ex1.1)$ は以下のように表される。

\begin{align}
\mathbb{E}[\mu_j] 
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_1) \cdots \Gamma(\alpha_K)}
    \int \prod_{k=1}^K \mu_k^{\beta_k - 1}
    d \boldsymbol{\mu} \tag{ex1.4}
\end{align}

式 $\rm (ex1.3)$ 右辺の積分部分はディリクレ分布の正規化定数の逆数に一致する。よって

\begin{align}
\mathbb{E}[\mu_j] 
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_1) \cdots \Gamma(\alpha_K)}
    \frac {\Gamma(\beta_1) \cdots \Gamma(\beta_K)} {\Gamma(\beta_0)} \\
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_j)}
    \frac {\Gamma(\alpha_j + 1)} {\Gamma(\alpha_0 + 1)} \\
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_j)}
    \frac {\alpha_j \Gamma(\alpha_j)} {\alpha_0 \Gamma(\alpha_0)} \\
  & = \frac {\alpha_j} {\alpha_0} \tag{ex1.5}
\end{align}

が示された。(証明終)

分散

{\rm var}[\mu_j]
  = \frac {\alpha_j (\alpha_0 - \alpha_j)} {\alpha_0^2 (\alpha_0 + 1)}
  \tag{2.274}

証明

{\rm var}[\mu_j] = \mathbb{E}[\mu_j^2] - \mathbb{E}[\mu_j] ^ 2 \tag{ex2.1}

$\mathbb{E}[\mu_j]$ は式 $(2.273)$ で既に得られているので、$\mathbb{E}[\mu_j^2]$ を計算すればよい。

\begin{align}
\mathbb{E}[\mu_j^2] 
  & = \int \mu_j^2 {\rm Dir} (\boldsymbol{\mu} | \boldsymbol{\alpha}) 
    d \boldsymbol{\mu} \\
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_1) \cdots \Gamma(\alpha_K)}
    \int \mu_j^2 \prod_{k=1}^K \mu_k^{\alpha_k - 1}
    d \boldsymbol{\mu}
    \tag{ex2.2}
\end{align}

ここで、次のようなベクトル $\boldsymbol{\gamma} = (\gamma_1, ..., \gamma_K) ^ {\rm T}$ を定義する。

\gamma_k = \left\{
    \begin{array}{ll}
      \alpha_k     & (k \neq j) \\
      \alpha_k + 2 & (k = j)
    \end{array}
  \right. \tag{ex2.3}

また、このように $\gamma_0$ を定義する。

\gamma_0 = \sum_{k=1}^K \gamma_k = \alpha_0 + 2 \tag{ex2.4}

すると、期待値の導出と同様の考え方ができる。

\begin{align}
\mathbb{E}[\mu_j^2] 
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_1) \cdots \Gamma(\alpha_K)}
    \frac {\Gamma(\gamma_1) \cdots \Gamma(\gamma_K)} {\Gamma(\gamma_0)} \\
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_j)}
    \frac {\Gamma(\alpha_j + 2)} {\Gamma(\alpha_0 + 2)} \\
  & =  \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_j)}
    \frac {\alpha_j (\alpha_j + 1) \Gamma(\alpha_j)}
          {\alpha_0 (\alpha_0 + 1) \Gamma(\alpha_0)} \\
  & = \frac {\alpha_j (\alpha_0 - \alpha_j)} {\alpha_0 (\alpha_0 + 1)}
    \tag{ex2.5}
\end{align}

式 $\rm (ex2.1), (2.273), (ex2.5)$ より、

\begin{align}
  {\rm var}[\mu_j]
  & = \mathbb{E}[\mu_j^2] - \mathbb{E}[\mu_j] ^ 2 \\
  & = \frac {\alpha_j (\alpha_j + 1)}
            {\alpha_0 (\alpha_0 + 1)}
    - \frac {\alpha_j^2}
            {\alpha_0^2} \\
  & = \frac {\alpha_0 \alpha_j (\alpha_j + 1) - \alpha_j^2 (\alpha_0 + 1)}
            {\alpha_0^2 (\alpha_0 + 1)} \\
  & = \frac {\alpha_0 \alpha_j^2 + \alpha_0 \alpha_j
              - \alpha_0 \alpha_j^2 - \alpha_j^2}
            {\alpha_0^2 (\alpha_0 + 1)} \\
  & = \frac {\alpha_j (\alpha_0 - \alpha_j)}
            {\alpha_0^2 (\alpha_0 + 1)} \tag{ex2.6}
\end{align}

が示された。(証明終)

共分散

{\rm cov}[\mu_j, \mu_l]
  = - \frac {\alpha_j \alpha_l} {\alpha_0^2 (\alpha_0 + 1)}
  \qquad \qquad j \neq l
  \tag{2.275}

証明

{\rm cov}[\mu_j, \mu_l] =
   \mathbb{E}[\mu_j \mu_l] -
   \mathbb{E}[\mu_j] \mathbb{E}[\mu_l]  \tag{ex3.1}

$\mathbb{E}[\mu_j], \mathbb{E}[\mu_l]$ は式 $(2.273)$ で既に得られているので、$\mathbb{E}[\mu_j \mu_l]$ を計算すればよい。

\begin{align}
\mathbb{E}[\mu_j \mu_l] 
  & = \int \mu_j \mu_l {\rm Dir} (\boldsymbol{\mu} | \boldsymbol{\alpha}) 
    d \boldsymbol{\mu} \\
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_1) \cdots \Gamma(\alpha_K)}
    \int \mu_j \mu_l \prod_{k=1}^K \mu_k^{\alpha_k - 1}
    d \boldsymbol{\mu}
    \tag{ex3.2}
\end{align}

ここで、次のようなベクトル $\boldsymbol{\delta} = (\delta_1, ..., \delta_K) ^ {\rm T}$ を定義する。

\delta_k = \left\{
    \begin{array}{ll}
      \alpha_k     & (k \neq j, l) \\
      \alpha_k + 1 & (k = j, l)
    \end{array}
  \right. \tag{ex3.3}

また、このように $\delta_0$ を定義する。

\delta_0 = \sum_{k=1}^K \delta_k = \alpha_0 + 2 \tag {ex3.4}

すると、期待値の導出と同様の考え方ができる。

\begin{align}
\mathbb{E}[\mu_j \mu_l] 
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_1) \cdots \Gamma(\alpha_K)}
    \frac {\Gamma(\delta_1) \cdots \Gamma(\delta_K)} {\Gamma(\delta_0)} \\
  & = \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_j) \Gamma(\alpha_l)}
    \frac {\Gamma(\alpha_j + 1) \Gamma(\alpha_l + 1)} {\Gamma(\alpha_0 + 2)} \\
  & =  \frac {\Gamma(\alpha_0)} {\Gamma(\alpha_j) \Gamma(\alpha_l)}
    \frac {\alpha_j \alpha_l \Gamma(\alpha_j) \Gamma(\alpha_l)}
          {\alpha_0 (\alpha_0 + 1) \Gamma(\alpha_0)} \\
  & = \frac {\alpha_j \alpha_l} {\alpha_0 (\alpha_0 + 1)}
    \tag{ex3.5}
\end{align}

式 $\rm (ex3.1), (2.273), (ex3.5)$ より、

\begin{align}

{\rm cov}[\mu_j, \mu_l]
  & = \mathbb{E}[\mu_j \mu_l] -
      \mathbb{E}[\mu_j] \mathbb{E}[\mu_l] \\
  & = \frac {\alpha_j \alpha_l} {\alpha_0 (\alpha_0 + 1)} - 
      \frac {\alpha_j \alpha_l} {\alpha_0^2} \\
  & = \frac {\alpha_0 \alpha_j \alpha_l - (\alpha_0 + 1) \alpha_j \alpha_l}
            {\alpha_0^2 (\alpha_0 + 1)} \\
  & = - \frac {\alpha_j \alpha_l} {\alpha_0^2 (\alpha_0 + 1)} \tag{ex3.6}
\end{align}

が示された。(証明終)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0