本文へ移動

G検定(ジェネラリスト検定)

えるえすてぃーえむ

LSTM

LSTM

Long Short-Term Memory

LSTM(Long Short-Term Memory)は、リカレントニューラルネットワークで誤差の信号が時間をさかのぼるうちに消えていき、離れた時点どうしの関係を学べない問題に対処するために提案された構造です。自己ループの重みを1.0に固定した線形のユニットで誤差を一定に保ち、その出入りを乗算のゲートで開け閉めします。1997年の原論文のゲートは入力ゲートと出力ゲートの2つで、現在よく教えられる忘却ゲートを含む3つのゲートの形は、その後の追加を含んだものです。

詳しい説明

誤差の信号が時間をさかのぼるうちに消える問題

LSTMは、ゼップ・ホッホライター(Sepp Hochreiter)とユルゲン・シュミットフーバー(Jürgen Schmidhuber)が1997年の論文「Long Short-Term Memory」(Neural Computation誌 第9巻第8号)で提案した、リカレントニューラルネットワークの構造と学習法です。リカレントニューラルネットワークは、前の時点の計算結果を次の時点へ渡すループを持ち、文章や音声のように順序のあるデータを扱うネットワークです。

論文の要旨は、解決したい問題を次のように書いています。リカレントネットワークに、時間的に離れた情報を覚えさせようとして誤差逆伝播で学習すると、非常に長い時間がかかる。その主な原因は、時間をさかのぼって流れる誤差の信号が不十分で、減衰していくことにある。

誤差逆伝播とは、出力の誤りの大きさを誤差の信号として出力側から入力側へ伝え、各重みの直し方を決める学習法です。リカレントネットワークでは、この信号が時間の向きを逆にたどって過去の時点へ伝わります。論文の序論は、従来の学習法(BPTTやRTRL)では、この信号が時間をさかのぼるうちに爆発するか消えるかのどちらかになりやすく、その変化は重みの大きさに指数関数的に依存すると述べています。信号が消える場合、長い時間差を埋める学習には法外な時間がかかるか、まったくうまくいかないとしています。

具体的に考えると、ある文の最初の単語が、100語あとの予測に効いているとします。学習では、100語あとで出た誤りを最初の単語の処理まで伝え戻す必要があります。途中の各時点で信号が少しずつ小さくなると、100時点ぶん掛け合わさった結果はほぼ0になり、最初の単語の扱いを直す手がかりが残りません。

定数誤差回転木馬という中心の仕組み

論文は、まず1つのユニットが自分自身へ1本だけつながっている単純な場合を考えます。時点 でこのユニット を逆向きに通る誤差の信号は、活性化関数の傾き と自己ループの重み を掛けたぶんだけ大きさが変わります。誤差の大きさを一定に保つには、次の条件が要ります。

は、ユニット に入る重み付きの和です。論文は、この条件から、活性化関数 が線形でなければならず、ユニットの値が時点ごとに変わらず保たれることを導いています。実験では、入力をそのまま返す恒等関数 を使い、自己ループの重みを に固定しました。

論文はこれを定数誤差回転木馬(constant error carrousel、CEC)と呼び、LSTMの中心の特徴だとしています。回転木馬のように、同じ値が重み1.0のループを回り続け、誤差の信号も減りも増えもせずに通り抜けます。要旨によれば、この仕組みで、LSTMは1000を超える離散的な時間ステップの時間差を埋める学習ができるとされています。

1997年の原論文にあった2つのゲート

自分とつながるだけのユニットには、ほかのユニットとつながったときの問題が残ります。論文はこれを2つの衝突として説明しています。

1つめは入力の重みの衝突です。同じ入力の重みが、ある入力を記憶に書き込む役と、後から来る関係のない入力を無視して記憶を守る役の両方を担わなければなりません。2つめは出力の重みの衝突です。同じ出力の重みが、記憶を読み出して使う役と、記憶の中身でほかのユニットを乱さない役の両方を担わなければなりません。

この衝突を避けるために、論文は乗算のゲートを2つ加えました。入力ゲートは、記憶の中身を関係のない入力による乱れから守ります。出力ゲートは、いまは関係のない記憶の中身によって、ほかのユニットが乱されないように守ります。ゲートは0に近い値で閉じ、大きい値で開く係数として、信号に掛け算で働きます。論文は、定数誤差回転木馬と2つのゲートをまとめた単位を記憶セル(memory cell)と呼んでいます。

