Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

はじめに

本記事は, 機械学習の教科書の決定版ともいえる, 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

yoyoyo11131113
python keras DL を勉強しています。マイブームは自作pc
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away