PRML  演習問題5.7(基本)　解答

<a id="eq:1.152"></a>
##はじめに
本記事は, 機械学習の教科書の決定版ともいえる, Christopher Bishop先生による『Pattern Recognition and Machine Learning （パターン認識と機械学習）』, 通称PRMLの演習問題のうち, 私が解いた問題の解答を記したものです

今回は演習5.7の証明です
##問題

```math
E(\mathbf{w})=-\sum_{n=1}^{N} \sum_{k=1}^{K} t_{k n} \ln y_{k}\left(\mathbf{x}_{n}, \mathbf{w}\right)\quad(\text { 5.24 }) \\
```
を微分すると

```math
\frac{\partial E}{\partial a_{k}}=y_{k}-t_{k}\quad(\text { 5.18 }) \\
```

となることを示します。
##証明


<a id="eq:1.152"></a>
(1)準備として、まずはソフトマックス関数の微分をしてみます。
<a id="eq:1.152"></a>
ソフトマックス関数は一般にこんな形です。
<a id="eq:1.152"></a>

```math
\operatorname{Softmax}\left(a_{k}\right)=\frac{\exp \left(a_{k}\right)}{\sum_{j} \exp \left(a_{j}\right)}
```
<a id="eq:1.152"></a>
今回の場合は$y_{k}=h\left(a_{k}\right)=\operatorname{softmax}\left(a_{k}\right)$を$a_{k}$で微分することになります。



<a id="eq:1.152"></a>

```math
\begin{aligned}
\frac{\partial y_{k}}{\partial a_{k}}=\frac{\partial}{\partial a_{k}} \operatorname{softmax}\left(a_{k}\right) &=\frac{\partial}{\partial a_{k}}\left(\frac{\exp a_{k}}{\sum_{j} \exp a_{j}}\right)=\frac{\exp a_{k} \sum_{j \neq k} \exp a_{j}}{\left(\sum_{j} \exp a_{j}\right)^{2}} \quad(\text { product rule }) \\
&=y_{k} \frac{\sum_{j \neq k} \exp a_{j}}{\sum_{j} \exp a_{j}}=y_{k}\left(1-\frac{\exp a_{k}}{\sum_{j} \exp a_{j}}\right)=y_{k}\left(1-y_{k}\right)
\end{aligned}
```
$a_{i}$で微分するときには

```math
\frac{\partial y_{k}}{\partial a_{i}}=\frac{\partial}{\partial a_{i}} \operatorname{softmax}\left(a_{k}\right)=\frac{-\exp \left(a_{k}\right) \exp \left(a_{i}\right)}{\left(\sum_{j} \exp a_{j}\right)^{2}}=-y_{i} y_{k}
```
となります。
これら2つの結果は、次のようにクロネッカーデルタ関数δkjを使用して要約できます。

```math
\delta_{k j}=\left\{\begin{array}{ll}1 & (k=j) \\ 0 & (k \neq j)\end{array}\right.
```

```math
\frac{\partial y_{k}}{\partial a_{i}}=\frac{\partial}{\partial a_{i}} \operatorname{softmax}\left(a_{k}\right)=y_{k}\left(\delta_{k j}-y_{i}\right)

```

<a id="eq:1.152"></a>
<a id="eq:1.152"></a>
<a id="eq:1.152"></a>
(2)以上の結果を用いて、実際に誤差関数の微分をしてみます。
誤差関数は

```math
\begin{aligned}
E(\boldsymbol{w}) &=-\sum_{n=1}^{N} \sum_{k=1}^{K} t_{n k} \ln y_{k}\left(\boldsymbol{x}_{n}, \boldsymbol{w}\right) \\
&=-\sum_{n=1}^{N} t_{n 1} \ln y_{n 1}+t_{n 2} \ln y_{n 2}+\cdots+t_{n K} \ln y_{n K} \\
&=-\sum_{n=1}^{N}\left(\sum_{k=1}^{K-1} t_{n k} \ln y_{n k}+t_{n K} \ln \left(1-\sum_{k=1}^{K-1} y_{n k}\right)\right)
\end{aligned}
```
のように書き換えることができます。
ここで全てのnについて

```math
\sum_{k=1}^{K} y_{n k}=1
```
なのでK-1個のパラメーターが最後の一個を決定することになることがポイント。

また

```math
\sum_{k=1}^{K} t_{n k}=1
```

でもある。これは後に用いるので念頭に置いておきます。
<a id="eq:1.152"></a>

nについてのシグマを無視することで、$a_{j}$での微分を考えると以下のようになります。

<a id="eq:1.152"></a>

```math
_{a_{j}} E(\boldsymbol{w})=-\left[\sum_{k \neq j}^{K-1} t_{k} \frac{1}{y_{k}} \partial_{a_{j}} y_{k}+t_{j} \frac{1}{y_{j}} \partial_{a_{j}} y_{j}-t_{K} \frac{1}{\left(1-\sum_{k=1}^{K-1} y_{k}\right)} \partial_{a_{j}}\left(1-\sum_{k=1}^{K-1} y_{k}\right)\right]
```

$\sum_{k \neq j}^{K-1}$ というのは "$k=1, \ldots, K-1,$の合計、ただし $k=j$をスキップする"という意味。
先ほどのソフトマックス関数についての微分を利用して
<a id="eq:1.152"></a>


```math
\begin{aligned}
\partial_{a_{j}} E(\boldsymbol{w}) &=-\left[\sum_{k \neq j}^{K-1} t_{k} \frac{1}{y_{k}}\left(-y_{k} y_{j}\right)+t_{j} \frac{1}{y_{j}} y_{j}\left(1-y_{j}\right)-t_{K} \frac{1}{\left(1-\sum_{k=1}^{K-1} y_{k}\right)} \partial_{a_{j}}\left(1-\sum_{k=1}^{K-1} y_{k}\right)\right] \\
&=-\left[\sum_{k \neq j}^{K-1} t_{k}\left(-y_{j}\right)+t_{j}\left(1-y_{j}\right)-t_{K} \frac{1}{\left(1-\sum_{k=1}^{K-1} y_{k}\right)}\left(-y_{j} \sum_{k \neq j}^{K-1} y_{k}+y_{j}\left(1-y_{j}\right)\right)\right]
\end{aligned}
```
式の簡単のためj番目をシグマに含めてやり、変形すると、、

```math
\begin{aligned}
\partial_{a_{j}} E(\boldsymbol{w}) &=-\left[\sum_{k \neq j}^{K-1} t_{k}\left(-y_{j}\right)+t_{j}\left(1-y_{j}\right)-t_{K} \frac{1}{\left(1-\sum_{k=1}^{K-1} y_{k}\right)}\left(-y_{j} \sum_{k \neq j}^{K-1} y_{k}+y_{j}\left(1-y_{j}\right)\right)\right] \\
&=-\left[-y_{j} \sum_{k=1}^{K-1} t_{k}+t_{j}-t_{K} \frac{1}{\left(1-\sum_{k=1}^{K-1} y_{k}\right)} y_{j}\left(1-\sum_{k=1}^{K-1} y_{k}\right)\right] \\
&=-\left[-y_{j} \sum_{k=1}^{K-1} t_{k}+t_{j}-t_{K} y_{j}\right]=-\left[-y_{j} \sum_{k=1}^{K} t_{k}+t_{j}\right]=y_{j}-t_{j}
\end{aligned}

```
上記のようになります。
$\sum_{k=1}^{K} t_{n k}=1$を用いています。

よって題意は示された。
参考:https://tommyodland.com/files/edu/bishop_solutions.pdf