>>使うほど資産になる「JAPAN AI AGENT」の詳細はこちら<<

リカレントニューラルネットワーク(RNN)とは?特徴や仕組み、LSTM・GRUとの違い

リカレントニューラルネットワーク(RNN)とは?

RNN(Recurrent Neural Network)は、時系列データやテキストなどの順序を持つ情報を処理するために設計された、ディープラーニングの代表的なアーキテクチャです。ChatGPTをはじめとする大規模言語モデルの基盤技術であるTransformerが登場する以前、自然言語処理や音声認識の分野で中心的な役割を果たしてきました。

しかし、RNNとはそもそもどのような仕組みなのか、LSTMやGRUとはどう違うのか、現在のAI技術においてどのような位置づけにあるのか、といった疑問を持つ方も多いのではないでしょうか。

本記事では、RNNの定義や仕組みから、活用事例、課題、LSTMやGRUとの違い、そしてTransformerへの進化まで、JAPAN AIが網羅的に解説します。

RNN(リカレントニューラルネットワーク)とは?

RNNとは、Recurrent Neural Networkの略称で、日本語ではリカレントニューラルネットワーク、または再帰型ニューラルネットワークと呼ばれるディープラーニングモデルです。

通常のニューラルネットワーク(フィードフォワード型)では、入力データが入力層から出力層へ一方向に流れるだけで、各入力は独立して処理されます。一方で、RNNは隠れ層にループ構造(フィードバックループ)を持ち、あるタイムステップで処理した情報を次のタイムステップへ引き継ぐことができます。この仕組みにより、RNNは過去の入力情報を「記憶」として保持しながら、現在の入力を処理可能です。

たとえば、「私は東京に住んでいます」という文を処理する場合、「私は」「東京に」「住んでいます」という単語を順番に読み込みながら、前の単語の文脈を踏まえて次の単語の意味を解釈します。

なお、RNNの概念は1980年代の研究を背景に発展し、その後ジェフリー・エルマンが提案したElman Networkによって広く知られるようになりました。時系列データやシーケンシャルデータ(順序を持つデータ)の処理に特化しており、自然言語処理や音声認識、株価予測など幅広い分野で活用されてきた技術です。

AIの基本的な仕組みや歴史については、「AI(人工知能)とは?意味・仕組み・活用事例からできることまで解説」の記事で詳しく解説しています。

RNNの仕組み

RNNの仕組みの核心は、隠れ層に設けられたループ構造にあります。このループ構造によって、過去の情報を現在の処理に反映させる「時間方向の記憶」が実現されています。

RNNの内部構造は、入力層・隠れ層・出力層の3層で構成されます。通常のニューラルネットワークと異なるのは、隠れ層が自分自身へのフィードバック接続を持つ点です。具体的には、時刻tにおける隠れ層の状態h(t)は、現在の入力x(t)と、一つ前の時刻の隠れ状態h(t-1)の両方を受け取って計算されます。この計算には重みパラメータが用いられ、すべてのタイムステップで同じ重みが共有される「重み共有」という特性を持ちます。

この仕組みを理解するうえで重要なのが「時間展開(Unfolding)」という概念です。ループ構造を持つRNNを時間方向に展開すると、各タイムステップが一つの層に対応する深いネットワークとして表現できます。たとえば、10個の単語からなる文を処理する場合、RNNは10層の深いネットワークとして展開され、各層が一つの単語に対応します。この展開された構造を通じて、入力の順序情報が隠れ状態のリレーとして伝達されていくのです。

RNNの仕組みを把握することで、後述するLSTMやGRUがどのような課題を解決するために設計されたのかが明確に理解できます。

BPTT

RNNの学習には、BPTT(Backpropagation Through Time:通時的誤差逆伝播法)と呼ばれるアルゴリズムが用いられます。

通常のニューラルネットワークでは、誤差逆伝播法(バックプロパゲーション)によって出力層から入力層へ向かって勾配を計算し、重みを更新します。BPTTはこの手法を時間方向に拡張したもので、時間展開されたRNNの各タイムステップを一つの層とみなし、最後のタイムステップから最初のタイムステップへ向かって勾配を逆伝播させます。

BPTTの処理は、順伝播・誤差計算・逆伝播の3つのステップで構成されます。まず順伝播では、入力データを時系列順に処理し、各タイムステップの隠れ状態と出力を計算します。次に誤差計算では、各タイムステップの出力と正解データとの差分(損失)を算出します。

