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

85
GMOインターネット 次世代システム研究室 勝田 隼一郎 2017/12/27 次世代システム研究室-研究発表 (GMO Yours) 深層強化学習の self-playで、複雑な行動 を機械に学習させたい!

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

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

GMOインターネット 次世代システム研究室

勝田 隼一郎 2017/12/27 次世代システム研究室-研究発表 (GMO Yours)

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

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

�2

スライド長いよ!という人のために、ハイライトをまとめたブログが以下にあります。 「深層強化学習のself-playで遊んでみた!」 https://recruit.gmo.jp/engineer/jisedai/blog/self-play/

実験結果のアニメーションが以下にあります。 https://github.com/jkatsuta/17_4q_supplement

はじめに

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

�3

自己紹介勝田 隼一郎 • 大学時代: ボートに熱中しすぎ留年 • 東京大学大学院理学系 研究科物理学 修了(博士) • Stanford大学と広島大学で ポスドク(日本学術振興会; 高エネルギー宇宙物理学) 2016.4: GMOインターネット 次世代システム研究室 データサイエンティスト兼アーキテクト

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

�4

本研究の背景AlphaGoなどで有名になった深層強化学習。

近”self-play”による研究もさかん。

正解のない世界で、より正しい方法を模索する強化学習。その中でも、機械同士を争わせてよりよい手法を学習するself-playは、有望な手法の一つ!

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

�5

本研究の背景ちょうどこんな記事も。 「日立製作所、ビジネス適用可能な自己競争型AI技術を開発」 https://japan.zdnet.com/article/35112453/

(ZDNet Japan 2017/12/25)

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

�6

本研究の目的

「Self-playによる深層強化学習について、近発表された論文をベースに学び、その知見を習得しグループに共有する。」

目的 「Self-playで遊んでみたい!」

大人の言葉に翻訳すると、、、

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

7

Outline

1. イントロ • 深層強化学習とは • Self-playとは(Alpha Goを例に)

2. 実験 • 背景、セットアップ • 実験結果、デモ • 考察

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

�8

イントロ

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

9

深層強化学習とは?深層学習の技術を 強化学習という学習フレームワークに応用

ここでは強化学習について説明する。 深層学習については、強化学習のフレームワークを実現するのに便利な道具、と思ってもらえば良い。

参考:「Deep Q-LearningでFXしてみた @ slideshare」 https://www.slideshare.net/JunichiroKatsuta/deep-qlearningfx

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

10

強化学習は、機械学習の一種

教師あり学習

教師なし学習

強化学習

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

�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

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

�12

機械学習とは

数式(モデル)= “機械”のパラメータを、データに合うように、 適化 = “学習”すること

深層学習も原理は全く同じ。 何か神秘的なことが起きているのではない。

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

�13

教師あり学習 vs 強化学習例:無人島サバイバル

教師あり学習 “ツアー:無人島サバイバルを体験しよう! # 経験豊富ガイドがいるので安全です!”

• ガイド(教師)がいる。 • 参加者(学習者)は、ガイドの言うとおりにすれば(正解データを真似すれば)、魚を釣り、火を起こせる。サバイバルには困らない。

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

�14

教師あり学習 vs 強化学習

強化学習 = “リアルガチな無人島”

• 教師がいない。 • 一人で行動し、その行動の結果から学習する。 • 正解がわからない中で、”正しそう”な「方針」を学ぶ。効率的な学習をしないと死んでしまう。。

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

�15

強化学習の概念図Agent (学習者)が 環境からの 情報(状態、報酬)をもとに、 適( 終的な報酬が も高くなる)な行動をとるように学習する技術

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

�16

囲碁の場合

• 状態: 盤上の碁の位置 • 行動: 自分の石を一つ置く • 報酬: 勝つか負けるか

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

�17

AlphaGo• Google DeepMind社が開発した囲碁をプレイするプログラム。

• 2016, 2017年に世界トップ棋士(人間)をなぎ倒し、史上 強に。

• 2017/10には後継のAlphaGo Zeroが発表。 • 人に圧勝したAlphaGoを、さらにフルボッコにしてドラゴンボールの世界を現実世界に展開。。← ナメック星で、フリーザの戦闘力を聞いた時の絶望感くらい。

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

�18

AlphaGo1. 教師あり学習(人間の棋譜が教師) 2. 機械同士の対戦(self-play)で、さらに性能を高める

3. モンテカルロ木探索

AlphaGo Zero• Self-play x モンテカルロ木探索

