8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

行列の和と積の誤差逆伝播法の証明

Posted at

ゼロから作るDeep Learningに行列の和と積の誤差逆伝播法の証明が書いていなかったため、Deep Learningという本(英語版はネットで無料公開されています、邦訳版はこちら)を参考に、自分で証明を書いてみました。

#証明を読む前に
行列の微分というマニアックな分野になってくるので、行列の微分の定義および表記法(分子レイアウト記法と分母レイアウト記法など)を知るために、その名もMatrix Differentiationという資料に一通り目を通しておいてください。僕もこれを読んで勉強しました。

以下はすべて分母レイアウト記法です。

#記法
太字の大文字$\boldsymbol{X}$は行列を表します。普通の太さの大文字$X$や普通の太さの小文字$x$はスカラーを表します。普通の太さの小文字に添字が付いたもの$x_{ij}$は対応する太字の大文字の行列$\boldsymbol{X}$の第$(i, j)$成分を表します。$R^{m \times n}$は$m \times n$の実数の行列の全体の集合を表します。

#証明のもととなる定理(拡張版連鎖律)
Deep Learning英語版のChapter 6のp203の式6.47がもととなりますが、以下の証明のために書き換えておきます。本ではテンソルですが、今回の証明では行列で十分ですし、一般のテンソルで考えるとややこしくなるので、ここでは行列に限定して議論します。

z = f(\boldsymbol{Y})\\

\boldsymbol{Y} = g(\boldsymbol{X})\\

\frac{\partial z}{\partial \boldsymbol{X}} = 
\sum_{i, j} 
\frac{\partial y_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial z}{\partial y_{ij}}

#行列の和の証明
損失関数の値を$L$とし、$L$は$\boldsymbol{Z}$の関数であるとします。$\boldsymbol{X}, \boldsymbol{Y}, \boldsymbol{Z} \in R^{m \times n}$であり、$\boldsymbol{Z} = \boldsymbol{X} + \boldsymbol{Y}$という関係があるとします。そして、$\frac{\partial L}{\partial \boldsymbol{Z}}$がわかっていて、$\frac{\partial L}{\partial \boldsymbol{X}}$と$\frac{\partial L}{\partial \boldsymbol{Y}}$を求めたいとします。このとき

z_{ij} = x_{ij} + y_{ij}

この式の両辺を$\boldsymbol{X}$で微分して

\frac{\partial z_{ij}}{\partial \boldsymbol{X}} = 

\begin{pmatrix}
0 && \cdots && 0\\
\vdots && \ddots && \vdots\\
0 & \cdots & 1 & \cdots & 0\\
\vdots && \ddots && \vdots\\
0 && \cdots && 0
\end{pmatrix}

第$(i, j)$成分のみが1で他の成分はすべて0です。

さらに両辺に$\frac{\partial L}{\partial z_{ij}}$をかけて

\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}} = 

\begin{pmatrix}
0 && \cdots && 0\\
\vdots && \ddots && \vdots\\
0 & \cdots & \frac{\partial L}{\partial z_{ij}} & \cdots & 0\\
\vdots && \ddots && \vdots\\
0 && \cdots && 0
\end{pmatrix}

これを$j$について和をとると

\sum_{j=1}^n 
\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}} = 

\begin{pmatrix}
0 && \cdots && 0\\
\vdots && \ddots && \vdots\\
\frac{\partial L}{\partial z_{i1}} & 
\frac{\partial L}{\partial z_{i2}} & 
\frac{\partial L}{\partial z_{i3}} & 
\cdots & 
\frac{\partial L}{\partial z_{in}}\\
\vdots && \ddots && \vdots\\
0 && \cdots && 0
\end{pmatrix}

さらに$i$について和をとると

\sum_{i=1}^l 
\sum_{j=1}^n 
\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}} = 

