※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※ 本記事の執筆後にもっと精度の高いFX予測を実現しました ※※
以下の記事で本記事よりもより良いという方法も掲載していますので、良ければこちらも御覧ください。↓↓↓
AIによるFX予測キット。正解率は人以上!!
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
こんにちは。管理人のピヨ猫でーす。
前回の記事でSONY neural network consoleにFX為替予想の教師データを取り込む方法を紹介しました。今回は、ようやく機械学習をしてみたいと思います。
長かったー
SONY neural network consoleには、画像認識のためのモデルがデフォルトで備わっています。HOMEメニューのPROJECTにある「LeNet.sdcproj」です。
LeNetが何かというと正直私は理解できていません。
CNNという画期的な画像認識技法を作成したYann LeCun先生が発表された論文をベースにした画像認識ネットワークの様です。
論文はこちら
http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf
こちらの記事も参考になります。
http://torch.classcat.com/category/lenet/
https://arakan-pgm-ai.hatenablog.com/entry/2017/10/01/080000
しょーじき私にはこのディープラーニングのネットワークを見ても理解できません。
何時かは理解できるようになりたいものですが、まずは動かしてみて機械学習を体感してみました。
【手順】
- テンプレートのLeNetをコピーしてFX予想用のLeNetを作成する
①テンプレート用のLeNetを開き右上の名前を付けて保存ボタンを押下する②名前を付けて保存ダイアログで別名を付けてファイルを保存する。
- 入力層(INPUTノード)のサイズ設定を変更する
入力層(INPUTノード)のサイズに教師データの画像ファイルのサイズを設定します。
先頭の1→3はモノクロ→RGB色への変更を意味します。
他の層(ノード)のサイズはINPUT層に指定したサイズに合わせて自動で変わります。追記:Affine_2のサイズを10→7に分類しないとだめです。
今回の為替予想は結果を7クラスに分類するので。 - 学習用のDataSetを設定する
メニューバーよりDATASETを選択 → サイドバーよりTrainingを選択 → Opendatasetを選択 してTrainingデータにtrain.csvを設定する。 - テスト用のDataSetを設定する
メニューバーよりDATASETを選択 → サイドバーよりValidationを選択 → Opendatasetを選択 してValidationデータにtest.csvを設定する。 - 学習試行回数の設定
CONFIGボタンを押下し、設定画面よりMax Epoch(学習試行回数)を設定します。少ない回数だと学習が十分に行われないので100以上に設定するのが良いです。あまり長く設定すると時間がすごくかかりますし、やりすぎても効果が無いのでここは経験で見極めましょう。
合わせてBatch Sizeを設定します。Batch Sizeは並列実行数です。ここも経験です。今回は30に設定しました。 - 学習開始
Trainingボタンを押して学習を開始します
後は待つだけです。
割と簡単ですね。
- 為替予想の学習曲線
何回も学習するにつれcost, training errorが減っています。でもvalidation errorが減ってません。
お試しなのでこのまま続けますが、この結果はあまり良くないです。
教師データ通りの答えを出すネットワークが構築出来ているけど、新しいデータが来たらいまいち良い精度で当たらないということです。本来はこういう曲線になるのが良いです。
costやtraining error、validation errorの意味はおいおい記事にします。
- 出来上がったAIで為替データ予想を実行(テストデータで検証)
Evaluationボタンを押すと出来上がったネットワークをテストデータで検証できます。
さて出来上がったAIの精度は如何程か。テスト結果を詳しく見てみました。
結果をGUIから見るのは逆に大変なので生データを見てみましょう。
テスト実行結果はoutput_result.csv に出力されています。
ドン!
えっ?マジ
AIが如何なる場合も平均の値動きになるのが一番確率高いと予想しやがった。
合っているよ。ある意味あっているよ。
でも、この答えはずるいだろー。
0~6の前々日比クラスに該当する確率が各基準日で違うから、ちゃんと計算しているのかもしれないが・・・。
2019/03/30追記
原因は恐らくこれと同じです。
初めてのNeuralNetworkConsole!!DataSetの自動グラフ化機能
各画像が特徴認識できるほど差がないので、同じデータとみなされていると思われます。為替の変動を前月比で表したりスケールを1円単位ではなくて0.1円単位にする等して値の変動を大きく見える様にしてやれば結果は変わってくると思います。
機械学習のやり方の流れはわかったが、FX為替予想をするにはまだまだ工夫が必要ですね。そんなに簡単ではないか~~~。こういう時系列の予想はCNNではなくRNN使ったりする様ですので、これから色々試してみます。
人間でもFXの世界は勝ち組1割と言われるので、そもそも予想が難しいのかもしれません。チェスで人に勝ったAIなら勝ち組1割に入れるはず。
もうちょっとAIに頑張ってもらいましょー。
◆ 推薦図書
![]() |
詳解 ディープラーニング TensorFlow・Kerasによる時系列データ処理 [ 巣籠 悠輔 ] 価格:3,672円 |
![]() |
【送料無料】 機械学習 データを読み解くアルゴリズムの技法 / 竹村彰通 【本】 価格:6,696円 |