LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-06-23

はじめに

本記事は, 機械学習の教科書の決定版ともいえる, Christopher Bishop先生による『Pattern Recognition and Machine Learning (パターン認識と機械学習)』, 通称PRMLの演習問題のうち, 私が解いた問題の解答を記したものです

今回は演習5.7の証明です

問題

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 }) \\

を微分すると

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

となることを示します。

証明


(1)準備として、まずはソフトマックス関数の微分をしてみます。

ソフトマックス関数は一般にこんな形です。

\operatorname{Softmax}\left(a_{k}\right)=\frac{\exp \left(a_{k}\right)}{\sum_{j} \exp \left(a_{j}\right)}


今回の場合は$y_{k}=h\left(a_{k}\right)=\operatorname{softmax}\left(a_{k}\right)$を$a_{k}$で微分することになります。

\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}$で微分するときには

\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を使用して要約できます。

\delta_{k j}=\left\{\begin{array}{ll}1 & (k=j) \\ 0 & (k \neq j)\end{array}\right.
\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)




(2)以上の結果を用いて、実際に誤差関数の微分をしてみます。
誤差関数は

\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について

\sum_{k=1}^{K} y_{n k}=1

なのでK-1個のパラメーターが最後の一個を決定することになることがポイント。

また

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

でもある。これは後に用いるので念頭に置いておきます。

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

_{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$をスキップする"という意味。
先ほどのソフトマックス関数についての微分を利用して

\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番目をシグマに含めてやり、変形すると、、

\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

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