GMOインターネット
次世代システム研究室
勝田 隼一郎
2017/12/27 次世代システム研究室-研究発表 (GMO Yours)
深層強化学習の
self-playで、複雑な行動
を機械に学習させたい!
2
スライド長いよ!という人のために、ハイライ
トをまとめたブログが以下にあります。
「深層強化学習のself-playで遊んでみた!」
https://recruit.gmo.jp/engineer/jisedai/blog/self-play/
実験結果のアニメーションが以下にあります。
https://github.com/jkatsuta/17_4q_supplement
はじめに
3
自己紹介
勝田 隼一郎
• 大学時代:
ボートに熱中しすぎ留年
• 東京大学大学院理学系
研究科物理学 修了(博士)
• Stanford大学と広島大学で
ポスドク(日本学術振興会;
高エネルギー宇宙物理学)
2016.4: GMOインターネット
次世代システム研究室
データサイエンティスト兼アーキテクト
4
本研究の背景
AlphaGoなどで有名になった深層強化学習。
最近”self-play”による研究もさかん。
正解のない世界で、より正しい方法を模索する
強化学習。その中でも、機械同士を争わせてよ
りよい手法を学習するself-playは、有望な手
法の一つ!
5
本研究の背景
ちょうどこんな記事も。
「日立製作所、ビジネス適用可能な自己競争型
AI技術を開発」
https://japan.zdnet.com/article/35112453/
(ZDNet Japan 2017/12/25)
6
本研究の目的
「Self-playによる深層強化学習について、最
近発表された論文をベースに学び、その知見を
習得しグループに共有する。」
目的
「Self-playで遊んでみたい!」
大人の言葉に翻訳すると、、、
7
Outline
1. イントロ
• 深層強化学習とは
• Self-playとは(Alpha Goを例に)
2. 実験
• 背景、セットアップ
• 実験結果、デモ
• 考察
8
イントロ
9
深層強化学習とは?
深層学習の技術を
強化学習という学習フレームワークに応用
ここでは強化学習について説明する。
深層学習については、強化学習のフレーム
ワークを実現するのに便利な道具、と思って
もらえば良い。
参考:「Deep Q-LearningでFXしてみた @ slideshare」
https://www.slideshare.net/JunichiroKatsuta/deep-qlearningfx
10
強化学習は、機械学習の一種
教師あり学習
教師なし学習
強化学習
11
機械は何を学習してる?(教師あり学習)
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
12
機械学習とは
数式(モデル)= “機械”のパラメータを、デー
タに合うように、最適化 = “学習”すること
深層学習も原理は全く同じ。
何か神秘的なことが起きているのではない。
13
教師あり学習 vs 強化学習
例:無人島サバイバル
教師あり学習
“ツアー:無人島サバイバルを体験しよう!
# 経験豊富ガイドがいるので安全です!”
• ガイド(教師)がいる。
• 参加者(学習者)は、ガイドの言うとおりにす
れば(正解データを真似すれば)、魚を釣り、
火を起こせる。サバイバルには困らない。
14
教師あり学習 vs 強化学習
強化学習
= “リアルガチな無人島”
• 教師がいない。
• 一人で行動し、その行動の結果から学習する。
• 正解がわからない中で、”正しそう”な「方針」
を学ぶ。効率的な学習をしないと死んでしま
う。。
15
強化学習の概念図
Agent (学習者)が
環境からの
情報(状態、報酬)を
もとに、最適(最終
的な報酬が最も高く
なる)な行動をとる
ように学習する技術
16
囲碁の場合
• 状態: 盤上の碁の位置
• 行動: 自分の石を一つ置く
• 報酬: 勝つか負けるか
17
AlphaGo
• Google DeepMind社が開発した囲碁をプレ
イするプログラム。
• 2016, 2017年に世界トップ棋士(人間)を
なぎ倒し、史上最強に。
• 2017/10には後継のAlphaGo Zeroが発表。
• 人に圧勝したAlphaGoを、さらにフルボッコ
にしてドラゴンボールの世界を現実世界に展
開。。← ナメック星で、フリーザの戦闘力を
聞いた時の絶望感くらい。
18
AlphaGo
1. 教師あり学習(人間の棋譜が教師)
2. 機械同士の対戦(self-play)で、さ
らに性能を高める
3. モンテカルロ木探索
AlphaGo Zero
• Self-play x モンテカルロ木探索
• 人間の棋譜は全く使用せず
• 純粋に機械だけで学習
19
強化学習
20
Self-play
21
注:
• 前頁ではわかりやすさのため、2 agentsで分
けたが、囲碁のように完全に対照的なゲームの
場合、agentは2体でもモデルは1 agent分あ
れば十分。
• ただし非対称な場合は、agentごとにモデル
が必要なので、前頁の方がより一般的な場合に
当てはまる。
• もちろん、より一般的にはN agentsに拡張で
きる。
22
Self-play
• 人の知識が要らず、機械だけで学習
• 人が楽
• 人が考えないような行動を学習する可能性
• 膨大な回数のゲームを(疲れずに)行える
• 対戦相手が徐々に強くなることで、単純な環
境/ルールから複雑な行動の学習が可能
→ 囲碁以外にも応用できそう!
23
実験
24
実験の背景
下記論文(2017/10発表)を参考にする
25
run-to-goal-ants-v0
26
実験の内容
自陣からスタートして、相手陣地の
ゴールに先についたAgentの勝利
Agent0
Agent1
下記ゲームを、敵対するAgent同士で争わせ
る。勝利 = 報酬。
 相手に勝つ様に互いが学習することで、どち
