リカレントニューラルネットワーク(RNN)は、ニューラルネットワークのアーキテクチャの一つで、各ステップで更新され前方に運ばれる内部の隠れ状態を維持することで、系列データを処理するように設計されている。固定入力から固定出力を生成し、以前の入力の記憶を持たないフィードフォワードネットワークとは異なり、RNNは系列の各ステップで同じ重みを共有し、原理的にはその系列内の任意に遠い過去の情報を利用して、各新しい予測に反映させることができる。
歴史
初期のリカレントアーキテクチャには、ジョン・ホップフィールドが1982年に提案した連想記憶モデルであるホップフィールドネットワークや、1990年にジェフリー・エルマンが提案した単純リカレントネットワークがあり、後者は、ルールを明示的に教えられなくても、ネットワークが単語の流れの中の文法的構造を表現することを学習できることを示した。1990年代から2000年代にかけて、RNNは自然言語処理や音声認識における系列タスクの標準的なアーキテクチャであったが、素朴なRNNは長い系列での学習が難しいことが判明した。これは、バックプロパゲーションを通時的に計算した勾配が、系列長に応じて指数関数的に縮小または爆発する傾向があるためであり、この問題は1991年にゼップ・ホッフライターによって正式に分析された。この勾配消失・爆発問題が、1997年のLSTMアーキテクチャと、その後により単純なゲート付きリカレントユニット(GRU)の動機となり、いずれもゲーティング機構を追加して、勾配が多くのステップにわたってより安定して流れるようにした。
アーキテクチャと学習
RNNは系列を一度に一要素ずつ処理し、現在の入力と前のステップから引き継がれた隠れ状態を組み合わせて、新しい隠れ状態と、任意でそのステップでの出力を生成する。学習には通時バックプロパゲーションが使用され、これは系列の全ステップにわたってリカレント計算を展開し、結果として実質的に非常に深い展開されたネットワークに通常の勾配降下法を適用する。この展開はRNNの主な計算上の欠点でもある。各ステップが前のステップの出力に依存するため、系列は並列ではなくほぼステップごとに処理する必要があり、2010年代に標準となった長い系列と大規模データセットでの学習が遅くなる。
最盛期と衰退
RNN、特に積層LSTMの変種は、2014年に導入されたSeq2Seqなどのアーキテクチャを通じて、実用的な機械翻訳や音声システムの第一世代を支えた。Seq2Seqは、入力系列を固定ベクトルに圧縮するエンコーダRNNと、そのベクトルから出力系列を生成するデコーダRNNを組み合わせたものである。2015年頃にSeq2Seqモデルに追加されたアテンション機構は、デコーダが単一の圧縮ベクトルに頼るのではなく、すべてのエンコーダ状態を参照できるようにし、翻訳品質を向上させるとともに、2017年のTransformerアーキテクチャの舞台を整えた。Transformerはリカレンスを完全に捨てて自己アテンションを採用し、完全に並列で学習できた。TransformerはRNNと同等以上の性能を発揮しながら、当時のGPUハードウェア上ではるかに高速に学習できたため、数年以内に大規模言語モデルや自然言語処理の大半で支配的な系列アーキテクチャとしてRNNに取って代わった。
遺産
RNNは、厳格なメモリやレイテンシの制約がある設定や、一部の時系列予測や制御アプリケーションで今も使用されており、その中核的なアイデア、つまり固定サイズの隠れ状態が無限に長い履歴を要約できるという考えは、2020年代半ばにMambaなどの状態空間モデルで再浮上し、RNNのような線形時間推論とTransformerに近い学習効率を組み合わせることを目指している。