LSTM(Long Short-Term Memory)
Long Short-Term Memory (LSTM)
概要
LSTM(Long Short-Term Memory:長短期記憶)は、標準的なRNNの勾配消失問題を解決するために設計された特殊なリカレントニューラルネットワークのアーキテクチャです。1997年にSepp HochreiterとJurgen Schmidhuberによって提案されました。
LSTMの最大の特徴は、情報の流れを制御する「ゲート機構」と、長期的な情報を保持するための「セル状態(Cell State)」を持つことです。忘却ゲート・入力ゲート・出力ゲートの3つのゲートにより、どの情報を保持し、どの情報を捨てるかを動的に学習します。これにより、標準的なRNNでは困難だった長期的な依存関係の学習が可能になりました。
詳細解説
セル状態(Cell State)
セル状態はLSTMの核心をなす概念で、情報を長期間にわたって伝播させるためのメモリーラインです。セル状態は時刻ごとにベルトコンベヤのように情報を運び、ゲートによって制御された少量の線形操作(加算と乗算)のみが行われます。この設計により、勾配が長い時間にわたってほぼ変化せずに伝播できるため、勾配消失問題が大幅に緩和されます。
忘却ゲート(Forget Gate)
忘却ゲートは、過去のセル状態からどの情報を捨てるかを決定するゲートです。現在の入力 x_t と前の隠れ状態 h_(t-1) を受け取り、sigmoid関数を通して0から1の値を出力します。出力が1に近いほどその情報を保持し、0に近いほど忘却します。例えば、文章処理において主語が変わった場合、前の主語に関する情報を忘れるという判断を行います。
入力ゲート(Input Gate)
入力ゲートは、新しい情報のうちどの部分をセル状態に追加するかを決定するゲートです。2つのステップから構成されます。まず、sigmoid関数によりどの値を更新するかを決定します(入力ゲート層)。次に、tanh関数により新しい候補値のベクトルを生成します。これらを掛け合わせた値がセル状態に加算されます。
出力ゲート(Output Gate)
出力ゲートは、セル状態のどの部分を隠れ状態として出力するかを決定するゲートです。sigmoid関数でセル状態のどの部分を出力するかを決定し、tanh関数を通したセル状態と掛け合わせることで最終的な隠れ状態 h_t を生成します。この隠れ状態が次の時刻のLSTMセルと、必要に応じて出力層に渡されます。
なぜLSTMは勾配消失問題を解決できるのか
標準的なRNNでは、各時刻で同じ重み行列が繰り返し掛けられるため、勾配が指数的に減衰(消失)または増大(爆発)します。LSTMでは、セル状態の更新が加算的な操作(足し合わせ)で行われるため、勾配が乗算的に縮小されることを回避できます。忘却ゲートが1に近い値を出力すれば、セル状態の勾配はほぼそのまま過去に伝播します。これはResNetの残差接続(Skip Connection)と類似した原理です。
GRU(Gated Recurrent Unit)との比較
GRU(ゲート付きリカレントユニット)は2014年にKyunghyun Choらによって提案された、LSTMを簡略化したアーキテクチャです。GRUはリセットゲートと更新ゲートの2つのゲートのみを持ち、セル状態と隠れ状態を統合しています。LSTMと比較してパラメータ数が少なく、計算コストが低いという利点があります。
一般的に、LSTMとGRUの性能差は小さいとされていますが、タスクやデータセットによって優劣が変わります。データ量が十分にある場合はLSTMが、データ量が少ない場合はパラメータの少ないGRUが有利になることがあります。
Peephole接続とLSTMの変種
2000年にGersとSchmidhuberが提案したPeephole LSTMは、各ゲートがセル状態の値を直接参照できるようにした変種です。また、忘却ゲートと入力ゲートを連動させた(忘却する分だけ新しい情報を入れる)Coupled Forget-Input Gate LSTMも提案されています。
歴史・背景
LSTMは1997年にSepp HochreiterとJurgen Schmidhuberによって発表されました。Hochreiterは1991年の博士論文でRNNの勾配消失問題を詳細に分析しており、その解決策としてLSTMを設計しました。当初のLSTMには忘却ゲートがなく、2000年にFelixGersらによって忘却ゲートが追加されました。
2000年代にはLSTMの理論的・実験的な検証が進みましたが、計算コストの高さからまだ広く普及していませんでした。LSTMが本格的に注目を集めたのは2010年代に入ってからです。GPUの発展により大規模なLSTMの訓練が可能になり、音声認識(Google音声検索での採用、2012年)、手書き文字認識、機械翻訳などで従来手法を上回る成果が報告されました。
2014年にはSeq2SeqモデルやAttentionメカニズムと組み合わされたLSTMが機械翻訳で大きな成功を収め、LSTMは自然言語処理の標準的なアーキテクチャとなりました。しかし、2017年のTransformerの登場以降、多くのタスクでLSTMからTransformerへの移行が進んでいます。
具体的な事例
- 機械翻訳:Google翻訳は2016年にGNMT(Google Neural Machine Translation)を導入し、LSTMベースのSeq2Seqモデルで翻訳品質を大幅に向上させました。8層のLSTMエンコーダ・デコーダとAttention機構の組み合わせが使用されました。
- 音声認識:2012年にGoogleがLSTMを音声認識システムに採用し、単語誤り率を大幅に削減しました。双方向LSTMが音声認識の精度向上に大きく貢献しています。
- テキスト生成:LSTMを使った文章生成は、自動ニュース記事作成、チャットボットの応答生成、プログラムコードの自動生成などに応用されています。
- 感情分析:映画レビューや商品レビューなどの文章から、ポジティブ・ネガティブな感情を判定するタスクにLSTMが活用されています。文脈を考慮した判定が可能です。
- 異常検知:サーバーのログやセンサーデータなどの時系列データにLSTMを適用し、通常パターンからの逸脱を検出する異常検知システムが実用化されています。
- 株価予測:過去の株価データや市場指標の時系列をLSTMで学習し、将来の価格変動を予測するモデルが研究されています。
G検定での出題ポイント
G検定では、LSTMに関して以下のような内容が出題される傾向があります。
- LSTMがRNNの勾配消失問題を解決するために開発されたこと
- 3つのゲート(忘却ゲート・入力ゲート・出力ゲート)の役割
- セル状態(Cell State)の概念と長期記憶の保持
- 1997年にHochreiter & Schmidhuberが提案したこと
- GRUとの比較(ゲート数の違い、パラメータ数の違い)
- 自然言語処理・音声認識・時系列予測への応用
- LSTMには「忘却ゲート(何を忘れるか)」「入力ゲート(何を記憶するか)」「出力ゲート(何を出力するか)」の3つのゲートがあることを覚える
- セル状態(Cell State)が長期的な情報を保持する「メモリーライン」であることを理解する
- ゲートの出力はsigmoid関数(0〜1)で制御され、情報の通過量を調整することを把握する
- GRUはLSTMの簡略版で、リセットゲートと更新ゲートの2つのゲートを持つことを覚える
- LSTMは1997年、GRUは2014年に提案されたという時系列を押さえる