1
1

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.

はじめに

この記事で,書かずに終わってしまったBackpropagationについてメモします.
計算方法や実装は比較的容易なのに,理解するのにそこそこ時間がかかったので,整理して自分なりの備忘用にしてあります.

どこで使うの?

人工ニューラルネットワーク(ANN: Artificial Neural Network)や深層ニューラルネットワーク(DNN: Deep Neural Network)の学習時に生じた誤差をネットワーク内に反映させる時に用いる手法が,Backpropagationである.
Backpropagationは,日本語では誤差逆伝播法と言うらしい.

計算方法

更新処理では,以下のコスト関数$J$をパラメータ$\Theta$で偏微分した値が必要になる.

\frac{\partial}{\partial \Theta_{ij}^{(l)}}J(\Theta)

これは,パラメータ$\Theta_{ij}^{(l)}$すべてにおいて誤差を求めるというもの.一度にすべてを求めるのは現実的ではなく,それよりも効率の良い求め方がある.それが,Backpropagation Algorithmである.

以下のような4層ANNを例にBackpropagationの計算をしてみる.
4層ANNモデル.png

まず,入力値を$x$とするとForward Propagationの計算は以下のようになる.

\begin{align}
a^{(1)} &= x \\
\\
z^{(2)} &= \Theta^{(1)}a^{(1)} \\
a^{(2)} &= g(z^{(2)}) \\
a^{(2)} &:= \left(\begin{matrix}
1 \\
a_1^{(2)}\\
\vdots\\
a_{s_2}^{(2)}
\end{matrix}\right)\\
\\
z^{(3)} &= \Theta^{(2)}a^{(2)} \\
a^{(3)} &= g(z^{(3)}) \\
a^{(3)} &:= \left(\begin{matrix}
1 \\
a_1^{(3)}\\
\vdots\\
a_{s_3}^{(3)}
\end{matrix}\right)\\
\\
z^{(4)} &= \Theta^{(3)}a^{(3)} \\
a^{(4)} &= g(z^{(4)}) = h_\Theta(x)
\end{align}

各層$l$にあるノード$j$の誤差を$\delta_{j}^{(l)}$とする.
そうして,各ノードの誤差$\delta_{j}^{(l)}$は以下のように計算する.

\begin{align}
\delta^{(4)} &= a^{(4)} - y \\
\\
\delta^{(3)} &= (\Theta^{(3)})^T \delta^{(4)} \circ g^\prime(z^{(3)}) \\
\\
\delta^{(2)} &= (\Theta^{(2)})^T \delta^{(3)} \circ g^\prime(z^{(2)}) \\
\end{align}

$\delta^{(1)}$がないのは,入力値に誤差というものがないためである.
$g^\prime(\cdot)$は,活性化関数の導関数になる.Sigmoid関数であれば,$x(1-x)$となる.また,$\circ$はアダマール積であり,行列の要素同士の積算を表している.

各層の$\delta^{(l)}$を求めることができたら,更新値を次のようにして計算する.

\begin{align}
\triangle_{ij}^{(l)} &= \sum_{i=1}^m a_j^{(l)}\delta_i^{(l+1)} \\

\frac{\partial}{\partial\Theta_{ij}^{(l)}}J(\Theta) &= \frac{1}{m}\triangle_{ij}^{(l)} + \lambda\Theta_{ij}^{(l)} \\
\end{align}

まとめ

Backpropagationは簡単な計算しかしてなく,Forward propagationと似た実装である.
式が分からなくなったら,変数の次元数を確認していけば良い.

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?