pythonではじめる openai gymトレーニング
TRANSCRIPT
![Page 1: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/1.jpg)
PythonではじめるOpenAI Gymトレーニング
by icoxfog417 @ PyConJP 2016
![Page 2: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/2.jpg)
Agenda
● OpenAI Gymを体験しよう○ OpenAIとOpenAI Gym
○ OpenAI Gymを動かしてみる
○ 簡単な「AI」を作ってみる
○ 「AI」の限界
● 「AI」を成長させよう○ 強化学習というアイデア
○ アイデアのモデル化と、最適化の方法
○ より複雑なタスクへの挑戦
● Deep Learningとの融合○ Deep Q-learningの登場
○ Deep Q-learningにおける3つのトリック
○ Deep Q-learningの実装
● おわりに
2
![Page 3: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/3.jpg)
About Me
![Page 4: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/4.jpg)
icoxfog417
TIS株式会社所属
業務コンサルタント出身で、サプライチェーン周りの開発を担当してました(得意技は石油化
学製品の価格改定)。kintoneエヴァンジェリストもやってます。
業務システムに先進的な技術を取り込んで活かしたいとの思いから、戦略技術センターに
異動。現在は、機械学習や自然言語処理を活用して新規サービスのプロトタイピングなど
を行っています。
Qiitaへの投稿もしてます。今日の発表は、この記事が元になっています。
![Page 5: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/5.jpg)
icoxfog417
kintoneとWatsonを連携させた災害対策ソリューション
災害時、TwitterなどのSNSから自動で情報を収集し、kintoneに登録(重要度やカテゴリを、Watson NLCで自動判定)。
災害対策マニュアルを学習させたWatson R&Rから、必要な対策を提案。
会議診断システムさゆり
会議の様子をカメラで撮影し、リアルタイムにその会議の評価を出力する(機械学習により、評価を算定)。
戦略技術センターの活動原則はOPEN MINDであり、検証結果などはほぼ全てが公開されています。
![Page 6: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/6.jpg)
人とロボットとの分業による、生産的な接客の実現を検証中
Robot Dash Board Human
customerA
customerB
customerC
report
take over(telepresence)
背景:生産年齢人口の現象による販売員単価増+ネットショッピングの普及による来店者数減コンセプト:ロボットが得意なところ/できることは任せ、人は人ならでは応対に注力する
icoxfog417
対話システムシンポジウムでデモ予定
![Page 7: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/7.jpg)
OpenAI Gymを体験しよう
![Page 8: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/8.jpg)
![Page 9: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/9.jpg)
OpenAIとOpenAI Gym
OpenAIは、AIの研究を行う非営利の団体です。上記の目標のとおり、AIの研究成果を自己
(特定企業の)利益のためではなく、人類全体のために活用することを目的としています。そ
のためコードも含めた研究成果は広く公開されており、今回紹介するOpenAI Gymもそのうち
の一つになります。9
目標はデジタルインテリジェンスの高度化をできるかぎり人
類全体の利益に資する形で推進すること。それが、経済的
(financial)な利益目的に制約されないことだ。
出資者の一人であるTesraのElon Musk氏
![Page 10: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/10.jpg)
OpenAIとOpenAI Gym
10
Ilya Sutskever氏 Trevor Blackwell氏
Andrej Karpathy氏
所属する研究員の方たちは、Seq2Seqを提案したIlya
Sutskever、Segwayを発明したTrevor Blackwell、画像の
説明文生成を行ったAndrej Karpathなど、泣く子も黙る
世界的に優秀な研究員・エンジニア達が所属。
日本人はまだいないようなので、ぜひ日本人初の
OpenAI研究員を目指そう!
![Page 11: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/11.jpg)
![Page 12: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/12.jpg)
OpenAIとOpenAI Gym
OpenAI Gymは、強化学習を開発、評価するための
プラットフォームです。
強化学習は意思決定を行うための汎用的な仕組
みで応用性が高く、またその精度は近年飛躍的に
高まっています。
OpenAI Gymは、こうした注目を集める強化学習に
おいて標準となる実験・評価環境を提供することを
目的としています。これにより、大規模な画像デー
タセットであるImageNetにより画像分類の研究が発
展したのと同様の効果を狙っています。
12
環境を使うのはもちろん、実験結果をアップロードしたり、他の人の実行結果・実装を見たりすることも出来る
![Page 13: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/13.jpg)
Let’s Try!
ファミリーボクシング(1987)
![Page 14: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/14.jpg)
OpenAI Gymを動かしてみる
インストール方法は公式GitHubページを参照。
Mac/Linux(Ubuntu)が公式だが、Windowsでもbash on Windowsを利用することで動作させる
ことが可能。
利用する「ジム(=学習環境)」によって、必要となるライブラリも異なってくる。これらは、選択
的にインストールすることが可能。
※pip install gymで入るのは必要最低限のもので、Atariのゲーム環境を使う場合はpip
install ‘gym[atari]’といったように指定する
14
![Page 15: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/15.jpg)
OpenAI Gymを動かしてみる
Gymの基本的な使い方は以下の通り。
15
import gym
env = gym.make("CartPole-v0")
for i_episode in range(20):
observation = env.reset()
done = False
while not done:
env.render()
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
Environment(CartPole-v0)
Agent
action
observation, rewarddone (episode
end)
gym
episodeの単位は、各ゲームによって異なる。そのため、gymを使っていきなり強化学習に入るよりは、試しに動かし
てepisodeの単位、actionの意味を調べるのがおすすめ。
![Page 16: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/16.jpg)
Let’s start from simple one
16
まずは簡単なAIを作ってみる
![Page 17: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/17.jpg)
簡単な「AI」を作ってみる
17
Agent Environment
action(フン=左 & フン=右)
observation, reward
![Page 18: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/18.jpg)
簡単な「AI」を作ってみる
18
Agent Environment
action(フン=左 & フン=右)
observation, reward
def test_funfun_defence(self):
env = Environment(env_name="Pong-v0")
agent = CycleAgent((2, 3), keep_length=20)
for episode, step, reward in env.play(agent, episode=1):
pass
![Page 19: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/19.jpg)
簡単な「AI」を作ってみる
19
試合開始(Demo)
code here
![Page 20: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/20.jpg)
簡単な「AI」を作ってみる
20
![Page 21: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/21.jpg)
「AI」の限界
人が設計するアルゴリズムや、人が「正解」を与える教師あり学習
の場合、「人間の限界」がそのままAIの限界になる。
● AIを作る人間がその道のエキスパートとは限らない
● エキスパートであっても、自分の感覚を正しく実装するのはと
ても手間で、困難(途中で→)
この上限を突破するには、「人が教える」という手法から、「AI自ら
学習する」という手法へ切り替える必要がある。
そのための手法の一つが、強化学習になる。
21
![Page 22: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/22.jpg)
「AI」を成長させよう
![Page 23: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/23.jpg)
強化学習というアイデア
人がAIに教えるのでなく、AIが自分自身で学習するようにする。
「評価」はするが、「教育」はしない。
23
評価はしてくれるが、評価基準は教えてくれない。⇒プレイヤー(Agent)自らが発見する必要がある。
![Page 24: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/24.jpg)
アイデアのモデル化
24
Agentが置かれている状態を、stateとする
state
Agentは、stateで可能な行動=actionをとる。actionは、戦略=policyに従い決定される。
I like right!
actionの結果、新しい状態state’へ遷移すると共に、設定された報酬=rewardを受け取る。
state’
reward
action
![Page 25: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/25.jpg)
アイデアのモデル化
25
Agentが置かれている状態を、stateとする
state
Agentは、stateで可能な行動=actionをとる。actionは、戦略=policyに従い決定される。
I like right!
actionの結果、新しい状態state’へ遷移すると共に、設定された報酬=rewardを受け取る。
state’
reward
action
Markov Decision Process(MDP)
![Page 26: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/26.jpg)
アイデアのモデル化: 最適化の方法
26
state
+1
-1
迷路で、以下の位置(state)にいるAgentについて考える
![Page 27: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/27.jpg)
アイデアのモデル化: 最適化の方法
27
+1
-1action
→:GOAL!(+1でゲーム終了)←:ゴールから遠ざかる↑:その場にとどまる↓:地獄の一丁目へ
state’
state’
state’
state’
![Page 28: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/28.jpg)
アイデアのモデル化: 最適化の方法
28
+1
-1
そこから、一歩手前の状態について考えてみる。
遷移先(state’)の報酬を使い、現状態(state)からスタートした場合の期待報酬が計算できる・遷移先では、最適な行動をとるとする・遷移先の報酬は将来の報酬のため、割引を行うつまり、「期待報酬=現状態の報酬+割引率×遷移先の最大報酬 」
state state’
![Page 29: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/29.jpg)
アイデアのモデル化: 最適化の方法
29
s_00
s_10
s_20
s_01
s_21
s_02
s_22
s_03
s_23
s_12 s_13
+1
-1
次に、ゴールまであと2歩の状態まで下がり、同様に報酬を計算する。
遷移先の期待報酬から、現在時点の報酬を計算する(遷移先では、最適な行動をすると仮定する)
Bellman Equation
![Page 30: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/30.jpg)
アイデアのモデル化: 最適化の方法
30
s_00
s_10
s_20
s_01
s_21
s_02
s_22
s_03
s_23
s_12 s_13
+1
-1
これをn歩前まで・・・と繰り返していくと、期待報酬の地図を作ることができる
![Page 31: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/31.jpg)
アイデアのモデル化: 最適化の方法
31
まとめ
各状態における、期待報酬の値を0などで初期化する。
各状態で、期待報酬の値を計算する(Bellman Equation)。
計算した期待報酬の値を元に、もう一度計算を行う。
step=1 step=2
... step=n
期待報酬の値が、step前後で変わらなくなってくる(=収束する)。これで計算終了。Agentは、期待報酬が最大の方向に行くようにすればOK!
![Page 32: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/32.jpg)
アイデアのモデル化: 最適化の方法
32
まとめ
各状態における、期待報酬の値を0などで初期化する。
各状態で、期待報酬の値を計算する。
計算した期待報酬の値を元に、もう一度計算を行う。
step=1 step=2
... step=n
期待報酬の値が、step前後で変わらなくなってくる(=収束する)。これで計算終了。あとは、期待報酬が最大の方向に行くようにすればOK!
Value Iteration
![Page 33: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/33.jpg)
We have done it …?
33
これで問題は解決?
![Page 35: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/35.jpg)
Question
35
問:今、状態(state)の数はどれだけあったでしょう?
![Page 36: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/36.jpg)
Problem
36
死亡 クリア
状態数多すぎ問題
Start
![Page 37: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/37.jpg)
状態定義の限界
複雑なタスクでは、状態数が多くその全てを列挙することは難しくなってくる。また、当然各状
態の組み合わせの数(状態遷移の数)も爆発的に増える。
⇒Value Iterationで計算しようとすると、永遠に終わらないくらい時間がかかる。
37
今まで:状態の数と、そのつながりが明
らかで、計算可能な程度の量
今:状態の数と遷移数がわけわからんくらい多く
て、計算しきるのはとても無理!
![Page 38: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/38.jpg)
We need new idea
38
どうするか?
![Page 39: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/39.jpg)
未知なる台地なら探索から
puhoto by Moyan Brenn
![Page 40: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/40.jpg)
より複雑なタスクへの挑戦
40
+1
-1
よくわからないので、とりあえず行動してみる
![Page 41: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/41.jpg)
より複雑なタスクへの挑戦
41
+1
-1
よくわからないので、とりあえず行動してみる
![Page 42: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/42.jpg)
より複雑なタスクへの挑戦
42
+1
-1
よくわからないので(以下略)
![Page 43: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/43.jpg)
より複雑なタスクへの挑戦
43
+1
-1
ぐはぁぁぁぁ!!(ゲーム終了)
![Page 44: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/44.jpg)
より複雑なタスクへの挑戦
44
+1
-1
遷移先の報酬から期待報酬を計算していく
先の報酬が割り引かれるのは、Value Iteration同様
![Page 45: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/45.jpg)
より複雑なタスクへの挑戦
45
+1
-1
探索は徐々に行われるので、最初は危ないと思っていたところも実は大きな報酬の近くだった、ということがありうる。⇒一回の探索結果をどれだけ信用するかについては、調整が必要する。
![Page 46: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/46.jpg)
より複雑なタスクへの挑戦
46
+1
-1
探索(=行動)によって、状態と、その遷移構造を明らかにしていく。また得られた報酬を元に、期待報酬を更新していく。その、探索での更新量はパラメーターで調整する。
行き止まり
![Page 47: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/47.jpg)
探索(=行動)によって、状態と、その遷移構造を明らかにしていく。また得られた報酬を元に、期待報酬を更新していく。ただ、その更新量はパラメーターで調整する。
より複雑なタスクへの挑戦
47
+1
-1
行き止まり
Q-learning
![Page 48: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/48.jpg)
より複雑なタスクへの挑戦
48
+1
-1
行き止まり
報酬が得られるルートがわかっていても、もっと安全だったり、より報酬が高いルートがあるかもしれない。⇒どれだけ探索をするか、どれだけ探索結果を活用するかのバランスが重要な戦略になる。
![Page 49: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/49.jpg)
より複雑なタスクへの挑戦
49
+1
-1
行き止まり
報酬が高いルートがわかればそれでいいけれども、もっと安全だったり、報酬が高いルートがあるかもしれない。⇒どれだけ探索をするか、どれだけ探索結果を活用するかを割合で決める。
ε-greedy法(random by ε)
![Page 50: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/50.jpg)
We finally made it?
50
これでいけそう?
![Page 51: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/51.jpg)
back to 状態定義の限界
ゲームを含む時系列のタスクでは、そもそも「状態」の境界線があいまい(↓は、果たして「4
つの状態」といえるか?)。
そのため、状態を連続的な値で表現したい。具体的には、以下の場合状態である「画像」を
連続値(ベクトル)で表現したい。
51
![Page 52: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/52.jpg)
back to 状態定義の限界
画像からの特徴抽出といえば・・・
52
Clarifai
![Page 53: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/53.jpg)
Deep Learningとの融合
![Page 54: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/54.jpg)
Convolutional Neural Network
54
Deep Learning界において、「香川といえばうどん」と同じくらい「画像といえばCNN(Convolutional Neural Network)」は当然のこととして扱われている。
Clarifai
CNNは、画像から特徴を抽出して判断するのに優れた手法。これを応用して、以下のような仕組みを構築する。
![Page 55: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/55.jpg)
Deep Q-learning
画像であるstateを、画像処理に優れたConvolutional Neural Network)に流し込み、「その状
態でどのactionがいい(=期待報酬が高い)か」を出力させる。
⇒期待報酬の計算プロセス(Q関数)を、Deep Learningに置き換える。これがつまるところ
・・・55
state 期待報酬
action
A
B
・・
Convolutional Neural Network
![Page 56: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/56.jpg)
Deep Q-learning
※価値関数(Q関数)自体をニューラルネットで近似するアイデアは以前からあったものであ
り、よって学習を成功させる手法まで含めてDQNとよぶ。
DQN(Deep Q-learning)
puhoto by Chloe Muro
![Page 57: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/57.jpg)
Deep Q-learningのプロセス
57
・・・
episode(1ゲーム終了までの期間)
experience
・・・
replay
現状態の報酬
遷移先の報酬
新しい期待報酬
誤差⇒DQN更新
DQN
定期的にコピー
行動とその結果(state/action/遷移先state/reward)を記憶
報酬のclipping報酬は-1,0,1に統一する(どんなゲームにも対応できるようにする)
![Page 58: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/58.jpg)
Deep Q-learningのプロセス
58
・・・
episode(1ゲーム終了までの期間)
experience
・・・
行動とその結果(state/action/遷移先state/reward)を記憶
replay
現状態の報酬
遷移先の報酬
新しい期待報酬
誤差⇒DQN更新
DQN
定期的にコピー
Fixed Target Q-Network遷移先報酬を計算する際の重みはしばらく固定し、定期的に更新する
Experience Replayexperienceに蓄積したものを、シャッフルして学習データにする。⇒学習データ間の相関を除去する(普通にやると時系列に並んでいるため、強い相関がある)。
![Page 59: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/59.jpg)
Deep Q-learningのプロセス
59
・・・
episode(1ゲーム終了までの期間)
experience
・・・
replay
stateの報酬
state’からの期待報酬
探索から算出された期待報酬
誤差⇒DQN更新
DQN
定期的にコピーFixed Target Q-Network遷移先報酬を計算する際の重みはしばらく固定し、定期的に更新する(報酬計算の安定性を高めるため)
![Page 60: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/60.jpg)
Deep Q-learningの実装
実行結果(Open AI Gymへアップロード済み)
60
![Page 61: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/61.jpg)
Deep Q-learningの実装
DQNは、結果が出るまでかなり時間がかかる。そのため、実際計算しないとわからないこと
以外は可能な限り事前にテストしておくことが重要。
● 感覚的にパラメーターの影響をかなり受けるため、テストしておかないと処理のミスか
パラメーターのチューニングの問題かわからなくなる。
○ 責務分担・処理の独立化を行い、手元のテストでつぶせるバグはすべてつぶして
おくこと。
○ これを怠ると、GPUの場合お財布、CPUの場合時間に致命的なダメージを負うこ
とになる
● GPUはほぼ必須(CPUの場合、いい感じかどうかわかるのに1~2日はかかる)
○ GPUインスタンスを使おう
○ OpenAI Gymを検証しているといえばAmazonから$250分もらえるらしい
61
![Page 62: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/62.jpg)
Deep Q-learningの実装
62
Environment(gym)
DQNTrainer
DQNAgent
observation action
train
学習時
observation action
実行時
Trainerが取れるだけ
experience buffer
Q-Network
Environment(gym)
DQNAgent
Q-Network
icoxfog417/chainer_pong
![Page 63: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/63.jpg)
Deep Q-learningの実装
63
100~250
![Page 64: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/64.jpg)
Deep Q-learningの実装
64
DQNの実装に必要なコードの行数
![Page 65: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/65.jpg)
Deep Q-learningの実装
アルゴリズムの実装自体にかかるコードはかなり少なくてすむ(OpenAIのメンバである
Andrej Karpathyさんのブログでは、実装にかかっているのはわずか130行(しかもコメント込
み))。加えて、昨今の機械学習系フレームワークの恩恵も受けられる。
Webアプリケーションを作ったりするより、ぜんぜん少ない行数で実装が可能。
65
![Page 66: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/66.jpg)
Deep Q-learningの実装
66
詳細な実装方法について、ハンズオンを実施する予定です。
Comming Soon!11月上~中旬
![Page 67: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/67.jpg)
おわりに
![Page 68: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/68.jpg)
おわりに
OpenAI Gymは自体は、難しい知識がなくても動かして、試すことができます。数式などを理
解するところからよりも、まず環境に触れてその「面白さ」を体感してもらえればと思います。
その入り口の先にある強化学習は、人による教育の限界を超えるためのアプローチ方法で
あり、最も研究が盛んな領域の一つです(だからこそ投資が行われているとも言えます)。本
日紹介した手法も、将来、また現時点ですでに時代遅れになっているかもしれません。
ただ、ベースとなる本質的な理論(Q-learningなど)は変わっていません。その意味では、本
日セッションに参加いただいた方は、すでにAI研究の一線の入り口に立っています。
68
![Page 70: Pythonではじめる OpenAI Gymトレーニング](https://reader034.vdocuments.mx/reader034/viewer/2022051318/58f9a900760da3da068b69e6/html5/thumbnails/70.jpg)
Thank you for listening!