1 基本概念

1.1 定義と特徴

再帰型ネットワーク(RNN)は、系列データを処理するために設計されたニューラルネットワークの一種である。最大の特徴は、隠れ層にループ構造を持ち、過去の情報を内部状態(隠れ状態)として保持しながら、現在の入力と組み合わせて逐次的に計算を行う点にある。これにより、時系列的な依存関係モデル化でき、音声、テキスト、センサーデータなど、長さが可変な系列のパターン学習に適する。RNNはパラメータ共有の原理に基づき、各時間ステップで同一の重み行列を用いるため、モデルのパラメータ数が系列長に依存しないという利点を持つ。

1.2 フィードフォワードネットワークとの違い

フィードフォワードネットワーク(FFN)は、入力がネットワークを一方向に通過し、隠れ層間にループがない。各入力を独立に処理するため、順序情報や時間的な前後関係を明示的に扱うことができない。一方、RNNは隠れ層のループによって過去の出力を現在の計算に再利用するため、系列内の時間依存性を内在的に学習できる。例えば、文の単語順や音声の時間的な流れを考慮する必要があるタスクでは、FFNよりもRNNが優れた性能を発揮する。ただし、FFNは並列計算が容易で学習が安定しやすいのに対し、RNNは逐次処理が必須であり、長い系列では勾配問題が生じやすい。

2 動作原理

2.1 ループ構造と内部状態

RNNの基本構造は、入力層、隠れ層、出力層からなり、隠れ層の出力が次の時間ステップの隠れ層への入力としてフィードバックされる。時刻tにおける隠れ状態htは、現在の入力xtと前時刻の隠れ状態ht-1の関数として、ht = f(Wxh·xt + Whh·ht-1 + bh)と計算される。ここでfは活性化関数(通常はtanhやReLU)、WxhとWhhは重み行列、bhはバイアスである。このループにより、ネットワークは過去の情報を内部状態として蓄積し、系列全体のコンテキストを考慮した出力を生成できる。

2.2 時間展開と誤差逆伝播法

RNNの学習は、時間方向にネットワークを展開(unfold)してフィードフォワードネットワークとして扱い、誤差逆伝播法を拡張した手法を用いる。展開後は各時間ステップに独立した層が存在するように見なせるが、重みは全時間ステップで共有される。

2.2.1 BPTT(Backpropagation Through Time)

BPTTは、展開されたRNNに対して標準的な誤差逆伝播法を適用するアルゴリズムである。損失関数の勾配を、各時間ステップの出力と隠れ状態に関して計算し、時間方向に逆向きに伝播させる。具体的には、最終時刻から初期時刻に向けて、各時間ステップでの重みに対する勾配を累積し、それらの平均または和を用いてパラメータを更新する。BPTTでは、勾配が時間ステップを遡るたびに重み行列の冪乗が掛けられるため、長い系列では数値的な問題が発生する。

2.2.2 勾配の課題

BPTTにおいて、勾配が時間とともに指数関数的に減衰または増大する現象が生じる。勾配消失(vanishing gradient)は、活性化関数(tanhやsigmoid)の微分値が1未満であることや、重み行列の固有値が小さすぎる場合に発生し、遠い過去の情報が学習されにくくなる。勾配爆発(exploding gradient)は、重み行列の固有値が大きすぎる場合に生じ、学習が不安定になる。この課題が、長期依存関係の学習を困難にし、後のLSTMGRUなどのゲート付きアーキテクチャの開発動機となった。

3 主要なアーキテクチャ

3.1 単純RNN

単純RNN(Vanilla RNN)は、最も基本的な再帰型ネットワークであり、前述の2.1節で述べた構造を持つ。隠れ状態の更新に単一の活性化関数(tanhまたはReLU)を用いる。計算がシンプルで実装が容易だが、長期的な依存関係の学習において勾配消失問題が顕著であり、実用的には系列長が数十ステップを超えると性能が低下する。主に短い系列やベースライン比較に用いられる。

