Re Reference AI

アーキテクチャ

RNN

Recurrent Neural Network / 再帰型ニューラルネットワーク

隠れ状態を介して過去の情報を保持しながら系列データを逐次処理するニューラルネットワーク

深層学習系列モデリング

概要

RNNは、時系列やテキストなど系列データを扱うために設計されたニューラルネットワーク。各タイムステップで入力を受け取ると同時に、直前までの情報を圧縮した「隠れ状態(hidden state)」を保持・更新しながら出力を生成する。この再帰的な構造により、可変長の系列データを扱え、過去の文脈を考慮した予測が可能になる。音声認識・機械翻訳・時系列予測など、Transformer登場以前のNLP・時系列タスクにおける主流アーキテクチャだった。

背景

通常のフィードフォワード型ニューラルネットワークは固定長の入力しか扱えず、系列の順序情報も明示的にはモデル化できない。RNNは同じ重みを時間方向に繰り返し適用する再帰構造により、可変長の系列とその順序依存性を扱えるように設計された。

歴史

1980年代: RNNの基本概念が提案される。1997年: LSTM(Long Short-Term Memory)が長期依存問題を緩和するゲート構造として登場。2014年: LSTMを簡略化したGRU(Gated Recurrent Unit)が提案される。2017年: Transformerの登場により、並列化が難しいRNNは主要タスクで徐々に置き換えられていった。

アーキテクチャ

各タイムステップで入力x_tと直前の隠れ状態h_{t-1}を受け取り、重みを共有した変換を適用して新しい隠れ状態h_tを計算する。単純なRNNは長い系列で勾配消失・爆発を起こしやすく、これを緩和するゲート機構を持つLSTMやGRUが広く使われる。

ワークフロー

系列データを1タイムステップずつ入力 → 隠れ状態を更新 → 各ステップまたは最終ステップで出力を生成 → BPTT(Backpropagation Through Time)により誤差を逆伝播して重みを更新。

コード例

PyTorchでの基本的なRNN層

import torch.nn as nn

rnn = nn.RNN(input_size=10, hidden_size=20, batch_first=True)
output, hidden = rnn(input_sequence)

利点

  • 可変長の系列データを自然に扱える
  • パラメータ数が系列長に依存せず一定(重み共有)
  • 時系列の順序情報を明示的にモデル化できる

欠点

  • 逐次処理のため学習・推論を並列化しにくい
  • 単純なRNNは長い系列で勾配消失・爆発が起きやすい
  • 長距離依存の学習がTransformerと比べて弱い

比較

  • TransformerTransformerはRNNの逐次処理によるボトルネックを解消し、並列学習を可能にしたアーキテクチャ
  • ニューラルネットワークRNNはニューラルネットワークの一種で、系列データの処理に特化した再帰構造を持つ
  • AttentionAttentionはRNNが抱える長距離依存の情報損失を補うために導入された

関連用語

TransformerニューラルネットワークAttention

よくある質問

RNNとTransformerはどちらを使うべき?

現在の大規模タスクでは並列学習が可能なTransformerが主流。ただし低リソース環境や単純な時系列予測では、LSTM・GRUなどRNN系が今も使われる。

参考文献