テクノロジー
2023年2月2日LSTMとは
【課題 LSTM】を解くうえで必要な知識や技術について理解する
目的
- LSTMのアルゴリズムを理解できる
- LSTMの各種アルゴリズムをKerasを用いて実装できる
どのように学ぶか
【課題 LSTM】の流れに沿って解説していきます。
LSTM
LSTMは、RNNから発展したネットワークです。正式には、Long Short Term Memory と呼ばれます。
RNNと違う点は、「長期の依存性」を学習出来るということです。
長期の依存性
例えば、the clouds are in the sky
という文章において、the clouds are in the
だけが与えられた場合、直近の5単語だけで、sky
という単語を予測できるかと思います。
しかし、I grew up in France and ・・・, so I speak fluent French.
という文章において、「・・・」の部分に多数の単語が存在した場合、かなり昔の情報を参照しなければ、最後のFrench
という単語を予測することはできません。
RNNでも理論上は長期の依存性を学習できますが、長期の依存性についても学習しようとすると勾配消失により、正常に学習が進みません。
勾配消失とは勾配が小さくなることで重みが更新されず学習が進まなくなる状態のことです。
この勾配消失問題を解決するためにLSTMが生まれました。
解決方法
基本的な構成はRNNもLSTMも変わりませんが、どのように長期の依存性を克服したかは、下記の二つのポイントが重要になってきます。ここでは、数式などの難しい話は無視し、概念的な説明にとどめます。
内部メモリセル
前の時間のセル状態を保持します。
忘却ゲート
入力系列が大きく変わった場合でも対応できるような仕組みです。
例えば、株価の上昇下降の転換などがそれにあたります。
前回までに学習したRNNのネットワーク図を下記のようにします。
LSTMは、下記のようになります。
図の中のσ(シグマ)は、シグモイド関数です。0から1の値を出力するので、各入力がどの程度出力先へ影響を持つかを調整する役割を持ちます。
上記で紹介した内部メモリセルは、図の中で言うところの$C_t$にあたります。
1忘却ゲート
前回の層の出力$h_{t-1}$と現在の入力$X_t$を比較して、前回の内部メモリセル$C_{t-1}$から忘れ去りたい情報を判断します。
2入力ゲート
前回の内部メモリセル$C_{t-1}$から、現在の内部メモリセル$C_t$を作成します。前回の層の出力$h_{t-1}$と現在の入力$X_t$を用います。
3出力ゲート
作成された現在の内部メモリセル$C_t$と前回の層の出力$h_{t-1}$と現在の入力$X_t$から、現在の層の出力$h_t$を作成します。
まとめ
- LSTMは「長期の依存性」を学習することができ、それがRNNとの大きな違いとなる