深層学習 改訂第2版 第4章「誤差逆伝播法」 65p 数式の導出

当記事は「深層学習 改訂第$2$版 (講談社)」の読解サポートを行います。基本的に購入者向けの解説ですので、購入されていない方は下記より入手をご検討ください。また、解説は筆者の見解であり、公式のものではないことにご注意ください。

執筆: @ShunDeveloper

交差エントロピーにおける出力層のデルタの導出

途中式が省略されている式の導出をした。

計算の準備

計算する対象は以下に示す$\delta_j^{(L)}$である。

$$
\begin{eqnarray}
\delta_j^{(L)}
&=&
\frac{\partial E_n}{\partial u_j^{L}}\\
&=&
\frac{\partial E_n}{\partial y_k}\frac{\partial y_k}{\partial u_j^{L}}\\
\end{eqnarray}
$$

上記の$E_n$は以下のように書き表すことができる。
$$
\begin{eqnarray}
E_n
&=&
-\sum_k d_k
\log y_k \cdots \text{(1)}\\
&=&
-\sum_k d_k
\log \frac{\exp( u_k^{(L)} )}{ \sum_i \exp( u_i^{(L)} ) } \cdots \text{(2)}\\
\end{eqnarray}
$$

(1)式を用いて$\delta_j^{(L)}$を以下の形に変形する。

$$
\begin{eqnarray}\delta_j^{(L)}
&=&
-\sum_k d_k
\frac{1}{ y_k } \frac{\partial y_k}{\partial u_j^{L}} \cdots \text{(3)}\\
\end{eqnarray}
$$

(3)式の、$\displaystyle \frac{\partial y_k}{\partial u_j^{L}}$を商の微分を用いて変形する。S.ラング($1978$)『解析入門 原書第3版』(岩波書店)によれば商の微分の公式は以下に示す通りである。

“$f(x)$および$g(x)$を二つの関数とし, それぞれの導関数$f'(x), g'(x)$が存在するとする. さらに$g(x)\ne 0$とする. このとき商$f(x)/g(x)$の導関数は存在し
$$
\frac{g(x)’f(x) – f(x)g'(x)}{g(x)^2}
$$
に等しい.”

$\displaystyle y_k = \frac{\exp( u_k^{(L)} )}{ \sum_i \exp( u_i^{(L)} ) }$の、$\displaystyle \exp(u_k^{(L)}), \sum_i \: \exp(u_{i}^{(L)}) $に注目すると$\displaystyle \frac{\partial y_k}{\partial u_j^{L}}$を以下のように変形できる。

$$
\begin{eqnarray}
\frac{\partial y_k}{\partial u_j^{L}}
&=&
\frac{1}{( \sum_i \: \exp(u_{i}^{(L)}) )^2}
\biggl(
\frac{ \exp(u_k^{(L)}) }{\partial u_j^{(L)}} \sum_i \: \biggl[ \exp(u_{i}^{(L)})\biggr]

\exp(u_k^{(L)})\frac{\sum_i \: \exp( u_{i}^{(L)}) }{ \partial u_j^{(L)}}
\biggr)
\\
\end{eqnarray}
$$

上記の式において、$\displaystyle \frac{ \exp(u_k^{(L)}) }{\partial u_j^{(L)}}$ は $k = j$ であるとき$\exp(u_k^{(L)})$ で、$k\ne j$ のとき$0$ であるので場合分けする。(ただし$j$が$\delta$の添え字であることに注意する)

$k \ne j$のときの$\displaystyle \frac{\partial y_k}{\partial u_j^{L}}$

$$
\begin{eqnarray}
\frac{\partial y_k}{\partial u_j^{L}}
&=&
\frac{1}{( \sum_i \: \exp(u_{i}^{(L)}) )^2}
\biggl(

\exp(u_k^{(L)})\frac{\sum_i \: \exp( u_{i}^{(L)}) }{ \partial u_j^{(L)}}
\biggr)
\\
&=&
\frac{1}{( \sum_i \: \exp(u_{i}^{(L)}) )^2}
\biggl(

\exp(u_k^{(L)})\exp( u_{j}^{(L)})
\biggr)
\\
&=&

\frac{\exp(u_k^{(L)})}{ \sum_i \: \exp(u_{i}^{(L)}) }
\frac{\exp( u_{j}^{(L)})}{ \sum_i \: \exp(u_{i}^{(L)}) }
\\
&=&
-y_k y_j \cdots \text{(4)}
\end{eqnarray}
$$

$k = j$のときの$\displaystyle \frac{\partial y_k}{\partial u_j^{L}}$

右辺第二項の$\displaystyle \sum_i \: \exp( u_{i}^{(L)})$の足し算の中に$\exp( u_{j}^{(L)})$が含まれていることに注意する。

$$
\begin{eqnarray}
\frac{\partial y_k}{\partial u_j^{L}}
&=&
\frac{1}{( \sum_i \: \exp(u_{i}^{(L)}) )^2}
\biggl(
\frac{ \exp(u_k^{(L)}) }{\partial u_j^{(L)}} \sum_i \: \exp(u_{i}^{(L)})

\exp(u_k^{(L)})\frac{\sum_i \: \exp( u_{i}^{(L)}) }{ \partial u_j^{(L)}}
\biggr)
\\
&=&
\frac{1}{( \sum_i \: \exp(u_{i}^{(L)}) )^2}
\biggl(
\exp(u_k^{(L)})\sum_i \: \exp(u_{i}^{(L)})

\exp(u_k^{(L)})\exp( u_{j}^{(L)})
\biggr)
\\
&=&
\frac{\exp(u_k^{(L)})}{ \sum_i \: \exp(u_{i}^{(L)}) }
\biggl(
\frac{\sum_i \: \exp(u_{i}^{(L)})}{ \sum_i \: \exp(u_{i}^{(L)})}

\frac{\exp( u_{j}^{(L)})}{ \sum_i \: \exp(u_{i}^{(L)}) }
\biggr)\\
&=&
y_k(1-y_j) \cdots \text{(5)}
\end{eqnarray}
$$

$\delta_j^{(L)}$の導出

(3)式に、(4)式と(5)式を代入して$\delta_j^{(L)}$を求める

$$
\begin{eqnarray}\delta_j^{(L)}
&=&
-\sum_k d_k
\log \frac{1}{ y_k } \frac{\partial y_k}{\partial u_j^{L}}\\
&=&

\biggl(
d_j
\frac{1}{ y_k } \frac{\partial y_k}{\partial u_j^{L}}
+
\sum_{k \ne j} d_k
\frac{1}{ y_k } \frac{\partial y_k}{\partial u_j^{L}}
\biggr)
\\
&=&

\biggl(
d_j (1-y_j)
+
\sum_{k \ne j} d_k (-y_j)
\biggr)
\\
&=&
-\biggl(
d_j + \sum_k d_k(-y_j)
\biggr)
\\
&=&
-\biggl(
d_j – y_j \sum_k d_k
\biggr)\\
&=&
y_j-d_j
\end{eqnarray}
$$

ただし、最後の変形には $\displaystyle \sum_k d_k=1$ を用いた