リカレントと系列モデルとは

このページは、リカレントニューラルネットワーク(RNN)系列・文脈 の扱いを、初学者向けに短く整理するノートです。時系列の背景は リカレントと系列モデル史、深層学習全体の座標は 深層学習モデル史 を参照してください。画像向けの畳み込みとの対比は 畳み込みと画像認識、後継の注意機構は Transformer と注意機構 を併せて読むと立体的になります。

なぜ RNN と呼ぶか(名前の由来)

RNNRecurrent Neural Network(リカレント・ニューラル・ネットワーク)の頭字語です。系列向けの略称 というより、ループのあるニューラルネット という名前が本体です(系列は、その構造が向きやすいデータの型)。

英語 意味(この文脈)
Recurrent recurrent 繰り返す・戻る。隠れ状態 (h_{t-1}) などが次のステップの計算に ループで戻る から。
Neural neural ニューロン風ユニット の層で構成されたネット(脳の完全模倣ではなく、結合した計算グラフのイメージ)。
Network network それらが 網のように接続 されたモデル。

RNN と単純 RNN の呼び分け

呼び方 指すもの
単純 RNN / 単純リカレント ゲートなしの 基本形単純リカレントと誤差逆伝播とは
RNN(広い意味) 単純 RNN + LSTMGRU など、隠れ状態を時刻で更新する系 全体

日常会話の「RNN」は文脈によって LSTM なども含みます。このリポジトリでは 単純リカレントRNN 全体 を分けて書くことがあります。

ざっくりいうと

  • 系列(sequence):時刻や単語の順序など、前後の並び に意味があるデータ。音声波形、テキスト、センサの時系列など。
  • リカレント(recurrent):現在の出力や隠れ状態が、直前の時刻の状態 に依存する接続。文脈を「記憶」しながら進むイメージです。
  • 隠れ状態(hidden state):これまでの入力を圧縮した内部表現。時刻ごとに更新され、次の予測に使われます。
  • LSTM / GRU:ゲートで情報の保持・忘却を制御し、長い系列 で学習が崩れにくくする改良型 RNN。
  • seq2seq(系列から系列):入力系列を エンコーダ で読み、デコーダ が出力系列を生成する枠組み。機械翻訳の定番でした。

双方向 RNN(BiRNN) は過去と未来の両方の文脈を見ますが、言語生成の 推論 では因果的(左から右のみ)なモデルが使われることが多いです。

畳み込み・Transformer との違い(感覚)

観点 CNN(典型) RNN(典型) Transformer(典型)
得意な構造 空間的な近傍(画像) 時間順 の文脈 離れた位置同士の関係
状態の持ち方 層ごとの特徴マップ 隠れ状態 を時刻で更新 全位置への注意
並列化 畳み込みは並列しやすい 時刻方向は 逐次 になりがち 学習時は並列しやすい
長い入力 受容野・階層で対応 勾配消失などの課題 計算・メモリが長さに敏感

どれか一つが常に最適、というわけではなく、タスクと制約(レイテンシ、データ量、説明責任)で選ばれます。

リカレントと系列モデルで何をしているか

たとえば「この英文の次の単語を当てる」問題では、単語を左から読み、これまでの文脈を隠れ状態に蓄えながら、次の単語の確率を出します。固定長の bag-of-words だけでは失われる 順序の情報 を、リカレント接続で扱う、というのが典型です。

  1. 系列を時刻 (t=1,2,\ldots) に分け、各時刻の入力ベクトル(単語の埋め込みなど)を用意する。
  2. RNN セル で隠れ状態 (h_t) を更新する((h_t) は (h_{t-1}) と現在入力に依存)。
  3. 必要なら LSTM / GRU のゲートで、長く保持すべき情報と捨てる情報を分ける。
  4. 各時刻または最終時刻から、分類・回帰・次トークン予測などの ヘッド へつなぐ。
  5. 損失(交差エントロピーなど)から BPTT で重みを更新する。

機械翻訳 では、エンコーダ RNN が入力文を表現し、デコーダ RNN が出力語を逐次生成する seq2seq が 2010 年代の標準でした(のちに注意・Transformer へ)。

学習フェーズと推論フェーズ

段階 役割 触るもの
学習 系列全体(またはミニバッチ内の区間)で BPTT、ゲート付き RNN の重みを更新 パディング、マスク、勾配クリッピング
推論 隠れ状態を逐次更新しながら出力(ストリーミング可能) 因果マスク、ビームサーチ(生成時)

強みと限界(短く)

強み

  • 可変長の系列 を、固定長ベクトル化だけに頼らず扱える。
  • ストリーミング入力(音声のリアルタイム処理など)で、状態を更新しながら 推論しやすい。
  • LSTM / GRU により、2010 年代の 音声・翻訳・テキスト で長く実績があった。

限界

  • 長い系列では 勾配消失・爆発 が起きやすく、学習が不安定になり得る。
  • 時刻方向の 並列化が難しく、大規模学習では Transformer に押される場面が多い。
  • 双方向モデルと因果モデルの 使い分け を誤ると、推論時に未来情報が漏れる設計ミスが起きる。

よく混ざる用語(会話での補足)

順伝播と逆伝播

順伝播は入力から (h_t) と予測・損失までを 前から 計算する処理。逆伝播は損失から勾配を 逆方向 に求め、(W, U, b) を更新する処理(学習時のみ)。推論では順伝播だけ。表・勾配・BPTT との関係は 単純リカレントと誤差逆伝播とは の「順伝播と逆伝播(基本用語)」、深層学習全体の入口は 深層学習モデルとは の同節。

BPTT(時間方向への誤差逆伝播)

BPTTBackpropagation Through Time)は、系列を 時間展開 した RNN に対する 誤差逆伝播 の呼び名です。Through Time は、勾配が ステップの並び方向((t=T \to 1))にも流れることを指します(「時間」= 単純リカレントと誤差逆伝播とは の「まず『時間』とは何を指すか」)。Truncated BPTT は、長い系列を区切って近似する実務的な妥協です。語源と誤差逆伝播との関係は BPTT の定着と勾配消失とは を参照してください。

seq2seq(系列から系列)とは

英語 sequence-to-sequence の略。入力も出力も順番の付いた並び で、長さがサンプルごとに違ってよい問題の型と、そのための エンコーダ+デコーダ 設計の名前です(翻訳・要約など)。

入力系列 ──→ [エンコーダ] ──→ 文脈の表現 ──→ [デコーダ] ──→ 出力系列

エンコーダとデコーダ

エンコーダ は入力系列を読み込み、デコーダ はその表現をもとに出力系列を 1 トークンずつ 生成します。seq2seq では両方に RNN が使われることが多かったです。

CTC(Connectionist Temporal Classification)

音声のように、入力フレームと出力ラベルの アライメントが不明 な系列向けの学習手法です。RNN と組み合わせた音声認識で広く使われました。

因果マスク

デコーダが 未来のトークンを見ない ようにするマスクです。学習と推論の整合のために重要です。

関連