最後に逆伝播では、算出した誤差を時間を遡る方向に伝播させ、各タイムステップでの重みの勾配を求めます。この勾配をもとに重みパラメータを更新することで、RNNの仕組みにおける学習が進行します。

ただし、BPTTには長いシーケンスを扱う際に勾配が極端に小さくなる「勾配消失問題」が発生しやすいという課題があり、この点がRNNの実用上の大きな制約要因です。

RNNの活用事例

RNNは、時系列データやシーケンシャルデータを扱うさまざまな分野で活用されてきました。過去の情報を保持しながら順序を持つデータを処理できるRNNの特性は、テキストや音声、画像キャプションなど多様なタスクに適しています。以下では、RNNの代表的な活用事例を紹介します。

  • 文章の解析や生成
  • 機械翻訳
  • 音声認識
  • 画像解析

文章の解析や生成

RNNの活用事例として最も代表的なのが、文章の解析や自動生成といった自然言語処理タスクです。

テキストデータは単語が順番に並んだシーケンシャルデータであり、前後の文脈によって各単語の意味が変化します。RNNは隠れ状態を通じて前の単語の情報を保持できるため、文脈を考慮した処理が可能です。感情分析では、文章全体の流れを踏まえて「肯定的」「否定的」といった感情を判定します。文章生成では、直前までに生成した単語列を隠れ状態として保持し、次に出現する確率が最も高い単語を予測することで、自然な文章を一語ずつ生成していきます。

RNNの活用事例における文章処理は、文書要約やスパムメールの検出など、実務でも幅広く応用されてきた領域です。

自然言語処理の仕組みや最新動向については、「自然言語処理(NLP)とは?仕組み・活用事例・課題をわかりやすく解説」の記事もあわせてご覧ください。

機械翻訳

RNNの活用事例として、機械翻訳はEncoder-Decoderモデルの登場により飛躍的に精度が向上した分野です。

機械翻訳では、入力言語と出力言語でシーケンスの長さが異なるため、単純な一対一の変換では対応できません。この課題を解決したのが、2つのRNNを組み合わせたEncoder-Decoder(Seq2Seq)モデルです。たとえば、Encoder側のRNNが英語の入力文を一語ずつ読み込み、文全体の意味を一つの固定長ベクトル(文脈ベクトル)に圧縮するケースを考えます。Decoder側のRNNがこの文脈ベクトルを受け取り、たとえば日本語の出力言語の単語を一語ずつ生成していきます。

このEncoder-Decoderの枠組みは、RNNの活用事例の中でも特に影響力が大きく、後にAttention機構やTransformerモデルへと発展する基盤を築きました。

音声認識

音声データは時間軸に沿って変化する波形信号であり、RNNの時系列処理能力が音声認識タスクに適していることから、この分野でも広く活用されてきました。

音声認識では、音声波形を短い時間窓(フレーム)に分割し、各フレームから音響特徴量を抽出します。RNNはこれらの特徴量を時系列順に処理し、前後のフレームの文脈を考慮しながら、対応するテキスト(音素や単語)を予測します。特にLSTMを用いた双方向RNN(Bidirectional RNN)は、過去と未来の両方向の文脈を同時に参照できるため、音声認識の精度を大幅に向上させました。

なお、2015年にはGoogleがCTC(Connectionist Temporal Classification)で訓練したLSTMベースの音声認識システムをGoogle音声検索に導入し、従来の統計的手法を上回る認識精度を達成したことが報告されています。RNNの活用事例の中でも、音声認識は産業応用が最も進んだ領域の一つです。

出典:Google「Fast and Accurate Recurrent Neural Network Acoustic Models for Speech Recognition」

画像解析

RNNの活用事例は、テキストや音声だけでなく画像解析の分野にも広がっています

画像キャプション生成は、RNNとCNN(畳み込みニューラルネットワーク)を組み合わせた代表的なタスクです。まずCNNが入力画像から視覚的な特徴量を抽出し、その特徴量をRNNの初期状態として渡します。RNNはこの視覚情報をもとに、「犬が公園で走っている」のような説明文を一語ずつ生成していきます。Googleが2015年に発表した「Show and Tell」モデルは、この手法の先駆けとして知られています。

