Data Scienceなんちゃって人工知能

Source: Deep Learning on Medium

6ヶ月先の米国のGDPギャップを人工知能を使って予測するモデルを作ってみました。結論は、やはり難しいというものです。Recurrent Neural Networks (RNN)というモデルを用いました。致命的な問題は、やはり経済構造や経済危機の原因は時とともに変化することと、利用可能なデータが限られていることでしょうか。それと現実的に、私のmid-2012 Macbook Proでは色々試行しているとメモリがパンパンになって動かなくなり、ストレスが溜まることも…

RNNは端的には、一つのインプットに複数の時点のデータを含んでモデルを回し、先の時点のデータからの記憶を次の時点のデータを使うときに引き継いでゆくというものです。今回の場合は1970年代後半からの米国の経済・市場データ(週次)を使いましたが、52週分(1年分)のデータを1バッチとして扱い、あるバッチの中の第1週の状態を第2週に引き継ぎ、そこから第3週へ引き継ぎ…というのを繰り返しました。

Unfolded basic recurrent neural network (Wikipedia)

さて、コード描いてみたんですが、RNNは初めてなので層を何枚噛ませるかとかよくわかりません。下のLSTM層がRNNのキモなんですがここでは3枚にしています。

regressor = Sequential()regressor.add(LSTM(units=50, 
return_sequences=True,
input_shape=(X_train_rnn.shape[1],
X_train_rnn.shape[2])))

regressor.add(Dropout(drop_out))

regressor.add(LSTM(units=50, return_sequences=True))
regressor.add(Dropout(drop_out))

regressor.add(LSTM(units=50))
regressor.add(Dropout(drop_out))
regressor.add(Dense(units=1))regressor.compile(optimizer='adam', loss='mean_squared_error')regressor.fit(X_train_rnn,
y_train_rnn,
epochs=50,
batch_size=50)

というわけで試してみました。LSTM層の数を変えて、それぞれ10回ずつの試行です。2007年くらいを境に訓練用データとテスト用データが切り替わるので、その後を見てみて下さい。2~3枚のLSTM層を噛ませるだけでは予測が全く安定しません。6枚以上だと何だか収束しているように見えます。