勾配消失問題 - DL長年の敵とその解決策

勾配消失と勾配爆発の原因から、ReLU・バッチ正規化・残差接続・重み初期化による解決策まで、深層学習の進化史を整理します。

勾配消失問題は深層学習の長年の敵。どう克服されたかの歴史を知ることで、DLの進化が見えてきます。

雷門 あかり(普段) 雷門 あかり

勾配消失って、なんでそんなに困るの?

六角 いずみ 先生(普段) 六角 いずみ 先生

勾配消失問題が起きると、深い層の重みが更新されず学習が進まなくなるからよ。
逆伝播で勾配が層を経るごとに減衰し、入力側ではほぼ0になってしまうの。

白銀 エマ(普段) 白銀 エマ

原因の一つがシグモイド関数。
微分値の最大が0.25で、層を重ねると0.25^n と指数的に小さくなる。
深い10層なら10^-6以下になってしまうわ。

紫藤 ゆら(びっくり) 紫藤 ゆら

10層でほぼ消えちゃうんですかぁ?
それは困りますぅ…

六角 いずみ 先生(普段) 六角 いずみ 先生

逆の問題として勾配爆発問題もあるわ。
層が深いと勾配が指数的に大きくなり、学習が不安定になるの。
特にRNNで顕著ね。

白銀 エマ(普段) 白銀 エマ

解決策は大きく4つ。
1) ReLUなど勾配が消えにくい活性化関数、2) バッチ正規化、3) 残差接続(スキップ接続)、4) 適切な重み初期化ね。

雷門 あかり(笑い) 雷門 あかり

ReLUは前に出てきたね!

六角 いずみ 先生(笑顔) 六角 いずみ 先生

そう。
残差接続はResNet(2015) が採用した画期的手法。
層の出力にその入力を足し算することで、勾配が通りやすい『バイパス』を作るの。

白銀 エマ(普段) 白銀 エマ

重み初期化も重要。
Xavier初期化(Glorot初期化) は活性化関数の分散を保つように設計、He初期化はReLU用に分散を2倍にしたバージョンよ。

紫藤 ゆら(笑顔) 紫藤 ゆら

初期値って、そんなに大事なんですねぇ!

六角 いずみ 先生(普段) 六角 いずみ 先生

ヒントンらが2006年に発表した事前学習(Pre-training) も歴史的に重要。
オートエンコーダなどで1層ずつ事前学習してから全体を微調整する方法ね。

白銀 エマ(普段) 白銀 エマ

勾配爆発には勾配クリッピングが対策。
勾配のノルムが閾値を超えたらスケーリングして抑えるの。
LSTM学習でよく使われるわ。

雷門 あかり(笑い) 雷門 あかり

いろんな技を組み合わせて、勾配問題を乗り越えてきたんだね!

六角 いずみ 先生(普段) 六角 いずみ 先生

G検定では『勾配消失/爆発問題』『ReLU・バッチ正規化・残差接続・重み初期化』『勾配クリッピング』をしっかり押さえておいてね!

確認クイズ

勾配消失問題への対策として、ResNetで採用され『層の出力に入力を足し算する』構造はどれか。

  1. ドロップアウト
  2. 残差接続 (スキップ接続)
  3. バッチ正規化
  4. データ拡張
こたえを見る

正解: 2. 残差接続 (スキップ接続)

残差接続 (スキップ接続)はResNet (2015) が採用した構造で、層の出力に入力を足して勾配が通りやすい『バイパス』を作ります。これにより100層以上のネットワークが学習可能になりました。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。