また、動画解析においても、各フレームの画像特徴をCNNで抽出し、フレーム間の時間的な変化をRNNで捉えることで、動画の内容理解や行動認識が可能です。画像と言語を橋渡しするRNNの活用事例は、マルチモーダルAIの基礎技術として現在も発展を続けています。

画像解析AIの仕組みや活用事例については、「AIによる画像解析とは?仕組みや活用事例を解説」の記事で詳しく解説しています。

RNNの課題

RNNは時系列データの処理に優れたモデルですが、実用上いくつかの技術的な課題を抱えています。特に長いシーケンスを扱う際に顕在化する問題が、LSTMやGRUといった改良モデルの開発を促す原動力となりました。RNNの課題の中でも特に重要な2つの問題を解説します。

  • 勾配消失問題
  • 長期依存性の問題

勾配消失問題

RNNの課題として最も深刻なのが、勾配消失問題です。BPTTによる学習では、誤差の勾配を時間方向に遡って伝播させます。このとき、各タイムステップで勾配に重みパラメータと活性化関数の微分値が掛け合わされます。

シグモイド関数の微分値は最大でも0.25、tanh関数の微分値は最大でも1であり、いずれも1未満の値を取るため、タイムステップ数が増えるほど勾配は指数関数的に小さくなります。たとえば、シグモイド関数の微分値の最大値である0.25が各ステップで掛け合わされる場合、わずか10ステップ遡るだけで勾配は約100万分の1にまで縮小します。

勾配が極端に小さくなると、初期のタイムステップに対応する重みがほとんど更新されなくなり、RNNの課題として学習が事実上停止してしまいます。反対に、勾配が指数関数的に大きくなる「勾配爆発問題」も発生し得ますが、こちらは勾配クリッピング(勾配の上限値を設定する手法)で比較的容易に対処できます。

長期依存性の問題

勾配消失問題に起因して、RNNの課題として長期依存性の問題が生じます。

長期依存性とは、シーケンスの中で離れた位置にある情報同士の関係を指します。たとえば、「私はフランスで生まれました。(中略)だから私は_語を話します。」という文では、空欄に「フランス」を入れるために、遠く離れた「フランスで生まれました」という情報を保持しておく必要があります。

勾配消失問題により、RNNは数十ステップ以上離れた過去の情報を学習に反映させることが困難です。隠れ状態は新しい入力によって上書きされ続けるため、古い情報は徐々に薄れていきます。RNNの課題であるこの長期依存性の問題を根本的に解決するために、記憶セルとゲート機構を備えたLSTMが開発されました。

RNNとLSTMの違い

RNNとLSTMの違いは、長期的な情報を保持・制御するためのゲート機構と記憶セルの有無にあります。LSTM(Long Short-Term Memory)は、1997年にSepp HochreiterとJürgen Schmidhuberによって提案された、RNNの勾配消失問題を解決するためのアーキテクチャです。

標準的なRNNでは、隠れ状態が唯一の情報伝達経路であり、新しい入力が加わるたびに過去の情報が上書きされていきます。LSTMはこの構造に「記憶セル(Cell State)」という独立した情報伝達経路を追加しました。記憶セルはコンベアベルトのように情報をほぼそのまま次のタイムステップへ運搬でき、必要な情報を長期間保持することが可能です。

この記憶セルへの情報の書き込み・読み出し・削除を制御するのが、入力ゲート・出力ゲート・忘却ゲートの3つのゲート機構です。オリジナルのLSTM(1997年)は入力ゲートと出力ゲートの2つで構成されていましたが、2000年にGersらが忘却ゲートを追加したことで、現在広く使われている3ゲート構成が確立されました。

各ゲートはシグモイド関数を用いて0から1の値を出力し、情報の通過量を連続的に調整します。RNNとLSTMの違いを理解するうえで、この3つのゲートの役割を把握することが重要です。

  • 忘却ゲート
  • 入力ゲート
  • 出力ゲート

忘却ゲート

忘却ゲート(Forget Gate)は、記憶セルからどの情報を削除するかを決定するゲートです。

前のタイムステップの隠れ状態h(t-1)と現在の入力x(t)を受け取り、シグモイド関数を通じて0から1の値を出力します。この値が1に近ければ「その情報を保持する」、0に近ければ「その情報を忘れる」ことを意味します。たとえば文章処理において、主語が変わった場合に以前の主語に関する情報を忘却し、新しい主語の情報を受け入れる準備をする役割を担います。

