0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LSTMを用いたRNNに記憶をもたせる

Last updated at Posted at 2024-09-24

はじめに

RNN(Recurrent Neural Network)は、時系列データや自然言語処理など、順序を持つデータに適したニューラルネットワークです。しかし、標準的なRNNは短期的な依存関係の学習には適している一方で、長期的な依存関係を捉えることが苦手です。
この問題を解決するために、LSTM(Long Short-Term Memory)が提案されました。LSTMは、長期記憶短期記憶の両方を保持し、必要に応じて忘れることで、長期的な依存関係を扱うことができます。

本記事では、RNNの問題点を振り返りつつ、LSTMの構造とその動作について解説します。


1. Simple RNNの課題

RNNとは?

RNNは、時系列データに対して時間ステップごとに入力を処理し、内部の**隠れ状態(hidden state)**を更新していくモデルです。RNNでは次のような数式でモデルが表されます。

  • 入力:( x^{(0)}, x^{(1)}, \dots, x^{(T)} )
  • 隠れ状態:( h^{(t)} = f(x^{(t)}, h^{(t-1)}) )
  • 出力:( y^{(t)} = g(h^{(t)}) )

しかし、RNNは次のような課題を抱えています。

  • 勾配消失問題:長い時系列データに対して、過去の情報が勾配消失により学習に寄与しづらくなる。
  • 長期依存関係の捉え方が弱い:遠い過去の情報が無視される傾向が強い。

この問題を解決するために、LSTMが登場しました。


2. LSTMの仕組み

LSTMは、RNNの構造に対して3つの「ゲート」を導入し、情報の選択的な記憶、忘却、出力を可能にすることで、長期的な依存関係を保持できるように設計されています。

LSTMの基本構造

LSTMは、RNNと同様に時系列データを扱いますが、次の4つの状態とゲートを用います。

  • 忘却ゲート(Forget Gate):過去の記憶をどれだけ忘れるかを決定します。
    [
    f^{(t)} = \sigma(W_f \cdot [h^{(t-1)}, x^{(t)}] + b_f)
    ]
  • 入力ゲート(Input Gate):新しい情報をどれだけ記憶するかを決定します。
    [
    i^{(t)} = \sigma(W_i \cdot [h^{(t-1)}, x^{(t)}] + b_i)
    ]
    [
    \tilde{C}^{(t)} = \tanh(W_C \cdot [h^{(t-1)}, x^{(t)}] + b_C)
    ]
  • セル状態(Cell State):長期記憶を保持します。
    [
    C^{(t)} = f^{(t)} \cdot C^{(t-1)} + i^{(t)} \cdot \tilde{C}^{(t)}
    ]
  • 出力ゲート(Output Gate):出力をどれだけ次の隠れ状態に反映させるかを決定します。
    [
    o^{(t)} = \sigma(W_o \cdot [h^{(t-1)}, x^{(t)}] + b_o)
    ]
    [
    h^{(t)} = o^{(t)} \cdot \tanh(C^{(t)})
    ]

LSTMの数式

LSTMの数式は以下のように表されます。

  • 忘却ゲート
    [
    f^{(t)} = \sigma(W_f \cdot [h^{(t-1)}, x^{(t)}] + b_f)
    ]
  • 入力ゲート
    [
    i^{(t)} = \sigma(W_i \cdot [h^{(t-1)}, x^{(t)}] + b_i)
    ]
    [
    \tilde{C}^{(t)} = \tanh(W_C \cdot [h^{(t-1)}, x^{(t)}] + b_C)
    ]
  • セル状態更新
    [
    C^{(t)} = f^{(t)} \cdot C^{(t-1)} + i^{(t)} \cdot \tilde{C}^{(t)}
    ]
  • 出力ゲート
    [
    o^{(t)} = \sigma(W_o \cdot [h^{(t-1)}, x^{(t)}] + b_o)
    ]
    [
    h^{(t)} = o^{(t)} \cdot \tanh(C^{(t)})
    ]

3. まとめ

LSTMは、従来のRNNが抱えていた長期依存関係の学習問題を克服するために、3つのゲート構造を導入しました。
これにより、長期記憶短期記憶を適切に制御し、時間的に遠い情報も効果的に保持・利用できるようになっています。

次回の記事では、LSTMを実際のタスクに応用する方法について解説していきます。


参考文献


以上、LSTMの基礎について解説しました。質問やコメントがあれば、ぜひお寄せください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?