AI資格ドリル
資格を選ぶ

用語比較

単方向RNNと双方向RNNの違い|見える文脈と使える課題(G検定)

単方向RNNは系列を先頭から末尾へ一方向に読み、双方向RNNは先頭から読む層と末尾から読む層を組み合わせます。違いは、各時刻の判断に右側(あとに来る入力)の文脈を使えるかどうかです。

G検定の再帰型ニューラルネットワークでは、次の語を予測する課題は単方向、文全体が手元にある課題は双方向と使い分けます。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

単方向RNNと双方向RNNの要点

単方向RNN

系列を時刻順に1方向だけ読む。各時刻の隠れ状態は、その時刻までの入力で決まる。過去の語すべてから次の語を予測する言語モデルのように、左側の文脈だけを条件にしたい課題に合う。

双方向RNN

同じ入力に対して、逆向きに連ねた2つの単方向RNN層を使い、対応する出力を連結する。各時刻の隠れ状態は、その時刻の前後の入力で同時に決まる。系列の符号化や、両側の文脈が与えられた観測の推定に有用。1997年のSchusterとPaliwalの技法に帰される。

違いを表で確認

比較軸単方向RNN双方向RNN
読む向き先頭から末尾への1方向先頭から末尾と、末尾から先頭の2方向
各時刻で見える入力その時刻までの入力その時刻の前後すべての入力
出力の次元隠れ単位数 h順方向と逆方向を連結するので 2h(各向きが h のとき)
持つ重み1組順方向用と逆方向用の2組
向く課題次の語の予測(言語モデル)のように、あとの入力を使えない課題品詞の判定、文の符号化、隠した語の推定のように、前後の文脈を使える課題
選択肢で探すキーワード過去の文脈、次の語を予測、逐次生成前後の文脈、Bidirectional、順方向と逆方向を連結、全文が手元にある

どこで迷っているかを切り分ける

01

双方向のほうが常に高精度だと思っている人

双方向RNNは、予測する時点で右側の入力まで必要です。次の語を予測する課題では、右側の語はまだ存在しないので使えません。Dive into Deep Learningは、言語モデルでは左側の文脈だけを条件にしたいので、単方向が適切だと述べています。

02

品詞の判定のような課題で、どちらを選ぶか迷う人

同じ書籍は、品詞の判定のように、各時刻の予測を左右両方の文脈で条件づけてよい課題があると述べています。文全体が手元にあるなら、後ろの語も手がかりにできる双方向が候補になります。

03

LSTMやGRUとの関係が混ざる人

LSTMやGRUは、RNNの内部の部品(ゲートで記憶を制御する仕組み)の違いです。双方向かどうかは、読む向きの違いで、別の軸です。双方向のLSTMのように、組み合わせて使えます。

具体例で使い分ける

例 1

4語の文で、見える入力を数える

4つの入力 x1, x2, x3, x4 が並ぶ系列で、3番目の時刻の隠れ状態が、どの入力に依存するかを数えます(4語の文は説明用の自作です)。

  • 単方向RNNは、先頭から順に読むので、3番目の隠れ状態は x1, x2, x3 の3つに依存します。x4 は見えません。
  • 双方向RNNの順方向の層は、同じく x1, x2, x3 に依存します。
  • 逆方向の層は、x4 から順に読むので、3番目の時刻では x4, x3 に依存します。2つの層の出力を連結すると、3番目の時刻の出力は x1〜x4 のすべてに依存します。

結論: 同じ3番目の時刻でも、単方向は3つ、双方向は4つ全部の入力を反映します。

例 2

出力の次元を数える

隠れ単位数を各向き 64 にしたRNNで、1時刻の出力の次元を比べます(数値は説明用の自作です)。

  • 単方向RNNの1時刻の出力は、64次元です。
  • 双方向RNNは、順方向の64次元と逆方向の64次元を連結するので、128次元です。
  • 次の層は、この128次元を入力として受け取るため、その分の重みが必要です。

結論: 双方向にすると、出力の次元は 2h になり、重みも順方向用と逆方向用の2組を持ちます。

例 3

課題から選ぶ

「前の語すべてから次の語を1語ずつ生成する」課題と、「文全体の各語の品詞をまとめて判定する」課題を考えます。

  • 次の語を生成する課題では、予測の時点で右側の語は存在しないので、左側の文脈だけを使う単方向が合います。
  • 品詞の判定では、文全体が手元にあり、右側の語も手がかりにできるので、双方向が候補になります。

