リカレントニューラルネットワークの勾配消失問題対策
リカレントニューラルネットワークにおいても、通常のニューラルネットワーク同様、勾配消失問題がある。
さらに、時系列を扱ううえで固有の問題として、現時点では関係性が少なくても、将来は関係性がある、というような入力があった場合に、重みを大きすべきものであると同時に、重みを小さくしなくてはいけない、という矛盾が生じてしまう。
これを、入力重み衝突と呼び、リカレントニューラルネットワークでの学習の妨げの大きな要因となっている。
出力に関しても同様で、出力重みの衝突の問題が存在している。
こういった問題を対策するために、リカレントニューラルネットワークの一種である、LSTM(Long Short Term Memory)と呼ばれる手法が存在する。
通常のニューラルネットワークでは、勾配消失問題を、活性化関数の工夫により対処するようにしていたが、LSTMも同様、隠れ層の構造を変えることで、勾配消失や重み衝突の問題を回避している。
LSTMは、LSTMブロックと呼ばれる機構で、時系列の情報をネットワークに保持できるような仕組みになっている。
LSTMブロックの構造は、大きく、2つの機構で構成されている。
- 誤差を内部にとどまらせるためのセル
- 必要な情報を必要なタイミングで保持・焼却させるためのゲート
セル
セルとは、CEC(Constant Error Carousel)とも呼ばれ、誤差を内部にとどめ、勾配消失を防ぐためのものである。
ゲート
ゲートは、入力ゲート、出力ゲート、忘却ゲートの3つで構成されている。
入力ゲートは入力重み衝突を、出力ゲートは出力重み衝突のためのゲート機構になっている。
そして忘却ゲートで、誤差が過剰にセルに停留するのを防ぐためにリセットするゲート機構になっている。
スポンサーリンク
こういった仕組みで、リカレントニューラルネットワークでは、勾配消失や、入力重み衝突、出力重み衝突などの問題に対処しているが、LSTMはセルやゲートをそれぞれ最適化するために、膨大な計算を必要とする。
そのため、LSTMを簡略化したGRU(Gated Recurrent Unit)という手法を用いることもある。
GRUでは、リセットゲート、更新ゲートが、入力ゲート、出力ゲート、忘却ゲートの代わりを果たしている。