RNNとは

アールエヌエヌrecurrent neural network略語 RNN別名 リカレントニューラルネットワーク、再帰型ニューラルネットワーク

1行定義

RNNとは、過去の時刻の情報を内部に保ち、次の時刻の計算に使うことで、時系列データの前後関係を扱えるようにしたニューラルネットワークのことです。

くわしく

RNN(リカレントニューラルネットワーク)は、文章、音声、センサーの記録のように、順序に意味がある時系列データを扱うためのニューラルネットワークです。

しくみ

通常のニューラルネットワークは、入力ごとに独立して計算します。RNNは、各時刻の隠れ層の状態を次の時刻へ持ち越し、新しい入力と合わせて計算します。この帰還する経路によって、それまでの入力の要約を「記憶」として保ちながら処理を進められます。隠れ層の出力を戻す形をエルマンネットワーク、出力層の出力を戻す形をジョルダンネットワークと呼びます。

RNNは、すべての時刻で同じ重みを使い回します。そのため、系列の長さが変わってもパラメータ数は変わらず、長さの異なるデータを扱えます。

学習方法

RNNを時刻ごとに横へ展開すると、時刻の数だけ層を重ねた深いネットワークと見なせます。この展開した形に誤差逆伝播法を適用する方法を、BPTT(Backpropagation Through Time)といいます。

弱点

BPTTでは、時刻をさかのぼるたびに勾配が掛け合わされます。そのため、勾配が急速に小さくなる勾配消失や、逆に大きくなりすぎる勾配爆発が起きやすくなります。勾配消失が起きると、遠い過去の情報を学習に反映できません。勾配爆発には、勾配の大きさに上限を設ける勾配クリッピングが使われます。

発展

長い期間の依存関係を学べるように、ゲートで情報の流れを制御するLSTMやGRUが考案されました。前後両方向から系列を読む双方向RNNや、入力系列を別の系列に変換するSeq2Seqも、RNNを土台にしています。ただし、時刻の順に1つずつ計算するため並列化しにくく、自然言語処理の多くの課題では、現在はTransformerが主流です。

覚え方

「前の時刻の自分からメモを受け取って、次の自分へ渡す」と覚えます。

G検定での出題

隠れ層の状態を次の時刻へ渡す帰還構造、BPTTによる学習、長い系列で起きる勾配消失・勾配爆発と、それを補うLSTMやGRUとの関係が問われます。

シラバスでは「リカレントニューラルネットワーク(RNN)」と表記されています。

混同しやすい用語

違いを表で比べる:CNN・RNNとTransformer、RNNとLSTM

◯×チェック

  1. RNNでは、各時刻の計算に使う重みが時刻ごとに異なるため、系列が長いほどパラメータ数が増える。

    答えを見る

    答え × 誤り

    RNNはすべての時刻で同じ重みを使い回します。そのため、系列の長さが変わってもパラメータ数は変わりません。

  2. RNNは、長さの異なる系列を入力として扱える。

    答えを見る

    答え ◯ 正しい

    同じ計算を時刻ごとに繰り返すだけなので、系列の長さを固定する必要がありません。文章や音声のように長さがそろわないデータに向きます。

  3. 単純なRNNは、BPTTで時刻をさかのぼるたびに勾配が掛け合わされるため、遠い過去の入力との関係を学習しにくい。

    答えを見る

    答え ◯ 正しい

    勾配が急速に小さくなる勾配消失が起き、離れた時刻まで学習の信号が届かなくなるためです。LSTMやGRUはゲート機構でこの弱点を補います。

練習問題

RNNの問題(14問)
  1. 勾配爆発の症状と対策
  2. LSTMとGRUのゲート機構
  3. エルマン型とジョルダン型RNN
  4. 双方向RNNの適用条件
  5. RNN層のパラメータ数
  6. BPTTの逆伝播の進め方
  7. 教師強制と推論時のずれ
  8. RNNの入出力の対応形式
  9. 双方向RNNの内部構造
  10. BPTTの打ち切りと学習範囲
  11. RNNの隠れ状態の順伝播計算
  12. Self-Attentionの計算量
  13. 推論時の生成手順の比較
  14. Seq2Seqの出力長の決まり方

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

出典と作成について

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

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

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

改訂履歴

表示設定

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