PRML 演習問題 4.18 （基本）

## はじめに
本記事は, 機械学習の教科書の決定版ともいえる, **Christopher Bishop先生**による[**『Pattern Recognition and Machine Learning （パターン認識と機械学習）』**](https://www.microsoft.com/en-us/research/people/cmbishop/prml-book/), 通称**PRMLの演習問題の解答**を記したものです. これは, [**生物測定学研究室**](https://www.ut-biomet.org/)の輪読会でPRMLを取り扱っており, その勉強の一環として演習問題を解いたときのもので, **匿名の有志の学生による解答をこちらのアカウントから代わりに投稿**させていただいています.　（なお一部数式の表現などを修正してあります.）


## 問題
><b>4.18</b> ソフトマックス活性化関数$(4.104)$の微分の結果を使って,交差エントロピー誤差$(4.108)$の勾配が$(4.109)$によって与えられることを示せ.


## この問題の意義
基本的には<b>4.17</b>の結果を利用した計算問題です。
しかし、（重みについて）「誤差関数」が（事後確率の重みの）「負の対数尤度の期待値（日本語版22ページ）」であることを思い出させるなど、含意は大きい。
また、文字通り「ソフトマックス活性化関数（による事後確率）の微分」が「交差エントロピー誤差の勾配」で与えられるということと、「最尤な重みを見つける」=「多クラス分類に適したネットワークが生み出すクラスの分布と、実際のクラスの分布を近づける」という意味であることに注意する。


## この問題で出てくる式
念のためソフトマックス関数の式を書く。

```math
\begin {align*}
p(C_k | \boldsymbol{\phi}) = y_k(\boldsymbol{\phi}) = \frac{\rm{exp}(a_k)}{\sum_j\rm{exp}(a_j)}\tag{4.104}
\end {align*}
```
であり、ある特徴関数$\boldsymbol{\phi}$が与えられた時にクラス$C_k$に分類される事後確率でもあります。また、$a_k$は各クラスに対する重みを前もって決めた$\mathbf{w_k}$とした場合の活性化関数である。

```math
\begin {align*}
a_k = \mathbf{w}_k^\rm{T}\boldsymbol{\phi} \tag{4.105}
\end {align*}
```
また、<b>4.17</b>の結果として現れた式が、

```math
\begin {align*}
\frac{\partial y_k}{\partial a_j} = y_k(\boldsymbol{I}_{kj} - y_j)
\tag{4.106}
\end {align*}
```
である（$\boldsymbol{I}$は$k \times k$次元の単位行列で$1 \leq j \leq k$）。
以下、簡略のために各重みを$\mathbf{w}_k$として、同時確率の際に現れる全ての重みを$\mathbf{W}$と省略する。


## 解法
まず、重みが与えられた時の事後確率$p(\mathbf{T}|\mathbf{W}) $の尤度は

```math
\begin {align*}
p(\mathbf{T}|\mathbf{W}) = {\prod_{n=1}^N}{\prod_{k=1}^K}p(C_k | \boldsymbol{\phi})^{t_{nk}} = {\prod_{n=1}^N}{\prod_{k=1}^K}y_{nk}^{t_{nk}}
\tag{4.107改変}
\end {align*}
```
として与えられる。
ここで、今まで$1$-of-$K$符号化法を用いてきたため、$\mathbf{T}$は『クラス$C_k$に属する特徴ベクトル$\phi_{n}$に対する目的変数ベクトル$t_n$が$K$番目の要素が$1$でそれ以外の要素がすべて$0$』となる$N \times K$行列であり、$y_{nk} = y_k(\boldsymbol{\phi}_n)$である。
つまり、これは重みを事前に与えたときのクラス分類の事後確率の尤度である。
ここで、『最尤』な重み$\mathbf{W}$を求めるために、$\mathbf{W}$の期待値を求める。
言い換えると、『最尤』な重み$\mathbf{W}$を求めるには、最尤な重みとそうでない重みの『誤差』を求める。
そのために、$(4.108)$では重みの負の対数尤度を求めている。

```math
\begin {align*}
E(\mathbf{\mathbf{W}}) = -\rm{ln}\it{p}\rm{(\mathbf{T} | \mathbf{W})} = -{\sum_{n=1}^N}{\sum_{k=1}^K}t_\it{nk}\rm{ln}\it{y_\it{nk}}\rm
\tag{4.108改変}
\end {align*}
```
これは、一見見た目が異なるがおなじみの<b>交差エントロピー誤差関数(cross entropy)</b>である（$k=2$のとき、$(4.90)$と同じ形になる）。
では、この勾配を求めてみよう。この場合$(4.91)$と似た形が得られるはずである。
※$(4.91)$は、$\nabla{E}\mathbf(\mathbf{W}) = \sum_{n = 1}^N{(y_n - t_n)\mathbf\phi_n}$である（$n = 2$のとき）。

```math
\begin {align*}
\frac{\partial y_{nk}}{\partial w_j} = \frac{\partial y_{nk}}{\partial a_j} \times \frac{\partial a_j}{\partial w_k}
\end {align*}
```
この時、偏微分を使うため今回は場合分けを行う。
であること、$k  \neq j $の時、

```math
\frac{\partial a_{n}}{\partial w_k} = 0\quadより\quad\frac{\partial y_{nk}}{\partial w_j}=0
```
である。
また、$k = j $の時、

```math
a_k = \mathbf{w}_k^\rm{T}\boldsymbol{\phi}であるため、\\
\it{\frac{\partial {a_k}}{\partial w_k} = \mathbf\phi_n}\quad\textrm {より}\quad\frac{\partial y_{nk}}{\partial w_k}=\rm{(}\mathbf{\it{I}}_\it{nk} - y_\it{k}\rm{)} \it\mathbf\phi_n
```
ここで、$I$は単位行列であるため、更に$\quad n=k\quad$の時のみ$1$、それ以外が$0$を返すことを考えると、

```math
\begin {align*}
\nabla{E}_{\mathbf{\mathbf{W}}_j}\mathbf(\mathbf{W}) &=
-{\sum_{n=1}^N}{\sum_{k=1}^K}t_{\it{nk}}\cdot\frac{(y_{nk})'}{y_{nk}}\\
&= {\sum_{n=1}^N}{\sum_{k=1}^K}t_{\it{nk}}{(y_{nk} - I_{nk})}\mathbf{\phi}_n
\end {align*}
```
ここで、${\sum_{k=1}^K}t_{\it{nk}} = 1$ と $I$ が単位行列である（$k=n$ である時のみ1、そうでないときは0をとる）ことを利用して $k$ で足し合わせると、

```math
\nabla{E}_{\mathbf{\mathbf{W}}_j}\mathbf\rm(\mathbf{W}) = {\sum_{n=1}^N}{(y_{nj} - t_{nj})}\mathbf{\phi}_n
```
となり、題意は示された。


## おまけ・この設問の意味
<b>（この辺は自信がないため、間違っていたらご指摘お願いします。）</b>
本文中にも書かれている通り、交差エントロピー関数によって、『本来のクラスの分布と重みを与えたときの分布の差』と特徴関数で誤差関数の勾配の微分が与えられる。
ところで、なぜ『エントロピー』という名がついているのだろうか。答えは求めるものが『モデルによる分布と実際の分布の比較（誤差）』であり、情報量の理論でも考えられるからである。
さて、生成モデルは、$\mathbf{W}$で実際のクラスの分布を近似した分布と考えられる。
また、『真の』モデルに生成モデルが近づくための情報量を示すのはKLダイバージェンスであった。よって、KLダイバージェンスの最小化によっても『生成モデルによる分布の近似』を考えられるはずである（変分ベイズという手法もありますが……）。
しかし、今回求めるのは対数尤度の最大化（負の対数尤度の最小化）であった。その理由は、この二つが同じものを意味しているからである。
Wikipediaを参考にすると、

```math
\begin {align*}
E\mathbf(\mathbf{W}) =(真の分布のエントロピー) + KL(p(\mathbf{W})||q(\mathbf{W}))
\end {align*}
```
となる。
（真の分布を$p$、生成モデルによる分布を$q$としている。）
そして、両者の重みが同一となるとき $E\mathbf(\mathbf{W}) = H(p) $ かつ $KL(p(\mathbf{W})||q(\mathbf{W})) = 0$ になる。
また、今回求めたいのは $E\mathbf(\mathbf{W})$ の最小化だった。
そのため、KLダイバージェンスの最小化から考えても対数尤度の最大化は同じ結果になると予測される。
（エントロピーについては、式があっているか自信がありません……）

## 参考
交差エントロピー　出典: フリー百科事典『ウィキペディア（Wikipedia）』
https://ja.wikipedia.org/wiki/%E4%BA%A4%E5%B7%AE%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC