ISMB2014読み会 イントロ + Deep learning of the tissue-regulated splicing code
Deep Q-LearningでFXしてみた
-
Upload
junichiro-katsuta -
Category
Data & Analytics
-
view
2.345 -
download
0
Transcript of Deep Q-LearningでFXしてみた
![Page 1: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/1.jpg)
GMOインターネット 次世代システム研究室
勝田 隼一郎 2016/10/10 立教大学
Deep Q-Learningで FXしてみた
![Page 2: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/2.jpg)
�2
http://recruit.gmo.jp/engineer/jisedai/blog/deep-q-learning/
このスライド内容を、簡略にまとめたブログが以下にあります。参考にしてください。
![Page 3: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/3.jpg)
�3
自己紹介
2006: ボートを漕ぎすぎて留年 2011: 東京大学大学院理学系 研究科物理学 修了(博士) 2011-16: Stanford大学と広島大学で ポスドク(日本学術振興会; 高エネルギー宇宙物理学) 2016.4: GMOインターネット 次世代システム研究室 データサイエンティスト兼アーキテクト 超新星残骸
勝田 隼一郎
![Page 4: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/4.jpg)
4
機械学習とは
教師あり学習
教師なし学習
強化学習
![Page 5: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/5.jpg)
�5
機械学習(教師あり学習)
input data
output data
与えられたデータyに合うように パラメータを学習(人のアナロジー)
モデル
x f(x) = ax + b f(x) vs y
f(x) = 1*x + 7 f(x) = 2.1x + 1.6
![Page 6: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/6.jpg)
�6
本研究の目的
教師あり学習 (正解を常に与える必要あり)
2Qの研究: Deep Learning を用いた株価変動の予想
予想を元に、売買の方針を立てる必要あり。 「正解」はない。
株やFXをする場合、予想がゴールではない。
![Page 7: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/7.jpg)
7
本研究の目的強化学習 (Deep Q-Learningはその一種)
データとルールを与えれば、「自動的に」 適な行動を学習する。
FXに使えるかも!
![Page 8: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/8.jpg)
8
Outline
1. 理論 • Deep Q-Learningとは
2. 実装 • Keras & TensorFlowによる実装 • デモ:ゲームの学習 (テストとして)
3. 実践 • Deep Q-LearningでFX
![Page 9: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/9.jpg)
�9
Deep Q-Learning
![Page 10: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/10.jpg)
10
Deep Q-Learningとは?Deep Learningの技術を Q-Learning (強化学習の一種)というフレームワークに応用
1. 強化学習 2. Q-Learning 3. Deep Learning
![Page 11: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/11.jpg)
�11
強化学習Agent (学習者)が 環境からの 情報(状態、報酬)をもとに、 適( 終的な報酬が も高くなる)な行動をとるように学習する技術
![Page 12: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/12.jpg)
�12
囲碁の場合
状態: 盤上の碁の位置 行動: 自分の石を一つ置く 報酬: 勝つか負けるか
![Page 13: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/13.jpg)
13
Q-Learning行動関数Qπ(s, a): 方針πの下、状態sで行動aをしたとき、 終的に得られる報酬( 終報酬)の期待値
「アリとキリギリス」を例にすると、、 Qキリギリス:s=夏遊ぶ(報酬大きい) -> 冬大変( 終報酬は小さい) Qアリ:s=夏働く(報酬小さい) -> 冬助かる( 終報酬は大きい)
![Page 14: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/14.jpg)
�14
Q-Learning
終的に得られる報酬が、高くなる ような行動を取る方針π*を学ぶ
Q-Learning: 行動関数Qπを良くする(学習) することで、 適な行動を学習する手法
![Page 15: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/15.jpg)
�15多すぎて、全ての経路の報酬はわからない
t=0s
ts1 ts2
1s
a1 a2 a3
? ? ? ?? ? ? ?
a1 a1 a1
終報酬 までの経路
終報酬
![Page 16: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/16.jpg)
�16
初 → ランダムに行動 → 徐々に 終報酬が記録される → 終報酬が高い経路の付近を選択的に行動 → 新たに得られた 終報酬が記録される → 繰り返し=学習 (精度が良くなると期待)
ts1 ts2
? 0 2 ?10? ? ?
a1 a1 a1
終報酬
![Page 17: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/17.jpg)
17
そんな魔法みたいな関数あるの?
難しい環境(ゲーム, FX, etc)になったら、多数の複雑な状況を柔軟に学習する行動関数Q(s, a)が必要
![Page 18: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/18.jpg)
18
教師あり学習
input data
output data
与えられたデータyに合うように パラメータを学習(人のアナロジー)
モデル f(x)
x f(x) = ax + b f(x) vs y
f(x) = 1*x + 7 f(x) = 2.1x + 1.6
![Page 19: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/19.jpg)
19
教師あり学習
f(x) = a*x + b f(x) = a*sin(b*x)
適切なモデルを考える必要がある → 大変!!! (データが増えるほど)
モデル モデル
![Page 20: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/20.jpg)
input data
output data
モデル f(x)
�20
Deep Learning
Deep!
複雑な表現
層が
が可能input output
![Page 21: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/21.jpg)
�21
実装&デモ
![Page 22: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/22.jpg)
�22
実装ことはじめFX学習を実装するにはAgent、環境など全て自分で構築する必要あり
いきなり全部作るのは大変 まずはテストをしたい
![Page 23: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/23.jpg)
�23
色々なゲームを強化学習用にemulateしたライブラリ => Agentの作成に集中 でき、テストもできる。
OpenAI Gym
OpenAI Gym
1. Cart pole 2. Pong
![Page 24: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/24.jpg)
�24
Keras & TensorFlow
直感的に使える TensorFlow, Theanoをバックエンドで使用 Python コード量が少ない → 初心者に優しい → 海外で人気
![Page 25: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/25.jpg)
�25
Game1: Cart pole
状態: 棒の傾き、カートの位置 行動: カートの動き (右 / 左) 報酬: 倒れるまでの時間(step数)
単純 -> 学習速度が速い。 初にテストするのに 適
![Page 26: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/26.jpg)
�26
Demo1. 学習過程 2. 学習後のモデル
![Page 27: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/27.jpg)
�27
Game2: Pong
状態: 画像 行動: ラケットの動き (上 / 下) 報酬: 得点 / 失点
敵
自分
ボール
![Page 28: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/28.jpg)
�28
結果
学習数
合計得点
勝ち
負け
① 学習前 ② 学習後(48h)
0 - 21
21 - 20
![Page 29: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/29.jpg)
29
CPU -> GPUCPUでは時間がかかりすぎる(数十時間は 当たり前)。Trial & Errorができず、研究が難しい。
より計算スピードが速いGPUに切り替えた • AWS (Amazon Web Services) • Keras/TensorFlowともにGPU対応
![Page 30: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/30.jpg)
30
CPU -> GPUCPU環境
• QEMU Virtual CPU version • 仮想12CPU, m120GB, 2.7GHz • 速度:135 min / 500 episodes
GPU (AWS) • g2.8xlarge (Intel Xeon E5-2670プロセッサー) • NVIDIA GPU(1,536 CUDA コアと 4GB のビデオメモ
リ) • 4GPU, m60GB • 速度:25 min / 500 episodes (~6倍速); 1GPUのみ使
用 • ~ 300円/hr => 100時間使うと3万円。。
![Page 31: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/31.jpg)
�31
FX
![Page 32: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/32.jpg)
�32
FX (Foreign eXchange)通貨の相対価値は変化する 儲け:安いときに買って、高いときに売る
円安(ドル高)
円高(ドル安)
買い 買い
売り
売り
ドルが高くなった分が利益
ドルが安くなった分が利益
![Page 33: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/33.jpg)
33
元金(JPY=100万円) 終的な評価は、学習に使わない期間
(2014-2016)を2週間ごとに区切り(75区間)、AgentにFXさせた儲け/損の平均値。
目的:FXを2週間して、儲けられるようAgentを学習!
問題定義
![Page 34: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/34.jpg)
�34
2通貨ペア(JPY/USD, JPY/EUR)を採用 人が見つけられない複雑な組み合わせパターン複雑をAgentが学習する、かも。
FXデータ
円/USD 円/EUR
レート(2時間平均)
時間
学習期間 評価期間
Forex historical dataより取得
![Page 35: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/35.jpg)
�35
状態: 過去2週間分のrate(JPY, USD, EUR) 所持している通貨量
行動: 売り、買い、ステイ
報酬: 終了時の総資産(円単位) 持っている通貨をその時点のレートで換算
![Page 36: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/36.jpg)
テスト1実装したAgentや環境をテストするため、予測が簡単な疑似データ(USDのみ)を作り、Agentに学習させた。
trade期間
円/USD
時間
疑似FXデータ
36
![Page 37: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/37.jpg)
37
結果
学習数
儲け (100万円)
学習して儲けている!→ 成功
元金
![Page 38: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/38.jpg)
38
スタート 終了考察
疑似レート (円/USD)
時間
所持している 各通貨量 (JPY: 100万円 USD: 1万ドル)
ドル高
ドル安
![Page 39: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/39.jpg)
39
テスト2
通貨ペアを2つ使い、両者の情報を学習しないと儲けることができない疑似データを作成
通貨ペア x 1 → 通貨ペア x 2
trade期間
円/USD 円/EUR
時間
疑似FXデータ
![Page 40: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/40.jpg)
�40
結果
学習数
儲け (100万円)
儲けられず。。→ 適切に学習できていない
元金
![Page 41: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/41.jpg)
�41
行動関数Q(s, a)の変更行動関数 = Deep Learningのモデルの形状が適切でないため、学習を妨げている? → 変更 (4モデル試す)
![Page 42: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/42.jpg)
42
元金
学習数
元金
学習数
モデル1
モデル3
モデル2 学習数
元金
学習数
元金
モデル4
過学習?
![Page 43: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/43.jpg)
�43
過学習
過学習
モデルが学習データに適合しすぎて、ノイズまで再現するように学習するため、学習データ以外のデータ(予想したいデータ)の予測精度が悪化
→ 適切なパラメータ数、学習回数にすることが大切
![Page 44: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/44.jpg)
44
疑似レート (円/USD, EUR)
所持している 各通貨量 (JPY: 100万円 USD/EUR: 1万ドル)
ドル高
ドル安
考察(モデル4)
![Page 45: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/45.jpg)
45
実データ
2つの通貨ペア (JPY/USD, EUR/USD) ランダム要素が強い
円/USD 円/EUR*
レート
時間
trade期間
*EURは見やすさのため normalized
![Page 46: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/46.jpg)
46
元金(100万円)
学習数
トレード後の資産
トレード後の資産
学習数学習数
学習数
評価データ 評価データ(移動平均)
学習データ(移動平均)学習データ
105万円
105万円
95万円
95万円
元金(100万円)
結果過学習?
![Page 47: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/47.jpg)
�47
Summary
![Page 48: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/48.jpg)
�48
まとめ Deep Q-Learningを実装しFXをした。
テストデータでは学習していることを確かめた。= FXデータにパターンが存在すれば、自律的に儲けられる事を確かめた。
実データでも、学習データでは儲ける方針を学習した。評価データでも学んだようにも見えるが、さらなる検証が必要。
![Page 49: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/49.jpg)
�49
今後の方向性
問題定義の見直し インプットデータは適切だったのか? 2週間は適切だったのか? 通貨ペアを増やす 取引量を変更
Agentの行動関数のモデル部分の改善 もっと学習速度を上げたい -> マルチGPU
![Page 50: Deep Q-LearningでFXしてみた](https://reader034.fdocuments.net/reader034/viewer/2022050613/5a6479067f8b9a27568b4757/html5/thumbnails/50.jpg)
�50
ご清聴ありがとうございました!