【エルエスティーエム】
LSTM とは?
最終更新:
💡 状態を受け継ぎ、ゲートで情報の流れを調整する
Long Short-Term Memoryの略。セル状態とゲートによって情報の保持・更新・出力を調整するRNNの一種。長い系列で学習信号が弱まる問題に対処する設計で、すべての情報を永久に保持するわけではない。
📌 このページのポイント
- LSTMはLong Short-Term Memoryの略で、RNNの一種
- 一般的な形は、忘却・入力・出力のゲートで情報の流れを調整する
- セル状態cと隠れ状態hを、入力と前の状態から更新する
- 保持や予測の品質は学習とデータに依存し、永久記憶や他方式より速い保証ではない
LSTMは、普通のRNNと何が違うの?
RNNは前の状態を使って系列を処理する。LSTMはその一種で、隠れ状態hに加えてセル状態cを持ち、ゲートで更新や出力を調整するよ。長い系列で古い入力に対応する学習信号が弱まる問題に対処するための設計なんだ。
ゲートって何をしてるの?
一般的な形では、忘却ゲートが前のセル状態をどれだけ残すか、入力ゲートが新しい候補をどれだけ加えるか、出力ゲートがセル状態からどれだけ隠れ状態を出すかを調整する。人のように意味を判断するのではなく、入力と前の隠れ状態から、学習した計算で値を出すんだ。
一度覚えた情報は、ずっと残るの?
保証はないよ。セル状態は、前の状態に忘却ゲートの値を掛け、新しい候補を入力ゲートで調整して足す。残す割合が小さければ古い情報は弱まるし、長い間隔にわたる情報の関係を必ず学べるわけでもない。情報が劣化せず永久に流れる、という説明ではないんだ。
次のデータを読むときは、何を渡すの?
前の隠れ状態hとセル状態cを渡して、次の入力と合わせて更新するよ。例えばセンサー値の列を順に処理するときに使える。別の系列でも状態を持ち越すか、最初から始めるかは実装で決める。Kerasでもstatefulなどの設定があるんだ。
TransformerやGRUより良いの?
名前だけでは決められないよ。LSTMは状態を受け継ぐ処理なので、系列長、モデルの大きさ、データ、実行環境をそろえて精度や速度を比較しよう。いつもメモリ効率が良い、GRUなら必ず同じ性能で速い、といった一律の保証はできないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「LSTM」って出てきたら「セル状態とゲートで情報を受け継ぎながら系列を処理するRNN」と思えばだいたいOK!
📖 おまけ:英語の意味
「Long Short-Term Memory」 = 長短期記憶
💬 入力によって変わる状態を、長い間受け継いで利用することを目指した名前だよ。学習した重みと、系列を処理する間のセル状態は別のものなんだ。