AIを使って不労所得の道へ(6)~並列処理にしてみた~【AIncomeプロジェクト】

AIを使って不労所得

はじめに

素人でも戦略的に取引したい

株やFXの知識がないため,戦略的な取引ができない素人が多いと思います.私もその一人です.
そこで,強化学習の力を借りて戦略的に取引をしようと思います.

AIncomeプロジェクト

AIで所得(Income)を得るため「AIncome」と名付けました.

前回までの取り組み

前回は強化学習とそれをシミュレーションするOpenAI Gymの説明をしました*1.さらには,ランダムで行動を決定して売り買いしてみたところ,ランダムでも利益が出るような結果になっていました*1.また,ランダム投資からPPO2へ深層学習強化学習のモデル投入*2やTensorboardで可視化*3,手数料の考慮*4などを取り組んでいました.
さらに,学習回数を10倍に増やしたりしてみましたところ,処理時間が大幅に増えてきました*5ので,並列化の知識を付けました*6

今回の取り組みの概要

CartPoleで並列処理を行って学習時間を短縮していきたと思います.

Google Drive setting

この辺りは前回と同じです.

from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/AIncome
!pwd

作業フォルダ

!mkdir AutoTrade06_multi
%cd  AutoTrade06_multi
!pwd

必要パッケージのインストール

この辺りは相当ハマりポイントです.

!pip install "gym==0.19.0"
!pip install stable-baselines[mpi]
!pip uninstall -y tensorflow-gpu
!pip install tensorflow-gpu==1.14.0
#!pip uninstall tensorboard-plugin-wit --yes

インポート

import os, gym
import matplotlib.pyplot as plt

設定


# ログフォルダの生成
log_dir = './logs/'
os.makedirs(log_dir, exist_ok=True)

# train data
idx1 = 100
idx2 = 5000

# test data
idx3 = 6000

window_size = 100

trade_fee = 0

環境の生成

n_envs=で並列化の数を指定できます.

import gym

from stable_baselines.common.policies import MlpPolicy
from stable_baselines.common import make_vec_env
from stable_baselines import PPO2

# multiprocess environment
env = make_vec_env('CartPole-v1', n_envs=400)

model = PPO2(MlpPolicy, env, verbose=1, tensorboard_log=log_dir)
model.learn(total_timesteps=2500000)
model.save("ppo2_cartpole")

del model # remove to demonstrate saving and loading

model = PPO2.load("ppo2_cartpole")
# Enjoy trained agent

plt.figure(figsize=(30, 10))
obs = env.reset()
while True:
    action, _states = model.predict(obs)
    obs, rewards, dones, info = env.step(action)
    # env.render()
    # print('info:', info)

    # エピソード完了
    if dones.any():
        print('info:', info)
        break
# Load the TensorBoard notebook extension
%load_ext tensorboard
%tensorboard --logdir logs/

灰色が250000回学習回数したときのグラフ.オレンジ色が2500000回(10倍)ときのグラフです.
いずれにしても高速化されていますね

file

結果

並列処理をしたところ,思ったより効果がありました.
次回は,これをFXに適応していきたいと思います.

プログラムコード

AIncome/AutoTrade6.ipynb at main · HamaruKi0303/AIncome
Contribute to HamaruKi0303/AIncome development by creating an account on GitHub.

参考サイト

コメント

タイトルとURLをコピーしました