---
title: "RNN（再帰型ニューラルネットワーク）"
description: "RNNは、前時刻の隠れ状態を次時刻へ引き継ぎ、文章・音声・時系列の順序と依存関係を扱うニューラルネットワークです。時間方向に同じ重みを共有する仕組み、BPTTと長期依存の問題、LSTM・GRU・Transformerとの違いをG検定向けに整理します。"
last_modified_at: "2026-06-27"
canonical_url: "https://stemtazoo.github.io/gk/rnn/"
section: "gk"
---

## まず結論

* **RNNは時系列データを扱うためのニューラルネットワーク**
* **過去の情報を内部状態として保持** しながら処理する
* 長い系列では **勾配消失・勾配爆発** が起きやすい

---

## 直感的な説明

RNNは、

> 「前の結果を覚えながら、次を判断する仕組み」

です。

* 文章を前から順に読む
* 音声を時間順に聞く
* センサ値の変化を見る

といった、
**順序が意味を持つデータ** に向いています。

---

## 定義・仕組み

### 基本構造

RNNでは、同じネットワークを
**時刻ごとに繰り返し使う** のが特徴です。

* 入力：(x_t)
* 隠れ状態：(h_t)
* 出力：(y_t)

$$
h_t = f(Wx_t + Uh_{t-1} + b)
$$

各時刻で同じ重みを共有するため、系列長が変わっても同じ仕組みで処理できます。学習時にはネットワークを時間方向に展開し、誤差を過去へ伝える **BPTT（Backpropagation Through Time）** を使います。

---

### 内部状態（隠れ状態）

* 過去の情報を要約したもの
* 次の時刻の計算に引き継がれる

これにより、
**時間的な依存関係** を表現できます。

---

## いつ使う？（得意・不得意）

### 得意なこと

* 時系列データ解析
* 自然言語処理（文章・単語列）
* 音声認識

### 苦手なこと

* 長期依存関係の学習
* 並列計算がしにくい

> これが LSTM / GRU や Transformer につながります。

### RNN・LSTM・GRU・Transformerの違い

| モデル | 情報の扱い | 主な特徴 |
| --- | --- | --- |
| 単純RNN | 隠れ状態を順番に更新 | 長期依存で勾配消失が起きやすい |
| LSTM | セル状態と3種類のゲート | 長期情報を保持しやすい |
| GRU | 隠れ状態と2種類のゲート | LSTMより構造が単純 |
| Transformer | Attentionで系列全体を参照 | 並列計算しやすい |

---

## G検定ひっかけポイント

* ❌「RNNは過去の情報を使わない」→ **誤り**
* ❌「RNNは画像認識に向く」→ **誤り**
* ✅ 内部状態で過去情報を保持
* ✅ 時系列・系列データ向け
* ❌「各時刻で別々の重みを使う」→ **誤り**
* ❌「系列を完全に並列処理できる」→ 単純RNNは前時刻の状態に依存する

---

## まとめ（試験直前用）

* RNNは **時系列向けNN**
* 過去情報を内部状態として保持
* 勾配問題が弱点

👉 次は **勾配消失・勾配爆発** を詳しく見ていきます。
