Deep Learning

Softmax-with-Loss レイヤの計算グラフ


データからの学習

Softmax関数を Softmaxレイヤ、交差エントロピー誤差を Cross Entropy Error レイヤ と呼び、 さらにこの2つを組み合わせたレイヤを Sofmax-with-Loss レイヤと呼ぶことにする。

図A-1 では、3クラス分類を行うニューラルネットワークを想定している。 前レイヤからの入力は ($a_1$, $a_2$, $a_3$) であり、Softmadレイヤは ($y_1$, $y_2$, $y_3$) を出力する。 教師ラベルは ($t_1$, $t_2$, $t_3$) であり、Cross Entropy Error レイヤは損失 $L$ を出力する。

A.1 順伝播

Softmaxレイヤにおいて、Softmax関数は次の数式で表される。

$\displaystyle \begin{equation} y_k = \frac{e^{a_k}}{\displaystyle \sum^{n}_{i=1} e^{a_i}} \quad\quad\quad (A.1) \end{equation}$

Cross Entropy Error レイヤでは、交差エントロピー誤差は次の数式で表される。

$\displaystyle \begin{equation} L = - \sum_{k} t_k \log y_k \quad\quad\quad (A.2) \end{equation}$

A.2 逆伝播

Cross Entropy Error レイヤの逆伝播を考える。


[注意]普通に計算できる。

$\displaystyle \begin{equation} y_k = \frac{e^{a_k}}{\displaystyle \sum^n_{i=1} e^{a_i}} = \frac{e^{a_k}}{e^{a_1}+e^{a_2}+e^{a_3}} \end{equation}$
$\displaystyle \begin{equation} L = - \sum_{k} t_k \log y_k \\ \\ \quad = -(t_1 \log y_1 + t_2 \log y_2 + t_3 \log y_3) \\ \quad = -(t_1 \log \frac{e^{a_1}}{e^{a_1}+e^{a_2}+e^{a_3}} + t_2 \log \frac{e^{a_2}}{e^{a_1}+e^{a_2}+e^{a_3}} + t_3 \log \frac{e^{a_3}}{e^{a_1}+e^{a_2}+e^{a_3}}) \\ \quad = -(t_1 \log e^{a_1} + t_2 \log e^{a_2} + t_3 \log e^{a_3}) + (t_1 + t_2 + t_3) \log (e^{a_1}+e^{a_2}+e^{a_3}) \\ \quad = -(t_1 \log e^{a_1} + t_2 \log e^{a_2} + t_3 \log e^{a_3}) + \log (e^{a_1}+e^{a_2}+e^{a_3}) \quad\quad\quad \because t_1 + t_2 + t_3 = 1 \\ \quad = -(t_1 a_1 \log e + t_2 a_2 \log e + t_3 a_3 \log e) + \log (e^{a_1}+e^{a_2}+e^{a_3}) \quad\quad\quad \\ \quad = -(t_1 a_1 + t_2 a_2 + t_3 a_3) + \log (e^{a_1}+e^{a_2}+e^{a_3}) \quad\quad\quad \because \log e = 1 \\ \\ \frac{\partial L}{\partial a_1} = -t_1 + \frac{e^{a_1}}{e^{a_1}+e^{a_2}+e^{a_3}} = -t_1 + y_1 \end{equation}$
Yoshihisa Nitta

http://nw.tsuda.ac.jp/