0
0

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 3 years have passed since last update.

全結合型ニューラルネットワークの逆伝搬の式の覚え方

Last updated at Posted at 2022-01-27

はじめに

全結合型ニューラルネットワークの逆伝搬の式の計算で、行列のどれの転置をとるのか、どっちからかけるのか、ということが良くわからなくなります。そういう時は、各行列の次元を考えればよいですね。

行列の基本的なこと

行列の掛け算

行列
A[l, m] : l行m列
B[m, n] : m行n列
のとき、行列の掛け算でC=ABを計算すると
C[l, n]=A[l, m]B[m, n]
となって、l行n列の行列Cとなる。
真ん中のmの数字が同じ時、mに関して掛け合わせることができるのでmの数字が消えて、残りのインデックスが残った行列ができる。
なので、B[m, n]A[l, m]の掛け算を行うことはできない。

行列の転置

A[l, m]の行列の転置をとるとは行と列を入れ替えることで、
$A^T$と表し、次元は[m, l]になる。
$A^T[m, l]$

各パラメータの次元の確認

入力側のノード数:$d_1$
出力側のノード数:$d_2$
バッチサイズ:$N$
であるとき、

入力側のデータ: $X[N, d_1]$
出力側のデータ: $Y[N, d_2]$
で表すことができ、この時の重み係数とバイアス係数は、

重み係数:$W[d_1, d_2]$
バイアス係数: $b[d_2]$
で表すことができる。

このとき、
$Y[N, d_2]=X[N, d_1]W[d_1, d_2]+b[d_2]$
という関係式がなりたつ。$d_1$が掛け合わされてなくなり、$[N, d_2]$の次元になっている。
行列の足し算は、numpy式?で計算される。

逆伝搬の式

勾配を求めるとは、損失関数$L$に対して、
$\frac{\partial L}{\partial X}$, $\frac{\partial L}{\partial W}$, $\frac{\partial L}{\partial b}$
を求めるという事。この勾配を求めるときはどれも
$\frac{\partial L}{\partial Y}[N, d_{2}]$
を用いる。

入力の勾配

$\frac{\partial L}{\partial X}=\frac{\partial L}{\partial Y}\frac{\partial Y}{\partial X}$であって$\frac{\partial Y}{\partial X}$は$W$である。
なので、$\frac{\partial L}{\partial Y}[N, d_{2}]$に$W[d_1, d_2]$をかけることで入力の勾配$\frac{\partial L}{\partial X}[N, d_1]$が得られる。
次元に注意すれば
$\frac{\partial L}{\partial X}[N, d_1]=\frac{\partial L}{\partial Y}[N, d_{2}]W^T[d_2, d_1]$
となる。

\frac{\partial L}{\partial X}=\frac{\partial L}{\partial Y}W^T

重みパラメータの勾配

$\frac{\partial L}{\partial Y}[N, d_{2}]$に$X[N, d_1]$をかけることで重みパラメータの勾配$\frac{\partial L}{\partial W}[d_1, d_2]$が得られる。
次元に注意すれば
$\frac{\partial L}{\partial W}[d_1, d_2]=X^{T}[d_1, N]\frac{\partial L}{\partial Y}[N, d_{2}]$
となる。

\frac{\partial L}{\partial W}=X^{T}\frac{\partial L}{\partial Y}

バイアスパラメータの勾配

$\frac{\partial L}{\partial Y}[N, d_{2}]$に$\frac{\partial Y}{\partial b}$をかけることでバイアスパラメータの勾配を求めることができる。これはN個の要素が全て1である行列[N]になるので、

\frac{\partial L}{\partial b}=(\frac{\partial L}{\partial Y}をサンプル方向に足したもの)

別の表記

次の式が基本にある。

dL=\sum_{i,j}\frac{\partial L}{\partial y_{ij}} dy_{ij}

入力の勾配

\frac{\partial L}{\partial x_{kl}}=\sum_{i,j}\frac{\partial L}{\partial y_{ij}} \frac{\partial y_{ij}}{\partial x_{kl}}

同じサンプリングのとこだけが残るので、iに関する和は消える。つまり、

\frac{\partial L}{\partial x_{kl}}=\sum_{j}\frac{\partial L}{\partial y_{kj}} \frac{\partial y_{kj}}{\partial x_{kl}}

$\frac{\partial y_{kj}}{\partial x_{kl}}$は、$w_{lj}$になるので、結局、

\frac{\partial L}{\partial x_{kl}}=\sum_{j}\frac{\partial L}{\partial y_{kj}} w_{lj}

重みパラメータの勾配

\frac{\partial L}{\partial w_{mn}}=\sum_{i,j}\frac{\partial L}{\partial y_{ij}} \frac{\partial y_{ij}}{\partial w_{mn}}

ここで、

y_{ij}=\sum_{k}x_{ik}w_{kj}+b_{j}

なので、

\frac{\partial y_{ij}}{\partial w_{mn}}=\sum_{k}x_{ik}\frac{\partial w_{kj}}{\partial w_{mn}}=\sum_{k}x_{ik}\delta_{km} \delta_{jn}=x_{im}\delta_{jn}

という関係式に注意すれば、

\begin{align}
\frac{\partial L}{\partial w_{mn}} & = \sum_{i, j}\frac{\partial L}{\partial y_{ij}} x_{im} \delta_{jn}\\
&= \sum_{i}\frac{\partial L}{\partial y_{in}} x_{im} 
\end{align}

バイアスパラメータの勾配

\frac{\partial L}{\partial b_{l}}=\sum_{i,j}\frac{\partial L}{\partial y_{ij}} \frac{\partial y_{ij}}{\partial b_{l}}

これは、$\frac{\partial y_{ij}}{\partial b_{l}}=\delta_{jl}$なので、結局次の通りになる。

\frac{\partial L}{\partial b_{l}}=\sum_{i}\frac{\partial L} {\partial y_{il}}

すなわち、サンプリング方向の和になっている。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?