RNNの問題点とLSTMについて

RNNの問題点とLSTMについて簡潔にまとめました。
少し知っているだけの人が少し知っていることを忘れてしまった時に思い出せる程度の内容になっているので、詳細を知りたい方は記事の最後に参考サイトをまとめましたのでそちらをご覧ください。

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~
詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

 

RNNの問題点

・誤差が消失・発散してしまう
・長期依存の学習ができない(10ステップ程度が限界)
・時間を深く遡ると勾配が消失してしまう

 

LSTM(Long Short – Term Memory)について

LSTM blockという仕組みを使って長期依存性を学習することができます。
前述したようにRNNにはいくつかの問題点があり、それを解消するために様々なアプローチを施してLSTMが考えられました。
最初に初期LSTMが発表されてからも幾つかの改善案が提案されています。

簡単にLSTMブロックのマップを作成しました。
データは左から右に伝播します。
線の上(右)に付してある黒の数式は順伝播。
線の下(左)に付してある赤の数式は逆伝播を意味します。
また、「σ」はSigmoid関数、赤の点線は後述する「覗き穴結合」です。

 

 

順に記します。

 

CEC(Constant Error Carousel)の導入

従来の問題点

・勾配が消失してしまう

改善案

活性化関数を線形関数にし、重み行列を単位行列にすると良い。
そしてコレを実装するためには、他の部分で非線形活性化関数も必要となるので、誤差をとどませるためにCECが導入されました。

 

入力ゲート(Input Gate)、出力ゲート(Output Gate)の導入

従来の問題点

依存性がある信号を受け取った時→重みを大きくする
依存性がない信号を受け取った時→重みを小さくしたい
しかし、ニューロンが共通の重みで繋がっていると、互いに重みを打ち消し合ってしまい、長期依存性の学習ができない。

これを「入力重み衝突」、「出力重み衝突」と呼びます。

 

改善案

過去の情報が必要になったタイミングでのみゲートを挙げて信号を伝搬させる「入力ゲート」、「出力ゲート」が導入されました。

入力ゲート→直近の依存性の少ない情報の影響でCECの重要な情報が消失するのを防ぐ
出力ゲート→CEC内の情報を次の層にどれだけ影響させるかを調整する

 

数式

入力ゲート

出力ゲート

 

忘却ゲート(Forget Gate)の導入

従来の問題点

時系列データが急激に変化した場合、CECの値がなかなか変化しないのでうまく学習できない

 

改善案

過去の情報を覚えておく必要がなくなったタイミングでその情報をCECに忘れさせるための仕組みである「忘却ゲート」を実装した。
忘却ゲート→CEC内の情報を次の時刻に進む時にどの程度保持するかを調整する

数式

忘却ゲート

ちなみに3番目のノードの式は

 

覗き穴結合(Peephole Connection)の導入

従来の問題点

ゲートの制御に用いられるのはx(t)とh(t-1)だけであり、LSTMブロックの出力は出力ゲートに依存しているので、出力ゲートが閉じている場合はどのゲートもCECにアクセスできず、CECの状態を見ることができない。

改善案

覗き穴結合を導入し、CECと各ゲートを繋いだ。

数式

覗き穴結合を導入した場合の3ゲートの数式

忘却ゲート

入力ゲート

出力ゲート

注意すべき点は出力ゲートのみVにかかっているcが時刻tになっており、ほか2つは(t-1)にになっている部分。

 

RNN→LSTMで解決したこと

・学習によって誤差が発散・消失しない(1000ステップ以上記憶可能)
・過去の情報をネットワーク内に保持できる
・過去の情報を必要なタイミングでのみ取得、置換できる

式もまとめるとこんな感じになります。

 

ちょっとメモ

誤差逆伝播にするにあたって肝となる式。

 

【参考】
今更聞けないLSTMの基本 – HELLO CYBERNETICS
Chainerで学ぶLSTM – kivantium活動日記
OneLife: Essential Wealth: The Interplay Between Self and Society
わかるLSTM ~ 最近の動向と共に – Qiita
誤差逆伝播法のための計算グラフまとめ | mrsekutの備忘録

 

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~
詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

「RNNの問題点とLSTMについて」への1件のフィードバック

コメントを残す