1行定義
双方向RNNとは、系列を先頭から読むRNNと末尾から読むRNNを組み合わせ、各時刻で前後両方の文脈を使えるようにしたモデルのことです。
くわしく
双方向RNN(Bidirectional RNN)は、系列を前から読むRNNと後ろから読むRNNを組み合わせたモデルです。1997年にSchusterとPaliwalが提案しました。
なぜ後ろからも読むのか
普通のRNNは、系列を先頭から順に読みます。そのため、ある時刻の隠れ状態には、それより前の情報しか入りません。しかし、文の中の単語の意味は、後ろに続く語で決まることがよくあります。「はし」が橋か箸かは、続く「を渡る」「で食べる」を見るとわかります。
しくみ
双方向RNNは、2つの独立したRNNを持ちます。
- 順方向のRNN:先頭から末尾へ読み、各時刻までの前の文脈をまとめます。
- 逆方向のRNN:末尾から先頭へ読み、各時刻より後ろの文脈をまとめます。
各時刻では、2つの隠れ状態をつなげるなどして出力に使います。中のRNNにLSTMを使ったものは双方向LSTMと呼ばれ、音声認識や固有表現抽出などで広く使われました。
使える場面と使えない場面
逆方向に読むには、系列の終わりまでの入力がそろっている必要があります。文書の分類や、翻訳元の文の読み込みのように、入力が最初からすべてあるタスクに向きます。Seq2Seqに注意機構を組み込んだBahdanauらの翻訳モデルでも、入力文を読むエンコーダに双方向RNNが使われました。
一方、話している途中で文字を確定させる音声認識や、文章を1語ずつ生成するデコーダでは、後ろの入力がまだないため、そのままでは使えません。
ほかのモデルとの関係
ELMoは、順方向と逆方向のLSTM言語モデルを組み合わせ、文脈に応じた単語の表現を作ります。BERTも「双方向」と呼ばれますが、RNNではなく、TransformerのSelf-Attentionで前後の文脈を同時に見ます。
覚え方
「前から読む人と後ろから読む人が、メモを持ち寄る」と覚えます。
G検定での出題
出題のされ方
順方向と逆方向の2つのRNNを組み合わせる構造、系列全体がそろってから処理する前提、そのためリアルタイム処理や1語ずつの文章生成には向かない点が問われます。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
双方向RNNのある時刻の出力は、その時刻より前の入力だけでなく、後ろの入力の影響も受ける。
答えを見る
答え ◯ 正しい
末尾から読んできた逆方向のRNNの情報を、各時刻で順方向の情報と組み合わせるためです。文中の単語の意味を前後から判断する課題に向きます。
-
Bahdanauらの注意機構付きの機械翻訳モデルでは、入力文を読み込むエンコーダに双方向RNNが使われた。
答えを見る
答え ◯ 正しい
入力文の各単語について、前後両方の文脈を含んだベクトルを作るためです。翻訳元の文は最初からすべてそろっているので、後ろからも読めます。
-
双方向RNNを使えば、文章を先頭から1語ずつ生成するときにも、まだ生成していない後ろの単語を参考にできる。
答えを見る
答え × 誤り
生成の途中では、後ろの単語はまだ存在しません。双方向RNNは系列全体がそろっていることが前提なので、生成を担うデコーダには一方向のモデルを使います。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目22 回帰結合層)
- Mike Schuster, Kuldip K. Paliwal, Bidirectional Recurrent Neural Networks, IEEE Transactions on Signal Processing 45(11), 2673–2681 (1997)
- Alex Graves, Jürgen Schmidhuber, Framewise phoneme classification with bidirectional LSTM and other neural network architectures, Neural Networks 18(5–6), 602–610 (2005)
- Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio, Neural Machine Translation by Jointly Learning to Align and Translate (2014)
- Matthew E. Peters et al., Deep contextualized word representations (2018)