\begin{pmatrix}
\frac{\partial L}{\partial z_{11}} & 
\frac{\partial L}{\partial z_{12}} & 
\frac{\partial L}{\partial z_{13}} & 
\cdots & 
\frac{\partial L}{\partial z_{1n}}\\
\frac{\partial L}{\partial z_{21}} & 
\frac{\partial L}{\partial z_{22}} & 
\frac{\partial L}{\partial z_{23}} & 
\cdots & 
\frac{\partial L}{\partial z_{2n}}\\
\vdots && \ddots && \vdots\\
\frac{\partial L}{\partial z_{m1}} & 
\frac{\partial L}{\partial z_{m2}} & 
\frac{\partial L}{\partial z_{m3}} & 
\cdots & 
\frac{\partial L}{\partial z_{mn}}\\
\end{pmatrix} = 

\frac{\partial L}{\partial \boldsymbol{Z}}

ここで、上記の定理より

\frac{\partial L}{\partial \boldsymbol{X}} = 

\sum_{i, j} 
\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}} = 

\sum_{i=1}^l 
\sum_{j=1}^n 
\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}}

したがって

\frac{\partial L}{\partial \boldsymbol{X}} = 
\frac{\partial L}{\partial \boldsymbol{Z}}

同様にして

\frac{\partial L}{\partial \boldsymbol{Y}} = 
\frac{\partial L}{\partial \boldsymbol{Z}}

#行列の積の証明
損失関数の値を$L$とし、$L$は$\boldsymbol{Z}$の関数であるとします。$\boldsymbol{X} \in R^{l \times m}, \boldsymbol{Y} \in R^{m \times n}, \boldsymbol{Z} \in R^{l \times n}$であり、$\boldsymbol{Z} = \boldsymbol{X} \boldsymbol{Y}$という関係があるとします。そして、$\frac{\partial L}{\partial \boldsymbol{Z}}$がわかっていて、$\frac{\partial L}{\partial \boldsymbol{X}}$と$\frac{\partial L}{\partial \boldsymbol{Y}}$を求めたいとします。このとき、行列の積の定義より

z_{ij} = \sum_{k=1}^mx_{ik}y_{kj}

この式の両辺を$\boldsymbol{X}$で微分して

\frac{\partial z_{ij}}{\partial \boldsymbol{X}} = 

\begin{pmatrix}
0 && \cdots && 0\\
\vdots &&\ddots&& \vdots\\
y_{1j} & y_{2j} &y_{3j} & \cdots & y_{mj}\\
\vdots &&\ddots&& \vdots\\
0 && \cdots && 0
\end{pmatrix}

第$i$行が$\begin{matrix}y_{1j} & y_{2j} &y_{3j} & \cdots & y_{mj}\end{matrix}$であり、他の行はすべて0で埋まっている状態です。

さらに両辺に$\frac{\partial L}{\partial z_{ij}}$をかけて

\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}} = 

\begin{pmatrix}
0 && \cdots && 0\\
\vdots &&\ddots&& \vdots\\
y_{1j} \frac{\partial L}{\partial z_{ij}} & 
y_{2j} \frac{\partial L}{\partial z_{ij}} & 
y_{3j} \frac{\partial L}{\partial z_{ij}} & 
\cdots & 
y_{mj} \frac{\partial L}{\partial z_{ij}}\\
\vdots &&\ddots&& \vdots\\
0 && \cdots && 0
\end{pmatrix}

これを$j$について和をとると

\sum_{j=1}^n 
\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}} = 

\begin{pmatrix}
0 && \cdots && 0\\
\vdots &&\ddots&& \vdots\\
\sum_{j=1}^n y_{1j} \frac{\partial L}{\partial z_{ij}} & 
\sum_{j=1}^n y_{2j} \frac{\partial L}{\partial z_{ij}} & 
\sum_{j=1}^n y_{3j} \frac{\partial L}{\partial z_{ij}} & 
\cdots & 
\sum_{j=1}^n y_{mj} \frac{\partial L}{\partial z_{ij}}\\
\vdots &&\ddots&& \vdots\\
0 && \cdots && 0
\end{pmatrix}

さらに$i$について和をとると

\sum_{i=1}^l 
\sum_{j=1}^n 
\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}} = 

