【ラビットチャレンジレポート】深層学習day2 Section1:勾配消失問題

E資格受験に必要なJDLA認定講座の一つであるラビット・チャレンジ(https://ai999.careers/rabbit/)のレポート用ページです。

100文字以上要点まとめ

全体像

【勾配消失問題】
誤差逆伝播法が改装に進んでいくにつれて、勾配がどんどん緩やかになっていく。
そのため勾配降下法による行進では下位層のパラメータはほとんど変わらず訓練は最適日収束しなくなる。

【なぜ起きる?】
シグモイド関数の微分関数の最大値が0.25<1.0であるため、乗算するごとに値が小さくなっていく

【解決法】
活性化関数の選択
初期値の設定方法
バッチ正規化

活性化関数

【ReLU関数】
今もっとも使われている活性化関数
勾配消失問題の回避とスパース化に貢献することでいい成果をもたらしている

初期値の設定方法

【決め方】
乱数を使って決めることが多い
重みはいろいろな見方ができるように設定する必要がある(似たようなベクトルになってしまうのはよくない)
層の出力がある程度ばらつく=表現力があるモデルにしたい

【Xavier】
標準正規分布の乱数/前の層のノードの平方根
 各層の出力がいい感じにばらつくことを狙っている
S字カーブ上の活性関数(シグモイドなど)に対してうまく働く方法

【He】
√2*標準正規分布の乱数/前の層のノードの平方根
S字カーブ上でないの活性関数(ReLUなど)に対してうまく働く方法

バッチ正規化

【バッチ正規化とは?】
ミニバッチ単位で入力値のデータの偏りを抑制する手法

【使いどころ】
活性化関数に値を渡す前後にバッチ正規化の処理を孕んだ層を加える

【メリット】
中間層の重みの更新が安定化⇒学習が早くなる
過学習を抑えられる

実装演習

エビデンス1

エビデンス2

確認テスト

①シグモイド関数を微分したとき、入力値が0のときに最大値を取る。その値は?

  ( 1 – sigmoid(0) ) * sigmoid(0) = ( 1 – 0.5 ) * 0.5 = 0.25

②重みの初期値に0を設定するとどのような問題が発生するか?

  正しい学習が行えない。全重みが均一に更新され多数の重みをもつ意味がなくなる

③一般的に考えられるバッチ正規化の効果を2点挙げよ。

  中間層の重みの更新が安定化し学習が早くなる。過学習を抑えられる

  

時間

12/12 1:00 動画

12/12 1:15 実装演習

コメント

タイトルとURLをコピーしました