双方向RNNとは

そうほうこうアールエヌエヌbidirectional recurrent neural network略語 BiRNN別名 Bidirectional RNN、双方向リカレントニューラルネットワーク

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(Bidirectional RNN)」と表記されています。

◯×チェック

  1. 双方向RNNのある時刻の出力は、その時刻より前の入力だけでなく、後ろの入力の影響も受ける。

    答えを見る

    答え ◯ 正しい

    末尾から読んできた逆方向のRNNの情報を、各時刻で順方向の情報と組み合わせるためです。文中の単語の意味を前後から判断する課題に向きます。

  2. Bahdanauらの注意機構付きの機械翻訳モデルでは、入力文を読み込むエンコーダに双方向RNNが使われた。

    答えを見る

    答え ◯ 正しい

    入力文の各単語について、前後両方の文脈を含んだベクトルを作るためです。翻訳元の文は最初からすべてそろっているので、後ろからも読めます。

  3. 双方向RNNを使えば、文章を先頭から1語ずつ生成するときにも、まだ生成していない後ろの単語を参考にできる。

    答えを見る

    答え × 誤り

    生成の途中では、後ろの単語はまだ存在しません。双方向RNNは系列全体がそろっていることが前提なので、生成を担うデコーダには一方向のモデルを使います。

練習問題

双方向RNNの問題(2問)
  1. 双方向RNNの適用条件
  2. 双方向RNNの内部構造

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術22

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習