• 人間の棋譜は全く使用せず • 純粋に機械だけで学習

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

�19

強化学習

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

�20

Self-play

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

�21

注:• 前頁ではわかりやすさのため、2 agentsで分けたが、囲碁のように完全に対照的なゲームの場合、agentは2体でもモデルは1 agent分あれば十分。

• ただし非対称な場合は、agentごとにモデルが必要なので、前頁の方がより一般的な場合に当てはまる。

• もちろん、より一般的にはN agentsに拡張できる。

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

�22

Self-play• 人の知識が要らず、機械だけで学習

• 人が楽 • 人が考えないような行動を学習する可能性

• 膨大な回数のゲームを(疲れずに)行える • 対戦相手が徐々に強くなることで、単純な環境/ルールから複雑な行動の学習が可能

→ 囲碁以外にも応用できそう!

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

�23

実験

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

�24

実験の背景下記論文(2017/10発表)を参考にする

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

�25

run-to-goal-ants-v0

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

�26

実験の内容

自陣からスタートして、相手陣地の ゴールに先についたAgentの勝利

Agent0 Agent1

下記ゲームを、敵対するAgent同士で争わせる。勝利 = 報酬。  相手に勝つ様に互いが学習することで、どちらも強いAgent

run-to-goal-ants-v0:

に成長していく、、 はず。

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

�27

実験の目的1.上述の論文の再現実験を行う。論文にはほ

ぼ学習結果しか書かれていない。自前で実験することで、途中経過も観測可能となり、結果と合わせて考察する。

2.再現するだけでは面白くないので、論文から設定を少し変更して実験する。変更により結果がどう変化するか観察し考察。

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

�28

Self-play

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

�29

行動:足のjoint部分の動かし幅。    4足 x 2箇所 = 8箇所をどのように    動かすかを学習する。

状態:Agentが知覚できると仮定できる情報    (自分の位置 + 相手の位置 + 自分の足を    どのように動かしたか + 外力)

目は描いてないけど、あるってことにして学習するよ

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

�30

• 上の報酬だけだと、歩くことすら困難。 • 赤ちゃんが歩くことから学習するように、学習初期は歩けたら、すぐに(dense)報酬。

• 学習回数が増えるごとに、ゴール報酬(sparse)に切り替えていく。

報酬: • 勝ち → プラスの報酬 • 負け → マイナスの報酬

Advanced!: dense → sparse rewards

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

�31

強化学習アルゴリズムの概念図

データ収集

方針の改善

(改善した 方針で)

(状態→行動の ”方針”を改善)

データ加工

(Q, V, A, etc)1周 = 1 iteration iterごとにモデルが学習

本実験では、 何度もゲームをすること (5万steps/iter; ボトルネック)

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

�32

学習曲線

学習回数

報酬

正しく強化学習していれば、Agentは学習を重ねるごとに強くなり(=報酬が大きくなり)、いずれかの時点で収束する。

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

�33

使用マシンGMOアプリクラウド type XL

•12 vCPU •120-GB mem •2.66 GHz

学習のボトルネックは、学習データの収集時間 → 複数のプロセスを並列に走らせることで、同時にデータ収集し時間を節約。

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

�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. ゲーム環境を論文に合わせるよう修正

既存のものを使用

やったこと

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

�35

3. 論文通りのパラメータで学習すると、全然終わらないので、学習パラメータを変更。

論文 本実験model MLP MLPn_hidden_layer 2 2n_hidden_unit 128 64learning rate 1E-03 1E-03ε_PPO 0.2 0.2γ 0.995 0.995λ_GAE 0.95 0.95n_batch 409600 (~4e+5) 49152 (~5e+4)n_mini_batch 5120 1024n_epoch / iter 6 10α_annealing 0 @ 500 iters 0 @ 300 iters

論文: 1 iter (改善) ~ 9分 → 1000 itersで~6日 → 1 iterで収集するデータ量を~1/8に変更 → 1000 iters ~ 1日弱

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

�36

前置きが長くなりましたが 実験開始!

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

実施した実験1. 実験1(テスト)

• 複雑な実験をする前のテスト 2. 実験2(本番)

• 本番。論文の再現実験 3. 実験3(応用)

• 実験2から、若干セットアップを変更 • どのように結果が変化するかチェック

4. 実験5(おまけ; 実験4は割愛)

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

�38

実験1

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

�39

実験1: テストルール Agent0のみ学習。もう一方 (Agent1)は学習しない。 # self-playでなく普通の1-agent強化学習。

