LSTM えるえすてぃーえむ
LSTMLong Short-Term MemoryRNNゲート機構長期依存関係系列モデル
LSTMについて教えて
簡単に言うとこんな感じ!
LSTMは「長期記憶と短期記憶を使い分けられる賢いRNN」だよ。普通のRNNが遠い過去の情報を忘れてしまう問題を、「どの情報を覚えておくか・どの情報を忘れるか・何を出力するか」の3つのゲートで管理して解決したんだ!
LSTMとは
LSTM(Long Short-Term Memory:長短期記憶) は、1997年にHochreiterとSchmidhuberが提案したRNNの勾配消失問題を解決するためのゲート付き再帰型ニューラルネットワークです。「長期記憶(Long-term memory)」として機能するセル状態(Cell State) と、情報の流れを制御する3つのゲートが特徴です。
通常のRNNが1つの隠れ状態 h だけを持つのに対し、LSTMはセル状態 c と隠れ状態 h の2本のラインを持ちます。セル状態はコンベアベルトのように情報を長距離に渡って保持し、ゲートが「どの情報を通すか・消すか」を学習します。
Transformerが登場するまで自然言語処理・音声認識・機械翻訳の主流技術でした。現在でも計算コストが小さく時系列データに強みがあり、エッジデバイス・組み込みシステムや時系列予測で現役です。
LSTMのゲート機構
| ゲート | 計算式 | 役割 |
|---|---|---|
| 忘却ゲート(Forget Gate) | f_t = σ(W_f × [h_{t-1}, x_t]) | セル状態の何を忘れるか |
| 入力ゲート(Input Gate) | i_t = σ(W_i × [h_{t-1}, x_t]) | セル状態に何を追加するか |
| 出力ゲート(Output Gate) | o_t = σ(W_o × [h_{t-1}, x_t]) | 何を隠れ状態として出力するか |
| セル状態の更新 | c_t = f_t × c_{t-1} + i_t × tanh(W_c × [h_{t-1}, x_t]) | 長期記憶の更新 |
import torch.nn as nn
# PyTorchでのLSTM
lstm = nn.LSTM(
input_size=128, # 入力次元
hidden_size=256, # 隠れ状態の次元
num_layers=2, # 積み重ね数
batch_first=True,
dropout=0.3 # ドロップアウト(過学習防止)
)
# output: 各ステップの出力, (h_n, c_n): 最終隠れ状態とセル状態
output, (h_n, c_n) = lstm(x)
歴史と背景
- 1991年:Hochreiterが勾配消失問題を定式化
- 1997年:HochreiterとSchmidhuberがLSTMを提案(論文「Long Short-Term Memory」)
- 2013〜2015年:音声認識・機械翻訳でLSTMが驚異的な成果を上げ広く普及
- 2017年:Transformerに精度で抜かれるが、軽量・リアルタイム用途で現役
- 現在:時系列予測・組み込みシステムなどでGRUと共に広く使用
RNN・LSTM・GRUの比較
| モデル | パラメータ数 | 長期依存関係 | 学習速度 | 主な用途 |
|---|---|---|---|---|
| Vanilla RNN | 少ない | 弱い | 速い | 短い系列のみ |
| LSTM | 多い | 強い | 中程度 | 長い系列・音声 |
| GRU | 中程度 | 強い | 速め | LSTMの軽量代替 |
関連用語
- RNN(再帰型ニューラルネットワーク) — LSTMの前身となるモデル
- GRU — LSTMを簡略化した代替モデル
- 双方向RNN — LSTMと組み合わせるアーキテクチャパターン
- 勾配消失 / 勾配爆発 — LSTMが解決した問題
- 時系列予測 — LSTMが現在でも活躍するタスク