再帰型ニューラルネットワークによる系列データ解析
RNN
再帰型ニューラルネットワーク(Recurrent Neural Network; RNN)は、系列データの解析を得意とするニューラルネットワークの一種である。系列データは連続した値で記録されたデータである。時系列データのほかに、医療機器の診察データや音声データなどがあげられる。このような系列データをコンピュータ上で扱うには、次のようなことを考慮する必要がある。
- 系列データを任意の長さで処理できること。
- 系列データの順序を維持できること。
- 系列データを長期間の記憶を保持できること。
- 系列データモデルのパラメーターを全期間を通して共有できること。
RNN はこれらの特徴を持つデータの解析に有効である。RNN は状態(時間)を保持でき、そのネットワーク構造を時間軸方向に展開できる。RNN の中間層は、入力層から情報を受け取り、演算を行い、その結果を出力層に伝播するとともに、同じ情報を次の状態の自分自身(中間層)にも伝播する。これによって、状態 t の中間層は、状態 t – 1 の中間層の情報を保持できるようになる。
再帰型ニューラルネットワークの構造
深層ニューラルネットワーク(DNN)は、入力層から入力されたデータを、中間層 1、中間層 2、・・・、出力層へと層の順序にしたがってデータを伝播している。(一般的なニューラルネットワークならば)中間層 1 の演算結果をもう一度自分自身(中間層 1)に代入して再演算することはない。これに対して、(単層の)再帰型ニューラルネットワーク(RNN)は入力層、1 層の中間層、出力層の 3 層からなるニューラルネットワークである。RNN は、DNN とは異なり、中間層の演算結果を出力層に出力すると同時に、同じ演算結果をもう一度自分自身(中間層)に入力して再演算を行うニューラルネットワークである。中間層の演算結果をもう一度自分自身に代入することを繰り返すと、同じ中間層が複数回使われることになり、見かけ上、複数の中間層からなるニューラルネットワークに見える。
RNN の中間層の出力を、もう一度中間層に代入するとき、現在は、何回目の代入であるのか明確にするために、状態(時間)軸を用いる必要がある。例えば、ある状態 st-1 における中間層の出力結果をもう一度中間層に代入したあとの状態は、以前の状態から +1 単位進んだことから(+1 回の代入が行われたことから)、これを状態 st という。このように、各状態 s1, s2, ..., st において、同じ RNN が使われていることから、RNN は次のように、状態の数分だけ描くことができる。
状態 st-1 の中間層の出力値が、状態 st の中間層の入力値となっていることから、上の図を、状態軸(時間軸)上に展開して図示することができる。
このように、RNN のネットワーク構造は、畳み込んだ形で表現される場合と、展開された形で表現される場合がある。両者とも同じ意味を表している。また、中間層にあるユニットを省略して表現する場合もある。
再帰型ニューラルネットワークの出力
再帰型ニューラルネットワークの出力は、入力があるたびに出力するだけでなく、すべて入力し終えてから出力を行うこともできる。この組み合わせは以下のように、one to one、one to many、many to one、many to many などケースが想定される(参照)。
References
- MIT 6.S191: Sequence Modeling with Neural Networks. 2018. YouTube
- The Unreasonable Effectiveness of Recurrent Neural Networks. 2015. Andrej Karpathy blog