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

①RNNは、時系列データを扱うことができるニューラルネットワークである。
時系列データとは、データの順序に意味があり時間に対し規則性を示すデータのこと。
音声や言語、動画などで見られる。
例)「先行するデータから次の言葉を予測する」「株の動きから株価を予測する」

通常のニューラルネットワークは、データが入力側から出力側へ向かって一方校に処理されるフィードフォワード(順伝播型)である。
フィードフォワードでは、情報の処理が時刻に関して独立して処理され、時間順序に関する情報が削られてしまうため、時系列データの処理には適していなかった。

これに対してRNNには「フィードバック」という仕組みが存在する。
フィードフォワードでは一方校的に独立的に情報を処理するが、RNNでは過去の隠れ層と現在の隠れ層の間に繋がり(情報の伝播)があるため、過去の情報に基づいて、次に来る情報が持つ重みを学習できる。
フィードバックループ」を用いて、前の時刻の情報を記録し、それを考慮しながら現時刻の情報を処理する。

RNNは、機械翻訳や文章生成、音声認識、画像脚注生成などに活用されている


②RNNは、長さがサンプルごとにバラバラであるような可変長データにも対応できる。
入力データと出力データの時系列長を固定しなくてもよいため、自由度の高い使い方ができる。
例)「The Sun is red」は入力時系列長4だが、和訳すると「太陽は赤」で出力時系列長3になるように、RNNでは入力と出力の間でデータの長さに縛りがない。


③RNNには「勾配消失問題」と「重み衝突問題」の2つの問題があり、「LSTM」によって対策されている。

勾配消失問題
RNNを時間方向に展開すると、時間ステップの分だけ非常に深い構造になるため、他の種類のニューラルネットワークよりも深刻な勾配消失が発生する。

重み衝突問題
時系列データを扱う上での特有の問題である。
RNNを時間方向に展開すると長い順伝播型モデルと見なせるため、誤差逆伝播を適用してモデルの最適化を行う。
RNNでのこの誤差逆伝播を「Back Propagation Through Time」と呼ぶ。
通常のニューラルネットワークでは、予測したいものと関係が深いデータが入力された場合は重みが大きくなり、関係が少ないデータが入力された場合は重みが小さくなるが、時系列データでは「今の時刻では関係性が低いが、将来の時刻では関係性が高い」入力を与えた場合に重みを小さくすべきか大きくすべきかという問題が発生する(=重み衝突問題)。
入力に関する場合は「入力重み衝突問題」
出力に関する場合は「出力重み衝突問題」と呼ばれ、学習が妨げられる。

LSTM
これらの問題点を解決するために、RNNの隠れ層の構造を変更する対策が取られたLSTMというRNNモデルが発表された。
「LSTMブロック」1つが、通常のニューラルネットワークの1つのユニットに対応しており、従来のRNNの隠れ層をLSTMブロックで置き換えて使用する。