LoginSignup
1
4

More than 3 years have passed since last update.

回帰結合型ニューラルネットワーク(RNN)について (E資格対策)

Last updated at Posted at 2020-04-07

RNNについて。

RNNとは

RNNには

再帰型ニューラルネットワーク
回帰結合型ニューラルネットワーク

の2種類あります。RNNと表記されたときは主に後者でを指します。

再帰型ニューラルネットワークとは

木構造のNNです。
英語ではRecursive neural networkといいます。

例:文脈のポジティブネガティブ判定
Recursivenrt.png

教師強制・回帰結合型ニューラルネットワークとは

教師強制とは教師データを次の入力データに入れる手法です。
https://qiita.com/20731057hh/items/2427c237fd2871202ea0

で分かりやすい説明があります。

回帰結合型ニューラルネットワークとは、出力が入力に戻るループ構造のネットワークです。
英語ではRecurrent neural networkといい略称はRNNです。
下図でいう左側に当たります。

Recurrent_neural_network_unfold.svg.png

引用:https://www.wikiwand.com/ja/%E5%9B%9E%E5%B8%B0%E5%9E%8B%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF

Back Propagation Though Time(BPTT)

ではこの構造で誤差逆伝播法はできるのでしょうか、できます。
その手法をBack Propagation Though Time(BPTT)と呼びます。

Recurrent_neural_network_unfold.svg.png

引用:https://www.wikiwand.com/ja/%E5%9B%9E%E5%B8%B0%E5%9E%8B%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF

先ほど用いた図の右側に該当します。時系列データ$x$を$x_{t-1}$,$x_{t}$,$x_{t+1}$のように分解すれば巨大なニューラルネットワークととらえられ、ループがなくなります。
なので正解データに対し出力がどれぐらい異なるか調べられ、学習ができます。

双方向RNN

過去から未来へのRNN+未来から過去へのRNNの2つを用意して両方から出力を予測する手法です。

1_6QnPUSv_t9BY9Fv8_aLb-Q.png

引用:https://towardsdatascience.com/understanding-bidirectional-rnn-in-pytorch-5bd25a5dd66

長期依存性の課題

RNNにはいくつか問題点があります。

・ネットワークが大きくなりすぎる(対策;データをある程度の長さで打ち切る)
・最初の情報が消える
・勾配が消える、発散

スキップ接続

そこで接続を隣より前の出力に接続し、より前の情報を保持します。
dilated-rnn-12-638.jpg

引用:https://www.slideshare.net/naotomoriyama/dilated-rnn

接続の削除

接続の削除は短いリンクを削除し、パラメータを削って学習速度を上げた手法。
主に隣接するリンクを削除します。

LSTM

情報を保持できない問題を忘却ゲート、入出力ゲート、メモリを搭載し、解決した手法。
lstm.png

それぞれ以下の役割を持っています。

lstmkaisetu.png

ここE検定にとても出るらしいです。

GRU

メモリセルをなくして忘却ゲートと入力ゲートを合体させたモデル。

grun.png

勾配クリッピング

LSTMは勾配消失問題に対応できましたが、爆発問題には対応できませんでした。そこで勾配に対して一定の制約値を以内に収まるよう調節し、勾配爆発に対応しました。
これを勾配クリッピングといいます。

深層回帰結合型ニューラルネットワーク

RNNの状態を複数の層に分解する手法です。
deeplearning-10-27-638.jpg

引用:https://www.slideshare.net/hironokawashima/deeplearning-10

Encorder-DecorderとSeq2Seq

入力系列と出力系列で別のRNNを構築する手法。

Encorder:入力を中間表現に変換
Decorder:中間表現から出力に変換

Seq2Seqは入力系列と出力系列が可変長でもよい手法です。

ed.png

Attention

時間方向にも重みを用意し、情報の取捨選択をやりやすくした手法です、これにより過去の情報も参照できるようになります。

attentino.png

参考文献
https://qiita.com/20731057hh/items/2427c237fd2871202ea0

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4