1. 定義と概要
双方向RNN(Bidirectional RNN)とは、同一の入力系列を2方向から処理し、その結果を組み合わせるニューラルネットワークの構造です。「BiRNN」と略されます。1997年、Schuster 氏と Paliwal 氏によって提案されました。
具体的には、先頭から末尾へ処理する順方向RNN(系列を先頭から末尾へ順番に処理するRNN)と、末尾から先頭へ処理する逆方向RNN(系列を末尾から先頭へ逆順に処理するRNN)を独立に用意します。各時刻ではそれぞれの隠れ状態(ネットワークが直前までの情報を覚えておくための内部の値)を結合(2つの隠れ状態を1つのベクトルにつなげて扱う処理)し、出力へ渡します。
具体例を挙げると、「バンク」という語が「銀行」を指すか「土手」を指すかは、後に続く「お金を下ろした」のような語句で初めて確定します。このように、文中の意味の曖昧さを前後双方向の文脈から解消したい場面で使われる構造です。
通常のRNN は、過去から現在までの情報だけをもとに出力を決めます。しかし文章の意味は、後に続く語句によって確定する場合があり、過去方向の情報だけでは文脈を十分に捉えきれません。そこで1997年、Schuster 氏と Paliwal 氏は、同一の入力系列を順方向RNN と逆方向RNN の2つで同時に処理し、両方向の情報を組み合わせる双方向RNN を提案しました。
2. 試験対策ポイント
構造の柱になるのは、同一の入力系列に対して順方向RNN と逆方向RNN を独立に用意し、各時刻の隠れ状態を結合して出力層へ渡す点です。過去の情報しか使えない単方向RNN と、未来の情報も同時に使える双方向RNN との分かれ目にあたる箇所でもあります。
後ろの文脈を使うと精度が上がる理由も、あわせて整理しておきたいところです。「バンク」のように前後どちらか一方の情報だけでは意味が確定しない語句を、双方向の文脈から解消できる点が双方向RNN の強みです。この性質から、文中の各単語に品詞タグを付与するタスクや、固有表現抽出(文中から人名・地名・組織名などの固有名詞を見つけ出すタスク)、機械翻訳のように系列全体を見渡すタスクに向いています。
制約としては、逆方向RNN の計算に系列の末尾までの入力がすべて揃っている必要があり、系列全体を読み終えるまで出力を確定できない点が挙げられます。この性質のため、音声認識のリアルタイム字幕表示のような逐次的な即時応答が求められる場面には向かず、双方向RNN は系列全体があらかじめ揃っているバッチ処理向きの構造です。
順方向・逆方向の2つのRNN を同時に持つ分、パラメータ(モデル内部で学習によって調整される数値)の数や計算量が単方向RNN のおよそ2倍になる点も、あわせて見ておきたい制約です。LSTM・GRU と組み合わせた双方向LSTM(双方向RNN の考え方を LSTM に適用した構造)としても使われており、LSTM・GRU 自体の仕組みは別のテーマとして扱われます。
3. 関連概念との比較・相違点
双方向RNN の位置づけは、単方向RNN と BERT の両方と見比べるとつかみやすくなります。3つを、使える文脈と双方向性の仕組みという軸で並べると次のとおりです。
| 構造 | 使える文脈 | 双方向性の仕組み |
|---|---|---|
| 単方向RNN | 過去から現在までの情報のみ | 双方向性を持たない |
| 双方向RNN | 前後双方向の文脈。ただし系列全体が揃うまで出力は確定できない | 順方向RNN と逆方向RNN の隠れ状態を結合する |
| BERT | 前後双方向の文脈 | Self-Attention で系列全体を一度に参照し、再帰構造は持たない |
単方向RNN との最大の違いは、使える文脈の範囲とリアルタイム性のトレードオフです。単方向RNN は過去の情報だけで逐次出力できるためリアルタイム処理に向いていますが、双方向RNN は未来の情報も使える一方、系列全体が揃うまで出力を確定できずリアルタイム性では劣ります。
たとえば、音声認識の字幕をその場で表示するように、入力が届いた端から出力を返したい場面では単方向RNN が選ばれます。反対に、双方向RNN が選択肢に入るのは、録音済みの音声データや書き終えた文章のように系列全体があらかじめ手元にそろっている場面です。
BERT との違いは、双方向性を実現する仕組みそのものにあります。双方向RNN は、順方向RNN と逆方向RNN という2つの逐次的なRNN の隠れ状態を結合する仕組みです。これに対し BERT の双方向性は、Self-Attention(文中の単語同士の関連度を一度に計算して文脈を捉える仕組み)によって系列全体を一度に参照するもので、RNN のような再帰構造は持ちません。
双方向RNN が逐次的な結合を積み重ねて双方向性をつくる構造であるのに対し、BERT は系列全体を一度に見渡す設計そのものに双方向性が組み込まれている点が、両者の設計思想の違いにあたります。仕組みの混同は取り違えやすい点で、BERT 自体の解説は別のテーマとして扱われます。
4. ビジネス・実務での活用シナリオ
自然言語処理(人間の言葉をコンピューターで処理する技術の総称)では、文中の各単語に品詞タグを付与するタスクや、人名・地名・組織名などの固有表現を抽出するタスクで双方向RNN が使われてきました。前後双方向の文脈を利用することで、単語単体では判断しにくい品詞や固有表現の種別を、周囲の語句から補って判定の精度を高められます。
機械翻訳の分野でも、翻訳元となる文全体を双方向に読み込む構成が使われてきました。文頭の訳語を選ぶ際に文末の情報まで反映できるため、文全体の文脈を踏まえた自然な訳文の生成につながります。
音声認識でも、録音済みの音声データをまとめて処理するオフライン処理では、双方向の文脈を使って認識精度を高められます。一方、字幕をその場で生成するリアルタイム処理のように即時応答が求められる用途では、系列全体が揃うのを待てないため、単方向の構造を使うのが基本です。
5. 要点まとめ
- 双方向RNN は、順方向RNN と逆方向RNN を組み合わせ、各時点の出力に両方向の文脈を反映させる構造です。
- 単方向RNN は過去の情報だけでリアルタイムに出力できるのに対し、双方向RNN は未来の情報も使える分、系列全体が揃うまで出力を確定できないというトレードオフの関係にあります。
- BERT の双方向性は Self-Attention によるもので、双方向RNN の順方向・逆方向RNN の結合とは仕組みが異なります。
6. 確認問題
問1双方向RNN は、順方向RNN と逆方向RNN という2つの独立した RNN の隠れ状態を結合し、各時点の出力に反映させる構造を持つ。
解答・解説をみる
○ 正しい
この命題が正しいのは、双方向RNN が2つの独立したRNN を並行して走らせ、それぞれの隠れ状態を1つにまとめてから出力層へ渡すという二段構えの構造を取っているためです。独立した2系統を同時に持つ分だけパラメータ数も単方向RNN のおよそ2倍に増える点が、この構造から生じる帰結にあたります。
問2双方向RNN は逆方向RNN の計算のために系列全体の入力があらかじめ揃っている必要があり、リアルタイムの逐次処理には向かない。
解答・解説をみる
○ 正しい
この命題が正しいのは、逆方向RNN が系列を末尾から先頭へ逆順にたどる仕組み上、最後の入力が届くまで自分の隠れ状態を計算できないためです。録音済みの音声データのようにあらかじめ系列全体がそろっているオフライン処理では制約になりませんが、入力が届いた端から出力したいストリーミング処理では、この構造そのものがボトルネックになります。
問3BERT の双方向性は、双方向RNN と同じく順方向・逆方向の2つの RNN の隠れ状態を結合することで実現されている。
解答・解説をみる
× 誤り
BERT の双方向性は Self-Attention によって系列全体を一度に参照する仕組みで実現されており、RNN のような再帰構造は持ちません。正しくは、順方向・逆方向の RNN の隠れ状態を結合する仕組みは双方向RNN 側の特徴です。両者の仕組みの違いは混同しやすいところです。