RNNとLSTMの違いにおいて、忘却ゲートは不要な情報を能動的に削除できる点で、標準的なRNNにはない重要な機能です。

入力ゲート

入力ゲート(Input Gate)は、新しい情報のうちどの部分を記憶セルに追加するかを制御するゲートです。

入力ゲートの処理は2段階で行われます。まず、シグモイド関数によって「どの値を更新するか」を決定するフィルタを生成します。次に、tanh関数によって記憶セルに追加する候補となる新しい情報ベクトルを作成します。この2つの出力を要素ごとに掛け合わせることで、必要な情報だけが選択的に記憶セルへ書き込まれます。

RNNとLSTMの違いとして、入力ゲートは新しい情報の取捨選択を精密に行える点が特徴的です。標準的なRNNでは入力がそのまま隠れ状態に反映されるのに対し、LSTMでは入力ゲートが「何を記憶すべきか」を学習によって判断します。

出力ゲート

出力ゲート(Output Gate)は、記憶セルに蓄積された情報のうちどの部分を隠れ状態として出力するかを決定するゲートです。

記憶セルの内容をtanh関数に通して-1から1の範囲に正規化し、出力ゲートのシグモイド出力と掛け合わせることで、最終的な隠れ状態h(t)が生成されます。記憶セルには多くの情報が蓄積されていますが、現在のタスクに必要な情報だけを選択的に出力することで、効率的な情報利用が実現されます。

RNNとLSTMの違いを総括すると、LSTMは3つのゲート機構と記憶セルにより「何を忘れ、何を記憶し、何を出力するか」を学習によって最適化できる点が、標準的なRNNとの根本的な差異です。

出典:Hochreiter & Schmidhuber「Long Short-Term Memory」

RNNとGRUの違い

RNNとGRUの違いは、GRUがLSTMのゲート機構を簡略化しつつ、長期依存性の問題を効率的に解決している点にあります。GRU(Gated Recurrent Unit:ゲート付き回帰型ユニット)は、2014年にKyunghyun Choらによって提案されたRNNの改良モデルです。

現在広く使われているLSTMでは、忘却ゲート・入力ゲート・出力ゲートの3つのゲート機構と記憶セルを持つのに対し、GRUは更新ゲート(Update Gate)とリセットゲート(Reset Gate)の2つのゲートのみで構成されます。更新ゲートはLSTMの忘却ゲートと入力ゲートの機能を統合したもので、過去の情報をどの程度保持し、新しい情報をどの程度取り入れるかを一つのゲートで制御します。リセットゲートは、過去の隠れ状態のうちどの部分を無視するかを決定し、新しい候補状態の計算に影響を与えます。

また、GRUはLSTMのような独立した記憶セルを持たず、隠れ状態のみで情報を伝達します。この構造の簡略化により、RNNとGRUの違いとして、GRUはLSTMよりもパラメータ数が少なく、計算効率が高いという利点があります。学習速度が速く、データ量が限られる場合にも扱いやすい場合があります。

以下の表は、RNN・LSTM・GRUの特徴を比較したものです。

項目RNNLSTMGRU
ゲート数なし3つ(忘却・入力・出力)2つ(更新・リセット)
記憶セルなしありなし
パラメータ数少ない多い中程度
計算コスト低い高い中程度
長期依存性への対応困難優れている優れている
提案年1986年1997年2014年

多くのベンチマークにおいてGRUとLSTMの性能差は小さく、タスクやデータの特性に応じて使い分けることが推奨されます。RNNとGRUの違いを理解したうえで、計算リソースやデータ量に応じた適切なモデル選択を行うことが、実務での成果につながります。

出典:Cho et al.「Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation」

RNNからTransformerへの進化

RNNからTransformerへの進化は、自然言語処理の歴史における最大の転換点の一つです。2017年にAshish Vaswaniらが発表した論文「Attention Is All You Need」で提案されたTransformerは、RNNが抱えていた根本的な課題を克服し、現在のLLM(大規模言語モデル)の基盤アーキテクチャとして広く採用されています。

RNNは入力を一つずつ順番に処理する逐次的な構造を持つため、長いシーケンスの処理に時間がかかり、GPU上での並列計算が困難でした。Transformerは自己注意機構(Self-Attention)を導入することで、シーケンス内のすべての位置間の関係を一度に計算できるようにしました。これにより、並列処理が可能となり、学習速度が飛躍的に向上しています。

