stage3day2section1

確認テスト

答え:

z=t2z = t^2 をtで微分

t= x + yをxで微分 それぞれを掛け合わせる

Section1:勾配消失問題

誤差逆伝播法でうまく学習できなくなってしまう現象

誤差逆伝播法が下位層に進んでいくにつれて勾配はどんどん緩やかになり、そのため勾配降下法による更新では、下位層のパラメータがほとんど変わらず、訓練が最適値に収束しなくなる。

原因は?

活性化関数であるシグモイド関数の微分が出てくるが

この最高値が0.25であり、中間層が増えるごとに0.25が何度も掛け合わされるために

どんどん小さくなる。

確認テスト

答え

上記の通り0.25なので答えは(2)

勾配消失の解決方法は大きく3つ

1.活性化関数の選択

上記のシグモイド関数ではなく、活性化関数としてReLU関数を使用する。

ReLU関数は微分すると0か1になる。勾配消失問題の回避とスパース化に貢献することができる。 ReLU関数は入力値が閾値(0)を超えている場合、入力値をそのまま出力する関数。今最も使われている活性化関数。

2.重みの初期値設定 重みの初期値設定はとても重要です。大きく2つの設定方法がある。

 2.1Xavier ザビエル  重みの要素を、前の層のノード数(ユニット数)の平方根で除算した値を初期値とするアルゴリズム。 Xavier初期値を設定する際の活性化関数は、ReLU関数、シグモイド関数、双曲線正接関数(tanh)があげられる。

 2.2He  重みの要素を、前の層のノード数(ユニット数)の平方根で除算した値に2‾√2を掛けた値を初期値とするアルゴリズム。 Heの初期値を設定する際の活性化関数は、ReLU関数があげられる。

3.バッチ正規化 ミニバッチ単位で入力値のデータの偏りを抑制する手法。 活性化関数に値を渡す前後にバッチ正規化の処理を含む層を加える。過学習も抑えられる。

確認テスト

答え

学習が行えない。

重みの初期値に0を設定=個性がない状態

すべての重みが均一に更新されるため、多くの重みを保つ意味がなくなる。

確認テスト

答え

・過学習が抑えられる。

・学習スピードアップする。

実装演習 

2_2_2_vanishing_gradient_modified.ipynb

*正答率トレーニング出力部分は長いのでトリムしました。