このページは、リカレントニューラルネットワーク(RNN) と 系列・文脈 の扱いを、初学者向けに短く整理するノートです。時系列の背景は リカレントと系列モデル史、深層学習全体の座標は 深層学習モデル史 を参照してください。画像向けの畳み込みとの対比は 畳み込みと画像認識、後継の注意機構は Transformer と注意機構 を併せて読むと立体的になります。
なぜ RNN と呼ぶか(名前の由来)
RNN は Recurrent Neural Network(リカレント・ニューラル・ネットワーク)の頭字語です。系列向けの略称 というより、ループのあるニューラルネット という名前が本体です(系列は、その構造が向きやすいデータの型)。
| 語 | 英語 | 意味(この文脈) |
|---|---|---|
| Recurrent | recurrent | 繰り返す・戻る。隠れ状態 (h_{t-1}) などが次のステップの計算に ループで戻る から。 |
| Neural | neural | ニューロン風ユニット の層で構成されたネット(脳の完全模倣ではなく、結合した計算グラフのイメージ)。 |
| Network | network | それらが 網のように接続 されたモデル。 |
RNN と単純 RNN の呼び分け
| 呼び方 | 指すもの |
|---|---|
| 単純 RNN / 単純リカレント | ゲートなしの 基本形(単純リカレントと誤差逆伝播とは) |
| RNN(広い意味) | 単純 RNN + LSTM + GRU など、隠れ状態を時刻で更新する系 全体 |
日常会話の「RNN」は文脈によって LSTM なども含みます。このリポジトリでは 単純リカレント と RNN 全体 を分けて書くことがあります。
ざっくりいうと
- 系列(sequence):時刻や単語の順序など、前後の並び に意味があるデータ。音声波形、テキスト、センサの時系列など。
- リカレント(recurrent):現在の出力や隠れ状態が、直前の時刻の状態 に依存する接続。文脈を「記憶」しながら進むイメージです。
- 隠れ状態(hidden state):これまでの入力を圧縮した内部表現。時刻ごとに更新され、次の予測に使われます。
- LSTM / GRU:ゲートで情報の保持・忘却を制御し、長い系列 で学習が崩れにくくする改良型 RNN。
- seq2seq(系列から系列):入力系列を エンコーダ で読み、デコーダ が出力系列を生成する枠組み。機械翻訳の定番でした。
双方向 RNN(BiRNN) は過去と未来の両方の文脈を見ますが、言語生成の 推論 では因果的(左から右のみ)なモデルが使われることが多いです。
畳み込み・Transformer との違い(感覚)
| 観点 | CNN(典型) | RNN(典型) | Transformer(典型) |
|---|---|---|---|
| 得意な構造 | 空間的な近傍(画像) | 時間順 の文脈 | 離れた位置同士の関係 |
| 状態の持ち方 | 層ごとの特徴マップ | 隠れ状態 を時刻で更新 | 全位置への注意 |
| 並列化 | 畳み込みは並列しやすい | 時刻方向は 逐次 になりがち | 学習時は並列しやすい |
| 長い入力 | 受容野・階層で対応 | 勾配消失などの課題 | 計算・メモリが長さに敏感 |
どれか一つが常に最適、というわけではなく、タスクと制約(レイテンシ、データ量、説明責任)で選ばれます。
リカレントと系列モデルで何をしているか
たとえば「この英文の次の単語を当てる」問題では、単語を左から読み、これまでの文脈を隠れ状態に蓄えながら、次の単語の確率を出します。固定長の bag-of-words だけでは失われる 順序の情報 を、リカレント接続で扱う、というのが典型です。
- 系列を時刻 (t=1,2,\ldots) に分け、各時刻の入力ベクトル(単語の埋め込みなど)を用意する。
- RNN セル で隠れ状態 (h_t) を更新する((h_t) は (h_{t-1}) と現在入力に依存)。
- 必要なら LSTM / GRU のゲートで、長く保持すべき情報と捨てる情報を分ける。
- 各時刻または最終時刻から、分類・回帰・次トークン予測などの ヘッド へつなぐ。
- 損失(交差エントロピーなど)から BPTT で重みを更新する。
機械翻訳 では、エンコーダ RNN が入力文を表現し、デコーダ RNN が出力語を逐次生成する seq2seq が 2010 年代の標準でした(のちに注意・Transformer へ)。
学習フェーズと推論フェーズ
| 段階 | 役割 | 触るもの |
|---|---|---|
| 学習 | 系列全体(またはミニバッチ内の区間)で BPTT、ゲート付き RNN の重みを更新 | パディング、マスク、勾配クリッピング |
| 推論 | 隠れ状態を逐次更新しながら出力(ストリーミング可能) | 因果マスク、ビームサーチ(生成時) |
強みと限界(短く)
強み
- 可変長の系列 を、固定長ベクトル化だけに頼らず扱える。
- ストリーミング入力(音声のリアルタイム処理など)で、状態を更新しながら 推論しやすい。
- LSTM / GRU により、2010 年代の 音声・翻訳・テキスト で長く実績があった。
限界
- 長い系列では 勾配消失・爆発 が起きやすく、学習が不安定になり得る。
- 時刻方向の 並列化が難しく、大規模学習では Transformer に押される場面が多い。
- 双方向モデルと因果モデルの 使い分け を誤ると、推論時に未来情報が漏れる設計ミスが起きる。
よく混ざる用語(会話での補足)
順伝播と逆伝播
順伝播は入力から (h_t) と予測・損失までを 前から 計算する処理。逆伝播は損失から勾配を 逆方向 に求め、(W, U, b) を更新する処理(学習時のみ)。推論では順伝播だけ。表・勾配・BPTT との関係は 単純リカレントと誤差逆伝播とは の「順伝播と逆伝播(基本用語)」、深層学習全体の入口は 深層学習モデルとは の同節。
BPTT(時間方向への誤差逆伝播)
BPTT(Backpropagation Through Time)は、系列を 時間展開 した RNN に対する 誤差逆伝播 の呼び名です。Through Time は、勾配が ステップの並び方向((t=T \to 1))にも流れることを指します(「時間」= 単純リカレントと誤差逆伝播とは の「まず『時間』とは何を指すか」)。Truncated BPTT は、長い系列を区切って近似する実務的な妥協です。語源と誤差逆伝播との関係は BPTT の定着と勾配消失とは を参照してください。
seq2seq(系列から系列)とは
英語 sequence-to-sequence の略。入力も出力も順番の付いた並び で、長さがサンプルごとに違ってよい問題の型と、そのための エンコーダ+デコーダ 設計の名前です(翻訳・要約など)。
入力系列 ──→ [エンコーダ] ──→ 文脈の表現 ──→ [デコーダ] ──→ 出力系列
- データ … 入力列と出力列の ペア(翻訳なら言語 A 文 ↔ 言語 B 文)
- 損失 … 多くは デコーダ各ステップ の予測と正解トークンを比べる(単純リカレントと誤差逆伝播とは の「損失を付ける位置」)
- 詳細 … 双方向 RNN と seq2seq とは
エンコーダとデコーダ
エンコーダ は入力系列を読み込み、デコーダ はその表現をもとに出力系列を 1 トークンずつ 生成します。seq2seq では両方に RNN が使われることが多かったです。
CTC(Connectionist Temporal Classification)
音声のように、入力フレームと出力ラベルの アライメントが不明 な系列向けの学習手法です。RNN と組み合わせた音声認識で広く使われました。
因果マスク
デコーダが 未来のトークンを見ない ようにするマスクです。学習と推論の整合のために重要です。
関連
- 埋め込み・隠れ状態・学習と出力((x_t)/(h_t)、学習・生成)
- 事前学習とファインチューニング(大規模コーパス・次トークン・検索)
- リカレントと系列モデル(索引)
- リカレントと系列モデル史
- 深層学習モデル史
- 深層学習モデルとは
- 畳み込みと画像認識
- Transformer と注意機構
- 特徴量設計(概要)
- モデルとは