ぴよ猫ちゃんの機械学習

AI、人工知能、機械学習について色々記事にしています。

ディープラーニングの連続データ予想モデルLSTMを検証してみた

こんにちはー。管理人のピヨ猫でーす。

疑問

機械学習を使って将来予測がしたくてLSTMを使っているんだけど、少し先の未来を予想しようとするとやっぱり精度が出ないんだ( ;∀;) 何とかならないかなー。

f:id:shibayu2002:20190310112521j:plain

LSTMを単純に使うと1つ先の未来しか予想出来ていないと思うよ。連続データの予想には工夫が必要なんだ。 SONY Neural Network Consoleを使った実例で詳しく解説するね。

1.連続データの予想とは

ディープラーニングによる連続データの予想については以下の記事を参照ください。
syuuai.hatenablog.com

2.単純なLSTMは一つ先の結果しか予想できていない?

LSTMの基本的なやり方を数式で見てみると?

前述の記事でLSTMは高い精度を上げてるように見えました。
しかし、実はLSTMは予想するデータの一つ前までの答えを教えています。
LSTMが行っていることを数式にしてみると分かり易いです。

【単純なLSTMの計算式】
LSTM
LSTM

【LSTMのイメージ】
LSTM

上記のとおりn番目のyの結果を予想するために、n-1番目までのx, yの結果を伝えています。

LSTMに少し未来を予想させてみると?

では、LSTMを使って少し未来を予想させることはできないでしょうか?
実装することは簡単です。n番目のyの結果を予想するために、n-m番目まで(例えばn-200番目まで)のx, yの結果しか伝えなければ、1つ先ではなくm個先(例では200個先)を予想したことになります。実際に試してみました。

【LSTMのイメージ】
LSTM

結果は微妙すぎますね・・・。波形は予想できていますが、本来yが上向きに増加すべきところ、増加していません。
色々試してみてyが上向きに増加する結果も出たのですが、その場合は波形が予想できず、線形近似に近い形となりました。

ネットでLSTMで予想が出来たという記事はたいていは1つ先の結果の予想まで

参考までですが、ネットでLSTMで予想が出来たという記事がありますが、私が調べた限りは1つ先の結果の予想までのようでした。
なお、LSTM以外の手法を用いた予想については、どこまで先の予想をしているか調べていません。 blog.aidemy.net
www.algo-fx-blog.com
qiita.com

間違っていたらごめんなさいm( )m

3.少し先の未来をLSTMで予想する方法

特徴量には何があるか?

LSTMの紹介をしたこの記事↓↓↓の一番最後のサンプル2を見てください。
syuuai.hatenablog.com

LSTMを使わない場合の連続データ予想とLSTMを使った場合の連続データ予想を紹介しました。これを数式で表すと以下の様に表せます。

◆ none-LSTM
LSTM

◆ LSTM
LSTM
LSTM

実は、yを求めるためにnon-LSTMの場合もLSTMの場合も全ての手持ちの特徴量を使えていません。
手持ちの特徴量は
LSTM
です。
実際には少し先の未来を予想する場合は、XYのデータセットは直近までは手に入りませんので、
LSTM
が手持ちのデータ量の全てになります。(xは未来分についてはただ増幅するだけなので手に入ります。)

良いところ取りをしてみる

前述のとおり、none-LSTM、LSTMの計算式は以下になります。
LSTM
LSTM

できれば全ての特徴量を使って以下のような計算式にしたいところです。
LSTM

せっかくnone-LSTM、LSTMの2つの方法があるので、以下の様にする方法を考えました。
LSTM
これでも、LSTMと同じで全ての特徴量を使うことができます。

LSTMの作り方

LSTMの実現方法

説明するのが難しいので、図で。
LSTM

実際のモデル

 LSTM

用意したデータ

LSTM LSTM LSTM LSTM LSTM LSTM LSTM

複数の入力データを扱う方法

複数の入力データを扱う方法は以下の記事を参照ください。
syuuai.hatenablog.com

予想結果

 LSTM
yの増加傾向も波形も良く再現している様に見えます。

4.連続データの予想についての考察

手に入る特徴量(データ)は全て使う

当たり前ですが、手に入る特徴量(データ)は全て使ったほうが良い結果になりました。
現状を整理してみて、何が今、手に入るデータなのかを抑えて分析をするのが良いと思います。

少し未来の予想をする場合は手に入らない未来のデータを何らかの方法で補う

連続データの予想にあたり、直近の予想するにはLSTMで良いですが、少し先を予想しようとすると工夫が必要でした。
なぜなら、少し先を予想しようとした段階で連続データでは無いためです。
手に入らないものは何らかの仮説を立てて補う必要があります。ディープラーニングを用いた場合でも、無いものはどうにもなりませんのでそれは同じになります。
今回は手に入らない連続データはxの値だけで補った形になります。

それでは、少しでもこの記事がお役にたったら嬉しいです。 うれしい

追伸
GW後半に今回の手法でまたFXの予想をしてみたいと思います。また記事にしますので応援よろしくお願いします--。
ただー、考えるほど、なんとなくうまくいかない気がしてきました。予想って何かの法則があって成り立つけど、FXって法則が無い気がする。今回の手法は過去と未来で波形が合うから成り立っていると思う・・・。
FXには強化学習とかの方がもしかしたらよいのかなあ・・・。