スコルの知恵袋

主にプログラミング関係の気になったこと等をまとめたブログ

『ゼロから作るDeep Learning』のp.148,式(5.13)の導出

『ゼロから作るDeep Learning』のp.148の式(5.13)の導出について,本文に「実際に書き下せば確かめられるよ~」とあったので試しにやってみたところ若干ややこしかったのでメモとしてここにまとめておくことにしました.

導出

連鎖律より次式が成り立ちます.

 \displaystyle{
\frac{\partial L}{\partial x_{ij}} = \sum_{p, q} \frac{\partial L}{\partial y_{pq}} \frac{\partial y_{pq}}{\partial x_{ij}}
}

式中の \displaystyle{ \frac{\partial L}{\partial y_{pq}} } \displaystyle{ \frac{\partial L}{\partial \textbf{Y}} }の成分なのでほっといてもよさそうですが, \displaystyle{ \frac{\partial y_{pq}}{\partial x_{ij}} }はどうにかしないといけません.

 \displaystyle{
\textbf{Y} = \textbf{X} \cdot \textbf{W}
} を成分表記すると  \displaystyle{
y_{pq} = \sum_{k} x_{pk} w_{kq}
} であり,この両辺を x_{ij}微分して整理すると次のようになります.


\begin{aligned}
\frac{\partial y_{pq}}{\partial x_{ij}} &= \frac{\partial}{\partial x_{ij}} \sum_{k} x_{pk} w_{kq} \\
&= \sum_{k} \frac{\partial x_{pk}}{\partial x_{ij}} w_{kq} \\
&= \sum_{k} \delta_{ip} \delta_{jk} w_{kq} \\
&= \delta_{ip} w_{jq}
\end{aligned}

ここで, \delta_{ij}なる記号が飛び出しましたが,これは『クロネッカーのデルタ』と呼ばれるもので次のように定義されます.


\delta_{ij} := \begin{cases}
1 & (i = j) \\
0 & (i \neq j)
\end{cases}

 \displaystyle{\frac{\partial x_{pk}}{\partial x_{ij}}}は p = i かつ q = j のときのみ 1 となり他の場合は 0 となりますが,クロネッカーのデルタを用いればこのことを次式のように場合分けをせずにすっきりと書くことができます.

 \displaystyle{
 \frac{\partial x_{pk}}{\partial x_{ij}} = \delta_{ip} \delta_{jk}
}

以上より,


\begin{aligned}
\frac{\partial L}{\partial x_{ij}} &= \sum_{p, q} \frac{\partial L}{\partial y_{pq}} \frac{\partial y_{pq}}{\partial x_{ij}} \\
&= \sum_{p, q} \frac{\partial L}{\partial y_{pq}} \delta_{ip} w_{jq} \\
&= \sum_{q} \frac{\partial L}{\partial y_{iq}} w_{qj}^{\mathrm{T}}
\end{aligned}

が成り立ちますが,これは

 \displaystyle{
\frac{\partial L}{\partial \textbf{X}} = \frac{\partial L}{\partial \textbf{Y}} \cdot \textbf{W}^{\mathrm{T}}
}

を意味するので,これにて前半の式は導出完了です.

後半の式についても同様に,


\begin{aligned}
\frac{\partial y_{pq}}{\partial w_{ij}} &= \frac{\partial}{\partial w_{ij}} \sum_{k} x_{pk} w_{kq} \\
&= \sum_{k} x_{pk} \frac{\partial w_{kq}}{\partial w_{ij}} \\
&= \sum_{k} x_{pk} \delta_{ik} \delta_{jq} \\
&= \delta_{jq} x_{pi}
\end{aligned}

より,


\begin{aligned}
\frac{\partial L}{\partial w_{ij}} &= \sum_{p, q} \frac{\partial L}{\partial y_{pq}} \frac{\partial y_{pq}}{\partial w_{ij}} \\
&= \sum_{p, q} \frac{\partial L}{\partial y_{pq}} \delta_{jq} x_{pi} \\
&= \sum_{p} x_{ip}^{\mathrm{T}} \frac{\partial L}{\partial y_{pj}} 
\end{aligned}

となって,これは

 \displaystyle{
\frac{\partial L}{\partial \textbf{W}} =  \textbf{X}^{\mathrm{T}} \cdot \frac{\partial L}{\partial \textbf{Y}}
}

を意味するので,後半の式も導出できました.