このページは、双方向 RNN と seq2seq を、初学者向けに短く整理するノートです。時系列の背景は リカレントと系列モデル史 を参照してください。RNN 全体の入口は リカレントと系列モデルとは を参照してください。
2000〜2010 年代、双方向 RNN(BiRNN) が過去と未来の文脈を隠れ状態に取り込み、系列ラベリングやエンコーディングを強化しました。seq2seq と エンコーダ・デコーダ は、機械翻訳のように入力系列から出力系列を生成する問題を統一的に扱い、のちの 注意機構 や Transformer への橋渡しとなりました。
なぜ seq2seq と呼ぶか(名前の由来)
seq2seq は sequence-to-sequence(系列から系列)の略です。入りも出も系列 であるタスクの名前であり、単純 RNN や LSTM そのものの別名ではありません。中身は多くの場合 エンコーダ RNN + デコーダ RNN の設計パターンです。
| 語 | 意味 |
|---|---|
| sequence(入力) | 順番付きの 入力並び(例:英語文の単語列) |
| sequence(出力) | 順番付きの 出力並び(例:フランス語文の単語列) |
単純リカレント が RNN の 部品 なら、seq2seq はその部品を 2 本組み合わせたタスク全体の枠組み、と整理するとよいです。
ざっくりいうと
- BiRNN:順方向と逆方向の RNN を組み合わせ、各時刻で 両側の文脈 を見る。
- エンコーダ:入力系列を読み、固定長または系列の内部表現を作る。
- デコーダ:その表現から出力系列を 1 トークンずつ 生成する。
- seq2seq:エンコーダ+デコーダで「系列→系列」を学習する枠組み。
双方向 RNN と seq2seq で何をしているか
たとえば英語文をフランス語に翻訳する場合、エンコーダ BiRNN が英文全体の文脈を表現し、デコーダ RNN がフランス語語を逐次出力します(初期の seq2seq)。学習データは文ペア、損失は生成語の交差エントロピー、という流れが定番でした。
- エンコーダで入力系列を読み、各時刻または最終の文脈ベクトルを得る。
- デコーダの初期状態にエンコーダの情報を渡す(設計により異なる)。
- デコーダが出力語を1つずつ生成し、正解と比較して損失を計算する。
- BPTT でエンコーダ・デコーダを同時に学習する。
- 推論では ビームサーチ などでより良い出力列を探索する。
強みと限界(短く)
強み
- 機械翻訳・要約など、可変長の入出力 を一つの枠組みで扱えた。
- BiRNN は系列ラベリング(品詞タグ付けなど)で強い表現を与えた。
限界
- 長い入力を 1 ベクトルに押し込む ボトルネックがあり、注意機構で改善された。
- デコーダの逐次生成は推論の 並列化 を難しくする。
関連
- 双方向 RNN と seq2seq
- リカレントと系列モデル史
- リカレントと系列モデルとは(RNN の語源・seq2seq の概要)
- 単純リカレントと誤差逆伝播とは
- LSTM とゲーティング