リカレントニューラルネットワーク(RNN)
リカレントニューラルネットワーク(RNN: Recurrent Neural Network、回帰型ニューラルネットワーク)は、文章や時系列データなど、連続的・順序を持つ情報を扱うことができるニューラルネットワークである。
従来のニューラルネットワークは、入力データが互いに独立していることを前提としていたため、文章の文脈や連続的な情報を学習することは困難だった。しかし、RNNは過去の情報を保持しながら現在および未来の入力に影響を与えることができるため、自然言語処理や時系列解析において注目を集めている。
RNNの構造と仕組み
ディープラーニングに用いられる深層ニューラルネットワーク(DNN)は、入力層から中間層を経て出力層にデータを順番に伝播させる構造である。DNNでは、一度処理された中間層の出力を再度同じ層に入力して再演算することはない。
一方、RNNは「入力層」「中間層」「出力層」の3層から成り立ち、中間層で得られた出力を再度自身の中間層に入力して再演算する特徴を持つ。ここでの肝は、同じ重みで,毎フレームの更新を行うことである。
ここで重要な役割を果たすのが 隠れ状態(hidden state)である。
隠れ状態とは、中間層がその時点までに処理した 「過去の情報を圧縮して保持したベクトル」 であり、RNN における記憶に相当する。
この仕組みにより、RNN は過去→現在→未来という時系列方向の情報を連続的に扱うことができる。

