この記事では統計学・機械学習の教科書である、C. M. Bishop 著「パターン認識と機械学習」(略称:PRML)の演習問題を私が解いた結果を載せています。この本は私が所属する研究室の輪読会で現在扱われていて、勉強の一環として演習問題を解いています。
問題
演習問題 4.9 の分類モデルを考え、クラスの条件付き確率密度が共通の共分散行列を持つガウス分布によって与えられる、つまり、以下の式が成立すると仮定する。
p(\boldsymbol{\phi} | \mathcal{C}_k)
= \mathcal{N} ( \boldsymbol{\phi} | \boldsymbol{\mu}_k, \mathbf{\Sigma} ).
\tag{4.160}
> クラス $\mathcal{C}_k$ のガウス分布の平均に対する最尤解が以下の式で与えられることを示せ。
>```math
\boldsymbol{\mu}_k
= \frac{1}{N_k} \sum_{n=1}^N t_{nk} \boldsymbol{\phi}_n.
\tag{4.161}
これは、クラス $\mathcal{C}_k$ に割り当てられる特徴ベクトルの平均を表す。同様に、共通の共分散に対する最尤解が、以下の式で与えられることを示せ。
\mathbf{\Sigma}
= \sum_{k=1}^K \frac{N_k}{N} \mathbf{S}_k.
\tag{4.162}
> ここで
>```math
\mathbf{S}_k
= \frac{1}{N_k} \sum_{n=1}^N t_{nk}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k) ^ {\rm T}
\tag{4.163}
である。よって、$\mathbf \Sigma$ は、各クラスのデータの共分散 $\mathbf{S}_k$ の重み付き平均で与えられる。重み付け係数はクラスの事前確率で与えられる。
解説
演習問題 4.9 に引き続き、多クラスの分類問題におけるパラメータの最尤解を求める問題である。ただし、演習問題 4.9 では $p(\boldsymbol{\phi} | \mathcal{C}_k)$ について何の仮定も置いていなかったことに対して、こちらの問題では正規分布を仮定することで解を導いている。
解答
命題1
$ \boldsymbol{\mu_{\rm k}} $ の最尤解は $(4.161)$ で与えられる。
証明 まず、尤度は以下のように表される。
\begin{align}
L(\boldsymbol{\mu}_1, ..., \boldsymbol{\mu}_K, \mathbf{\Sigma} |
\mathbf{\Phi}, \mathbf{T})
& = p(\mathbf{\Phi}, \mathbf{T} |
\boldsymbol{\mu}_1, ..., \boldsymbol{\mu}_K, \mathbf{\Sigma}) \\
& = \prod_{n=1}^N
p(\boldsymbol{\phi}_n, \mathbf{t}_n |
\boldsymbol{\mu}_1, ..., \boldsymbol{\mu}_K, \mathbf{\Sigma}) \\
& = \prod_{n=1}^N
\left\{
p(\boldsymbol{\phi}_n|
\mathbf{t}_n,
\boldsymbol{\mu}_1, ..., \boldsymbol{\mu}_K, \mathbf{\Sigma})
p(\mathbf{t}_n |
\boldsymbol{\mu}_1, ..., \boldsymbol{\mu}_K, \mathbf{\Sigma})
\right\} \\
& = \prod_{n=1}^N
\prod_{k=1}^K
\left\{
\mathcal{N}(\boldsymbol{\phi}_n |
\boldsymbol{\mu}_k, \mathbf{\Sigma})
p(\mathcal{C}_k)
\right\} ^ {t_{nk}}
\tag{ex4.10.1} \\
\end{align}
すると、対数尤度は以下のようになる。
\begin{align}
{\rm ln} \, L
& = \sum_{n=1}^N
\sum_{k=1}^K
t_{nk}
\left\{
{\rm ln} \
\mathcal{N}(
\boldsymbol{\phi}_n | \boldsymbol{\mu}_k, \mathbf{\Sigma}
) +
{\rm ln} \, p(\mathcal{C}_k)
\right\}
\tag{ex4.10.2} \\
\end{align}
これを $\boldsymbol{\mu}_k$ で偏微分すると以下のようになる。
\begin{align}
\frac{\partial}{\partial \boldsymbol{\mu}_k}
{\rm ln} \, L
& = \sum_{n=1}^N
\left\{
t_{nk}
\frac{\partial}{\partial \boldsymbol{\mu}_k}
{\rm ln} \,
\mathcal{N}(
\boldsymbol{\phi}_n | \boldsymbol{\mu}_k, \mathbf{\Sigma}
)
\right\} \\
& = - \frac{1}{2}
\sum_{n=1}^N
\left\{
t_{nk}
\frac{\partial}{\partial \boldsymbol{\mu}_k}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k) ^ {\rm T}
\mathbf{\Sigma} ^ {-1}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
\right\} \\
& = \sum_{n=1}^N
\left\{
t_{nk}
\mathbf{\Sigma} ^ {-1}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
\right\} \\
& = \mathbf{\Sigma} ^ {-1}
\sum_{n=1}^N
\left\{
t_{nk}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
\right\} \\
& = \mathbf{\Sigma} ^ {-1}
\left(
\sum_{n=1}^N
t_{nk}
\boldsymbol{\phi}_n -
\sum_{n=1}^N
t_{nk}
\boldsymbol{\mu}_k
\right) \\
& = \mathbf{\Sigma} ^ {-1}
\left(
\sum_{n=1}^N
t_{nk}
\boldsymbol{\phi}_n -
N_k \boldsymbol{\mu}_k
\right)
\tag{ex4.10.3} \\
\end{align}
これを $0$ と置くことで、最尤解
\boldsymbol{\mu}_k
= \frac{1}{N_k}
\sum_{n=1}^N
t_{nk}
\boldsymbol{\phi}_n
\tag{ex4.10.4} \\
が得られる。以上より、題意は示された。(証明終)
命題2
$ \boldsymbol{\Sigma} $ の最尤解は $(4.162)$ で与えられる。
証明 対数尤度 $\rm (ex4.10.2)$ から $ \boldsymbol{\Sigma} $ に関連する部分を抽出すると以下のようになる。
\begin{align}
{\rm ln} \, L
& = \sum_{n=1}^N
\sum_{k=1}^K
\left\{
t_{nk}
{\rm ln} \,
\mathcal{N}(
\boldsymbol{\phi}_n | \boldsymbol{\mu}_k, \mathbf{\Sigma}
)
\right\} \\
& = \sum_{n=1}^N
\sum_{k=1}^K
\left\{
t_{nk}
\left[
- \frac{1}{2}
{\rm ln} \, |\Sigma|
- \frac{1}{2}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k) ^ {\rm T}
\mathbf{\Sigma} ^ {-1}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
\right]
\right\} + {\rm const.} \\
& = - \frac{1}{2}
\sum_{n=1}^N
\sum_{k=1}^K
t_{nk} {\rm ln} \, |\Sigma| -
\frac{1}{2}
\sum_{n=1}^N
\sum_{k=1}^K
t_{nk}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k) ^ {\rm T}
\mathbf{\Sigma} ^ {-1}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
+ {\rm const.} \\
& = - \frac{N}{2} {\rm ln} \, |\Sigma| -
\frac{1}{2}
\sum_{n=1}^N
\sum_{k=1}^K
t_{nk}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k) ^ {\rm T}
\mathbf{\Sigma} ^ {-1}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
+ {\rm const.} \\
& = - \frac{N}{2} {\rm ln} \, |\Sigma| -
\frac{1}{2}
\sum_{n=1}^N
\sum_{k=1}^K
t_{nk}
{\rm Tr} \left\{
\mathbf{\Sigma} ^ {-1}
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k) ^ {\rm T}
\right\}
+ {\rm const.} \\
& = - \frac{N}{2} {\rm ln} \, |\Sigma| -
\frac{1}{2}
t_{nk}
{\rm Tr} \left\{
\mathbf{\Sigma} ^ {-1}
\sum_{n=1}^N
\sum_{k=1}^K
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k) ^ {\rm T}
\right\}
+ {\rm const.} \\
& = - \frac{N}{2} {\rm ln} \, |\Sigma| -
\frac{N}{2}
{\rm Tr} \left\{ \mathbf{\Sigma}^{-1} \mathbf{S} \right\}
+ {\rm const.} \tag{ex4.10.5} \\
\end{align}
ここで、一般的な行列の性質 $\mathbf{x^{\rm T} A x} = {\rm Tr} (\mathbf{A x x^{\rm T}}) $ を利用した。また、 $\mathbf{S}$ を以下のように定義した。
\mathbf{S}
= \sum_{k=1}^K \frac{N_k}{N} \mathbf{S}_k
= \frac{1}{N}
\sum_{n=1}^N
\sum_{k=1}^K
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k)
(\boldsymbol{\phi}_n - \boldsymbol{\mu}_k) ^ {\rm T}
\tag{ex4.10.6}
これらを用いて、対数尤度の偏微分を $0$ とおくことで $\mathbf{\Sigma}$ の最尤解が得られる。
\begin{align}
\frac{\partial}{\partial \boldsymbol{\Sigma}}
{\rm ln} \, L
& = 0 \\
\frac{\partial}{\partial \boldsymbol{\Sigma}}
{\rm ln} \, |\boldsymbol{\Sigma}|
& = - \frac{\partial}{\partial \boldsymbol{\Sigma}}
{\rm Tr} \left\{ \mathbf{\Sigma}^{-1} \mathbf{S} \right\} \\
\boldsymbol{\Sigma} ^ {-1}
& = \mathbf{\Sigma}^{-1} \mathbf{S} \mathbf{\Sigma}^{-1} \\
\boldsymbol{\Sigma} & = \mathbf{S} \tag{ex4.10.7}
\end{align}
ここで、一般的な行列の性質 $\frac{\partial}{\partial \mathbf{X}} {\rm ln} , |\mathbf{X}| = (\mathbf{X} ^ {-1} ) ^ {\rm T}$, $\frac{\partial}{\partial \mathbf{X}}{\rm Tr} (\mathbf{X}^ {-1} \mathbf{A}) = - (\mathbf{X}^ {-1} ) ^ {\rm T} \mathbf{A} ^ {\rm T} ( \mathbf{X}^ {-1} ) ^ {\rm T}$ を利用した。以上より、題意は示された。(証明終)