コンサルでデータサイエンティスト

仕事でPythonを書いてます。機械学習、Webマーケティングに興味があります。趣味は旅です。

ニューラルネットワークに基づく時系列予測手法まとめ: LSTNet, RNN, LSTM, GRU

LSTNetの論文*1を読む機会があったので、関連手法であるニューラルネットワークをベースとした時系列予測の手法についてまとめました。本記事では、RNNをはじめとして、その派生であるLSTM、GRU、LSTNetについて紹介していきます。

RNN (Recurrent Neural Network)

RNN(Recurrent Neural Network) とは、ある層の出力を別の層の入力として利用するような再帰的構造を持ったニューラルネットワークです。

f:id:hktech:20190803021558p:plain

RNNの各時刻における中間出力は隠れ状態と呼ばれ、これは当該時刻tの時系列情報 x_{t}と前時刻t-1の隠れ状態 h_{t-1}を組み合わせて活性化したものです。

tanh(ハイパボリックタンジェント)を使った活性化は下式のように表すことができます。
 h_t=tanh(W_h\cdot [h_{t-1}, x_t] + b_h)


RNNのメリットは、独立した各時点での情報だけでなく前後の時系列情報を活用することができることです。一方で、RNNにはデメリットもあります。

RNNのデメリットは、直前の中間出力のみを使うため長期の時系列情報をうまく学習することができない点にあります。

LSTM (Long Short-Term Memory)

LSTMとは、RNNのデメリットであった長期の時系列情報を考慮することで長期的な依存関係の学習を可能にしたRNNの派生モデルです。
LSTMのメリットは長期間記憶を保持することで長期的な依存関係を考慮して回帰を実現できる点にあります。

f:id:hktech:20190804010234p:plain

LSTMの中間出力はRNNでも中間情報として出力されていた隠れ状態とLSTM特有のセル状態の2種類があります。

また、LSTMの特徴として忘却ゲート入力ゲート出力ゲートの3種類のゲートを持つという点があります。ゲートとは、情報をどの程度つぎの時刻に伝達するかを制御するコンポーネントであり、0から1の値をとります。

① 忘却ゲート
 f_t=\sigma(W_f\cdot [h_{t-1}, x_t] + b_f)

② 入力ゲート
 i_t=\sigma(W_i\cdot [h_{t-1}, x_t] + b_i)
 \tilde{C}_t=tanh(W_C\cdot [h_{t-1}, x_t] + b_C)

③ 出力ゲート
 o_t=\sigma(W_o\cdot [h_{t-1}, x_t] + b_o)

④ セル状態出力
 C_t=f_t \ast C_{t-1} + i_t \ast \tilde{C}_t

⑤ 隠れ状態出力
 h_t=o_t \ast tanh(C_t)


GRU (Gated Recurrent Unit)

GRUとは、LSTMの忘却ゲートと入力ゲートを単一の更新ゲートにマージし隠れ状態のみを伝達していくニューラルネットワークのモデルです。

f:id:hktech:20190805003508p:plain

GRUのメリットは、LSTMと比べて学習パラメータが少ないためより短い時間で学習することができるという点にあります。

① リセットゲート
 r_t=\sigma(W_r\cdot [h_{t-1}, x_t])

② 更新ゲート
 z_t=\sigma(W_z\cdot [h_{t-1}, x_t])

③ 活性化層
 \tilde{h}_t=tanh(W\cdot [r_t \ast h_{t-1}, x_t])

④ 隠れ層出力
 h_t=(1-z_t) \ast h_{t-1} + z_t \ast \tilde{h}_t


LSTNet

LSTNetは、ニューラルネットワークベースの多変量時系列予測モデルです。

LSTNetは大きく以下の3つのコンポーネントで構成されています。

① 特徴抽出を行うConvolution層
② 過去の短期・長期の時系列情報を伝達しながら伝達するRecurrent層
③ Recurrent層出力を結合しARモデルの出力と統合する層

