LoginSignup
3
3

More than 3 years have passed since last update.

図で理解!”学習”の基盤:ニューラルネットワークの”逆伝搬”と”更新”

Posted at

ネットワークの逆伝搬とは?

これまでの記事では、
・ニューラルネットワークとは何者で、どんな処理をしているのか(図で理解!ニューラルネットワークとは?
・各ネットワーク層での処理を一部紹介しました。
Affine層:図で理解!ニューラルネットワークとは?
Convolution層:図で理解!畳み込み処理?Convolution層?畳み込みニューラルネットワーク(CNN)の基礎

しかし、”入力になんらかの計算処理を加えて出力を得る”だけでは何の意味もありません。

重要なのは”逆伝搬”です!!!(以下図)

逆伝搬.png

↓↓↓↓↓もっと詳しく↓↓↓↓↓

Affine計算グラフ逆伝搬.png

勘がいい方はもう分かりました?

”誤差を小さくするように各ネットワーク層のパラメーターをそれぞれ更新”を”繰り返す” = ”学習”

です。

パラメーターとは?

・Affine層で言うW(重み)とb(バイアス)
・Convolution層で言うK(カーネル)

つまり、”入力に対して掛けたり足したりする値”のことです。

ハイパーパラメーター (←重要)

パラメーターを適当に変えるわけではありません。
Wをどれだけどう変更するか、の調整をしてくれるのが”ハイパーパラメーター”です。

ハイパーパラメーターを使ってパラメーターを更新することを総称して
”ネットワークの更新”や”パラメーターの更新”と言います。

この更新方法は複数あるので、別途記事にします。
<更新方法の種類>
・SGD
・Momentum
・AdaGrad
・Adam

ゼロから作るDeepLearning にも載っています。)

が、イメージを付けてもらうためにコードを乗せておきます。

//SGDでAffine層のWを更新
var ep = 0.001 //学習率 //(余談)任意の値だが、大体0.1,0.01,0.001辺りが多い
W = W - dW * ep //パラメーターWを更新 //dW:以下に説明 

ep と言うのがハイパーパラメーターの一種で”学習率(epsilon)”と呼ばれるものです。

”一種”と言いましたが、
更新方法によって、それぞれで使用するだけのハイパーパラメーターが存在します。

逆伝搬の計算

上のコードのコメントアウトにしれっと”dW”と書きましたが、
逆伝搬の計算方法をAffine層の処理を例に記載します。

Affine計算グラフ.png

Affine計算グラフ逆伝搬.png

まとめ:学習の基盤:ニューラルネットワークの”逆伝搬”と”更新”

要は、入力を渡し、得た結果と期待する出力との”差異”を逆伝搬するだけなんですが、
それだけでは値が行ったり来たりしているです。

誤差をなるべく小さくできるようにパラメーターを更新してあげることで、
”計算結果の出力を、本来期待する出力に近づけよう”という訳で、
これが”学習の概念”です。

長々とありがとうございました。

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