勾配消失問題 (G検定)

勾配消失問題

1. 定義と概要

勾配消失問題とは、誤差逆伝播法において、層をさかのぼるたびに各層の勾配が掛け合わされる現象です。出力層から入力層に向かって誤差を伝える過程で値がどんどん小さくなっていき、入力に近い層の重みはほとんど更新されません。ネットワークの層が深いほど掛け算の回数が増えるため、勾配消失は起こりやすい現象です。

従来、ニューラルネットワークの中間層(入力層と出力層の間にあり計算を担う層)の活性化関数にはシグモイド関数(入力を0から1の範囲に変換するS字型の関数)が広く使われていました。しかし、ネットワークを深く重ねて表現力を高めようとするほど、出力層から入力層まで誤差を伝える計算で1未満の微分値を繰り返し掛け合わせることになり、勾配が指数関数的に小さくなって学習が進まなくなる課題が顕在化しました。

この課題を受けて、勾配が縮小しにくい活性化関数への置き換えや、重みの初期値の工夫、層をまたぐ経路を作る仕組みなど、複数の方向から対処法が積み重ねられ、現在の深いニューラルネットワークの学習を支えているというわけです。

2. 試験対策ポイント

まず整理しておきたいのは、勾配消失が起こる仕組みです。誤差逆伝播法では、各層の勾配を求める際に活性化関数の微分値を層の数だけ掛け合わせます。この値が1未満であれば、掛け合わせるほど値は小さくなっていき、入力に近い浅い層ほど勾配がほぼゼロに近づいて重みがほとんど更新されなくなるという関係にあります。

代表的な原因として整理されているのが、シグモイド関数の性質です。シグモイド関数は微分の最大値が0.25と1未満の小さな値であるため、層を重ねるほど勾配を縮小させやすい活性化関数として位置づけられています。似た形状を持つtanh関数(入力をマイナス1から1の範囲に変換するS字型の関数)も同様の傾向を持ち、詳しい性質は別の論点としてあわせて整理しておきたいところです。

対処法としては複数の方向が積み重ねられてきました。代表的な5つを整理すると、次のように対応します。

対処法 勾配が縮みにくくなる仕組み
ReLU関数への置き換え 正の入力に対して微分値が常に1になる関数を使う
重みの初期化の工夫 シグモイド関数・tanh関数向けのXavierの初期値、ReLU関数向けのHeの初期値が代表例
バッチ正規化 各層への入力データの分布をミニバッチ単位で整え直す
スキップ結合(残差接続) ある層の入力を後方の層へ直接足し合わせ、勾配が消えにくい近道を作る
LSTMのゲート機構 情報の保持・忘却を調整し、時間方向に伝わる勾配の縮小を抑える

このうち上の2つは、層ごとの計算そのものに手を入れる方向です。ReLU関数(入力が0以上ならそのまま、0未満なら0を出力する関数)は正の入力に対して微分値が常に1になるため、層を重ねても勾配が縮みにくくなります。重みの初期化(学習を始める前にニューラルネットワークの重みへ最初の値を設定する処理)を工夫する方向もあります。シグモイド関数やtanh関数向けのXavierの初期値(層の入出力のノード数に応じて重みの初期値を調整する手法)、ReLU関数向けのHeの初期値(前の層のノード数に応じて重みの初期値を調整する手法)が代表例です。

残りは、層と層のつなぎ方や情報の流れに手を入れる方向です。各層への入力データの分布をミニバッチ単位で整え直すバッチ正規化(学習を安定させる処理)も、勾配を安定させる手段の一つです。ある層の入力を後方の層へ直接足し合わせて渡すスキップ結合(残差接続)は、誤差逆伝播の際に勾配が消えにくい近道を作る仕組みで、非常に層の深いネットワークで採用されています。

時系列データを扱うRNN(過去の情報を内部に保持しながら順序のあるデータを処理するニューラルネットワーク)では、時間方向にも誤差を伝える計算が加わるため、勾配消失が起こりやすくなります。情報の保持・忘却を調整するゲート機構(情報をどれだけ通すか、忘れるかを調整する仕組み)を持つLSTM(時系列データを扱うRNNの一種で、長期の依存関係を学習しやすくしたモデル)は、この課題への対処法の一つです。これら5つは、いずれも層をまたいで勾配が縮小しすぎるのを防ぐ手段として、あわせて押さえておきたいポイントといえます。

3. 関連概念との比較・相違点