3.2 LSTM(Long Short-Term Memory)

LSTMは、勾配消失問題を緩和するために設計された特殊なRNNアーキテクチャである。セル状態(cell state)と呼ばれる長期記憶を保持するための経路を持ち、3つのゲート(忘却、入力、出力)によって情報の流れを制御する。セル状態は時間ステップを経ても減衰しにくい線形な伝播経路を持ち、勾配の流れを安定化する。

3.2.1 忘却ゲート

忘却ゲートは、前時刻のセル状態からどの情報を保持し、どの情報を破棄するかを決定する。シグモイド関数を用いて0から1の値を出力し、1に近いほど情報を保持する。具体的には、ft = σ(Wf·[ht-1, xt] + bf)と計算される。これにより、不要な過去情報を選択的に忘れることができる。

3.2.2 入力ゲートと出力ゲート

入力ゲートは、新しい情報のうちどの程度をセル状態に追加するかを制御する。シグモイド層(it = σ(Wi·[ht-1, xt] + bi))とtanh層(C̃t = tanh(WC·[ht-1, xt] + bC))の積として計算される。出力ゲートは、セル状態のどの部分を現在の隠れ状態として出力するかを決定する。ot = σ(Wo·[ht-1, xt] + bo)を用いて、セル状態をtanhで圧縮したものとの要素積によりht = ot * tanh(Ct)を生成する。これらのゲート機構により、LSTMは長期的な依存関係の学習において優れた性能を発揮する。

3.3 GRU(Gated Recurrent Unit)

GRUはLSTMを簡略化したアーキテクチャであり、セル状態を明示的に持たず、リセットゲートと更新ゲートの2つのゲートで動作する。リセットゲート(rt)は過去の隠れ状態をどの程度無視するかを決定し、更新ゲート(zt)は過去の隠れ状態と新しい候補状態の混合比率を制御する。計算式は、zt = σ(Wz·[ht-1, xt])、rt = σ(Wr·[ht-1, xt])、h̃t = tanh(W·[rt * ht-1, xt])、ht = (1-zt) * ht-1 + zt * h̃tとなる。LSTMと比較してパラメータ数が少なく計算効率が良いが、表現力はやや劣る場合がある。多くのタスクでLSTMと同等の性能を示すことが知られている。

3.4 双方向RNN

双方向RNN(BiRNN)は、入力系列を順方向と逆方向の2つの独立したRNN(通常はLSTMやGRU)で処理し、各時間ステップで両方の隠れ状態を結合して出力を得るアーキテクチャである。順方向RNNは過去の情報を、逆方向RNNは未来の情報をそれぞれ捉えるため、各位置で前後のコンテキストを同時に利用できる。自然言語処理のタスク(特に系列ラベリングや機械翻訳)で広く用いられる。ただし、系列全体を処理する必要があるため、リアルタイム処理には適さない。

4 応用分野

4.1 自然言語処理

RNNは、単語や文字の系列である自然言語の処理に広く応用される。文脈に応じて単語の意味を動的に解釈できるため、言語モデルや機械翻訳など多くのタスクで基本技術として利用されてきた。

4.1.1 言語モデル

言語モデルは、与えられた単語列の次に出現する単語の確率分布を学習するタスクである。RNN言語モデルは、各時間ステップで過去の単語系列から次の単語を予測するよう訓練される。LSTMやGRUを用いることで、長い文脈を考慮した確率推定が可能となり、テキスト生成や音声認識の言語モデルとして広く使われる。

4.1.2 機械翻訳

機械翻訳では、入力文(ソース言語)をエンコーダRNNで符号化し、その最終隠れ状態を初期状態としてデコーダRNNが目的言語の単語を逐次生成するエンコーダ・デコーダモデルが標準的だった。後にアテンション機構を組み合わせることで、入力文の異なる部分に動的に注目できるようになり、翻訳品質が大幅に向上した。