この図では、1つの中間層が「時刻 (t=1,2,3,...」ごとに複数存在しているように描かれているが、実際は 同じネットワーク・同じ重みパラメータを毎ステップで共有して使い回している 点が特徴である。
RNN の中で隠れ状態は、時間が進むごとに過去の情報を引き継ぎつつ更新されるため、
系列データの文脈や状態を保持し続ける中心的な役割を果たす。
RNNの学習
RNNは、通常のニューラルネットワークと同様に勾配降下法で学習される。ただし、中間層が自己再帰する構造のため、重みの微分計算には特殊な方法が用いられる。主に使われる手法として以下がある:
-
BPTT(Back Propagation Through Time):時間方向に沿った誤差逆伝播を行う手法。シンプルで広く使われている。
-
RTRL(Real Time Recurrent Learning):リアルタイムで重みを更新する手法。
RNNは、文章の文脈を理解したり、時系列データから未来を予測したりする能力を持つ。例えば、「今日は風が強いので洗濯物を乾かすときには気をつける必要がある。午後からは風が強く、雨も降りそうなので傘が必要だ。」という文章を処理する際、RNNは前の単語や文脈を記憶しているため、適切に次の単語や意味を予測できる。
RNNの欠点
RNNは多くの用途に適している一方、いくつかの欠点も存在する。
-
勾配消失問題(Vanishing Gradient Problem)
長期的な依存関係を学習する際に、逆伝播の過程で勾配が極端に小さくなり、初期の情報が反映されなくなる。 -
長期依存性の問題(Long-Term Dependencies Problem)
理論上は長期的な依存関係を学習可能だが、勾配消失や勾配爆発により、長いシーケンス間の関係を学習するのが困難である。 -
計算効率の問題
RNNは過去の情報を順番に処理するため、長いシーケンスでは計算時間が増大する。 -
並列処理の困難
各時刻の計算が前の結果に依存するため、GPUによる効率的な並列処理が難しい。
これらの問題を解決するために、LSTM(Long Short-Term Memory)やGRU(Gated Recurrent Unit)などの拡張RNNが用いられる。
RNNのメリットとデメリット
メリット
-
連続的・時系列データの処理が可能
-
過去の情報を保持して未来の予測に活かせる
-
文章や音声などの文脈情報を学習できる
デメリット
-
長期依存の学習が困難(勾配消失・爆発問題)
-
計算効率が低い
-
並列処理に不向き
-
長いシーケンスでは学習が不安定になりやすい
RNN・LSTM・GRUの違いと特徴
RNNの課題
RNN(Recurrent Neural Network)は、文章や時系列データなどの連続情報を扱うことができるニューラルネットワークである。RNNは過去の情報を保持しながら現在の入力を処理できるため、連続的なデータに適している。しかし、RNNには以下のような課題がある。
RNNは入力データを時系列に沿って順に処理するため、誤差逆伝播(BPTT)で過去の時刻に対して重みを更新する際、勾配が極端に小さくなることがある。この現象を勾配消失問題と呼ぶ。勾配がほぼゼロになると、過去の情報が反映されず、長期的依存関係の学習が困難になる。
勾配消失の原因には、従来の活性化関数であるシグモイド関数やtanh関数の微分値が1未満であることが挙げられる。多層・長期のデータに対して微分値を繰り返し乗算すると、勾配が指数的に小さくなるためである。
- 重み衝突問題
RNNでは、ある時刻の入力が将来の学習にとって重要かどうかは処理時点では判断できない。入力や出力の重みを最適に設定できない問題を重み衝突と呼ぶ。これにより、短期的な記憶は学習できても、長期的な記憶は保持できない。
LSTM(Long Short-Term Memory)
LSTMは、RNNの長期依存性の学習が困難であった課題を解決するために考案されたモデルである。LSTMでは、以下の仕組みによって勾配消失問題や重み衝突問題に対応している。
-
記憶セル(CECセル):過去の情報を保持し、長期的な記憶を可能にする。
-
ゲート機構(入力ゲート・出力ゲート・忘却ゲート):情報の取り込み、保持、削除を制御し、必要な情報のみを保持する。前の記憶(cell state)を忘却ゲートで調整し、新しい情報を入力ゲートで追加、次のステップへ渡す情報を出力ゲートで決定する。
-
覗き穴結合(ピープホール結合):ゲート機構がセル内の情報にアクセスできるようにすることで、より精密な記憶制御を実現。
LSTMのメリット
-
長期依存関係を学習できる。
-
不要な情報は忘却し、重要な情報のみを保持できる。
-
時系列データや文章などの長いシーケンスに強い。
LSTMのデメリット
-
計算量が多く、学習時間が長くなる。
-
ネットワーク構造が複雑で実装が難しい場合がある。
LSTMの活用例
-
自然言語処理(文章生成、文章分類、翻訳)
-
音声認識
-
株価予測やセンサーデータの時系列解析
-
動画や動作認識
GRU(Gated Recurrent Unit)
GRUは、LSTMの計算コストを抑えつつ同様の長期依存性を学習できるモデルである。GRUでは、LSTMの「記憶セル」を持たず、ゲート機構を統合することで構造を簡略化している。
-
更新ゲート:過去の情報をどの程度保持するかを決定。
-
リセットゲート:入力情報をどの程度新たに取り込むかを決定。
GRUのメリット
-
LSTMより計算量が少なく、高速に学習可能。
-
構造が簡素なため、実装が容易。
-
小規模データや短いシーケンスにも適する。
GRUのデメリット
-
LSTMほど細かく情報を制御できない。
-
複雑な長期依存性のデータでは性能がやや劣る場合がある。
GRUの活用例
-
自然言語処理(短文の分類や生成)
-
音声認識(短時間の音声処理)
-
IoTセンサーデータ解析
-
リアルタイム予測が求められるシステム
| モデル | 特徴 | メリット | デメリット | 活用例 | 直感的な比喩 |
|---|---|---|---|---|---|
| RNN | 過去の情報を保持して時系列データを処理 | 連続データの短期依存を学習可能 | 長期依存が苦手、勾配消失が起こりやすい | 簡単な時系列予測、短文処理 | 毎日日記を読んで“昨日のことくらいは覚えている人” |
| LSTM | 記憶セル + 各種ゲートで長期記憶を調整 | 長期依存学習が得意、不要情報を忘却できる | 構造が複雑、計算量が多い | NLP、音声認識、株価予測、動画解析 | 「必要なことはノートに書いて長く覚えておける人」 |
| GRU | ゲートのみで情報保持し、構造が簡素 | 計算効率が高い、少量データでも動く | LSTMほど精密な制御はできない | NLP短文、音声処理、IoT予測 | 「ノートは簡素だけど要点だけちゃんとメモできる人」 |
参考




