はじめに
G検定の学習を進める中で、時系列データを扱う「RNN(再帰型ニューラルネットワーク)」とその派生モデルについて整理しました。
G検定では、各モデルの名称と「内部のパーツ名(ゲートなど)」の結びつきがよく問われます。備忘録も兼ねて、試験対策として暗記すべきポイントを絞ってまとめました。これからG検定を受験される方の参考になれば幸いです!
1. RNN(再帰型ニューラルネットワーク)の基本
RNN(Recurrent Neural Network)は、音声、テキスト、株価などの時系列データ(時間とともに変化するデータ)を扱うことを得意とするニューラルネットワークです。
最大の特徴:回帰結合層
過去の情報を記憶しておくために、中間層の出力を自分自身の次の時刻の入力として使うというループ構造を持っています。この自分自身に戻ってくる結合を「回帰結合層」と呼びます。
画像は、RNNの「回帰結合層」の動きを、時間を横軸に展開して表したものです。
仕組みのポイントは以下の3点です。
- 2つの入力: ある時刻 ($t$) において、新しいデータ ($x_t$) だけでなく、1つ前の時刻から引き継がれた過去の記憶 ($h_{t-1}$) も一緒に入力されます。
- 情報の統合: 中間層(再帰層)の中で、過去の文脈と現在の新しい情報が掛け合わされ、情報が更新されます。
- 未来へのループ: 更新された情報は、現在の予測結果 ($y_t$) として上に出力されると同時に、次の時刻 ($t+1$) の記憶 ($h_t$) として横の層へバトンタッチされます。
このように、「過去の記憶をループさせて次の自分自身に渡していく」 ことで、前後の文脈やデータの流れを理解できるのが回帰結合層の最大の特徴です。
初期の代表的なネットワーク
-
エルマンネットワーク:中間層の出力を入力側(コンテキスト層)に戻す構造。