原論文の記号では、 番目の記憶セル の内部状態 と出力 は次のように計算されます。

は入力ゲートの値、 は出力ゲートの値、 はセルへの入力を押しつぶす関数、 は内部状態からセルの出力を作る関数です。1つめの式では、前の時点の内部状態 が係数なしでそのまま次の時点へ足し込まれています。入力ゲートが閉じていれば内部状態は変わらず、開いていれば新しい入力のぶんが積み上がります。内部状態を小さくしたり0に戻したりする専用の係数は、この式にはありません。

忘却ゲートは後から加わった部品

現在の教科書でLSTMといえば、入力ゲート、忘却ゲート、出力ゲートの3つを持つ形で説明されることが多くあります。しかし、1997年の原論文には忘却ゲートがありません。原論文の本文に「forget gate」という語は現れず、上の内部状態の式も、前の状態を減らす項を持たない単純な足し込みです。

イアン・グッドフェロー(Ian Goodfellow)、ヨシュア・ベンジオ(Yoshua Bengio)、アーロン・クールヴィル(Aaron Courville)による教科書『Deep Learning』(2016年)の第10章は、この経緯を次のように整理しています。勾配が長い時間流れ続ける経路を自己ループで作るという着想は、ホッホライターとシュミットフーバーによる最初のLSTMの中心的な貢献である。自己ループの重みを固定せず、文脈に応じて変わるようにしたことは重要な追加であり、その出典としてゲルスら(Gers et al.、2000年)を挙げています。つまり、忘却ゲートは1997年の原論文の部品ではなく、後の研究で加わったものとして扱われています。なお、このページではゲルスらの2000年の論文そのものは確認しておらず、この帰属はグッドフェローらの教科書の記述に基づきます。

比べる点1997年の原論文現在よく教えられる形(グッドフェローらの第10章の説明)
ゲートの数入力ゲートと出力ゲートの2つ入力ゲート、忘却ゲート、出力ゲートの3つ
自己ループの重み1.0に固定忘却ゲートの値で時点ごとに変わる
内部状態の更新前の状態に、ゲートを通した入力を足し込む前の状態に忘却ゲートの値を掛けてから、ゲートを通した入力を足す

グッドフェローらの教科書は、忘却ゲートを加えた形を次の式で書いています。ここでの添字 はセルの番号、 は時点です。

が忘却ゲート、 が入力ゲート、 が出力ゲートの値です。 は現在の入力、 は前の時点のセルの出力、、、 はそれぞれバイアス、入力への重み、ループの重みです。 はシグモイド関数で、値を0から1の範囲に収めます。入力ゲートと出力ゲートも、忘却ゲートと同じ形の式で、それぞれ別の重みを使って計算されます。記号の使い方が原論文と異なる点がいくつかあり、注意が要ります。 は、原論文では入力を押しつぶす関数を表していたのに対し、この教科書では入力ゲートを表しています。 も、原論文では内部状態から出力を作る関数(このページの節2の式では )を指していたのに対し、この教科書ではセルの出力そのもの()を指しています。 も同様で、原論文の活性化関数 と、この教科書の忘却ゲート は別の記号です。この節の式はすべて教科書の記法(g=入力ゲート・h=セルの出力・f=忘却ゲート)で統一しています。

2つめの式を原論文の式と比べると、違いは前の状態 に が掛かっているところだけです。 なら原論文と同じく前の状態がそのまま残り、 が0に近づくほど前の状態は消えます。教科書は、この自己ループの重みをゲートで制御することで、情報を積み上げる時間の長さが固定の値でなくなり、入力の系列に応じてモデル自身が変えられるようになると説明しています。

数値で追う内部状態の更新

架空の値で、1つのセルの内部状態を追ってみます。前の時点の内部状態を0.8とし、ゲートを通る前の新しい入力の値を0.6とします。

1997年の原論文の形で、入力ゲートの値が0.5なら、新しい内部状態は です。入力ゲートが0なら で、前の状態がそのまま残ります。この形では、足し込まれる入力が正である限り、内部状態が小さくなる方向の変化は起きません。

