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

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

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

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

今回は多クラス分類モデルの場合で計算してみます。考えるモデルは、下図になります。活性化関数hはソフトマックス関数です。(参考:ソフトマックス関数

f:id:opabinia2:20180929114013p:plain

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


\displaystyle E(\mathbf{w}) = -\sum_{n=1}^{N} \sum_{k=1}^{K} t_{nk} \ln y_{nk} \tag{1}

です。式(1)の変数の意味は多クラスロジスティック回帰と同じです。

i番目のデータに対するj番目の出力層a_{ij}での微分は、合成関数の微分とソフトマックス関数の微分より、


\begin{eqnarray*}
\displaystyle \frac{\partial E(\mathbf{w})}{\partial a_{ij}} &=& \frac{\partial E(\mathbf{w})}{\partial y_{ik}} \frac{\partial y_{ik}}{\partial a_{ij}} \tag{2} \\
\displaystyle  &=& -\sum_{k=1}^{K}\frac{t_{ik}}{y_{ik}}y_{ik}(I_{kj}-y_{ij}) \tag{3} \\
\displaystyle &=& -\sum_{k=1}^{K}t_{ik}(I_{kj} -y_{ij}) \tag{4} \\
\end{eqnarray*}

\sum_k{y}_ka_jで微分すると、a_jy_1, \cdots , y_k全てに影響しているので\sum_k \frac{\partial y_k}{\partial a_j}となるため、式(2)~(4)の計算に\sum_{k}が残っています。ここで、t_{ik}k=1,\cdots,Kの中で、いずれか1つのみで1となるから、


\displaystyle \sum_{k=1}^{K} t_{ik} y_{ij}  = y_{ij} \tag{5}

となります。また、k=jのときのみI_{kj}=1だから


\displaystyle \sum_{k=1}^{K} t_{ik} I_{kj} = t_{ij} \tag{6}

です。したがって、


\displaystyle \frac{\partial E(\mathbf{w})}{\partial a_{ij}} = y_{ij}-t_{ij} \tag{7}

となります。やはり回帰や2クラス分類の場合と同じ結果が得られました。