期待 Agent0がまっすぐ進む ように学習 # Agent1はランダムに行動

Agent0: learning

Agent1: no-learning

???

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

�40

実験1: 学習曲線

940500150500

1000が 報酬のMAX

iter=500でほぼ収束 よく見ると、報酬が微増

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

�41

注:これから紹介していく、実験1–5の結果のアニメーションは https://github.com/jkatsuta/17_4q_supplement にあります。

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

�42

iter = 0 Agent0 Agent1

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

�43

実験1: 結果(iter=0)

• 何も学んでないので、適当に動いている。 • 学習しないと高く跳ねて、自滅する。

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

�44

iter = 50

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

�45

• この時点で学んでいるのは、ゴールすることよりちゃんと歩くこと。

• Agent0(赤)はそれを学習しつつあるのがわかる(跳ねにくい傾向)。

• Agent1(青)は何も学習していない。当たり前だが。。

実験1: 結果 (iter=50)

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

�46

iter = 150

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

�47

iter = 150

• ゴールに行く学習をしている。 • ただしまだ不安定。

実験1: 結果(iter=150)

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

�48

iter = 500

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

�49

• 確実にゴールする学習をしている。 • まっすぐ進むように学習するのかと予想したが、相手Agentを避けるよう、右に進むように学習している。

• 賢いなぁ。。

実験1: 結果(iter=500)

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

�50

iter = 940 (final model)

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

�51

iter = 940

• Final model • 確実にゴールする学習をしている。 • iter=500との差は殆ど見えない(iter=500で、ほぼ学習が収束しているようだ)。

実験1: 結果 (iter=940)

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

�52

実験2

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

�53

実験2: 本番

ルール 論文の通り。2体のAgentが、 相手より早くゴールに到達す るように学習する。

Agent0: learning

�53

Agent1: learning

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

�54

実験2: 学習曲線

• 全体的な学習曲線の形は、実験1のときに似ている。 • 収束している値は300程度(実験1はMAXの~1000) • これは相手に勝ったり負けたりしているから。

970

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

�55

Agent0 (iter = 970) vs

Agent1 (iter = 970)

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

�56

実験2:結果(iter = 970)• 学習した戦略は、基本的には

• 相手に体当たりをする。 • 相手が怯んだら、そのすきにゴールに走る

• しかし明らかに相手を倒す事に”固執”したような行動も見られる。

• これは、ただ単に自分がゴールに向かうより、相手を倒した方が勝てる事を学んだ、とも考えられる。

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

�57

実験2: 複雑な行動の創発• 単純な環境:ゴールと相手Agentのみ • 単純なルール:相手陣地のゴールを先に走り抜ければ良い。

• しかし 終的に学んだ戦略(の方向性)は、「ただ単に早くゴールする」ではなく、「相手の息の根を止めてから、確実に自分がゴールする」というもの。

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

�58

実験2: 複雑な行動の創発

• 環境もルールも倒すことに報酬は与えていない。Agent同士が勝負をする中で、相手を倒す行動を学習。

• 実験1では、相手Agentが弱すぎて、倒す行動は学習していない。

• 実験2でも、学習初期は相手を倒すことより、ゴールを目指す事(報酬そのもの)に重きを置いているように見える(次頁)。

単純な環境 x self-play → 複雑な行動

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

�59

Agent0 (iter = 300) vs

Agent1 (iter = 300)

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

�60

実験2: 新モデルは本当に 強?

50% =互角

勝率

Agent1の過去モデル新しいモデル(iter>~800)では、ほぼ互角だが、 新モデルは 強と言って問題ない。

Agent0の 新モデル(970) vs 色々なAgent1の過去モデル

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

�61

Agent0 (iter = 970) vs

Agent1 (iter = 300)

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

�62

実験3

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

�63

実験3: 応用

�63

期待 Agent0が勝つには、ただゴールに向かうのではダメ。Agent1を倒す必要がある。その学習をできるか?

Agent0を 斜め後ろに移動

ルール 実験2と同じ。ただし、Agent0の初期位置を、実験2の位置から斜め後ろにずらす。 明らかにAgent0が不利

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

�64

圧倒的絶望。。。

1920800

「Agent0が~100%負け」に収束している。期待通りには学習できなかったようだ。。

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

�65

Agent0 (iter = 800) vs

Agent1 (iter = 800)

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

�66

Agent0 (iter = 1920) vs

Agent1 (iter = 1920)

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

�67

実験3: 考察• 学習曲線で覚悟した行動よりは、悪くなかった。iter=800→1920でも学習をしている。

