勾配爆発問題 (Gradient Explosion Problem)
解説
勾配爆発問題とは、ディープラーニングの学習中(誤差逆伝播)に、勾配(更新量)が異常に大きくなりすぎて、計算結果が「無限大(NaN:非数)」になってしまう現象です。
「1.1倍」を繰り返すと大変なことに
勾配消失問題が「0.1倍(1より小さい数)」の掛け算で値が消える現象だったのに対し、勾配爆発はその逆です。
「連鎖律」によって勾配の掛け算が繰り返される際、その値が「1より大きい」状態が続くとどうなるでしょうか。
- 1回目:1.1倍
- 10回目:約2.6倍
- 100回目:約13,780倍
- 1000回目:天文学的な数字(オーバーフロー)
このように、層が深くなるにつれて値がねずみ算式に増大し、コンピュータが扱える数字の限界を超えてしまいます。結果として、重みが極端な値に更新され、学習が完全に崩壊(発散)します。
RNNで頻発する理由
この問題は、特にRNN(再帰型ニューラルネットワーク)でよく起こります。
RNNは構造上、「同じ重みパラメータ」を時系列の数だけ繰り返し掛け算するため、もしその重みが1より大きければ、時間の長さ(タイムステップ)に応じて確実に爆発してしまうからです。
G検定対策
出題ポイント
- 定義:逆伝播の過程で勾配が指数関数的に増大し、学習が発散(計算不能)する現象。
- 発生場所:層が深いネットワークや、RNN(再帰型ニューラルネットワーク)で特に起きやすい。
- 対策:勾配クリッピング(Gradient Clipping)。勾配がある閾値を超えたら、強制的に値をカットする方法。
よくあるひっかけ問題
- × 勾配爆発を防ぐために、シグモイド関数を使用する
(解説)逆です。シグモイド関数(微分最大値0.25)は、値を小さくするため「勾配消失」の原因になります。爆発の対策にはなりません。 - × 勾配爆発が起きると、重みの更新量が0に近づき、学習が止まる
(解説)それは「勾配消失」の説明です。爆発の場合は、更新量が巨大になりすぎて、最適解を通り越してどこかへ飛んでいってしまいます(発散)。
