Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
深層学習は金融市場をシミュレーションすることができるか?
Search
GMO次世代
May 16, 2017
Technology
1
6k
深層学習は金融市場をシミュレーションすることができるか?
2017年5月11日 GMOエンジニアトークにて公開
GMO次世代
May 16, 2017
Tweet
Share
More Decks by GMO次世代
See All by GMO次世代
ソース公開を通じて分かった非中央集権型アプリケーション(DApp)とは
jisedai
0
4k
AppleのARkitとGoogleの最新のARプラットフォーム ARCore 可能性と応用
jisedai
2
1.3k
IoT領域でのブロックチェーン実践
jisedai
1
1.7k
モバイルAR技術の最先端 Google Tangoを活用してバーチャル道案内スタッフを実現してみた
jisedai
1
1.2k
Unity3DとOculus Riftで VR空間にWebコンテンツを表現する
jisedai
0
1.4k
ブロックチェーンを利用したサービス開発について
jisedai
1
1.2k
Deep Learningによる株価変動の予想
jisedai
0
1.7k
Other Decks in Technology
See All in Technology
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
AGIについてChatGPTに聞いてみた
blueb
0
130
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
130
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
Application Development WG Intro at AppDeveloperCon
salaboy
0
200
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
Chasing the White Whale of Open Source - ROI
mrbobbytables
0
110
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
950
Taming you application's environments
salaboy
0
200
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
120
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
210
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
190
Featured
See All Featured
Designing the Hi-DPI Web
ddemaree
280
34k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
120
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
A Philosophy of Restraint
colly
203
16k
Speed Design
sergeychernyshev
25
620
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Side Projects
sachag
452
42k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Designing for Performance
lara
604
68k
Transcript
深層学習は金融市場を シミュレーションできるか? 〜 GAN(Generative Adversarial Networks)を応用した マーケットのシミュレーションへの挑戦〜 GMOインターネット 次世代システム研究室
2 目次: 1. Introduction 2. GAN(Generative Adversarial Networks)とは 3. 実験計画
4. 実験 5. まとめ
Introduction
4 突然ですが質問です。 あなたはマネーが好きですか?
5 突然ですが質問です。 あなたはマネーが好きですか? (正直に)
マネーを増やす代表的手段 「資産運用」 その資産運用の分野で、 AIが劇的な変化をもたらして います。
出展:Bloomberg/How a $26 Billion Hedge Fund Lures the Beautiful Minds
AIを使ったヘッジファンド だけ利益を上げている 伝統的手法のヘッジファンドは 大きな損失を被っている 2016年:ヘッジファンド業界の明暗 黒字 赤字
AIを成長させるのは シミュレーション(仮想訓練)! シミュレーション環境の整備 は強いAIの開発に必須!
シミュレーションがAIを 強くする・・・ 有名な囲碁AIが 世界を驚かせましたね!
Alpha Go(アルファ碁) Alpha Go(アルファ碁)は、膨大なシ ミュレーション(=仮想対局)を繰り 返した結果、人類最強イ・セドル9段 を4勝1敗で打ち破った。
金融分野の Alpha Go(アルファ碁)を 目指す!
最終目標 どんな過酷なマーケットでも 生き残る資産運用AIを 育てる!
今回の発表はその一里塚 新しい金融市場のシミュレー ション法を開発し、 資産運用AIを鍛える環境を 構築する!
従来の金融分野の シミュレーション法
15 従来のシミュレーション法 ヒストリカルシミュレーション法 モンテカルロシミュレーション法 ほとんどの場合、 こっちを使う
16 ヒストリカルシミュレーション法 過去のマーケットの値動きをそのまま持ってくる バックテスト(AIの性能検証)に使われるのはこれ [Good!]再現性は確実! 処理も簡単!
[Bad!]過去に起きた値動き以外を学ぶことができない
17 モンテカルロシミュレーション法 … 統計を使って、それっぽい値動きを再現 [Good!]さまざまな値動きパターンを再現し、学習 させることができる [Bad!]実際とは違う値動きを再現してしまうこと
がある!
従来の方法の課題
19 •従来法の課題 過去に起きた値動きしか再現できない 実際とは異なる値動きをしてしまう 囲碁、将棋と比べて トレーニングデータ量が かなり少なくなってしまう!
そこで・・・ 新シミュレーション法で解決 を図る! →革新的な深層学習の手法GAN で「冒険的」挑戦! →GAN(Generative Adversarial Networks)=生成的対立ネットワーク
GANの何が革新的なのか・・・ これまでのAIでは不可能だっ た「創造する」処理を 実現したこと!
デモンストレーション AIが人間の「顔」を創造!
デモンストレーション概要: 約23万枚の顔写真を インプットして、 新しい顔写真を創造します
デモンストレーション中
25 絵画や写真、イラストを創造できるAI、 それが… GANならば新しい方法を 実現できるのではないか? 深層学習の新技術 GAN(Generative Adversarial Networks) 生成的対立
ネットワーク これまでのAIの 常識を覆す!
GAN(Generative Adversarial Networks) の特徴
2つのAIが競い合って学習する 判別する側 Discriminator 創造する側 Generator 本物を真似た画像 を創造する 真贋を見抜く
GANの利点… 人間が手間を掛けずとも、 勝手にレベルアップしてくれる 画像を創造する能力 真贋を鑑定する能力
GANを使って、革新的なシミュ レーション法を実現する! 「視覚的」アプローチによる 前代未聞のシミュレーション法!
実験目標
31 •実験目標 外国為替市場の値動きを GANに学習させて、 自然な値動きを 無尽蔵に創造する!
Why… 外国為替市場の値動きを シミュレーションするのか? Because… 外国為替市場の値動きは 金融市場の今を映す鏡!
実験概要
34 •実験概要 外国為替市場(ドル円)の チャートを自動生成させる ちゃんとマーケットを理解しているか 確かめる(=ニセモノ判定試験) GANを使って・・・ トランプ相場で 大賑わい
実験環境
36 •実験環境 言語:Python , version3.5 深層学習フレームワーク:TensorFlow GPU:NVIDIA
GeForce GTX 1070
使用する手法は… DCGAN= Deep Convolutional Generative Adversarial Networks
DCGANの仕組み
DCGANの構成要素 Generator(略:G) -1.0~+1.0の数値を入力すると、実物 を似せた画像を出力する Discriminator(略:D) 画像を読み込み、実物かどうか判定する
出力は0~1.0の確率 読み込んだ画像が実物である確率
40 •DCGANの仕組みの図 D G 画 像 数 値 画像を生成 (出力:配列)
D(x) 入力画像が 実物である確率(0~1.0) Discriminator Generator -1.0 ~ 1.0
Generatorの 構造
42 •Generator:画像を創造する Radford et al. (2015) より引用 -1.0~1.0の数値を 入力すると… 画像を創造する!
段階的に 大きな画像に変換され… 数値が小さな 画像になり…
Discriminatorの 構造
44 •Discriminator:画像を判定する Raymond Yeh (2016) より引用 画像を入力 すると… 判定する! (0~1.0の値)
=実物である確率 画像の特徴を 要約してゆく
DCGANの実装 (抜粋) こんなコードで動いています
46 •Discriminatorの実装 [参考] https://github.com/carpedm20/DCGAN-tensorflow def discriminator(self, image, reuse=False): with tf.variable_scope("discriminator")
as scope: if reuse: scope.reuse_variables() h0 = lrelu(conv2d(image, self.df_dim, name='d_h0_conv')) h1 = lrelu(self.d_bn1(conv2d(h0, self.df_dim*2, name='d_h1_conv'))) h2 = lrelu(self.d_bn2(conv2d(h1, self.df_dim*4, name='d_h2_conv'))) h3 = lrelu(self.d_bn3(conv2d(h2, self.df_dim*8, name='d_h3_conv'))) h4 = linear(tf.reshape(h3, [self.batch_size, -1]), 1, 'd_h3_lin') return tf.nn.sigmoid(h4), h4 画像データ(配列) 判定結果(=確率:0~1.0)
47 •Generatorの実装 [参考] https://github.com/carpedm20/DCGAN-tensorflow def generator(self, z): with tf.variable_scope(“generator”) as
scope: s_h, s_w = self.output_height, self.output_width s_h2, s_w2 = conv_out_size_same(s_h, 2), conv_out_size_same(s_w, 2) s_h4, s_w4 = conv_out_size_same(s_h2, 2), conv_out_size_same(s_w2, 2) s_h8, s_w8 = conv_out_size_same(s_h4, 2), conv_out_size_same(s_w4, 2) s_h16, s_w16 = conv_out_size_same(s_h8, 2), conv_out_size_same(s_w8, 2) ・・・中略・・・ h4, self.h4_w, self.h4_b = deconv2d( h3, [self.batch_size, s_h, s_w, self.c_dim], name='g_h4', with_w=True) return tf.nn.tanh(h4) ノイズベクトル 生成された画像
48 •Train(学習処理)の実装 def train(self, config): data = glob(os.path.join("./data", config.dataset, self.input_fname_pattern))
d_optim = tf.train.AdamOptimizer(config.learning_rate, beta1=config.beta1) ¥ .minimize(self.d_loss, var_list=self.d_vars) g_optim = tf.train.AdamOptimizer(config.learning_rate, beta1=config.beta1) ¥ .minimize(self.g_loss, var_list=self.g_vars) ・・・中略・・・ _, summary_str = self.sess.run([d_optim, self.d_sum], feed_dict={ self.inputs: batch_images, self.z: batch_z }) self.writer.add_summary(summary_str, counter) _, summary_str = self.sess.run([g_optim, self.g_sum], feed_dict={ self.z: batch_z }) self.writer.add_summary(summary_str, counter) [参考] https://github.com/carpedm20/DCGAN-tensorflow Discriminatorの最適化処理の定義 Generatorの最適化処理の定義 Discriminatorの最適化 Generatorの最適化
DCGANに 学習させるデータ
50 •学習データ 外国為替市場・ドル円相場の値動き 2001年1月1日~2015年12月31日 1つのチャート=100日分の値動き 全部で約3700枚のチャート
各チャートの仕様 サイズ=100 × 100 px、PNG画像 横1px = 1日、縦1px=0.5%の値動き 各日の終値をプロット
Sample:アベノミクス相場 始まった頃のチャート (2012年9月~2013年1月) …こんな感じです
52 2012.09.06,78.39700,79.01700,78.37300,78.86500,44305,0 2012.09.07,78.86400,79.01300,78.01100,78.23700,47756,0 2012.09.10,78.24600,78.32400,78.18000,78.26000,33419,0 2012.09.11,78.26000,78.26700,77.69600,77.79600,42421,0 2012.09.12,77.79600,77.95900,77.73400,77.83200,50431,0 2012.09.13,77.83400,77.86400,77.13500,77.48300,52831,0 2012.09.14,77.48000,78.38700,77.48000,78.38300,57885,0 2012.09.17,78.35500,78.91800,78.16000,78.71800,47303,0 ・・・中略・・・
2013.01.16,88.81800,88.84900,87.79000,88.56800,111439,0 2013.01.17,88.56700,90.10500,88.12900,89.95300,120314,0 2013.01.18,89.95200,90.18200,89.63200,90.08300,105490,0 2013.01.21,90.14800,90.22800,89.33600,89.81300,91509,0 2013.01.22,89.81400,90.11800,88.36400,88.75200,117091,0 2013.01.23,88.75100,88.78900,88.05600,88.53800,106533,0 2013.01.24,88.53500,90.53100,88.41600,90.42000,111112,0 2013.01.25,90.42200,91.19200,90.28500,90.87700,106284,0 このような数値の羅列 (=時系列データ)が...
53 こうなります! 100px 100px ±0% +12.5% +25.0% -12.5% -25.0% 変
化 率 50日 100日 経過日数 アベノミクス相場 スタート!
このようなチャートの画像を 約3700枚 AI(DCGAN)に学習させます
それでは 実験開始!
実験1/ 外国為替市場(ドル円)の チャートを自動生成させる
デモンストレーション チャートの自動生成
一度に8x8=64枚ずつ生成 さまざまなチャートが生成される様子 を見ることが可能 学習するほどチャートの形が 良くなる様子をご覧ください
デモンストレーション中
実験結果
約3700枚のチャートを学 習させた後、 Generator が実物をまねて 創造したチャートがこちら です
62 •Generatorが創造したチャート(抜粋) ±0% +12.5% +25.0% -12.5% -25.0% 50日 100日 経過日数
変 化 率 ±0% +12.5% +25.0% -12.5% -25.0% 変 化 率 50日 100日 経過日数 ※ノイズ補正処理を実施しています。
Good! 自然な形のチャートが 自動生成された!
大体の値動きの形はOK あとは細部の形を調整をす れば使えるのではないか 学習効率は良かった 半日もかからなかった 実験結果サマリ
実験2/ ちゃんとマーケットを 理解しているか確かめる (ニセモノ判定試験)
AIがマーケットの値動きを 学習しているのならば、 実物とニセモノを見分ける ことができるはず!
ニセモノのチャートを AI(DCGAN)に与えて、 ちゃんと見分けることが できるかテストをする!
まず、ニセモノのチャートを プログラムで作る Not 人工知能!!
69 •プログラムで作ったチャート(抜粋)
テスト方法
71 •Discriminatorの判定能力をテストする D 画 像 D(x) 入力画像が 実物である確率 Discriminator 入力した画像がニセモノであれば、
Discriminatorの出力は0に近くなる はずである! 実物 :1.0 に近い ニセモノ:0 に近い
72 •テストの判定基準 Discriminatorの判定結果の 交差エントロピー ニセモノほど 大きな値になる 実物チャート 0.06未満 上記エントロピー値の範囲 と比較して実物/ニセモノ
判定
判定試験 ニセモノのチャート画像(50枚)と 学習から外した実物チャート画像 (50枚、ランダム選択)を Discriminatorに与えて 交差エントロピーを計算させます
判定結果
75 実物チャートの識別 正解率:約98%(※) ニセモノチャートの識別 50枚中50枚全て正解 深層学習
(CNN:畳み込みネットワーク) の本領発揮 ※100回実施して得られた正解率の平均値
Good! マーケットの値動きを ちゃんと理解していた!
せっかくなので… ちょっと難易度を 上げてみる
人間でさえ ニセモノを見分けるのに 苦労する精巧なチャート を試す! Generatorでは ないです
精巧なチャートを 作ってみた by モンテカルロシミュレーション
80 •モンテカルロシミュレーションで生成し たニセモノのチャート ぱっと見て、ニセモノか本物か 区別できますか? 実物 ニセモノ
81 •モンテカルロシミュレーション 2001年~2015年12月31日 ドル円の変化率の分布を計算 正規分布と仮定してモンテカルロシミュ レーション 平均 -0.0008% 標準偏差 0.6381%
モンテカルロシミュレーションで 生成したチャート画像(30枚)と、 学習から外した実物チャート画像 (30枚、ランダム選択)を Discriminatorに与えて 交差エントロピーを計算させます
果たして その結果は…
84 実物チャートの識別 正解率:約97%(※) ニセモノチャートの識別 30枚中30枚全て正解 CNN恐るべし!
人間を超えている! ※100回実施して得られた正解率の平均値
Excellent! あれほど紛らわしい チャートを見事に見破った!
まとめ
87 •シミュレーション能力 自然な値動きをほぼ再現 資産運用AIのトレーニングデータとして使 えるのではないか 資産運用AIの見通し 大量のシミュレーションを実施し、訓練す ることで性能を高めることが可能だろう 深層学習で 資産運用AIをレベルアップ!
88 •資産運用AIの育成ビジョン 多種多様なシチュエーションを再現 過酷なマーケットを生き延びる能力のトレ ーニング 数百年とか数千年分シミュレーションし、 生き抜いた資産運用AIを採用する…など
Next Mission will be… 新シミュレーションを活用し 最強の資産運用AIの 育成に挑戦したい!
ご清聴ありがとう ございました