らも強いAgent
run-to-goal-ants-v0:
に成長していく、、
はず。
27
実験の目的
1.上述の論文の再現実験を行う。論文にはほ
ぼ学習結果しか書かれていない。自前で実
験することで、途中経過も観測可能とな
り、結果と合わせて考察する。
2.再現するだけでは面白くないので、論文か
ら設定を少し変更して実験する。変更によ
り結果がどう変化するか観察し考察。
28
Self-play
29
行動:足のjoint部分の動かし幅。
   4足 x 2箇所 = 8箇所をどのように
   動かすかを学習する。
状態:Agentが知覚できると仮定できる情報
   (自分の位置 + 相手の位置 + 自分の足を
   どのように動かしたか + 外力)
目は描いてないけ
ど、あるってこと
にして学習するよ
30
• 上の報酬だけだと、歩くことすら困難。
• 赤ちゃんが歩くことから学習するように、学
習初期は歩けたら、すぐに(dense)報酬。
• 学習回数が増えるごとに、ゴール報酬
(sparse)に切り替えていく。
報酬:
• 勝ち → プラスの報酬
• 負け → マイナスの報酬
Advanced!: dense → sparse rewards
31
強化学習アルゴリズムの概念図
データ収集
方針の改善
(改善した
方針で)
(状態→行動の
”方針”を改善)
データ加工
(Q, V, A, etc)
1周 = 1 iteration
iterごとにモデルが学習
本実験では、
何度もゲームをすること
(5万steps/iter; ボトルネック)
32
学習曲線
学習回数
報酬
正しく強化学習していれば、Agentは学習を重
ねるごとに強くなり(=報酬が大きくなり)、
いずれかの時点で収束する。
33
使用マシン
GMOアプリクラウド
type XL
•12 vCPU
•120-GB mem
•2.66 GHz
学習のボトルネックは、学習データの収集時間
→ 複数のプロセスを並列に走らせることで、
同時にデータ収集し時間を節約。
34
本実験の準備で、自分のやったこと
• 1 agentで学習するアルゴリズム (PPO)
• https://github.com/openai/baselines
• ゲーム環境(run-to-goal-ants-v0)
• https://github.com/openai/multiagent-competition
1. このゲームを学習するには、2 agentsでPPO
を用いて相互に学習する必要がある。
→ 上記コードを用いて作成 (TensorFlow)
2. ゲーム環境を論文に合わせるよう修正
既存のものを使用
やったこと
35
3. 論文通りのパラメータで学習すると、全然終わらな
いので、学習パラメータを変更。
論文 本実験
model MLP MLP
n_hidden_layer 2 2
n_hidden_unit 128 64
learning rate 1E-03 1E-03
ε_PPO 0.2 0.2
γ 0.995 0.995
λ_GAE 0.95 0.95
n_batch 409600 (~4e+5) 49152 (~5e+4)
n_mini_batch 5120 1024
n_epoch / iter 6 10
α_annealing 0 @ 500 iters 0 @ 300 iters
論文: 1 iter (改善) ~ 9分 → 1000 itersで~6日
→ 1 iterで収集するデータ量を~1/8に変更
→ 1000 iters ~ 1日弱
36
前置きが長くなりましたが
実験開始!
実施した実験
1. 実験1(テスト)
• 複雑な実験をする前のテスト
2. 実験2(本番)
• 本番。論文の再現実験
3. 実験3(応用)
• 実験2から、若干セットアップを変更
• どのように結果が変化するかチェック
4. 実験5(おまけ; 実験4は割愛)
38
実験1
39
実験1: テスト
ルール
Agent0のみ学習。もう一方
(Agent1)は学習しない。
# self-playでなく普通の1-agent強化学習。
期待
Agent0がまっすぐ進む
ように学習
# Agent1はランダムに行動
Agent0:
learning
Agent1:
no-learning
???
40
実験1: 学習曲線
940500150500
1000が
報酬のMAX
iter=500でほぼ収束
よく見ると、報酬が微増
41
注:これから紹介していく、実験1–5の結果の
アニメーションは
https://github.com/jkatsuta/17_4q_supplement
にあります。
42
iter = 0 Agent0
Agent1
43
実験1: 結果(iter=0)
• 何も学んでないので、適当に動いている。
• 学習しないと高く跳ねて、自滅する。
44
iter = 50
45
• この時点で学んでいるのは、ゴールすること
よりちゃんと歩くこと。
• Agent0(赤)はそれを学習しつつあるのがわ
かる(跳ねにくい傾向)。
• Agent1(青)は何も学習していない。当たり
前だが。。
実験1: 結果 (iter=50)
46
iter = 150
47
iter = 150
• ゴールに行く学習をしている。
• ただしまだ不安定。
実験1: 結果(iter=150)
48
iter = 500
49
• 確実にゴールする学習をしている。
• まっすぐ進むように学習するのかと予想した
が、相手Agentを避けるよう、右に進むよう
に学習している。
• 賢いなぁ。。
実験1: 結果(iter=500)
50
iter = 940
(final model)
51
iter = 940
• Final model
• 確実にゴールする学習をしている。
• iter=500との差は殆ど見えない
(iter=500で、ほぼ学習が収束しているよ
うだ)。
実験1: 結果 (iter=940)
52
実験2
53
実験2: 本番
ルール
論文の通り。2体のAgentが、
相手より早くゴールに到達す
るように学習する。
Agent0:
learning
53
Agent1:
learning
54
実験2: 学習曲線
• 全体的な学習曲線の形は、実験1のときに似ている。
• 収束している値は300程度(実験1はMAXの~1000)
• これは相手に勝ったり負けたりしているから。
970
55
Agent0 (iter = 970)
vs
Agent1 (iter = 970)
56
実験2:結果(iter = 970)
• 学習した戦略は、基本的には
• 相手に体当たりをする。
• 相手が怯んだら、そのすきにゴールに走る
• しかし明らかに相手を倒す事に”固執”したよ
うな行動も見られる。
• これは、ただ単に自分がゴールに向かうよ
り、相手を倒した方が勝てる事を学んだ、と
も考えられる。
57
実験2: 複雑な行動の創発
• 単純な環境:ゴールと相手Agentのみ
• 単純なルール:相手陣地のゴールを先に走り
抜ければ良い。
• しかし最終的に学んだ戦略(の方向性)は、
「ただ単に早くゴールする」ではなく、「相
手の息の根を止めてから、確実に自分がゴー
ルする」というもの。
58
実験2: 複雑な行動の創発
• 環境もルールも倒すことに報酬は与えてい
ない。Agent同士が勝負をする中で、相手を
倒す行動を学習。
• 実験1では、相手Agentが弱すぎて、倒す行
動は学習していない。
• 実験2でも、学習初期は相手を倒すことよ
り、ゴールを目指す事(報酬そのもの)に重
きを置いているように見える(次頁)。
単純な環境 x self-play → 複雑な行動
59
Agent0 (iter = 300)
vs
Agent1 (iter = 300)
60
実験2: 最新モデルは本当に最強?
50%
=互角
勝率
Agent1の過去モデル
新しいモデル(iter>~800)では、ほぼ互角だ
が、最新モデルは最強と言って問題ない。
Agent0の最新モデル(970)
vs
色々なAgent1の過去モデル
61
Agent0 (iter = 970)
vs
Agent1 (iter = 300)
62
実験3
63
実験3: 応用
63
期待
Agent0が勝つには、ただ
ゴールに向かうのではダ
メ。Agent1を倒す必要があ
る。その学習をできるか?
Agent0を
斜め後ろに移動
ルール
実験2と同じ。ただし、Agent0の初期位置
を、実験2の位置から斜め後ろにずらす。
明らかにAgent0が不利
64
圧倒的絶望。。。
1920800
「Agent0が~100%負け」に収束している。
期待通りには学習できなかったようだ。。
65
Agent0 (iter = 800)
vs
Agent1 (iter = 800)
66
Agent0 (iter = 1920)
vs
Agent1 (iter = 1920)
67
実験3: 考察
• 学習曲線で覚悟した行動よりは、悪くなかっ
た。iter=800→1920でも学習をしている。
• Agent0:Agent1側に動く(Agent1を
interruptしようとする)行動は学習してい
る。
• Agent1:初動でAgent0のいない方向に思
いっきり飛んで、Agent0に邪魔されないよう
に学習している。
68
実験3: 考察
• 実験2から初期値を変更すると、それに応じ
た異なる行動を学習
• 両Agentとも学習するが、現状のゲーム設定
では、学習が収束するとAgent1がほぼ勝って
しまう。
• Self-playとはいえ、期待する行動の学習さ
せるには、ちゃんと設定をしないといけない
ことがわかる。
69
実験5
70
実験5: 追加実験 (実験4は割愛)
70
期待
実験3の設定では、Agent0
が不利すぎたので、制約を
緩和する。Agent0の勝率が
上がる事を期待。
Agent0を
後ろに移動
ルール
実験2と同じ。ただし、Agent0の初期位置
を、実験2の位置から後ろにずらす。
Agent0が不利
71
実験5: 学習曲線
学習曲線の取得に失敗。。→ Agent0の最新モデル
vs Agent1の過去モデルの勝率の図を作成
勝率
Agent1の過去モデル
Agent0の最新モデル(2035)
vs
色々なAgent1の過去モデル
72
実験5: 最新モデル vs 過去モデル
前頁の図より、
実験3と同様、Agent0はほぼ勝てない。
< 500 itersまでは、勝率~15%を保っている
が、それ以降、下がり、最終的には3%程度に
収束。
→ 実験5の条件でも、Agent0が勝つのは難し
いようだ。
73
Agent0 (iter = 2035)
vs
Agent1 (iter = 2035)
74
Agent0 (iter = 2035)
vs
Agent1 (iter = 1000)
75
Agent0 (iter = 2035)
vs
Agent1 (iter = 200)
76
実験5: 考察
• Agent0:Agent1側に動く(Agent1を邪魔
する)行動は学習している。実際、勝利した場
合は、相手を倒した後にゴールしている。
• Agent1:iterが進むにつれ、横に動く幅が大
きくなっており、Agent0に邪魔されないよう
に学習している。横幅が大きくなるとAgent1
が追いつけなくなり、Agent1がほぼ勝利。
• 全体として実験3に似ているが、各Agentの学
習した行動が、よりクリアになっている。
77
おまけ
• 実験5のAgent0最新モデル(2035) vs 実験2
のAgent1最新モデル(970)を、実験2の
セットアップで行った。
• → Agent0の勝率 ~ 15%
• → 実験5のセットアップよりは、勝率は高く
なっているが、実験2の最新モデルの場合(勝
率~50%)と比べると低い。
78
Agent0 (exp5; iter = 2035)
vs
Agent1 (exp2; iter = 970)
79
• Agent1を邪魔するためトリッキーな動きを学
習した分、安定性が小さくAgent1に負ける。
• →Agentの学習内容は、環境に強く依存する
ことを確認。
• → 報酬設計なしに(環境だけで)、“相手
Agentを倒す”といった特定の行動を、意図的
に創発させるのは難しい気がする。
• → 論文では、異なる環境でも強いAgentが作
れると書いていたが、難しいのでは?
考察
80
まとめ
81
まとめ
• Bansal+17の実験(run-to-goal-ants)の再
現を試み、ほぼ成功した。
• 相手より早くゴールする単純なゲームにも関
わらず「相手を先に倒してからゴールする」
という行動を学習したように見える。
• これはSelf-playにより、単純な環境から、
複雑な行動を学習したと解釈できる。
• Agentの初期位置を変更することで、学習す
る行動に変化が出ることも確認した。
82
今後やってみたいこと
• 他のゲームも試す(論文の4種類のゲーム)。
• 新しいゲームを作る。
• 敵対するだけでなく、協力するAgentは作
れないのか?
• 効率的な学習方法の模索
たとえば、、
83
ご清聴ありがとうございました!
84
Backup
85
Advanced! 敵は過去の相手全員!
各Agentは最新の行動方針で、”学習した相手”と戦い、その
データを収集し、最新の行動方針をさらに改善。
ただし”学習した相手”は、必ずしも最新の学習をした方針を
使うとは限らない。最新のモデル同士だけで戦うと、学習が
不安定になるからだ(左図)。そこで過去の相手のモデルを
全て記憶しておき、iterごとにそれらとランダムに戦うこと
で、この不安定性を回避する(右図)。
= 過去の相手全てに勝てるように学習することで安定化
Bansal+17

深層強化学習の self-playで、複雑な行動を機械に学習させたい!