勾配消失問題(Vanishing Gradient Problem)とは、深いニューラルネットワークの学習時に、逆伝播で勾配が入力層に向かうにつれて指数的に小さくなり、下位層のパラメータがほとんど更新されなくなる問題です。
原因
逆伝播では連鎖律により各層の勾配が掛け合わされます。シグモイド関数やtanh関数は勾配の最大値が1未満であるため、多くの層を通過すると勾配が急速にゼロに近づきます。
| ひとことで言うと | 層が深いと、逆伝播の途中で勾配がほぼ0になり、入口側が学習されなくなる問題。 |
|---|---|
| なぜ起きるか | 1より小さい値を何十回も掛け合わせると、限りなく0に近づくため。 |
| 対策 | ReLU系の活性化関数、残差結合、バッチ/レイヤー正規化、適切な初期化。 |
解決策
ReLU活性化関数の使用(正領域で勾配が1)、残差結合(ResNet)、バッチ正規化、適切な重み初期化(He初期化、Xavier初期化)、LSTMやGRUなどのゲート機構、勾配クリッピングなどが有効な解決策です。
1出力層で誤差しっかり大きさがある
▶
21層戻るごとに縮小0.2倍などが掛かる
▶
310層で1/1000万ほぼ0になる
▶
4入口側が学習不能重みが更新されない
勾配爆発問題
逆に勾配が指数的に大きくなる「勾配爆発問題」もあります。こちらは勾配クリッピング(勾配のノルムを制限)で対処するのが一般的です。