https://www.simulationroom999.com/blog/jdla-deep-learning-for-general-2020-1/
はじめに
ディープラーニングのもう一つの有名どころのモデルとしてRNNについて記載する。
RNN(リカレントニューラルネットワーク)
時系列データ
時間軸に対して何かパターンを持っているデータは時間軸に沿って入力される。
時間情報を反映できるような仕組みとして、リカレントニューラルネットワーク(Recurrent Neural Network:RNN)が使用される。
RNNの基本形
時間の依存性を過去の隠れ層として追加する構造をとったものがRNNとなる、
通常のニューラルネットワークとの違いは、過去の隠れ層から現在の隠れ層に対しても繋がりこと重みがあるところである。
よって、誤差逆伝播も過去に遡って反映する必要ある。
時間軸にそって誤差を反映していくためBackPropagation Through-Time(BPTT)と呼ばれている。
LSTM
RNNにもいくつかの課題がある。
- 勾配消失問題
- 時間軸に沿って深いネットワークになるため、過去に遡るにつれ勾配が無くなる
- 時系列データ固有の問題
- 今の時点では関係なくとも将来に於いては関係があるデータの扱いが困難
- 入力重み衝突
- 出力重み衝突
- 今の時点では関係なくとも将来に於いては関係があるデータの扱いが困難
これらの課題を解消するためにLSTM(Long Short Term Memory)が考えられた。
通常のニューラルネットワークでは活性化関数で勾配消失問題を解消したが、LSTMでは隠れ層の構造を変えることで解消している。
これをLSTMブロックと呼ぶ
LSTMブロックは2つの機構で存在する。
- 誤差を内部にとどまらせるためのセル
- 必要な情報を必要なタイミングで保持、消去させるためのゲート
セルは誤差を内部にとどめ、勾配消失を防ぐためのものであるので、CEC(Constant Error Carousel)と呼ばれる。
ゲートは以下3つから成っている。
- 入力ゲート
- 入力重み衝突対策
- 出力ゲート
- 出力重み対策
- 忘却ゲート
- リセット機能
LSTMはこれらセル、ゲートの最適化をするため、計算量が多くなる。
そのため、簡略化したGRU(Gated Recurrent Unit)という手法を代わりに使用する場合がある。
GRUはリセットゲート、更新ゲートが入力ゲート、出力ゲート、忘却ゲートの代わりをする。
以下で、LSTMを使用した株価予測の実験記事を書いている。LSTMの特性の参考になれば。
RNNの発展形
Bidirectional RNN
過去の情報だけでなく、未来の情報を使って予測する手法として、LSTMを2つ組み合わせたBidirectional RNNというモデルが存在する。
時間軸に沿って、過去から未来、未来から過去への繋がりが組み込まれている。
RNN Encoder-Decoder
出力も時系列で予測したいというsequence-to-sequenceという課題を解消するモデルにRNN Encoder-Decoderというものが存在する。
これも2つのLSTMを組み合わせる方式で、入力側のLSTMをエンコーダ(encoder)、出力側のLSTMをデコーダ(decoder)としている。
Attention
ネットワークに「時間の重み」を組み込んだものがAttentionと呼ばれる機構。
まとめ
- 時間の概念は本来であれば、微分積分の領域であるが、ニューラルネットワークでも過去、未来をデータとして持つことで表現可能
- LSTMの考え方が重要で、それらの組み合わせ方でRNNの発展形が出来る。
コメント