結論: 右側の入力を使えるかどうかで、単方向か双方向かを決めます。

問題文から答えを選ぶ手順

  1. 1

    右側の入力が手元にあるかを確認する

    予測の時点で、あとに来る入力まで揃っているかを確認します。次の語の予測のように、まだ存在しないなら単方向です。

  2. 2

    課題の種類を確認する

    系列の符号化や品詞の判定のように、前後の文脈が役に立つ課題なら、双方向が候補です。

  3. 3

    出力の次元と重みを確認する

    双方向は、順方向と逆方向の出力を連結するので、各向きが h なら 2h になります。

  4. 4

    学習の費用を確認する

    Dive into Deep Learningは、双方向RNNは勾配の連鎖が長く、学習の費用が非常に大きいと述べています。費用との釣り合いも考えます。

試験での見分け方

  • 1次の語を予測する課題のように、あとの入力を使えない課題は、単方向RNN。
  • 2各時刻で前後の文脈を使える課題(符号化・品詞の判定など)は、双方向RNNが候補。
  • 3双方向RNNは、順方向と逆方向の2つのRNN層の出力を連結する。
  • 4各向きの隠れ単位数が h なら、双方向RNNの出力は 2h 次元。
  • 5双方向かどうかは、LSTMやGRUといった内部の部品の違いとは別の軸。
  • 6双方向RNNは精度が高い上位版ではなく、次の語の予測には使えない。

誤答しやすい選択肢

双方向RNNは、単方向RNNの上位互換だと考える

修正: 右側の入力が必要なので、次の語を予測する課題には使えません。課題によって選びます。

双方向RNNを、LSTMやGRUと同じ並びの別種のモデルだと考える

修正: LSTMやGRUは内部の部品の違いで、双方向は読む向きの違いです。双方向のLSTMのように組み合わせられます。

双方向RNNの出力の次元は、単方向と同じだと考える

修正: 順方向と逆方向の隠れ状態を連結するので、各向きが h なら 2h になります。

双方向RNNは、読む向きが違うだけで学習の費用は同じだと考える

修正: 重みは順方向用と逆方向用の2組になります。Dive into Deep Learningは、勾配の連鎖が長く、学習の費用が非常に大きいと述べています。

確認問題

Q1各時刻の隠れ状態が、その時刻の前後の入力で同時に決まるRNNは?

答え: 双方向RNN

双方向RNNは、逆向きに連ねた2つのRNN層の出力を連結するので、前後両方の入力が反映されます。

Q2過去の語すべてから次の語を予測する言語モデルに向くのは、単方向と双方向のどちら?

答え: 単方向RNN

予測の時点で、右側の語はまだ存在しません。左側の文脈だけを条件にする単方向が合います。

Q3各向きの隠れ単位数が 64 の双方向RNNの、1時刻の出力は何次元?

答え: 128次元

順方向の64次元と逆方向の64次元を連結するので、2×64=128です。

Q44つの入力のうち、3番目の時刻の単方向RNNの隠れ状態が依存する入力は?

答え: x1, x2, x3

単方向は、その時刻までの入力で決まります。x4 は3番目の時刻では見えません。

到達チェック

  • 単方向RNNと双方向RNNで、各時刻に見える入力が違うと説明できる
  • 双方向RNNの出力が、順方向と逆方向の連結で 2h になると説明できる
  • 次の語の予測に双方向RNNを使えない理由を説明できる
  • LSTMやGRUの違いと、双方向かどうかの違いが別の軸だと説明できる

同じ資格で次に知りたいこと

よくある質問

Q単方向RNNと双方向RNNは何が違う?

A

単方向RNNは系列を1方向に読み、各時刻の隠れ状態はその時刻までの入力で決まります。双方向RNNは逆向きの2つのRNN層の出力を連結し、前後の入力で決まります。

Q双方向RNNが次の語の予測に向かないのはなぜ?

A

予測の時点で右側の語は存在しないからです。Dive into Deep Learningは、言語モデルでは左側の文脈だけを条件にしたいので、単方向が適切だと述べています。

QPyTorchで双方向RNNにするには?

A

torch.nn.RNN の公式文書は、bidirectional 引数を True にすると双方向のRNNになると述べています。既定は False です。

QG検定の出題範囲に含まれる?

A

JDLAの公式シラバスでは、再帰型ニューラルネットワークのキーワードに、双方向RNN(Bidirectional RNN)が並んでいます。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)