【エルエスティーエム】

LSTM とは?

最終更新:
💡 状態を受け継ぎ、ゲートで情報の流れを調整する

Long Short-Term Memoryの略。セル状態とゲートによって情報の保持・更新・出力を調整するRNNの一種。長い系列で学習信号が弱まる問題に対処する設計で、すべての情報を永久に保持するわけではない。

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

参考資料

← 用語集にもどる