また、RNNでは情報が隠れ状態のリレーを通じて伝達されるため、離れた位置の情報ほど劣化しやすいという問題がありました。Transformerの自己注意機構では、シーケンス内の任意の2つの位置間の関連度を直接計算するため、距離に関係なく情報を参照できます。GPTやBERTをはじめとする現在の主要なLLMは、すべてこのTransformerアーキテクチャを基盤としています。

RNNからTransformerへの進化は、逐次処理から並列処理へ、局所的な文脈理解から大域的な文脈理解へという、パラダイムシフトを象徴しています。

Transformerの仕組みやChatGPTとの関係については、「ChatGPTの仕組みとは?Transformer・学習プロセス・推論の流れをわかりやすく解説」の記事で詳しく解説しています。

出典:Vaswani et al.「Attention Is All You Need」

Mamba/SSMの台頭

RNNからTransformerへの進化の先に、Mamba(State Space Model)という新たなアーキテクチャが注目を集めています

Transformerの自己注意機構はシーケンス長の2乗に比例する計算量を必要とするため、長いシーケンスを処理する際に計算コストが急激に増大するという課題があります。2023年12月にカーネギーメロン大学のAlbert Guとプリンストン大学のTri Daoが発表したMambaは、状態空間モデル(SSM)に「選択的メカニズム」を導入することで、この課題に対処しました。

Mambaの最大の特徴は、シーケンス長に対して線形時間で処理が完了する点です。Transformerが長いシーケンスで計算量が爆発的に増加するのに対し、Mambaはシーケンス長が2倍になっても計算量はおよそ2倍にしか増えません。さらに興味深いのは、MambaがRNNの思想を現代的に再解釈したモデルである点です。SSMを離散化するとRNNと同等の逐次処理が可能となり、学習時は畳み込み的に並列処理し、推論時はRNN的に効率よく動作するという、両方の利点を兼ね備えています。

RNNからTransformerへの進化、そしてMamba/SSMの台頭という流れは、シーケンスモデリングの技術が今なお急速に発展し続けていることを示しています。

出典:Gu & Dao「Mamba: Linear-Time Sequence Modeling with Selective State Spaces」

RNNに関するよくある質問

RNNは何の略ですか?

RNNは「Recurrent Neural Network」の略で、日本語では「リカレントニューラルネットワーク」または「回帰型ニューラルネットワーク」と呼ばれます。時系列データやシーケンシャルデータの処理に特化したディープラーニングモデルです。

RNNとLSTMの違いは何ですか?

RNNは長期的な依存関係の学習が苦手で、勾配消失問題が発生しやすいモデルです。LSTMは記憶セルと3つのゲート機構(忘却ゲート・入力ゲート・出力ゲート)を備えることで、長期記憶を保持できるよう改良されたRNNの発展型です。

RNNは現在も使われていますか?

RNN単体の利用は減少傾向にありますが、LSTMやGRUなどの発展型は時系列予測や音声認識の分野で現役です。また、RNNの思想はMamba/SSMなど最新のアーキテクチャにも通じる部分があり、シーケンスモデリングの基礎として重要な位置づけを維持しています。

RNNを理解してディープラーニングの基礎を固めよう

RNNは、時系列データやシーケンシャルデータを処理するためのディープラーニングの基盤技術です。本記事では、RNNの定義と仕組み、BPTTによる学習アルゴリズム、文章解析や機械翻訳、音声認識、画像解析といった活用事例、そして勾配消失問題や長期依存性の課題を解説しました。

これらの課題を解決するために開発されたLSTMは、記憶セルと3つのゲート機構によって長期記憶の保持を実現し、GRUはゲート構造を簡略化して計算効率を高めました。さらに、2017年に登場したTransformerは自己注意機構による並列処理を可能にし、現在のLLMの基盤となっています。最新のMamba/SSMは、RNNの逐次処理の思想とTransformerの並列処理の利点を融合させた次世代アーキテクチャとして注目されています。

RNNからLSTM、GRU、Transformer、そしてMamba/SSMへと続く技術の系譜を理解することは、現在のAI技術の全体像を把握するうえで欠かせません。ディープラーニングの基礎を固める第一歩として、本記事で解説した各モデルの特徴と違いを整理し、自身の学習や業務に活かしていただければ幸いです。