勾配消失問題とは、機械学習手法のひとつであるニューラルネットワークの設計において、勾配が消失することで学習が進まなくなる技術的な問題のことです。
ニューラルネットワークによる学習を行う際、最もシンプルなモデルである単純パーセプトロンでは線形分離可能な問題しか学習できませんでした。
したがって、非線形分離が必要となる問題では、パーセプトロンを多層化する必要があります。
アイデアのように隠れ層を増やした場合、誤差が正確に伝播されなくなっていたのです。
多層化する場合に新たに問題になるのは、予測値と実際の値の差分である誤差を最小化する、いわゆる最適化問題が複雑化することです。
このことを勾配消失問題と言います。
多層ニューラルネットワークの最適化問題を解くためには、1986年に登場した誤差逆伝播(バックプロパゲーション)法が用いられます。
ニューラルネットワークでは予測値と実際の値との誤差を出力層から入力層へ向かって伝播させて重みの値を調整していました。
誤差逆伝播法では、誤差の最小化に使用される勾配降下法の一種である、確率的勾配降下法を用います。
誤差を出力層から入力層に向かって逆向きに伝播しながら勾配を計算し、隠れ層の重みやバイアスが再計算するこの手法によって、これらを手動で設計する必要はなくなりました。
しかし、ここで別の問題が生じました。
ニューラルネットワークは多層化するに従い、勾配が消えてしまったのです。
勾配が消えると、最適解が求められず、学習が進まなくなります。この勾配消失問題は局所最適化と並び、多層ニューラルネットワークの長年の問題でした。
勾配消失問題の原因のひとつの例は活性化関数でした。
シグモイド関数などの場合、勾配が0に近い領域が存在するため、勾配消失に陥ると重みがほぼ修正されなくなります。
多層ニューラルネットワークでは一カ所でも勾配が0に近い層が存在すると、それより下層の勾配も全て0に近くなります。
このため、層数が増えるほど(特に四層以上において)学習が難しくなっていました。
よって、活性化関数の変更は勾配消失問題を改善しました。
シグモイド関数の代わりにランプ関数(ReLUなど)を用いると、勾配消失が起きにくくなったのです。
他には、重みや初期化、勾配降下法の選択などが勾配消失に関係しています。
こうした勾配消失問題を含む一連の技術的問題が解決されたことで、多層ニューラルネットワークは深層化に成功し、2010年代にはとりわけイメージ知覚問題で分類精度が飛躍的に向上しました。
深層化した多層ニューラルネットワークはディープラーニングと呼ばれるようになりました。
しかしながら、複雑なモデルでは勾配消失問題は依然として課題となっています。
コメント