• Agent0:Agent1側に動く(Agent1をinterruptしようとする)行動は学習している。

• Agent1:初動でAgent0のいない方向に思いっきり飛んで、Agent0に邪魔されないように学習している。

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

�68

実験3: 考察• 実験2から初期値を変更すると、それに応じた異なる行動を学習

• 両Agentとも学習するが、現状のゲーム設定では、学習が収束するとAgent1がほぼ勝ってしまう。

• Self-playとはいえ、期待する行動の学習させるには、ちゃんと設定をしないといけないことがわかる。

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

�69

実験5

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

�70

実験5: 追加実験 (実験4は割愛)

�70

期待 実験3の設定では、Agent0が不利すぎたので、制約を緩和する。Agent0の勝率が上がる事を期待。

Agent0を 後ろに移動

ルール 実験2と同じ。ただし、Agent0の初期位置を、実験2の位置から後ろにずらす。 Agent0が不利

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

�71

実験5: 学習曲線学習曲線の取得に失敗。。→ Agent0の 新モデル vs Agent1の過去モデルの勝率の図を作成

勝率

Agent1の過去モデル

Agent0の 新モデル(2035) vs 色々なAgent1の過去モデル

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

�72

実験5: 新モデル vs 過去モデル前頁の図より、 実験3と同様、Agent0はほぼ勝てない。 < 500 itersまでは、勝率~15%を保っているが、それ以降、下がり、 終的には3%程度に収束。 → 実験5の条件でも、Agent0が勝つのは難しいようだ。

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

�73

Agent0 (iter = 2035) vs

Agent1 (iter = 2035)

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

�74

Agent0 (iter = 2035) vs

Agent1 (iter = 1000)

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

�75

Agent0 (iter = 2035) vs

Agent1 (iter = 200)

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

�76

実験5: 考察• Agent0:Agent1側に動く(Agent1を邪魔する)行動は学習している。実際、勝利した場合は、相手を倒した後にゴールしている。

• Agent1:iterが進むにつれ、横に動く幅が大きくなっており、Agent0に邪魔されないように学習している。横幅が大きくなるとAgent1が追いつけなくなり、Agent1がほぼ勝利。

• 全体として実験3に似ているが、各Agentの学習した行動が、よりクリアになっている。

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

�77

おまけ• 実験5のAgent0 新モデル(2035) vs 実験2のAgent1 新モデル(970)を、実験2のセットアップで行った。

• → Agent0の勝率 ~ 15% • → 実験5のセットアップよりは、勝率は高くなっているが、実験2の 新モデルの場合(勝率~50%)と比べると低い。

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

�78

Agent0 (exp5; iter = 2035) vs

Agent1 (exp2; iter = 970)

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

�79

• Agent1を邪魔するためトリッキーな動きを学習した分、安定性が小さくAgent1に負ける。

• →Agentの学習内容は、環境に強く依存することを確認。

• → 報酬設計なしに(環境だけで)、“相手Agentを倒す”といった特定の行動を、意図的に創発させるのは難しい気がする。

• → 論文では、異なる環境でも強いAgentが作れると書いていたが、難しいのでは?

考察

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

�80

まとめ

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

�81

まとめ• Bansal+17の実験(run-to-goal-ants)の再現を試み、ほぼ成功した。

• 相手より早くゴールする単純なゲームにも関わらず「相手を先に倒してからゴールする」という行動を学習したように見える。

• これはSelf-playにより、単純な環境から、複雑な行動を学習したと解釈できる。

• Agentの初期位置を変更することで、学習する行動に変化が出ることも確認した。

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

�82

今後やってみたいこと

• 他のゲームも試す(論文の4種類のゲーム)。 • 新しいゲームを作る。

• 敵対するだけでなく、協力するAgentは作れないのか?

• 効率的な学習方法の模索

たとえば、、

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

�83

ご清聴ありがとうございました!

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

�84

Backup

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

�85

Advanced! 敵は過去の相手全員!

各Agentは 新の行動方針で、”学習した相手”と戦い、そのデータを収集し、 新の行動方針をさらに改善。 ただし”学習した相手”は、必ずしも 新の学習をした方針を使うとは限らない。 新のモデル同士だけで戦うと、学習が不安定になるからだ(左図)。そこで過去の相手のモデルを全て記憶しておき、iterごとにそれらとランダムに戦うことで、この不安定性を回避する(右図)。 = 過去の相手全てに勝てるように学習することで安定化

Bansal+17