- 何を思い出す?: 「さっき考えていた途中経過(中間層)」
- イメージ: 料理中に「さっきまでどういう手順で進めてたっけ?」と思い出しながら次の工程に入る感じ。
-
- 何を思い出す?: 「さっき出した答え(出力層)」
- イメージ: 料理の最後に「さっき作った味付けはこうだったから、次はこうしよう」と、出来栄え(結果)を参考にする感じ。
2つの一番の違いは、「何を思い出して、次のヒントにするか」 です。
2. RNNの学習手法と「2つの大きな壁」
RNNの学習には、時間軸を展開して通常の誤差逆伝播法(BP)を適用する手法が使われます。
-
BPTT (BackPropagation Through Time)
時間を遡って誤差を伝播させる、RNNにおける誤差逆伝播法のこと。
BPTTが抱える課題
BPTTを使って時間を長く遡る(長い時系列データを扱う)と、誤差がネットワークを伝わるうちに極端に小さくなったり大きくなったりしてしまい、学習がうまく進まなくなるという重大な問題が発生します。
- 勾配消失問題:誤差が0に近づき、学習が進まなくなる。(※RNNにおいて特に起こりやすい)
- 勾配爆発問題:誤差が無限大に発散し、学習が破綻する。
3. 課題を解決する発展モデル(試験頻出!)
上記の「勾配消失問題」を解決し、長期的な記憶を保持できるように改良されたのが以下のモデルです。
① LSTM (Long Short-Term Memory)
RNNの課題を克服した、現在の時系列処理のベースとなる強力なモデルです。
-
CEC (Constant Error Carousel)
LSTMの中核となるメモリセル(記憶専用の小部屋)。誤差をそのまま留めておく役割を持ち、勾配消失を防ぎます。 -
3つのゲート機構
情報の「入力・出力・忘却」をコントロールするバルブのような役割を果たします。- 入力ゲート (Input Gate):新しい情報をCECにどれくらい記憶させるか。
- 忘却ゲート (Forget Gate):CECの過去の記憶をどれくらい忘れる(リセットする)か。
- 出力ゲート (Output Gate):CECの記憶をどれくらい次の層へ出力するか。
LSTMの処理は、この 「情報のコンベアベルト(メモリセル)」の上を情報が流れていく中で、3つのゲート機構(バルブ)が情報の出し入れを厳密に管理している、とイメージすると非常にわかりやすいです。
具体的には、1つのブロック(時刻 t)の中で、以下の処理が同時に行われています:
- 忘却ゲート(左のバルブ): コンベア上の古い情報から、現在の入力にとって不要なものを捨てます(忘れます)。
- 入力ゲート(中央の追加バルブ): 新しく入ってきた情報から、長期的に保持すべき重要なものをコンベアに追加します(覚えます)。
- 出力ゲート(右のバルブ): コンベア上の長期記憶に基づいて、現在の予測結果(隠れ状態 $h_t$)を出力し、次の短期記憶とします。
このように、メモリセルが情報を長期間保持し、ゲート機構がそれを調整することで、RNNが抱えていた勾配消失問題を解決し、長い時系列データを扱えるようになります。
② GRU (Gated Recurrent Unit)
LSTMは強力ですが計算量が多いため、LSTMの構造を簡略化し、計算コストを下げつつ同等の性能を目指したモデルです。
-
2つのゲート機構(※CECは持っていません)
- リセットゲート:過去の情報をどれくらい無視するか。
- 更新ゲート:過去の情報をどれくらい保持し、新しい情報をどれくらい取り入れるか(LSTMの忘却ゲートと入力ゲートを統合したような役割)。
最大のポイントは、LSTMにあった 「長期記憶の専用ルート(CEC)」がなくなり、記憶のルートが1本(隠れ状態 $h_t$ のみ)にまとまっている点です。
具体的な処理は、以下の2つのゲート(バルブ)によってシンプルに行われます。
-
リセットゲート
- 過去の記憶(前の隠れ状態 $h_{t-1}$)と現在の入力($x_t$)を混ぜ合わせる際、**「過去の情報をどれくらい無視(リセット)して新しい情報の候補を作るか」**を決定します。
-
更新ゲート
- LSTMの「忘却ゲート」と「入力ゲート」の役割を1つにまとめた非常に効率的なゲートです。
- 「過去の記憶をそのまま維持する割合」 と、「新しく作った情報の候補で上書き(更新)する割合」 のシーソーのようなバランスを一括で決定し、最終的な現在の出力(新しい隠れ状態 $h_t$)を完成させます。
まずは処理の複雑な計算式よりも、「GRU=LSTMの簡略化」「CECを持たない」「リセットゲート・更新ゲートの2つで処理する」 というキーワードのセットを確実におさえておくと良さそうです。
4. その他の派生モデル
双方向RNN (Bidirectional RNN)
通常のRNNは「過去から未来」へ一方向にしか情報を処理しませんが、文章の翻訳などでは「未来の単語」が過去の単語の意味に影響を与えることがあります。
過去から未来への学習に加えて、未来から過去への学習も行い、両方の情報を使って出力を予測します。文脈をより正確に捉えることができるため、自然言語処理などで活躍します。
具体的な処理は、以下の流れで行われます。
- 順方向の処理(青色の線):時系列データを最初から順番に読み込み、「過去から未来への記憶(順方向隠れ状態 $h$)」を伝えていきます。
- 逆方向の処理(赤色の線):同じデータを最後から逆向きに読み込み、「未来から過去への記憶(逆方向隠れ状態 $h'$)」を伝えていきます。
- 情報の統合(拡大図):ある時刻($t$)において、その時点までの「過去の記憶($h_t$)」と、その時点以降の「未来の記憶($h'_t$)」を 統合(結合) し、最終的な出力(予測結果 $y_t$)を作ります。
画像にある「空欄埋め」の例が非常にわかりやすいです。
- 空欄を予測する際、「私は」という 過去の文脈 だけでなく、後ろにある「が好きです」という 未来の文脈 も同時にヒントとして使うことで、より正確な答え(音楽など)を導き出せます。
💡 まとめ
キーワードの紐付けリストです。
| キーワード | 結びつく重要ワード・特徴 |
|---|---|
| BPTT | RNNの誤差逆伝播法 / 長く遡ると勾配消失が起きる |
| LSTM | CEC / 3つのゲート(忘却・入力・出力) / 勾配消失の解決 |
| GRU | LSTMの簡略化 / 2つのゲート(リセット・更新) |
| 双方向RNN | 過去と未来の両方から文脈を処理する |
おわりに
今回は、時系列データの処理モデル「RNN」とその派生モデルについてまとめました。
RNNから始まり、その課題を解決したLSTMやGRU、そして文脈をより深く理解する双方向RNNまで、それぞれのモデルがどのような仕組みで「記憶」を扱っているか、イメージがつかめたかなと思います。




