2

投稿日

AIを使って不労所得の道へ(3)~学習結果をTensorboardで可視化させてみた~【AIncomeプロジェクト】

はじめに

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

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

AIncomeプロジェクト

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

前回までの取り組み

前回は強化学習とそれをシミュレーションするOpenAI Gymの説明をしました.さらには,ランダムで行動を決定して売り買いしてみたところ,ランダムでも利益が出るような結果になっていました.

今回の取り組みの概要

今回はtensorboardを使って,学習結果を可視化させていきます.

Google Drive setting

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

作業フォルダ

!mkdir AutoTrade02
%cd  AutoTrade02
!pwd

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

#!pip install gym[all] -U
!pip install "gym==0.19.0"
!pip install stable-baselines[mpi]
!pip install tensorflow==1.14.0
!pip install pyqt5
!pip install imageio
!pip install gym-anytrading
!pip uninstall tensorboard-plugin-wit --yes

インポート

import os, gym
import gym_anytrading
import matplotlib.pyplot as plt
from gym_anytrading.envs import TradingEnv, ForexEnv, StocksEnv, Actions, Positions
from gym_anytrading.datasets import FOREX_EURUSD_1H_ASK, STOCKS_GOOGL
from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import PPO2
from stable_baselines import ACKTR
from stable_baselines.bench import Monitor
from stable_baselines.common import set_global_seeds

設定

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


# train data
idx1 = 10
idx2 = 300

# test data
idx3 = 400

環境の生成

ここで,前回のコードに加えて,tensorboard_logのパラメータにログフォルダを追加しておきます.

# 環境の生成
env = gym.make('forex-v0', frame_bound=(idx1, idx2), window_size=10)
env = Monitor(env, log_dir, allow_early_resets=True)

# シードの指定
env.seed(0)
set_global_seeds(0)

# ベクトル化環境の生成
env = DummyVecEnv([lambda: env])

# モデルの生成
model = PPO2('MlpPolicy', env, tensorboard_log=log_dir)
#model = ACKTR('MlpPolicy', env, verbose=1)

# モデルの読み込み
# model = PPO2.load('trading_model')

学習

# モデルの学習
model.learn(total_timesteps=128000)

# モデルの保存
model.save('trading_model3.0')

モデルのテスト

env = gym.make('forex-v0', frame_bound=(idx2, idx3), window_size=10)
env.seed(0)
state = env.reset()
while True:
    # 行動の取得
    action, _ = model.predict(state)
    # 1ステップ実行
    state, reward, done, info = env.step(action)
    # エピソード完了
    if done:
        print('info:', info)
        break

グラフのプロット

plt.cla()
env.render_all()
plt.show()

ここからtensorboard関係のコードです.
これで,可視化できます.

# Load the TensorBoard notebook extension
%load_ext tensorboard
%tensorboard --logdir logs/

可視化するとこんな感じになります.

無事に,可視化することができました.

使用したソースコード

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
2