勾配爆発問題(層をさかのぼるほど勾配が大きくなりすぎて重みの更新が発散してしまう現象)との最大の違いは、勾配が層をさかのぼるにつれて小さくなりすぎるか、大きくなりすぎるかという方向です。どちらも各層の微分値や重みが繰り返し掛け合わされる点で発生の仕組みは共通しています。両者の対応を整理すると、次のようになります。

観点 勾配消失問題 勾配爆発問題
勾配の変化 層をさかのぼるほど小さくなりすぎる 層をさかのぼるほど大きくなりすぎる
掛け合わされる値 1未満の値の積が続く 1より大きい値の積が続く
学習に現れる症状 学習がほとんど進まず停滞する 重みの更新量が発散し、数値が異常な値(NaNなど)になって学習が不安定になる

なお、重みの初期化を適切に行う点は、両者の対処法として重なる部分です。

見かけ上、勾配消失と学習の停滞ぶりが似た現象があります。プラトー(停滞)とは、損失関数の形状が平坦になり、学習がほとんど進まなくなる状態です。

どちらも学習がほとんど進まなくなる点は共通していますが、発生の要因は異なります。勾配消失は層が深いネットワーク構造そのものによる勾配の指数関数的な縮小が要因であるのに対し、プラトーは損失関数の形状が要因という違いがあり、取り違えやすい点です。

4. ビジネス・実務での活用シナリオ

画像認識の分野では、層を深く重ねたモデルほど精度が頭打ちになったり悪化したりすることがあり、その背景の一つに勾配消失があります。層をまたぐ経路を作るスキップ結合の採用によって、非常に層の深いモデルでも学習を実用的に進められるようになりました。層数を増やすほど精度が向上しやすくなった点は、実務での恩恵として大きいところです。

自然言語処理(人間が使う言葉をコンピュータに処理させる技術分野)の分野でも、文章のように順序のあるデータを扱うRNNは、時間方向にも誤差を伝える計算が加わるため、系列が長いほど勾配消失が起こりやすくなります。ゲート機構を持つLSTMのようなセル構造の採用によって、長い文章でも離れた単語同士の依存関係を学習しやすくなりました。これにより、文脈を踏まえた翻訳や文章生成の精度が実用レベルまで引き上げられています。

モデル開発の実務では、学習を進めても損失がほとんど下がらないとき、勾配消失を要因の一つとして疑うところから対処が始まります。活性化関数の変更、重みの初期化の見直し、バッチ正規化の追加といった対処を順に検討する視点は、開発現場での着眼点です。原因を切り分けながら対処を積み重ねる姿勢が、学習の立て直しにつながります。

5. 要点まとめ

  • 勾配消失問題とは、誤差逆伝播法で層をさかのぼるほど勾配が掛け算で小さくなり、入力に近い層がほとんど学習されなくなる現象で、シグモイド関数の微分の最大値が0.25であることが代表的な原因として整理されています。
  • 対処法にはReLU関数の採用・適切な重みの初期化・バッチ正規化・スキップ結合(残差接続)・LSTMのゲート機構という5つの方向があり、いずれも層をまたいで勾配が縮小しすぎるのを防ぐ手段としてあわせて押さえておきたいところです。
  • 勾配が大きくなりすぎる勾配爆発問題とは方向が逆の現象で、原因の仕組み(層をまたぐ掛け算)は共通しつつ、学習が停滞するか発散するかという症状が異なります。

6. 確認問題

問1勾配消失問題とは、誤差逆伝播法において層をさかのぼるごとに各層の勾配が繰り返し掛け合わされることで値が小さくなり、入力に近い層の重みがほとんど更新されなくなる現象である。

解答・解説をみる

○ 正しい

定義そのものです。誤差逆伝播法では活性化関数の微分値を層の数だけ掛け合わせて各層の勾配を求めるため、1未満の値が続くと層をさかのぼるほど値が指数関数的に小さくなります。

問2シグモイド関数は微分の最大値が1であるため、勾配消失を引き起こしにくい活性化関数として知られている。

解答・解説をみる

× 誤り

正しくはシグモイド関数の微分の最大値は0.25であり、1未満の小さな値であるため勾配消失を引き起こしやすい代表的な活性化関数として整理されています。微分の最大値を1と取り違えた記述です。

問3勾配消失問題への対処法としては、ReLU関数の採用のほか、適切な重みの初期化、バッチ正規化、スキップ結合(残差接続)、LSTMのゲート機構などが挙げられる。

解答・解説をみる

○ 正しい

いずれも層をまたいで勾配が縮小しすぎるのを防ぐための代表的な手段として整理されています。