\begin{pmatrix}
\sum_{j=1}^n y_{1j} \frac{\partial L}{\partial z_{1j}} & 
\sum_{j=1}^n y_{2j} \frac{\partial L}{\partial z_{1j}} & 
\sum_{j=1}^n y_{3j} \frac{\partial L}{\partial z_{1j}} & 
\cdots & 
\sum_{j=1}^n y_{mj} \frac{\partial L}{\partial z_{1j}}\\
\vdots &&\ddots&& \vdots\\
\sum_{j=1}^n y_{1j} \frac{\partial L}{\partial z_{lj}} & 
\sum_{j=1}^n y_{2j} \frac{\partial L}{\partial z_{lj}} & 
\sum_{j=1}^n y_{3j} \frac{\partial L}{\partial z_{lj}} & 
\cdots & 
\sum_{j=1}^n y_{mj} \frac{\partial L}{\partial z_{lj}}\\
\end{pmatrix}

ここで、上記の定理より

\frac{\partial L}{\partial \boldsymbol{X}} = 

\sum_{i, j} 
\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}} = 

\sum_{i=1}^l 
\sum_{j=1}^n 
\frac{\partial z_{ij}}{\partial \boldsymbol{X}} 
\frac{\partial L}{\partial z_{ij}}

したがって

\frac{\partial L}{\partial \boldsymbol{X}} = 

\begin{pmatrix}
\sum_{j=1}^n y_{1j} \frac{\partial L}{\partial z_{1j}} & 
\sum_{j=1}^n y_{2j} \frac{\partial L}{\partial z_{1j}} & 
\sum_{j=1}^n y_{3j} \frac{\partial L}{\partial z_{1j}} & 
\cdots & 
\sum_{j=1}^n y_{mj} \frac{\partial L}{\partial z_{1j}}\\
\vdots &&\ddots&& \vdots\\
\sum_{j=1}^n y_{1j} \frac{\partial L}{\partial z_{lj}} & 
\sum_{j=1}^n y_{2j} \frac{\partial L}{\partial z_{lj}} & 
\sum_{j=1}^n y_{3j} \frac{\partial L}{\partial z_{lj}} & 
\cdots & 
\sum_{j=1}^n y_{mj} \frac{\partial L}{\partial z_{lj}}\\
\end{pmatrix}

すなわち

\frac{\partial L}{\partial x_{ij}} = 
\sum_{k=1}^n y_{jk} \frac{\partial L}{\partial z_{ik}} = 
\sum_{k=1}^n \frac{\partial L}{\partial z_{ik}} y_{jk}

ここで、$\boldsymbol{X} \in R^{l \times m}, \boldsymbol{Y} \in R^{m \times n}, \boldsymbol{Z} \in R^{l \times n}$であり、$\boldsymbol{Z} = \boldsymbol{X} \boldsymbol{Y}$であるとき、$
z_{ij} = \sum_{k=1}^mx_{ik}y_{kj}
$であることを思い出すと、$\boldsymbol{Y} \rightarrow \boldsymbol{Y}^T$で$y_{jk} \rightarrow y_{kj}$であることを利用して

\frac{\partial L}{\partial \boldsymbol{X}} = 
\frac{\partial L}{\partial \boldsymbol{Z}} \boldsymbol{Y}^T

$\frac{\partial L}{\partial \boldsymbol{X}}$が求まったので、次に$\frac{\partial L}{\partial \boldsymbol{X}}$を求める。転置行列の性質(参考)を用いて、$\boldsymbol{Z} = \boldsymbol{X} \boldsymbol{Y}$の両辺を転置すると、$\boldsymbol{Z}^T = \boldsymbol{Y}^T \boldsymbol{X}^T$が導ける。よって、先の結果と転置行列の性質を用いて

\frac{\partial L}{\partial \boldsymbol{Y}^T} = 
\frac{\partial L}{\partial \boldsymbol{Z}^T} \boldsymbol{X}

すなわち

\left( \frac{\partial L}{\partial \boldsymbol{Y}} \right) ^ T = 
\left( \frac{\partial L}{\partial \boldsymbol{Z}} \right) ^ T \boldsymbol{X}

両辺を転置して

\frac{\partial L}{\partial \boldsymbol{Y}} = 
\boldsymbol{X}^T \frac{\partial L}{\partial \boldsymbol{Z}}
8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?