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


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

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

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

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

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

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

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

です。

パラメーターとは?

・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層の処理を例に記載します。

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

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

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

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