4.2 音声認識

音声認識では、音響特徴量の時系列データを入力として、音素または単語の系列を出力する。RNN(特にLSTM)は、音声信号の時間的依存関係をモデル化するのに適しており、従来の隠れマルコフモデル(HMM)ベースの手法を置き換えた。Connectionist Temporal Classification(CTC)と組み合わせることで、入力と出力のアラインメントを明示的に与えずに学習できる。

4.3 時系列予測

株価、気温、電力需要などの時系列データの予測にRNNが用いられる。過去の観測値のパターンから将来の値を予測する際、長期記憶を保持できるLSTMやGRUが特に有効である。ただし、多変量時系列や非定常データに対しては、TransformerやN-BEATSなどの新しい手法が近年台頭している。

4.4 手書き認識

手書き文字認識では、ペンの軌跡(座標系列)または筆記画像の時系列特徴をRNNで処理し、文字列を出力する。特に、オンライン手書き認識(リアルタイムで筆跡をトレース)では、RNNの逐次処理特性が活かされる。LSTMを用いたモデルは、単独文字だけでなく連続筆記の認識でも高い精度を示す。

5 訓練と最適化

5.1 損失関数

RNNの訓練には、タスクに応じて適切な損失関数が用いられる。系列ラベリングや言語モデルでは、各時間ステップの予測と正解とのクロスエントロピー損失が一般的である。回帰タスク(時系列予測など)では平均二乗誤差(MSE)が使われる。系列全体の損失は、各ステップの損失の合計または平均として計算される。

5.2 勾配クリッピング

勾配爆発問題に対処するための簡単かつ効果的な手法が勾配クリッピングである。BPTTで計算された勾配のノルムが閾値を超えた場合、勾配をそのノルムで割って閾値以下にスケールする。これにより、更新ステップが大きくなりすぎるのを防ぎ、学習の安定性が向上する。一般的な閾値は1~10程度に設定される。

5.3 正則化手法

RNNの過学習を防ぐために、以下の正則化手法が用いられる。ドロップアウトは、全結合層には容易に適用できるが、RNNの隠れ状態間のループにそのまま適用すると長期記憶が損なわれるため、特定のゲートや出力にのみ適用する方法(variational dropout)が提案されている。重み減衰(L2正則化)も有効だが、勾配問題を悪化させる可能性があるため注意が必要。また、早期終了やバッチ正規化もRNNの訓練に利用される。

6 発展と変種

6.1 深層RNN

深層RNNは、複数のRNN層を積み重ねたアーキテクチャである。各層の隠れ状態が次の層の入力となり、より抽象度の高い時間的特徴を学習できる。ただし、層数が増えると勾配の伝播がさらに困難になるため、スキップ接続や残差接続を導入する場合もある。深層RNNは、音声認識や機械翻訳などの複雑なタスクで性能向上に寄与する。

6.2 アテンション機構との統合

アテンション機構は、エンコーダ・デコーダモデルにおいて、デコーダがエンコーダの全時間ステップの隠れ状態に重み付きでアクセスできるようにする手法である。RNNにアテンションを組み合わせることで、長い系列でも必要な情報を直接参照でき、勾配消失問題を緩和しつつ性能が向上する。代表的なものにBahdanau注意機構やLuong注意機構がある。この統合はTransformer登場以前の最先端モデルの中核をなした。

6.3 Transformerとの比較

Transformerは、RNNの逐次処理を排除し、自己アテンション機構を用いて系列全体を並列に処理するアーキテクチャである。RNNと比較して、長距離依存関係の学習が容易で、計算効率が高い(系列長に対して並列化可能)。一方、RNNは逐次的な情報の流れが自然であり、オンライン処理やストリームデータに適する。現在では、自然言語処理や音声認識の多くのタスクでTransformerが主流となりつつあるが、RNN(特にLSTM)は軽量でリアルタイム性が求められる場面や、小規模データでの堅牢性から依然として利用されている。