1.1 定義と特徴
リカレントニューラルネットワーク(RNN)は、時系列データやシーケンスデータの処理に特化した人工ニューラルネットワークの一種である。内部にループ構造を持ち、過去の情報を隠れ状態として保持・伝播することで、文脈や時間的依存関係を学習する能力を備える。音声認識、自然言語処理、翻訳、株価予測など、連続的な入力が伴うタスクで広く応用されている。RNNは、各タイムステップにおいて同じ重み行列を共有するため、系列長が可変でも対応できるという特徴を持つ。
1.2 フィードフォワードネットワークとの違い
フィードフォワードネットワーク(FFN)は、入力層から出力層へ一方向に情報が流れる構造であり、過去の入力に関する記憶を持たない。一方、RNNは隠れ状態を介して過去の情報を現在の計算に再利用するため、時間的な文脈を考慮した処理が可能である。FFNが静的な入出力マッピングを学習するのに対し、RNNは動的な系列パターンを学習する点で本質的に異なる。
1.3 ループ構造と隠れ状態
RNNの核心はループ構造にあり、各タイムステップで隠れ状態が更新される。隠れ状態は過去の入力情報を圧縮したベクトル表現であり、次ステップへ伝播される。この再帰的な接続により、ネットワークは任意長の系列を処理できるが、情報の保存期間に限界がある。隠れ状態の次元数は設計パラメータであり、モデルの容量を決定する。
2.1 順伝播
2.1.1 入力と隠れ状態の更新式
時刻tにおける入力ベクトルをx_t、前時刻の隠れ状態をh_{t-1}とすると、現在の隠れ状態h_tは以下の式で計算される: h_t = tanh(W_hh · h_{t-1} + W_xh · x_t + b_h) ここで、W_hhは隠れ状態間の重み行列、W_xhは入力から隠れ層への重み行列、b_hはバイアス項である。活性化関数tanhは非線形性を導入する。初期隠れ状態h_0は通常ゼロベクトルで初期化される。
2.1.2 出力の計算
出力y_tは隠れ状態h_tに基づいて計算される: y_t = softmax(W_hy · h_t + b_y) (分類タスクの場合。回帰タスクでは線形活性化が用いられることが多い。) 出力はタスクに応じて、次のタイムステップへの予測値やラベルの確率分布として解釈される。
2.2 逆伝播(BPTT)
2.2.1 誤差の時間的展開
BPTT(Backpropagation Through Time)は、RNNの学習に用いられる誤差逆伝播法の拡張である。順伝播で得られた出力誤差を、時間軸に沿って逆向きに展開しながら各タイムステップの重みに対する勾配を計算する。具体的には、損失関数から始めて、各時刻の隠れ状態と重み行列に対して連鎖律を適用し、全てのタイムステップの勾配を合算して更新に用いる。
2.2.2 勾配消失・爆発問題
BPTTでは、長い系列ほど勾配が指数関数的に減衰(消失)または増大(爆発)する傾向がある。これは、重み行列の繰り返し乗算によって生じ、特にtanhやシグモイド活性化関数では勾配が0に近づきやすい。勾配消失により長距離依存関係の学習が困難となり、勾配爆発は学習を不安定にする。クリッピングや適切な初期化、ゲート付きアーキテクチャなどの対策が考案されている。
3.1 LSTM(Long Short-Term Memory)
3.1.1 忘却ゲート・入力ゲート・出力ゲート
LSTMは、セル状態という内部記憶と三つのゲート機構を導入することで、長距離依存の学習を改善する。忘却ゲートは過去のセル状態のどの情報を保持するかを制御し、入力ゲートは新しい情報のどの部分を追加するかを決定する。出力ゲートはセル状態から出力隠れ状態への情報の流れを調整する。各ゲートはシグモイド関数を活性化として用い、値は0から1の範囲でゲートの開閉度を表す。
3.1.2 セル状態の更新
セル状態C_tは、忘却ゲートと入力ゲートの出力を用いて更新される: C_t = f_t ⊙ C_{t-1} + i_t ⊙ g_t ここで、f_tは忘却ゲート、i_tは入力ゲート、g_tは新しい候補値(通常tanh活性化)、⊙は要素積を示す。この線形な更新により、勾配が時間を通じて効率的に伝播され、長期記憶が可能となる。
3.2 GRU(Gated Recurrent Unit)
3.2.1 リセットゲートと更新ゲート
GRUはLSTMを簡略化したモデルで、忘却ゲートと入力ゲートを更新ゲートに統合し、出力ゲートを省略する。リセットゲートは過去の隠れ状態をどの程度無視するかを決定し、更新ゲートは過去の隠れ状態と新しい候補状態の混合比率を制御する。これによりパラメータ数が削減され、計算効率が向上する。
3.2.2 LSTMとの比較
GRUは隠れ状態のみを持ち、セル状態を持たない点でLSTMと異なる。多くのタスクでLSTMと同等の性能を示すが、パラメータが少ないため小規模データでは過学習を抑制しやすい。一方、LSTMはより明確な記憶制御が可能で、複雑な長期依存関係を必要とするタスクで優れる場合がある。選択はタスクとデータ量に依存する。
3.3 Bidirectional RNN
Bidirectional RNN(双方向RNN)は、系列を前方向と後方向の二つの独立したRNNで処理し、各時刻で両方の隠れ状態を結合して出力を得る。これにより、未来の情報も考慮した文脈表現が可能となる。特に自然言語処理のタグ付けや感情分析など、全系列の情報が有用なタスクで効果を発揮する。
3.4 Deep RNN
Deep RNNは、隠れ層を複数積み重ねた構造を持つRNNである。各層が異なる時間スケールの特徴を抽出でき、表現力が向上する。ただし層が深くなるほど勾配の伝播が困難になり、学習が不安定になりやすい。残差接続や層正規化などの補助技術と併用されることが多い。
4.1 自然言語処理
4.1.1 言語モデルとテキスト生成
RNNベースの言語モデルは、与えられた単語列から次の単語の確率を予測する。これを繰り返すことでテキスト生成が可能となる。キャラクターレベルまたはサブワードレベルのモデルが一般的で、文法的・意味的に一貫した文章を生成できるが、長文では一貫性を保つのが難しい。
4.1.2 機械翻訳
エンコーダー・デコーダーアーキテクチャにおいて、RNNは入力文をエンコードし、デコーダーで出力文を生成する。文脈ベクトルに情報を圧縮するため、長文では情報損失が生じやすい。注意機構(Attention)の導入により、必要な情報を動的に参照することで性能が大幅に向上した。
4.2 音声認識
音声波形や特徴量系列を入力とし、音素や単語の系列に変換するタスクでRNNが用いられる。双方向RNNが事前に文脈を考慮する点で有利であり、LSTMやGRUが長期依存を捉えるために採用される。近年はCTC(Connectionist Temporal Classification)損失と組み合わせてエンドツーエンドの学習が行われる。
4.3 時系列予測
株価、天候、需要予測など、過去の観測値から未来を予測するタスクにRNNが適用される。単変量・多変量系列に対応し、非同期的なデータにも拡張可能だが、長期間の予測には誤差が累積しやすいという課題がある。
4.4 手書き文字認識
オンライン手書き認識では、筆跡の時系列データ(座標、筆圧など)を入力として文字列に変換する。RNNは筆の動きの連続性をモデル化でき、特にピーク時の局所的な変動を捉えるのに適している。CTCと組み合わせたエンドツーエンド認識が主流である。
5.1 長距離依存の限界
LSTMやGRUの導入により勾配消失問題は緩和されたが、数百ステップを超える極めて長い系列では依然として情報保持が困難である。メモリ容量が隠れ状態の次元に制限されるため、重要な情報が上書きされる可能性がある。注意機構やTransformerなどの新しいアーキテクチャがこの限界を克服する方向へ発展した。
5.2 計算コストと学習の難しさ
RNNの学習はBPTTによる逆伝播が逐次的であるため、並列化が難しく、GPUなどのハードウェア効率が悪い。また、勾配爆発に対するクリッピングや適切なハイパーパラメータ調整が必要で、収束が遅い場合がある。バッチ正規化や層正規化の導入で安定性は改善されたが、Transformerのように自己注意による完全並列化には及ばない。
5.3 代替アーキテクチャ(Transformer, Attention機構)
TransformerはRNNのような再帰構造を用いず、自己注意機構によって系列全体の依存関係を同時に計算する。これにより並列処理が可能となり、長距離依存も効率的に学習できる。自然言語処理を中心に多くのタスクでRNNを大幅に上回る性能を示し、現在の主流となっている。ただし、Transformerは二次の計算量を持つため、極長系列では注意機構の効率化(Linear Attentionなど)が研究されている。RNNは小規模データや低リソース環境で依然として有用であり、また時間的な逐次性が本質的なタスク(オンライン処理)では今も利用される。