RNNとは
RNN(Recurrent Neural Network、再帰型ニューラルネットワーク)は、時系列データや自然言語などの順序を持つデータを処理するために設計されたニューラルネットワークです。通常のフィードフォワードネットワークとは異なり、隠れ層の出力を次のタイムステップの入力として再利用する再帰的な構造を持っています。
| ひとことで言うと | 前の時点の結果を次に持ち越して、順番のあるデータを処理するネットワーク。 |
|---|---|
| どこで使う | 時系列予測、音声認識、テキスト処理(現在はTransformerに置き換わりつつある)。 |
| 注意点 | 長い系列では勾配消失が起き、昔の情報を覚えられない。LSTMやGRUで改善する。 |
RNNの仕組み
RNNでは、各タイムステップで入力データと前のタイムステップの隠れ状態を組み合わせて新しい隠れ状態を計算します。この仕組みにより、過去の情報を「記憶」として保持しながら、系列データを逐次的に処理できます。数学的には、隠れ状態h(t)は入力x(t)と前の隠れ状態h(t-1)の関数として定義されます。
11語目を入力系列の先頭
▶
2隠れ状態を更新ここまでの記憶
▶
3次に持ち越す記憶を次の入力へ
▶
42語目を入力記憶と合わせて処理
▶
5最後まで処理系列全体を読み終える
↺ 2〜4を系列の長さぶんくり返す
RNNの課題
基本的なRNNには、勾配消失問題と勾配爆発問題という重大な課題があります。長い系列を扱う場合、逆伝播の過程で勾配が指数的に減衰または増大し、長期的な依存関係を学習することが困難になります。この問題を解決するために、LSTMやGRUなどの改良型アーキテクチャが提案されました。
RNNの応用と発展
RNNは機械翻訳、音声認識、テキスト生成、時系列予測など、多様なタスクに応用されてきました。特にエンコーダー・デコーダー構造と組み合わせたSequence-to-Sequenceモデルは、機械翻訳の分野で大きな成果を上げました。現在ではTransformerに置き換わる場面も増えていますが、リアルタイム処理や軽量なシーケンスモデリングでは依然として活用されています。