1 基本概念
1.1 定義と動作原理
循環ニューラルネットワーク(RNN)は、時系列データやシーケンシャルデータを処理するために設計されたニューラルネットワークである。従来のフィードフォワードネットワークと異なり、RNNは内部にループ構造を持ち、過去の情報を保持しながら現在の入力と統合することで、データの時間的な依存関係を学習する。
1.1.1 ループ構造と隠れ状態
RNNの中核は「隠れ状態」(hidden state)と呼ばれるベクトルである。各タイムステップにおいて、隠れ状態は現在の入力と前ステップの隠れ状態から更新される。このループ構造により、ネットワークは有限のメモリを持ち、過去の情報を内部表現として保持できる。具体的には、時刻tにおける隠れ状態h_tは、入力x_tと前時刻の隠れ状態h_{t-1}に基づいて、非線形活性化関数(通常はtanh)を通じて計算される:h_t = tanh(W_h · h_{t-1} + W_x · x_t + b)。
1.1.2 時間展開と重み共有
RNNの学習は「時間展開」(unfolding)によって理解される。複数タイムステップにわたるループを、フィードフォワードネットワークのように展開することで、誤差逆伝播法(BPTT)を用いた勾配計算が可能になる。重要な特徴として、全タイムステップで重み行列(W_h、W_xなど)が共有される。この重み共有により、パラメータ数がシーケンス長に依存せず、任意長のシーケンスを処理できるが、長期依存関係の学習に課題も生じる。
1.2 双方向RNN
双方向RNN(Bidirectional RNN)は、各タイムステップで過去と未来の両方の情報を活用するために設計された。順方向の隠れ状態(過去→現在)と逆方向の隠れ状態(未来→現在)を独立に計算し、それらを結合または加算して出力を生成する。これにより、文脈全体を考慮した表現が可能となり、自然言語処理などのタスクで性能が向上する。
1.3 深層RNN
深層RNN(Deep RNN)は、隠れ層を複数積み重ねた構造を持つ。各層の隠れ状態は同一タイムステップにおける下層の隠れ状態を入力として受け取り、より抽象的な時間特徴を抽出できる。層数が増えるほど表現力が向上する一方、勾配消失問題が悪化しやすく、学習が困難になるため、層数は2~3程度に抑えられることが多い。
2 バリエーションと発展
2.1 LSTM
長短期記憶(LSTM)は、1997年にHochreiterとSchmidhuberによって提案されたRNNの改良モデルである。従来のRNNが抱える長期依存関係の学習困難を解決するため、ゲート機構とセル状態を導入した。
2.1.1 忘却ゲート、入力ゲート、出力ゲート
LSTMは3つのゲートを持つ。忘却ゲート(forget gate)は、過去のセル状態のどの情報を保持し、どの情報を破棄するかを決定する。入力ゲート(input gate)は、新しい情報のうちどの程度をセル状態に追加するかを制御する。出力ゲート(output gate)は、現在のセル状態に基づいて隠れ状態をどのように出力するかを調整する。これらのゲートはシグモイド関数によって値が0~1に正規化され、乗算を通じて情報の流れを調節する。
2.1.2 セル状態の役割
セル状態(cell state)は、LSTMにおける長期記憶の担い手である。ゲートによる制御を受けながら、セル状態は勾配が消失しにくい線形な経路(加算と乗算のみ)で伝播する。これにより、数百タイムステップ以上にわたる依存関係を学習できる。セル状態は忘却ゲートで過去の情報を部分的に削除し、入力ゲートで新しい情報を追加した後、出力ゲートを介して隠れ状態に変換される。
2.2 GRU
GRU(Gated Recurrent Unit)は、2014年にChoらによって提案されたLSTMの簡略化モデルである。LSTMよりパラメータ数が少なく、計算効率に優れる。
2.2.1 リセットゲートと更新ゲート
GRUは、リセットゲート(reset gate)と更新ゲート(update gate)の2つのゲートで構成される。リセットゲートは、過去の隠れ状態をどの程度無視するかを決定し、短期的な依存関係の学習に寄与する。更新ゲートは、過去の隠れ状態と新しい候補隠れ状態の混合比率を制御し、LSTMの忘却ゲートと入力ゲートの役割を統合する。GRUはセル状態を持たず、隠れ状態のみで情報を保持するため、構造が単純である。
2.3 その他の派生モデル
その他のRNN派生モデルとして、Peephole LSTM(セル状態をゲートに直接結合)、Bi-directional LSTM(双方向LSTM)、Stacked LSTM(深層LSTM)、Clockwork RNN(層ごとに異なる時間刻みを持つ)、IndRNN(独立したRNN)などがある。また、注意機構(Attention)を組み合わせたモデルも多く提案され、Transformerの登場まで主流であった。
3 応用分野
3.1 自然言語処理
RNNは、単語や文字の系列として表現される自然言語データの処理に広く用いられる。シーケンスの前後関係を考慮できるため、多くのタスクで有効である。
3.1.1 言語モデル
言語モデルは、与えられた単語列に対して次の単語の確率を予測するタスクである。RNNは過去の単語情報を隠れ状態に蓄積し、文脈に応じた確率分布を出力する。これにより、文法的に自然な文章の生成や、文章の確からしさの評価が可能となる。
3.1.2 機械翻訳
機械翻訳では、入力言語の文をエンコーダRNNで符号化し、デコーダRNNで目標言語の文を生成する「エンコーダ-デコーダ」モデルが基本的な枠組みである。のちに注意機構が導入され、Transformerに取って代わられるまで主流であった。
3.1.3 感情分析
感情分析では、文章全体の感情極性(ポジティブ・ネガティブなど)を分類する。RNNは各単語の埋め込みを順次処理し、最後の隠れ状態を分類器に入力して感情ラベルを予測する。双方向RNNを用いることで、文脈の前後を考慮した精度向上が図られる。
3.2 時系列予測
時系列データは時間順に並んだ観測値の系列であり、RNNはその動的なパターンを学習するのに適している。
3.2.1 株価・天気予測
株価予測では、過去の価格や取引量などの時系列指標から将来の価格を予測する。天気予測では、気温、湿度、気圧などの連続的な観測値を入力とし、数時間先から数日先の状態を予測する。ただし、金融市場や気象は非定常性やノイズが大きく、RNN単体では限界があるため、アンサンブルや他の手法と組み合わせて用いられる。
3.3 音声・音楽処理
音声や音楽は時間方向に構造を持つ一次元信号であり、RNNの処理対象として適している。
3.3.1 音声認識
音声認識では、音響特徴量の系列から音素や単語の系列を推定する。RNN(特に双方向LSTM)は、音声の時間的変動や発話のリズムを捉え、文字起こし精度を向上させた。近年ではエンドツーエンドモデルとして、CTC(Connectionist Temporal Classification)や注意機構と組み合わせて用いられる。
3.3.2 楽曲生成
楽曲生成では、音符や和音の系列を学習し、新しい楽曲を自動生成する。RNNはメロディの時間的構造や音楽理論的なパターンを学習し、次に演奏すべき音を逐次予測する。LSTMやGRUを用いることで、長い楽曲でも構造的な一貫性を維持できる。
4 課題と限界
4.1 勾配消失・爆発問題
RNNの学習では、時間展開されたネットワークにおいて、タイムステップが長くなると勾配が指数関数的に減少(消失)または増加(爆発)する問題が生じる。勾配消失により、遠い過去の情報が現在の更新にほとんど影響を与えず、長期依存関係を学習できない。勾配爆発は数値的不安定性を引き起こす。LSTMやGRUはゲート機構によってこの問題を緩和するが、完全には解決していない。
4.2 計算効率と並列化の難しさ
RNNは逐次的に各タイムステップを処理する必要があるため、並列計算が困難である。特に長いシーケンスでは処理時間が線形に増加する。一方、Transformerは自己注意機構によりシーケンス全体を同時に処理できるため、学習・推論の高速化が可能である。この並列化の難しさが、RNNが大規模データや長文処理においてTransformerに置き換えられた大きな要因の一つである。
4.3 Transformerとの比較
Transformerは2017年に登場し、RNNを多くのタスクで凌駕した。Transformerは注意機構に基づき、シーケンス内の任意の位置間の依存関係を直接モデル化でき、並列計算が可能である。また、位置エンコーディングによって順序情報を導入する。一方、RNNは本質的に逐次的であり、長大なシーケンスでの効率が劣る。ただし、小規模データや計算資源が限られた環境、または逐次生成が自然なタスク(例:リアルタイム予測)では、RNN(特にLSTM)はいまだに使用されることがある。