f:id:hktech:20190805004224p:plain


Convolution層

Convolution層では入力された多次元時系列データに対し、畳み込みフィルタを複数適用させることで短期間の特徴および変数間の関係について抽出するように学習します。

f:id:hktech:20190805004926p:plain

Convolution層の出力 h_kは各フィルタを W_kとすると下式で表すことができます。
 h_k=RELU(W_k \ast X + b_k)


Recurrent層

Recurrent層は一般的なRecurrent Layer(GRU)と他Layerの2-Layer構造になっています。Layerの組み合わせは以下の通りです。
① Recurrent Layer(GRU) + Recurrent-Skip Layer
② Recurrent Layer(GRU) + Temporal Attention Layer


Recurrent-LayerはGRUモデルとなっており、 Convolution層の出力を入力としています。活性化関数は一般的なGRUモデルとは異なり、tanhではなくRELUを採用しています。

Recurrent-Layerの出力は以下の式で表すことができます。
 h_t=(1-z_t) \ast h_t + z_t \ast \tilde{h}_t

f:id:hktech:20190805005841p:plain


Recurrent-Skip LayerはRecurrent-Layerと同様に、 Convolution層の出力を入力としたGRUモデルが採用されています。 あらかじめ周期がわかっているデータについては、p個周期ごとの隠れ状態のみを使った予測を行うことができます。pを明示的に定め、p個分スキップすることで重要な情報を失うことなく伝達することができます。電力消費のデータであれば、24時間周期になるようにpを設定するといった使い方をします。

Recurrent Skip-Layerの出力は以下の式で表すことができます。
 h_t=(1-z_t) \ast h_{t-p} + z_t \ast \tilde{h}_t

f:id:hktech:20190805010105p:plain


Recurrent Layer(GRU) + Recurrent-Skip Layerの全結合後の出力は次のように表すことができます。
 h_t^D=W^Rh_t^R+\Sigma_{i=0}^{p-1}W_i^S h_{t-1}^S+b

これは時刻tのRecurrent-Layerの出力と、p-1時刻前までのRecurrent Skip-Layerの出力の和を表しています。


Temporal Attention LayerではRecurrent Skip-Layerとは異なりpを明示的に決めることはせず、Attention Layerを用いて過去系列の隠れ表現の注目度を算出し、予測に使用する過去系列の重みを決定して予測を行います。データに既知の周期性がない場合や、周期が動的変化する場合に有効です。

Recurrent Layerで出力した隠れ表現系列を  𝐻_𝑡^𝑅 = [h_{t-q}^R, \cdots, h_{t-1}^R] とすると、Attentionベクトル \alpha_tは各時点の隠れ表現とt-1時刻の隠れ表現との間の類似度を求めたものであり以下のように表すことができます。

 \alpha_t = AttnScore(H_t^R, h_{t-1}^R)


重み付きの隠れ表現ベクトルを c_t=H_t\alpha_tとすると、Recurrent Layer(GRU) + Temporal Attention Layerの出力は以下のように表現することができます。
 h_t^D=W[c_t;h_{t-1}^R] + b


全結合+ARモデル層

LSTNetの最終出力は  ℎ_𝑡^𝐷 (Recurrent Layerの全結合) と  ℎ_𝑡^𝐿 (ARモデルの出力)の和となります。ARモデルの出力結果と合わせることで、スケール変化の大きいデータに対してよりロバストな予測を実現することができるとされており、これは論文内の評価セクションにて説明されています。

f:id:hktech:20190805012121p:plain


まとめ

ニューラルネットワークベースの時系列予測手法であるRNN, LSTM, GRU、LSTNetの4手法についてご紹介しました。特に次元が大きい多次元時系列データに対しては一般的な回帰モデルよりも高い精度が期待できるため、このあたりの手法はおさえておきたいですね。


ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

*1:Modeling Long- and Short-Term Temporal Patterns with Deep Neural Network, https://arxiv.org/pdf/1703.07015.pdf