はじめに
RNN(Recurrent Neural Network)は、時系列データや自然言語処理など、順序を持つデータに適したニューラルネットワークです。しかし、標準的なRNNは短期的な依存関係の学習には適している一方で、長期的な依存関係を捉えることが苦手です。
この問題を解決するために、LSTM(Long Short-Term Memory)が提案されました。LSTMは、長期記憶と短期記憶の両方を保持し、必要に応じて忘れることで、長期的な依存関係を扱うことができます。
本記事では、RNNの問題点を振り返りつつ、LSTMの構造とその動作について解説します。
1. Simple RNNの課題
RNNとは?
RNNは、時系列データに対して時間ステップごとに入力を処理し、内部の**隠れ状態(hidden state)**を更新していくモデルです。RNNでは次のような数式でモデルが表されます。
- 入力:( x^{(0)}, x^{(1)}, \dots, x^{(T)} )
- 隠れ状態:( h^{(t)} = f(x^{(t)}, h^{(t-1)}) )
- 出力:( y^{(t)} = g(h^{(t)}) )
しかし、RNNは次のような課題を抱えています。
- 勾配消失問題:長い時系列データに対して、過去の情報が勾配消失により学習に寄与しづらくなる。
- 長期依存関係の捉え方が弱い:遠い過去の情報が無視される傾向が強い。
この問題を解決するために、LSTMが登場しました。
2. LSTMの仕組み
LSTMは、RNNの構造に対して3つの「ゲート」を導入し、情報の選択的な記憶、忘却、出力を可能にすることで、長期的な依存関係を保持できるように設計されています。
LSTMの基本構造
LSTMは、RNNと同様に時系列データを扱いますが、次の4つの状態とゲートを用います。
-
忘却ゲート(Forget Gate):過去の記憶をどれだけ忘れるかを決定します。
[
f^{(t)} = \sigma(W_f \cdot [h^{(t-1)}, x^{(t)}] + b_f)
] -
入力ゲート(Input Gate):新しい情報をどれだけ記憶するかを決定します。
[
i^{(t)} = \sigma(W_i \cdot [h^{(t-1)}, x^{(t)}] + b_i)
]
[
\tilde{C}^{(t)} = \tanh(W_C \cdot [h^{(t-1)}, x^{(t)}] + b_C)
] -
セル状態(Cell State):長期記憶を保持します。
[
C^{(t)} = f^{(t)} \cdot C^{(t-1)} + i^{(t)} \cdot \tilde{C}^{(t)}
] -
出力ゲート(Output Gate):出力をどれだけ次の隠れ状態に反映させるかを決定します。
[
o^{(t)} = \sigma(W_o \cdot [h^{(t-1)}, x^{(t)}] + b_o)
]
[
h^{(t)} = o^{(t)} \cdot \tanh(C^{(t)})
]
LSTMの数式
LSTMの数式は以下のように表されます。
-
忘却ゲート:
[
f^{(t)} = \sigma(W_f \cdot [h^{(t-1)}, x^{(t)}] + b_f)
] -
入力ゲート:
[
i^{(t)} = \sigma(W_i \cdot [h^{(t-1)}, x^{(t)}] + b_i)
]
[
\tilde{C}^{(t)} = \tanh(W_C \cdot [h^{(t-1)}, x^{(t)}] + b_C)
] -
セル状態更新:
[
C^{(t)} = f^{(t)} \cdot C^{(t-1)} + i^{(t)} \cdot \tilde{C}^{(t)}
] -
出力ゲート:
[
o^{(t)} = \sigma(W_o \cdot [h^{(t-1)}, x^{(t)}] + b_o)
]
[
h^{(t)} = o^{(t)} \cdot \tanh(C^{(t)})
]
3. まとめ
LSTMは、従来のRNNが抱えていた長期依存関係の学習問題を克服するために、3つのゲート構造を導入しました。
これにより、長期記憶と短期記憶を適切に制御し、時間的に遠い情報も効果的に保持・利用できるようになっています。
次回の記事では、LSTMを実際のタスクに応用する方法について解説していきます。
参考文献
- Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation, 9(8), 1735–1780.
- Olah, C. (2015). Understanding LSTM Networks. Blog post.
- 【深層学習】LSTM - RNN に記憶をもたせる試みその2
以上、LSTMの基礎について解説しました。質問やコメントがあれば、ぜひお寄せください!