忘却ゲートを持つ形で、忘却ゲートの値が0.9、入力ゲートの値が0.5なら、新しい内部状態は です。忘却ゲートの値が0で入力ゲートの値も0なら、 となり、セルの記憶は空になります。忘却ゲートの値が1で入力ゲートの値が0なら、 で、原論文の定数誤差回転木馬と同じく値が保たれます。

原論文が認めていた限界と注意点

原論文は、内部状態が時間とともに一方向へずれていく問題を自ら挙げています。記憶セルへの入力がほとんど正、あるいはほとんど負だと、内部状態は時間とともに離れた値へずれていき、出力を作る関数 の傾きが小さくなって勾配が消えるおそれがあります。論文は、学習の初めに入力ゲートのバイアスを0に近い側へ寄せておくという対処を示しています。

一方で、原論文は、記憶セルの出力と入力の間に負の結合を学習すれば、最近の入力をより重く扱い、必要に応じて減衰も学べると述べています。忘却ゲートの無い原論文の形が、記憶を減らす手段をまったく持たなかったと言い切るのは正確ではありません。忘却ゲートが加えたのは、前の状態を減らすことを専用のゲートで直接制御する仕組みです。

原論文の考察の節は、ほかの限界も挙げています。遠く離れた2つの入力の排他的論理和(XOR)を求める課題のように、片方の入力だけを覚えても誤差が下がらない課題は、原論文の効率のよい学習法では解きにくいとしています。また、ある信号が99時点前に来たのか100時点前に来たのかを区別するような、時間ステップを正確に数える課題は、勾配を使う手法全般にとって難しく、別の数える仕組みが要りそうだとしています。

使われてきた場面

原論文は、今後の応用先として時系列の予測、作曲、音声処理を挙げていました。グッドフェローらの教科書は、LSTMが成果を上げた応用として、手書き文字の認識、音声認識、手書き文字の生成、機械翻訳、画像の説明文の生成、構文解析の6つを挙げ、それぞれに研究を引用しています。

同じ教科書は、LSTMの変種としてGRU(gated recurrent unit)にも触れています。LSTMとの主な違いは、1つのゲートが、前の状態をどれだけ忘れるかと状態をどれだけ更新するかの両方を同時に制御する点だと説明しています。さらに、LSTMとGRUの構造の変種を比べた研究を紹介し、グレフら(Greff et al.、2015年)が忘却ゲートを決定的に重要な要素と見いだしたことを引用しています。

原論文の序論にある短期記憶と長期記憶の呼び分け

原論文の序論は、リカレントネットワークがフィードバックの結合を使って直近の入力の表現を活性の値として保持することを「短期記憶(short-term memory)」と呼び、ゆっくり変わる重みに蓄えられる「長期記憶(long-term memory)」と区別しています。LSTMという名前はこの2つの語を組み合わせた形ですが、論文自身は名前の由来をこれ以上説明していません。

試験で問われること

G検定

  • LSTMは、リカレントニューラルネットワークで時間をさかのぼる誤差の信号が減衰し、離れた時点どうしの関係を学べない問題に対処するため、ホッホライターとシュミットフーバーが1997年に提案しました。
  • 中心の仕組みは定数誤差回転木馬(CEC)です。自己ループの重みを1.0に固定した線形のユニットにより、誤差の信号を減らさず増やさずに一定に保ちます。
  • 1997年の原論文のゲートは入力ゲートと出力ゲートの2つです。入力ゲートは記憶を関係のない入力から守り、出力ゲートは関係のない記憶の中身からほかのユニットを守ります。
  • 現在よく教えられる3つのゲートの形は、原論文に忘却ゲートを加えたものです。グッドフェローらの教科書(2016年)は、自己ループの重みを文脈に応じて変える忘却ゲートについて、ゲルスら(2000年)による重要な追加だと紹介しています。
  • 忘却ゲートを持つ形では、内部状態は「忘却ゲートの値×前の状態+入力ゲートの値×新しい入力」で更新されます。忘却ゲートが1なら前の状態が残り、0に近いほど前の状態が消えます。

最終更新日: 2026/09/23