1行定義
RNNとは、過去の時刻の情報を内部に保ち、次の時刻の計算に使うことで、時系列データの前後関係を扱えるようにしたニューラルネットワークのことです。
くわしく
RNN(リカレントニューラルネットワーク)は、文章、音声、センサーの記録のように、順序に意味がある時系列データを扱うためのニューラルネットワークです。
しくみ
通常のニューラルネットワークは、入力ごとに独立して計算します。RNNは、各時刻の隠れ層の状態を次の時刻へ持ち越し、新しい入力と合わせて計算します。この帰還する経路によって、それまでの入力の要約を「記憶」として保ちながら処理を進められます。隠れ層の出力を戻す形をエルマンネットワーク、出力層の出力を戻す形をジョルダンネットワークと呼びます。
RNNは、すべての時刻で同じ重みを使い回します。そのため、系列の長さが変わってもパラメータ数は変わらず、長さの異なるデータを扱えます。
学習方法
RNNを時刻ごとに横へ展開すると、時刻の数だけ層を重ねた深いネットワークと見なせます。この展開した形に誤差逆伝播法を適用する方法を、BPTT(Backpropagation Through Time)といいます。
弱点
BPTTでは、時刻をさかのぼるたびに勾配が掛け合わされます。そのため、勾配が急速に小さくなる勾配消失や、逆に大きくなりすぎる勾配爆発が起きやすくなります。勾配消失が起きると、遠い過去の情報を学習に反映できません。勾配爆発には、勾配の大きさに上限を設ける勾配クリッピングが使われます。
発展
長い期間の依存関係を学べるように、ゲートで情報の流れを制御するLSTMやGRUが考案されました。前後両方向から系列を読む双方向RNNや、入力系列を別の系列に変換するSeq2Seqも、RNNを土台にしています。ただし、時刻の順に1つずつ計算するため並列化しにくく、自然言語処理の多くの課題では、現在はTransformerが主流です。
覚え方
「前の時刻の自分からメモを受け取って、次の自分へ渡す」と覚えます。
G検定での出題
出題のされ方
隠れ層の状態を次の時刻へ渡す帰還構造、BPTTによる学習、長い系列で起きる勾配消失・勾配爆発と、それを補うLSTMやGRUとの関係が問われます。
混同しやすい用語
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
RNNでは、各時刻の計算に使う重みが時刻ごとに異なるため、系列が長いほどパラメータ数が増える。
答えを見る
答え × 誤り
RNNはすべての時刻で同じ重みを使い回します。そのため、系列の長さが変わってもパラメータ数は変わりません。
-
RNNは、長さの異なる系列を入力として扱える。
答えを見る
答え ◯ 正しい
同じ計算を時刻ごとに繰り返すだけなので、系列の長さを固定する必要がありません。文章や音声のように長さがそろわないデータに向きます。
-
単純なRNNは、BPTTで時刻をさかのぼるたびに勾配が掛け合わされるため、遠い過去の入力との関係を学習しにくい。
答えを見る
答え ◯ 正しい
勾配が急速に小さくなる勾配消失が起き、離れた時刻まで学習の信号が届かなくなるためです。LSTMやGRUはゲート機構でこの弱点を補います。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目22 回帰結合層)
- Jeffrey L. Elman, Finding Structure in Time, Cognitive Science 14(2), 179–211 (1990)
- Yoshua Bengio, Patrice Simard, Paolo Frasconi, Learning long-term dependencies with gradient descent is difficult, IEEE Transactions on Neural Networks 5(2), 157–166 (1994)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (10 Sequence Modeling: Recurrent and Recursive Nets)