こんな方におすすめ
深層学習・ディープラーニングでも必要な「リカレントニューラルネットワーク (Recurrent Neural Network : RNN)」の基本的な内容について知りたい
この記事では、リカレントニューラルネットワーク (Recurrent Neural Network : RNN)の基礎概念のまとめを行う.
「これから、機械学習やディープラーニングの学習をしたいから、
その基本となるリカレントニューラルネットワーク (Recurrent Neural Network : RNN)の理解を深めたい」
という方に向けた記事.
キーワード・知ってると理解がしやすい
- ニューラルネットワーク
- word2vec / Embedding
Index
- Index
- リカレントニューラルネットワーク (Recurrent Neural Network : RNN)とは
- レイヤ視点でのRNN その1
- ノード視点でのRNN
- レイヤ視点でのRNN その2
- RNNの利点
- まとめ
- 実装編
- 参考
リカレントニューラルネットワーク (Recurrent Neural Network : RNN)とは
リカレントニューラルネットワーク (Recurrent Neural Network : RNN)とは、DNNのアーキテクチャの一つ.
通常のDNNのアーキテクチャでは、フィードフォワードと呼ばれる、流れが一方向のネットワークが使用される.
RNNの特徴としては、リカレント(再帰的)の名称の通り、処理の流れが循環するようなアーキテクチャ.
歴史
1986年のデビッド・ラメルハートの研究で発案された模様.
レイヤ視点でのRNN その1
レイヤ視点で RNN を確認する.
まずは、単層をみてみる.
通常のネットワーク(フィードフォワードネット)では、入力 に対して出力は の1つのみ.
しかし、リカレントニューラルネットワークは出力を再度、入力として加え、今までの情報を記憶しながら学習する.
さらに、レイヤの構造を詳細に見る.
ループ展開するとこのようになる.
このようにループを展開することで、右方向に伸びる長いニューラルネットワークと理解することができる.
入力にある は時刻 における入力を表現している.
ノード視点でのRNN
では、RNN はレイヤ内で、どのような計算をしているのか.
上の図からわかるように、入力は と で、出力は .
計算式は以下のようになる.
入力
- : 時刻t の入力
- : 時刻t-1 の中間出力
出力
- : 時刻t の中間出力
- : 時刻t の中間出力
パラメータ
- : 前時刻の中間出力h_t-1を次時刻の中間出力h_tに変換する重みパラメータ
- : 入力xを中間出力hに変換する重みパラメータ
- : バイアスパラメータ
以上の計算をノード視点で考える.
ノード視点で考えることで以下の理解も深まる.
- 逆伝播の計算
LSTM や GRU等のRNN拡張モデルの構造
LSTM
レイヤ視点でのRNN その2
RNN レイヤもひとつのレイヤにすぎないので、他のレイヤと組み合わせてネットワーク全体を構築する.
word2vec のような「言語モデル」を、例としてネットワーク全体を構築する.
構成されているレイヤは以下.
- Embedding レイヤ
- RNN レイヤ
- 全結合層(Affine レイヤ)
- Softmax レイヤ
上図のように、複数のレイヤと一緒にネットワーク全体のアーキテクチャを構築する.
RNNの利点
このようなアーキテクチャにする利点は、時系列データ / 自然言語データの学習に効果的.
時系列データや自然言語データのタスクでは、ある時刻の変数を前時刻の情報から推測する.
しかし、通常の DNN のネットワークアーキテクチャだと、その系列情報までうまく学習することができない.
RNN のように過去の出力も入力の一部として取り込むことで、結果的に系列情報を学習するような仕組みをつくることができる.
まとめ
実装編
- RNN #実装編
参考
- Learning representations by back-propagating errors
書籍
- ゼロから作るDeep Learning 2
- 5 リカレントニューラルネットワーク