機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

出力ユニット活性で微分(2クラス分類)

前回の続き。前回はニューラルネットワークで回帰モデルを作った場合、誤差関数Eを出力ユニット活性aで微分すると、出力と教師データの差y-tとなることを確認しました。(参考:出力ユニット活性で微分(回帰)

今回は2クラス分類モデルの場合で計算してみます。考えるモデルは、回帰と同じく、下図になりますが、今回は活性化関数hは恒等関数ではなくシグモイド関数です。(参考:確率的生成モデル(1)

f:id:opabinia2:20180920201206p:plain

さて、このモデルの誤差関数をロジスティック回帰と同様に交差エントロピーで定義すれば、


\displaystyle E(\mathbf{w}) = -\sum_{n=1}^{N} \left\{ t_n \ln y_n + (1-t_n) \ln (1-y_n) \right\} \tag{1}

です。出力ユニット活性a_nでの微分は合成関数の微分とシグモイド関数の微分より、


\begin{eqnarray*}
\displaystyle \frac{\partial E(\mathbf{w})}{ \partial a_n} &=& \frac{\partial E(\mathbf{w})}{ \partial y_n} \frac{\partial y_n}{ \partial a_n} \tag{2} \\
&=& -\left( \frac{t_n}{y_n} -\frac{1-t_n}{1-y_n} \right) y_n (1-y_n) \tag{3} \\
&=& -\left\{ \frac{t_n(1-y_n)-y_n(1-t_n)}{y_n(1-y_n)}\right\} y_n(1-y_n) \tag{4} \\
&=& -\left\{t_n(1-y_n)-y_n(1-t_n))\right\} \tag{5} \\
&=& y_n -t_n \tag{6}
\end{eqnarray*}

となり、回帰と場合と同じ結果が得られました。