Affine 変換の誤差逆伝播法の導出
「O'Reilly Japan - ゼロから作るDeep Learning」の式 5.13 Affine 変換の誤差逆伝播法の公式が、よくわからなかったので簡単に導出。
$$ \begin{equation*} \frac{\partial L}{\partial X} = \frac{\partial L}{\partial Y} \cdot W^{\mathrm{T}} \end{equation*} $$
導出: \(\frac{\partial L}{\partial X}\)
$$ \begin{equation*} \frac{\partial L}{\partial X} = \begin{pmatrix} \frac{\partial L}{\partial x_{1}} & \frac{\partial L}{\partial x_{2}} \\ \end{pmatrix} \\ \end{equation*} $$ $$ \begin{equation*} = \begin{pmatrix} \frac{\partial L}{\partial y_{1}} w_{11} + \frac{\partial L}{\partial y_{2}} w_{12} + \frac{\partial L}{\partial y_{3}} w_{13} & \frac{\partial L}{\partial y_{1}} w_{21} + \frac{\partial L}{\partial y_{2}} w_{22} + \frac{\partial L}{\partial y_{3}} w_{23} \end{pmatrix} \\ \end{equation*} $$ $$ \begin{equation*} = \begin{pmatrix} \frac{\partial L}{\partial y_{1}} & \frac{\partial L}{\partial y_{2}} & \frac{\partial L}{\partial y_{3}} \end{pmatrix} \cdot \begin{pmatrix} w_{11} & w_{21} \\ w_{12} & w_{22} \\ w_{13} & w_{23} \\ \end{pmatrix} \end{equation*} $$ $$ \begin{equation*} = \frac{\partial L}{\partial Y} \cdot W^{\mathrm{T}} \end{equation*} $$
○ なぜ、各要素ごとに微分したのか?
各要素\(\frac{\partial L}{\partial x_{1}}\)ではなく \(\frac{\partial L}{\partial X}\) について微分しようとすると... $$ \begin{eqnarray*} \frac{\partial L}{\partial X} &=& \frac{\partial L}{\partial Y} \cdot \frac{\partial Y}{\partial X} \end{eqnarray*} $$
\(\frac{\partial Y}{\partial X}\) というベクトル Y をベクトル X で微分するというわけのわからない式が出てきてしまいます。これを避けるためにも、各要素に分解して考えました。
得られた結果から次のように考えられるかもしれませんが
$$ \begin{eqnarray*} \frac{\partial Y}{\partial X} &=& W^{\mathrm{T}} \end{eqnarray*} $$
導出する際にはちょっと、そのままでの導出は厳しそうだったので分解しました。もしかしたらもっと直感的にわかりやすい導出の仕方があるのかもしれません。
導出: \(\frac{\partial L}{\partial x_{1}}\)
$$
\begin{eqnarray*}
\frac{\partial L}{\partial x_{1}} &=& \frac{\partial L}{\partial Y} \cdot \frac{\partial Y}{\partial x_{1}} \\
&=&
\begin{pmatrix}
\frac{\partial L}{\partial y_{1}} & \frac{\partial L}{\partial y_{2}} & \frac{\partial L}{\partial y_{3}} \\
\end{pmatrix}
\cdot
\begin{pmatrix}
\frac{\partial y_{1}}{\partial x_{1}} \\
\frac{\partial y_{2}}{\partial x_{1}} \\
\frac{\partial y_{3}}{\partial x_{1}}
\end{pmatrix} \\
&=&
\frac{\partial L}{\partial y_{1}} \cdot \frac{\partial y_{1}}{\partial x_{1}} + \frac{\partial L}{\partial y_{2}} \cdot \frac{\partial y_{2}}{\partial x_{1}} + \frac{\partial L}{\partial y_{3}} \cdot \frac{\partial y_{3}}{\partial x_{1}} \\
&=&
\frac{\partial L}{\partial y_{1}} \cdot w_{11} + \frac{\partial L}{\partial y_{2}} \cdot w_{12} + \frac{\partial L}{\partial y_{3}} \cdot w_{13} \\
\frac{\partial L}{\partial x_{2}} &=&
\frac{\partial L}{\partial y_{1}} \cdot w_{21} + \frac{\partial L}{\partial y_{2}} \cdot w_{22} + \frac{\partial L}{\partial y_{3}} \cdot w_{23} \\
\end{eqnarray*}
$$
○ 式の意味
「導出: \(\frac{\partial L}{\partial x_{1}}\)」では、最終的に3つの数の和を取る式になりました。しかし、なぜ和を取るような式になっているのでしょうか?
その計算グラフを使って、殴り書きですが書き出すと次のようになります。
定義: スカラーをベクトルで微分
$$ \begin{eqnarray*} \frac{\partial L}{\partial X} &=& \begin{pmatrix} \frac{\partial L}{\partial x_{1}} & \frac{\partial L}{\partial x_{2}} \\ \end{pmatrix} \\ \frac{\partial L}{\partial W} &=& \begin{pmatrix} \frac{\partial L}{\partial w_{11}} & \frac{\partial L}{\partial w_{12}} & \frac{\partial L}{\partial w_{13}} \\ \frac{\partial L}{\partial w_{21}} & \frac{\partial L}{\partial w_{22}} & \frac{\partial L}{\partial w_{23}} \end{pmatrix} \\ \frac{\partial L}{\partial Y} &=& \begin{pmatrix} \frac{\partial L}{\partial y_{1}} & \frac{\partial L}{\partial y_{2}} & \frac{\partial L}{\partial y_{3}} \\ \end{pmatrix} \\ \end{eqnarray*} $$
式5.15 から上記のように定義しました。
定義: ベクトルをスカラーで微分
同じように、ベクトルの各要素をスカラーで微分します。ただし、被微分のベクトルを転置します。
$$ \begin{eqnarray*} \frac{\partial Y}{\partial x_{1}} = \begin{pmatrix} \frac{\partial y_{1}}{\partial x_{1}} \\ \frac{\partial y_{2}}{\partial x_{1}} \\ \frac{\partial y_{3}}{\partial x_{1}} \\ \end{pmatrix} \end{eqnarray*} $$
$$ \begin{eqnarray*} \frac{\partial Y}{\partial w_{11}} = \begin{pmatrix} \frac{\partial y_{1}}{\partial w_{11}} \\ \frac{\partial y_{2}}{\partial w_{11}} \\ \frac{\partial y_{3}}{\partial w_{11}} \\ \end{pmatrix} \end{eqnarray*} $$
○ なぜ転置するの?
「導出: \(\frac{\partial L}{\partial x_{1}}\)」において、\(\frac{\partial L}{\partial x_{1}}\) がスカラー量になるように、「定義: ベクトルをスカラーで微分」を決める必要があります。
「導出: \(\frac{\partial L}{\partial x_{1}}\)」で\(\frac{\partial L}{\partial x_{1}}\) がスカラー量になるようにするには、「定義: ベクトルをスカラーで微分」した際には、転置しなければなりません。
これは本には記載されていないですし、さらに言えば、このような公式があるわけではありません。
導出: \(\frac{\partial y_{1}}{\partial x_{1}}\)
補足: \(\frac{\partial L}{\partial W}\) の導出
上記 \(\frac{\partial L}{\partial X}\) と同じ手順で導出できます。