分散型強化学習⼿法の最近の動向と
分散計算フレームワークRayによる実装の試み
太⽥ 晋
2020/6/20
⽬次
• ⾃⼰紹介
• 強化学習とは
• 分散型強化学習⼿法の最近の動向
• 分散計算フレームワークRayによる分散型強化学習実装の試み
• まとめ
⽬次
• ⾃⼰紹介
• 強化学習とは
• 分散型強化学習⼿法の最近の動向
• 分散計算フレームワークRayによる分散型強化学習実装の試み
• まとめ
⾃⼰紹介
• 太⽥ 晋
• フリーランスエンジニア
• 東京⼯科⼤学⾮常勤講師
• 2018年頃から強化学習に関⼼
• 全脳アーキテクチャハッカソン2018 に参加
• 眼球運動に関する6個のタスク(右上図)
• 5個解けた(ただしルールベース) 最優秀賞(7チーム中)
• The Animal-AI Olympics 2019 に参加
• 動物の認知に関する10個のタスク(右下図)
• エサの獲得・対象の永続性・因果推論等
• コンペ中はタスクが⾮公開(テーマとタスク構築ツールだ
けが提⽰)
→テーマを考慮して⾃分でタスクを設計してエージェントを学
習させる必要
• 三好さんとチームで参加し、カリキュラム学習、Path
Integration、LIDARによるマップ作成等を試した
• 全体18位(61チーム中)
• カテゴリ7(Internal Models)賞 (繰り上げ)
• 現在はマルチエージェント強化学習、内的報酬、
モデルベース強化学習等に興味があります
http://animalaiolympics.com/AAI/
https://wba-initiative.org/3401/
⾃⼰紹介
• The Animal-AI Olympics 2019 に参加して感じたこと
• カリキュラム学習の難しさ
• どのようなカリキュラムを設計するか
• どの程度学習できたら次のカリキュラムに移⾏するか(基準)
• ⾃動カリキュラムの必要性
• The Problem Problem (Leibo et al., 2019)
• 「⼈⼿で問題を作らなければならない問題」が今後のAI研究のボトル
ネック
→「機械が問題を作り機械が問題を解く」仕組みが求められる
例: Hide and Seek かくれんぼ (右図)
• マルチエージェント強化学習 (HiderとSeekerの2チーム)
• エピソード前半はHiderだけ⾏動可能. 後半からSeekerが⾏動可能に
• ブロックで三⽅を囲って砦→傾斜ブロックで砦を突破→傾斜ブロック
を固定して阻⽌
• 道具を使うことにインセンティブを与えていないのに道具の使い⽅を
創発
• Hiderが問題を作りSeekerが問題を解く
例: 敵対的⽣成ネットワーク(GAN)
• ⽣成器が問題を作り識別器が問題を解く
• 計算量が膨⼤になる
→分散型⼿法が必要
Baker et al., "Emergent Tool Use From Multi-Agent Autocurricula", ICLR2020, 2020.
https://openai.com/blog/emergent-tool-use/
Leibo et al., "Autocurricula and the Emergence of Innovation from Social
Interaction: A Manifesto for Multi-Agent Intelligence Research", arXiv preprint
arXiv:1903.00742, 2019.
Hide and Seek については三好さんのスライドが参考になります
https://do2dle.connpass.com/event/161217/
本⽇の発表内容
• 分散型強化学習⼿法の最近の動向
• MuZero (2019年11⽉), Agent57 (2020年3⽉) を中⼼に
• 分散計算フレームワークRayによる分散型強化学習実装の試み
• Rayを使って Amazon EC2 でクラスタ構築する⽅法・注意点
Agent57 (2020) が Atariのゲーム57種類全てで
⼈間以上のスコア
Rayベースの強化学習フレームワークRLlibの
パフォーマンス(⾚線が従来⼿法)https://youtu.be/imAeLt1BPu4
本⽇の発表で紹介する
ソースコード/設定ファイル
• 分散計算フレームワークRayによる分散型強化学習実装の試み
(ソースコード/設定ファイル)
• https://github.com/susumuota/distributed_experience_replay
• 本発表のconnpassページ(Do2dle勉強会, 概要/タイムスケジュー
ル/資料等)
• https://do2dle.connpass.com/event/178184/
⽬次
• ⾃⼰紹介
• 強化学習とは
• 分散型強化学習⼿法の最近の動向
• 分散計算フレームワークRayによる分散型強化学習実装の試み
• まとめ
強化学習とは
• 強化学習
• 環境との直接的な相互作⽤から学習
• 4要素: ⽅策・報酬・価値関数・(環境のモデル)
• 報酬が後から得られる場合がある
• マルコフ決定過程(MDP)によって定式化 (右上図)
• エージェント・環境との相互作⽤を状態・⾏動・報酬によって記述
• 遷移後の状態と報酬は現在の状態と⾏動のみに依存
• 価値関数
• 状態/⾏動の価値とは、将来得られると予想される報酬の合計(収益)
• 価値関数の推定は強化学習課題を解くために厳密に必要というわけではない(例: 進化的⼿法)
• 探索と利⽤のジレンマ
• 探索を重視すると計算時間増⼤ or 収束しない
• 利⽤を重視すると局所最適解
• εグリーディ法やソフトマックス法等(温度Tで調整)でランダムな探索的⾏動を取り⼊れる
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
強化学習⼿法の分類
• モデルフリー vs モデルベース
• ⽅策ベース vs 価値ベース
• 状態価値V(s) vs ⾏動価値Q(s, a)
• On-Policy vs Off-Policy
• エピソードタスク vs 連続タスク
• 1ステップ vs nステップ vs モンテカルロ
(右図)
• 単⼀型計算 vs 分散型計算
• シングルエージェント vs マルチエー
ジェント
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
⾚字は本発表で主に扱う部分
上記以外にも様々な分類がある
モデルフリー強化学習とモデルベース強化学習
• ⽬的
• 価値関数/⽅策の改善
• モデルフリー強化学習
• 直接強化学習
• シンプル
• モデル設計のバイアスを受けない
• モデルベース強化学習
• 間接強化学習(モデル経由)
• 限られた経験を最⼤限利⽤
• 少数の環境との相互作⽤から、より
良い⽅策を⾒つけることが出来る
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
On-Policy(Sarsa)とOff-Policy(Q学習)
• On-Policy
• 例: Sarsa
• ⾏動選択時の⽅策と価値関数更新
時の⽅策が同じ
• 両⽅ともε-グリーディ
• Off-Policy
• 例: Q学習
• ⾏動選択時の⽅策と価値関数更新
時の⽅策が異なる
• ε-グリーディとグリーディ
• 経験リプレイが使える
• 経験の⽣成と学習が分離可能
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
SarsaとQ学習の⽐較
崖歩き(Cliff Walking)
• ⽬的
• 崖に落ちないようにしてゴールへ移動(左上図)
• ⾏動: 4(上下左右)
• 報酬
• 崖: -100
• それ以外: -1
• 最適⽅策時のエピソード報酬合計: -13
• ε=0.1の結果 (左下図)
• εを徐々に減らせば(アニーリング)、両⼿
法とも漸近的に最適⽅策に収束
• どの位のペースで減らせば良いのか?
• →探索と利⽤のジレンマ
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
⽬次
• ⾃⼰紹介
• 強化学習とは
• 分散型強化学習⼿法の最近の動向
• 分散計算フレームワークRayによる分散型強化学習実装の試み
• まとめ
分散型強化学習の概要
• DQN(2013)〜Rainbow(2017)
• 分散型ではない
• ダブルQ学習
• 優先順位付き経験リプレイ
• デュエリングネットワーク
• nステップTD学習
• Ape-X (2018)
• DQN, DDPGの分散型
• 経験の⽣成(Actor)と学習器
(Learner)の分離
• 2018年当時Atari-57のSotA
• R2D2 (2019)
• Ape-Xの発展
• 経験リプレイからRNNを学習
• 2019年当時Atari-57のSotA
• NGU(2019)〜Agent57 (2020)
• R2D2, RNDの発展
• 内的報酬 (⻑期/短期)
• メタコントローラ(探索と利⽤の
バランス調整)
• Atari-57のゲーム57種類全てで⼈
間以上のスコア
• AlphaGo(2016)〜MuZero (2019)
• モデルベース強化学習
• モンテカルロ⽊探索(MCTS)
• セルフプレイ(経験の⽣成)
• 分散型
• 2020年6⽉現在Atari-57のSotA
https://deepmind.com/blog/article/Agent57-Outperforming-the-human-Atari-benchmark
今回は⾚字の⼿法を中⼼に説明. それ以外の⼿法は以下のスライドが参考になります
https://www.slideshare.net/juneokumura/dqnrainbow
https://www.slideshare.net/juneokumura/rnnr2d2
https://www.slideshare.net/eratostennis/ss-90506270
https://www.slideshare.net/ssuser1ad085/rnd-124137638
Atari-57 の SotA
• Rainbow(2017)までは単⼀型
• Ape-X(2018)以後が分散型
• 今回紹介する⼿法
• DQN (2015)
• Rainbow (2017)
• Ape-X (2018)
• R2D2 (2019)
• MuZero (2019)
• Agent57 (2020)
• Atari-57のSotAではないが57種
類のゲーム全てで⼈間以上のス
コア
https://paperswithcode.com/sota/atari-games-on-atari-57
Rainbow
Atari-57 の評価⽅法
• Human Normalized Score (HNS)
• ⼈間のスコアを 100%
• ランダム⽅策のスコアを 0%
• 57個のゲームの平均値(mean)と中央値(median)
• 中央値の⽅が重要(平均値は得意なゲームで点数を伸ばすと上昇してしまう)
• ⼈間のスコアを超えたゲームの個数
• 最近は苦⼿なゲームをなくすことに注⽬→RND, Go-Explore, NGU, Agent57等
• エピソード開始時の状態
• no-ops: ランダムに0-30ステップ分何もせず(no-op)、エピソード開始
• human starts: ⼈間のエキスパートの経験(プレイ記録)からランダムに開始位置をサンプ
リングしてエピソード開始
• 初期状態が限られることによる決定論的な過学習を防ぐ
• ゲーム毎にネットワーク構造/ハイパーパラメータのチューニングはしない
• 報酬のクリッピングが必要になる
• ⼈間のエキスパートのプレイ(demonstrations)を使わない
• 使う⼿法: R2D3, Go-Explore with domain knowledge 等
DQN (2013, 2015)
• モデルフリー強化学習
• Q学習(Off-Policy)
• ニューラルネットワーク(NN)
による⾏動価値関数Qの近似
• 畳み込みニューラルネットワー
ク(CNN)
• 2つのネットワーク(オンライン
とターゲット)
• 経験リプレイ
• ⼀様にランダムサンプリング
• 前処理φ
• 直近4フレームをグレースケール
化して84x84にリスケール
• 報酬のクリッピング
• 結果は次スライド
Mnih et al., "Human-level control through deep reinforcement learning", Nature, 2015.
Rainbow (2017)
• 2017年のAtari-57のSotA
• 分散型ではない
• DQNの改良⼿法6個を統合
• 6個の⼿法を⼀つずつ切除してど
の⼿法が有効か実験
• 以下の順で有効
• 優先順位付き経験リプレイ(⽔⾊)
• n-ステップ学習(⻩⾊)
• 収益の分布を学習
• ノイジーネットワーク
• デュエリングネットワーク
• ダブルQ学習
Hessel et al., "Rainbow: Combining Improvements in Deep Reinforcement Learning", AAAI-18, 2018.
DQNからRainbowまでのまとめは奥村さんのスライドが参考になります
https://www.slideshare.net/juneokumura/dqnrainbow
ダブルQ学習, n-ステップ学習, 優先順位付き経験リプレイの詳細はスライド末尾の付録を参照
Ape-X (2018)
• 2018年Atari-57のSotA
• 分散型強化学習⼿法
• DQN(2015), Rainbow(2017), Gorila(2015), DDPG(2016)等がベース
• 離散的⾏動(Ape-X DQN)と連続的⾏動(Ape-X DPG)の両⽅に対応
• 分散型強化学習の2つの⽅向性
• 勾配の計算を分散
• 分散型確率的勾配降下法 (distributed stochastic gradient descent)
• 勾配の計算は⽐較的重い
• 勾配のサイズは⼤きいのでノード間の通信がボトルネックになる場合がある
• 経験の⽣成を分散
• 分散型経験リプレイ (distributed experience replay)
• Ape-Xはこちらを実装
• 分散型勾配計算を組み合わせることも可能
• 以後の分散型⼿法でもApe-Xのアーキテクチャがベース
• R2D2, NGU, Agent57, MuZero等
Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
Ape-Xのアーキテクチャ
• Learner (学習プロセス)
• Replayからサンプリングされ
た経験を読み込み
• NNの重みを更新
• 優先順位を更新してReplayに
送る
• Actor (経験⽣成プロセス)
• NNの重みを定期的に読み込み
• 経験を⽣成
• 経験と優先順位の初期値をReplay
に送る
Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
• Replay (データベース)
• 経験と優先順位を保存
• 優先順位を元に経験をサンプリ
ング
Ape-X DQN (離散的⾏動)
• 分散型アーキテクチャ
• 経験の⽣成(Actor)と学習(Learner)の
分離
• 優先順位付き経験リプレイ
• TD誤差の絶対値を優先順位 pi
• 確率的にサンプリング P(i)	(α=0.6)
• Q関数更新時に重点サンプリング
• εiグリーディ
• Actor毎に異なるε
• アニーリングしない(徐々に減らさない)
• nステップTD学習 (n=3)
• ダブルQ学習
• デュエリングネットワーク
• 状態価値V(s)とアドバンテージA(s, a)
Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
ロス関数
最⼤値 ε=0.4
最⼩値 ε=0.00066
優先順位付き経験リプレイの詳細はスライド末尾の付録を参照
Ape-Xのアルゴリズム
• 状態を⼊⼒して⽅策から⾏動
を得る
• 環境に⾏動を適⽤して報酬と
割引率γ (エピソード末なら0)
と次の状態を得る
• ローカルバッファに経験を貯
める
• ある程度貯まったら優先順位
を計算して、経験と優先順位
をリプレイバッファに送る
• 定期的にNNの重みを読み込み
• リプレイバッファから優先順
位を元に確率的にサンプリン
グ
• ロスを計算してQ関数を更新
• 優先順位を計算し直す
Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
Ape-X DQN 結果
• 2018年のSotA
• Atari-57のHNSの中
央値
• no-opスタート
• 学習5⽇
• HNS 434%
• 376 cores, 1 GPU
• ⻘: Ape-X DQN
• 橙: A3C
• 紫: Rainbow
• 緑: DQN
Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
R2D2 (2019)
• Ape-Xに再帰的ニューラルネットワーク
(RNN)を導⼊
• 経験リプレイにRNNを導⼊する際の問題点
• 経験を⽣成するタイミングと学習するタイミ
ングが異なる
• 隠れ状態の初期状態をどうするか?
• ゼロにする or 経験⽣成時の値を保存しておく
• 経験を⽣成した時のネットワークと経験を再
⽣する時のネットワークが違う
• burn-in フェーズを導⼊(下図)
• 重点サンプリング(IS)を使わない
• 報酬のクリッピング
• 従来: [-1, 0, 1]にクリッピング
• 複数のゲームを同じハイパーパラメータで
学習するため
• R2D2:
• エピソード終端
• 従来: 1ライフ
• R2D2: ゲームオーバー
R2D2については奥村さんのスライドが参考になります
https://www.slideshare.net/juneokumura/rnnr2d2 Kapturowski et al., "Recurrent Experience Replay in Distributed Reinforcement Learning", ICLR2019, 2019.
R2D2 結果
• 2019年のSotA
• Atari-57の
HNSの中央値
• no-opスタート
• 学習5⽇
• HNS 1920.6%
• 橙: R2D2 (256
Actors)
• ⻘: Ape-X
(360 Actors)
Kapturowski et al., "Recurrent Experience Replay in Distributed Reinforcement Learning", ICLR2019, 2019.
MuZero (2019年11⽉)
• モデルベース強化学習
• 2020年6⽉現在Atari-57のSotA
• MuZeroより前はモデルフリーがSotAだった
• AlphaGo (2016年)
• 囲碁
• モンテカルロ⽊探索(MCTS)
• セルフプレイ
• プロ棋⼠の棋譜データベース
• AlphaGo Zero (2017年10⽉)
• 囲碁
• MCTS
• セルフプレイ
• ⼈間の知識なし
• プロ棋⼠の棋譜データベースを使わない
• AlphaZero (2017年12⽉)
• チェス, 将棋, 囲碁
• MCTS
• セルフプレイ
• 囲碁特有の学習⽅法を除外
• 盤⾯の回転による学習データ⽔増し
• 引き分けの追加
• MuZero (2019年11⽉)
• チェス, 将棋, 囲碁, ビデオゲーム(Atari)
• MCTS
• セルフプレイ
• ゲームのルールの知識なし
• 報酬のみで学習
• 報酬・価値のスケーリング
• エピソード途中の報酬
https://storage.googleapis.com/deepmind-media/research/muzero_poster_neurips_2019.pdf
Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
布留川 英⼀, "AlphaZero 深層学習・強化学習・探索 ⼈⼯知能プログラミング実践⼊⾨", ボーンデジタル, 2019.
MuZero アーキテクチャ
• Ape-Xと基本的に
同じ
• ActorがSelf Play
• LearnerがTrainer
• ReplayがReplay
Buffer
• Shared Storageを
追加
• NNの重みを保存す
るデータベース
https://github.com/werner-duvaud/muzero-general/wiki/How-MuZero-works
参考: Ape-Xのアーキテクチャ
Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
MuZero ⽅法
• 2つのデータベース
• リプレイバッファ
• エピソード毎の観測・⾏動・報酬・⽅
策・価値のシーケンス
• シェアドストレージ
• 表現・ダイナミクス・予測の3つの
ニューラルネットワーク(NN)の重み
• 学習器(単⼀のGPUマシン)
• 学習
• リプレイバッファからをエピソードを1
つ読み込み
• n-ステップTDで学習
• NNの重みをシェアドストレージに保存
• セルフプレイ(多数のCPUマシン)
• プランニング
• シェアドストレージからNNの重みを読み込み
• MCTSでシミュレーション
• ある局⾯から始まるツリーの各ノードの価値を
計算
• 次の1⼿を決めるバンディット問題(UCBの改良
版pUCTで解く)
• ⾏動選択
• プランニングで得られた⽅策をもとにランダム
性を加えてサンプリングして⾏動を決定
• ⾏動を実環境に作⽤させ観測と報酬を得る
• エピソード末で経験をリプレイバッファに保存
Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
https://github.com/werner-duvaud/muzero-general/wiki/How-MuZero-works
参考: バンディット問題
• 例: 10個のスロットマシン
• エージェントからは報酬の分布
は未知
• 状態は⾏動によって変化しない
• 最適解
• ⾏動3を取り続けると報酬期待値
1.55に収束
• ⽅策
• 序盤は満遍なく
• ある程度分布がわかれば集中
• 探索と利⽤のバランスをどうと
るか?
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
参考: UCB1 (Upper Confidence Bound 1)
• バンディット問題の解法の1つ
• ステップ数t, ⾏動aの報酬の平均値
Qt(a), ⾏動aの回数Nt(a)
• 平均報酬1.55が最適解
• 序盤は探索(第2項)が⼤
• 次第に探索が減っていく
• サンプル数が増えると信頼区間が狭
くなる
• MuZeroでは
• ある局⾯において、次の⼀⼿を決める
際にUCBの改良版(pUCT)を利⽤
利⽤ 探索
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
参考: モンテカルロ⽊探索(MCTS)
• 2種類の⽅策(ツリー⽅策と
ロールアウト⽅策)を使う
• 選択(Selection)
• ツリー⽅策(εグリーディ等)に
従ってリーフノードを選択
• 拡張(Expansion)
• リーフノードから辿れる未探索
の⾏動を⼦ノードとして追加
• シミュレーション(Simulation)
• 選択されたノードから、ロール
アウト⽅策(ランダム⽅策等)に
従って完全なエピソードをシ
ミュレーション
• バックアップ(Backup)
• ツリー⽅策で訪問されたノード
の⾏動価値を更新
• ロールアウト⽅策で訪問された
部分は⾏動価値を保存しない
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
MuZero
プランニング(MCTS)
• 3つのニューラルネットワーク(NN)
• 実状態ではなく隠れ状態のツリー
• ツリー⽅策にUCBの改良版pUCT
• ロールアウトは⾏わずNNで近似
https://storage.googleapis.com/deepmind-media/research/muzero_poster_neurips_2019.pdf
Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
右上の添字: シミュレーションのステップ
右下の添字: 実環境のステップ
MuZero
⾏動選択
• プランニングで得られた⽅策をもとにサンプリングして⾏動を決定
• 右式でランダム性を加え探索を⾏う
• N(α)はMCTSでノードを訪問した回数
• 徐々に温度パラメータTを減らしてランダム性を減らす
• ⾏動を実環境に作⽤させ観測と報酬を得る
• エピソード末で経験をリプレイバッファに保存
Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
MuZero
学習
• リプレイバッファか
らをエピソードを1つ
読み込み
• nステップTDで学習
• NNの重みをシェアド
ストレージに保存
• K=5
⽅策価値報酬
Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
右上の添字: シミュレーションのステップ
右下の添字: 実環境のステップ
MuZero 結果
• 2020年6⽉現在Atari-57
のSotA
• モデルフリー⼿法に⽐べ
てサンプル効率が良い
• ボードゲーム
• 16 TPU(学習)
• 1000 TPU(セルフプレイ)
• Atari
• 8 TPU(学習)
• 32 TPU(セルフプレイ)
Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
参考: MuZero 結果詳細
• 各ゲームのゲーム内スコア
• MuZeroだけ成績が悪い(⾚枠)
• montezuma revenge
• solaris
• venture
• どの⼿法も成績が悪い(⻘枠)
• pitfall
• →NGUが初めて⼈間を超えた
• skiing
Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned
Model", arXiv preprint arXiv:1911.08265, 2019.
参考: Montezumaʼs Revenge の SotA
• 探索が難しい
• 環境から得られ
る報酬(外部報
酬)が疎
• 内発的動機づ
け・内部報酬・
好奇⼼等のアイ
デアを導⼊
https://paperswithcode.com/sota/atari-games-on-atari-2600-montezumas-revenge
Agent57 (2020年3⽉)
• モデルフリー強化学習
• R2D2 , RND, NGUの発展
• Atari のゲーム57種類全てで
⼈間以上 (左上図)
• 基本的なアーキテクチャは
Ape-Xと同じ(左下図)
• 内発的動機づけが追加
• 内的報酬(NGU)
• ⻑期(life-long)と短期
(episodic)に分けて計算
• メタコントローラ(Agent57)
• 探索と利⽤のバランスを調整
London Machine Learning Meetup, "Charles Blundell - Agent57: Outperforming the Atari Human Benchmark", YouTube, 2020. https://youtu.be/VQEg8aSpXcU
Badia et al., "Agent57: Outperforming the Atari Human Benchmark", arXiv preprint arXiv:2003.13350, 2020.
Badia et al., "Never Give Up: Learning Directed Exploration Strategies", ICLR2020, 2020.
NGU 内的報酬(⻑期/短期)
• 内的報酬の導⼊
• βをメタコントローラで調整(Agent57)
• 内的報酬を⻑期と短期に分けて計算
• ⻑期(life-long): RND
• 短期(episodic): embedding network (ICM?)
Badia et al., "Never Give Up: Learning Directed Exploration Strategies", ICLR2020, 2020.
Burda et al., "Exploration by Random Network Distillation", arXiv preprint arXiv:1810.12894, 2018.RNDについては向井さんのスライドが参考になります
https://www.slideshare.net/ssuser1ad085/rnd-124137638
Agent57 メタコントローラ
• 探索と利⽤のバランスを調整
• εiグリーディのアイデアを拡張
• 割引率γと内的/外的報酬の重み付けβをActor毎
に設定
• ⼩さいβと⼤きいγ →利⽤寄りの⽅策
• ⼤きいβと⼩さいγ →探索寄りの⽅策
• NGU
• Actor毎に異なるγとβを設定して固定
• Agent57
• γとβをエピソード毎に変更 γ(i),	β(i)
• iはバンディットアルゴリズムで選択
• ⼩さいi→利⽤寄りの⽅策
• ⼤きいi→探索寄りの⽅策
• 学習初期は探索寄り,	後半は利⽤寄りの⽅策を
選択(右図)
Badia et al., "Never Give Up: Learning Directed Exploration Strategies", ICLR2020, 2020.
Badia et al., "Agent57: Outperforming the Atari Human Benchmark", arXiv preprint arXiv:2003.13350, 2020.
NGU アルゴリズム
• R2D2がベースで太字部分がNGUの追加部分
• γとβはActor毎に異なる値を設定して固定
• 内的報酬ためのRND(⻑期)とinverse
dynamics model(短期)を学習
London Machine Learning Meetup, "Charles Blundell - Agent57: Outperforming the Atari Human Benchmark", YouTube, 2020. https://youtu.be/VQEg8aSpXcU
Agent57 アルゴリズム
• NGUがベースで太字部分がAgent57の追加部分
• γとβをエピソード毎に変更 γ(i),	β(i)
• iはバンディットアルゴリズムで選択
• ⼤きいi→探索寄りの⽅策
London Machine Learning Meetup, "Charles Blundell - Agent57: Outperforming the Atari Human Benchmark", YouTube, 2020. https://youtu.be/VQEg8aSpXcU
Agent57 結果
• 57個全てのゲームで⼈間以上
• 中央値(Median)でR2D2とほぼ同等
• 5 th Percentileでトップ
• 57個のスコアを下から順に並べて、下位 5 %の位置にあるスコア(2.8番⽬)
• MuZero は全く解けないゲームがいくつかあるので値が低くなる
Badia et al., "Agent57: Outperforming the Atari Human Benchmark", arXiv preprint arXiv:2003.13350, 2020.
分散型強化学習まとめ
• ここ数年は分散型強化学習⼿法がAtari-57のSotA
• Actor: 経験の⽣成 (数百台のCPUマシン)
• Learner: 学習 (1台のGPUマシン)
• MuZero(2019)が2020年6⽉現在のAtari-57のSotA
• モデルベース強化学習, MCTS, セルフプレイ
• Agent57(2020)がAtari-57のゲーム57種類全てで⼈間以上のスコアを達成
• 内的報酬(⻑期/短期), メタコントローラ
• 経験リプレイにRNNを導⼊するには⼯夫が必要
• burn-in フェーズ(R2D2)
• 探索が難しいゲームは内的報酬が重要
• RND, NGU, Agent57
• 内的報酬を⽤いないMuZeroで全く解けない問題がある(モンテズマリベンジ等)
• 分散型で探索と利⽤のバランスを調整することが重要
• εiグリーディ: Actor毎に違うεを設定しアニーリングしない
• メタコントローラ: Actor毎に違う割引率γと内的/外的報酬の重み付けβをバンディットアルゴリズムで選択
• 今回取り上げていない⼿法
• A3C(2016), PPO(2017), Gorila(2015), IMPARA(2018), RND (2018), Go-Explore (2019), R2D3(2019) 等
⽬次
• ⾃⼰紹介
• 強化学習とは
• 分散型強化学習⼿法の最近の動向
• 分散計算フレームワークRayによる分散型強化学習実装の試み
• まとめ
Rayによる分散型強化学習実装の試み
• なぜ分散型強化学習か
• 今後マルチエージェント強化学習の研究がしたい
• 分散型強化学習アーキテクチャが有効
• →まずシンプルなApe-Xのサブセットを実装してみる
• なぜRayか
• Ray: 分散アプリケーションの構築・実⾏のためのフレームワークで、特に機械学習
系で使われている
• サブプロジェクト
• Tune: ハイパーパラメータチューニングのためのライブラリ
• RLlib: 強化学習ライブラリ
• Ape-X, IMPARA, PPO, A3C等が実装済み https://docs.ray.io/en/master/rllib-algorithms.html
• ドキュメントがしっかりしている(特にチュートリアル)
• シンプル(通常のPythonとほぼ同じ感覚で使える→後述)
• AWS, GCP等でクラスタを構成するサンプルがある
• https://docs.ray.io/en/master/autoscaling.html
• muzero-generalというMuZero実装でRayが使われていて参考にできる
• https://github.com/werner-duvaud/muzero-general
Rayを使った分散型強化学習の実装の試み
• 今回の発表内容
• Rayを使ってシンプルな分散型強化学習(経験の⽣成
と学習の分離のみ)を実装
• Amazon EC2でのクラスタ構築⽅法を紹介
• RLlibでのApe-Xの実⾏⽅法とリファレンス結果を紹
介
• 今後RLlibのApe-X実装をベースにするかRayで
スクラッチから実装するか検討中
• 今回の発表で紹介するソースコード/設定
• https://github.com/susumuota/distributed_experi
ence_replay
• 参考: RLlibで対応している強化学習⼿法(右図)
• https://docs.ray.io/en/master/rllib-
algorithms.html
RayのAPIの使い⽅
• 関数定義・クラス定義
• @ray.remote を付加
• デコレータ
• func = ray.remote(func) のシンタックスシュガー
• 関数/メソッド呼び出し
• func(args) を func.remote(args) に変更
• 戻り値は計算が終了するまでブロックされない
• その代わりリモートオブジェクトが返ってくる
• 戻り値の取得
• ray.get(object_id) で計算終了までブロックして戻り値を取得
• timeout を指定可能
• 基本的にこれだけ
シンプルな分散型強化学習の
実装 (抜粋)
• 経験の⽣成(Actor)と学習(Learner)の分離 参考: Ape-Xのアーキテクチャ
https://github.com/susumuota/distributed_experience_replay/blob/master/distributed_experience_replay.py
Rayを使って Amazon EC2 でクラスタ構築
• Amazon EC2 (コンピューティングサービス) を使ってスケーラ
ブルな強化学習が実現可能か実験
• 今回はm5.largeという安価なマシンを3台借りて、Rayにより複
数マシンのクラスタを⾃動構築して分散計算できるか実験
• AWSでのクラスターの構築⽅法ドキュメント
• https://docs.ray.io/en/master/autoscaling.html#aws
Rayを使って Amazon EC2 でクラスタ構築
AWS側の設定
• IAMコンソールでユーザ追加
• 「アクセスの種類」を「プログラムによ
るアクセス」→アクセスキーIDとシーク
レットアクセスキーが⽣成
• 「既存のポリシーを直接アタッチ」で
「AmazonEC2FullAccess」と
「IAMFullAccess」を追加 (右上図)
• アクセスキーIDとシークレットアクセス
キーが作成できたらローカルマシンの
~/.aws/credentials に保存 (右下図)
• ポリシーの部分は要検討
• Rayのドキュメントにはどのポリシーが
必要か具体的には書いてない(or ⾒つか
らなかった)ので、各⾃で適切なポリシー
を設定
• 私の場合は、実験直前にユーザを作成し
て実験が終わったらすぐユーザを削除
Rayを使って Amazon EC2 でクラスタ構築
ローカルマシン側の設定
• 設定ファイル(example-full.yaml)
• 以下の設定ファイル例を修正
• https://github.com/ray-
project/ray/blob/master/python/ray/autoscaler/aws/example-full.yaml
• 今回の実験で使⽤した設定ファイル
• https://github.com/susumuota/distributed_experience_replay/blob/ma
ster/example-full.yaml
• ノードの種類
• head (計算の中⼼となるノードで必ず1つ作成される)
• worker (負荷に応じて増やされるノード)
• workerノードの最⼤値・最⼩値・初期値
• 負荷によって⾃動的にインスタンスが増やされる(autoscaling)
• インスタンス⽴ち上げにある程度時間がかかるので、負荷があらかじめ分
かっているなら、初期値と最⼤値は同じにした⽅が良いかもしれない
• インスタンスのタイプ(m5.large等)
• スポットインスタンス(通常の半額程度)も可能
• イメージ(Deep Learning⽤のOSイメージ等)
• インスタンスの初期設定(Pythonモジュールのインストール等)
• ほぼ⽤意されているAWS⽤の初期設定のままでOK
https://github.com/susumuota/distributed_experience_replay/blob/master/example-full.yaml
Rayを使って Amazon EC2 でクラスタ構築
クラスタの操作
• 以下のコマンドは全てローカルマシンのターミナルから実⾏
• クラスタの⽴ち上げ
• ray up example-full.yaml
• クラスタでスクリプト実⾏
• ray submit example-full.yaml ape_x_dqn.py
• sshでheadマシンにログインして Python スクリプトを実⾏
• クラスタの終了
• ray down example-full.yaml
Rayを使って Amazon EC2 でクラスタ構築
AWSコンソールでクラスタの様⼦を確認
• ray up/submit した後にインスタンスを確認
• ray down した後にこの画⾯からインスタンスの状態を終了
(terminated)にする
• 停⽌(stopped)だと課⾦が継続するので注意
Rayを使って Amazon EC2 でクラスタ構築
プログラムの実⾏中のログ
• m5.largeを3台
• スペックは下表
• 環境: CartPole-v0
• 数分程度で収束
• 毎秒約5回学習
• 毎秒約3600経験⽣成
経過時間4分 エピソード⻑200(収束) 学習/sec 経験⽣成/sec
Rayを使って Amazon EC2 でクラスタ構築
ダッシュボード (計算負荷のモニター)
• ローカルマシンの別ターミナルから
• ray dashboard example-full.yaml
• Webブラウザで
• http://localhost:8265
• ただし、メインの計算プロセスを巻き込んで落ちることが何回
かあったので使わない⽅が良いかもしれない...
Rayを使って Amazon EC2 でクラスタ構築
注意点 (実験終了後に削除すべきもの)
• クラスタ⾃動構築時に作成されるものを削除 (私が確認できた範囲)
• EC2
• インスタンス
• デフォルトyaml設定では ray downしてもインスタンスが「停⽌」されるだけなので実験が終わったら⼿動で「終
了」する
• yaml 設定で 「cache_stopped_nodes: False」を指定すると ray down時に「停⽌」ではなく「終了」するように
なる
• ボリューム
• インスタンス開始とともに作成され、終了で削除されるはず
• キーペアの追加
• ray-autoscaler*
• セキュリティグループ
• ray-autoscaler*
• IAM
• ロール追加
• ray-autoscaler-v1
• ssh秘密鍵
• ~/.ssh/ray-autoscaler*.pem
• IAMコンソールで⾃分で作ったユーザも削除
• インスタンスとボリュームに関しては放っておくと課⾦が継続するのでAWSコン
ソールで最終確認
RLlib の Ape-X 実⾏⽅法
• RLlib: Ray ベースの強化学習ライブラリ
• RLlib Reference Results
• https://github.com/ray-project/rl-experiments
• RLlib で対応している各種強化学習⼿法の実⾏⽅法, ハイパーパラメー
タ, リファレンス結果 (次スライド)
• Amazon EC2 の g3.16xlarge マシンでの結果
• スペックと価格は右下図, スポットインスタンスなら半額程度
• 例: Atari を Ape-X で学習させるコマンド
• rllib train -f atari-apex/atari-apex.yaml
RLlib の Ape-X のリファレンス結果
ゲームスコアの⽐較
• g3.16xlargeでの実
⾏結果
• 4つのゲームそれぞ
れのゲームスコア
• Ape-X, A3C, DQN
の⽐較
• 10Mステップの⽐
較 (左上表)
• 1時間の学習の⽐較
(左下表)
https://github.com/ray-project/rl-experiments
RLlib の Ape-X のリファレンス結果
経験の⽣成速度
• Atariの1秒あたりのフレー
ム⽣成数(FPS)
• 4 Replay Shardsは4フレー
ムおきにスキップ
• ⾚線はApe-Xの元論⽂の結
果 45k FPS (256 workers)
• 元論⽂に⽐べてRLlibは4倍
程度(160k FPS)のパフォー
マンス
Liang et al., "RLlib: Abstractions for Distributed Reinforcement Learning", ICML 2018, 2018.
Rayを使った分散型強化学習の実装の試み
実験のまとめ
• 実験の感想
• APIがシンプル
• チュートリアルが分かり易い
• サンプル設定ファイルを若⼲修正するだけで容易に複数ノードのクラスタ構
築が可能
• 問題点
• ray submit でスクリプト実⾏中にエラーで落ちることが複数回あり、落ちた
後しばらくするとworkerが停⽌。ray submitを再実⾏してもworkerは起動せ
ず(headだけで計算実⾏)
→複数ノードの対応は不安定な可能性
• まずはリファレンス結果を参考に、単⼀ノードの多コアのマシン(g3.16xlarge
等)で実験するのが良いかもしれない
• TensorBoardでの学習のモニタリングが出来るはずだが今回出来なかった。オ
プション等の⾒落としがないか調査中
⽬次
• ⾃⼰紹介
• 強化学習とは
• 分散型強化学習⼿法の最近の動向
• 分散計算フレームワークRayによる分散型強化学習実装の試み
• まとめ
まとめ
• 分散型強化学習の最近の動向
• ここ数年は分散型強化学習⼿法がAtari-57のSotA
• Ape-X(2018), R2D2(2019), MuZero(2019)
• モデルベース強化学習のMuZero(2019)が2020年6⽉現在のAtari-57のSotA
• 内的報酬やメタコントローラを使ったAgent57(2020)がAtari-57のゲーム57
種類全てで⼈間以上のスコア
• 分散計算フレームワークRayによる分散型強化学習実装の試み
• Rayの基本的な使い⽅を解説
• シンプルな分散型強化学習⼿法をRayにより実装
• Rayを使ってAmazon EC2 上にクラスタを構築する⽅法・注意点を解説
• Rayベースの強化学習ライブラリRLlibの実⾏⽅法とリファレンス結果を紹介
参考⽂献
• DQN
• Mnih et al., "Playing Atari with Deep Reinforcement Learning", arXiv preprint
arXiv:1312.5602, 2013. https://arxiv.org/abs/1312.5602
• Mnih et al., "Human-level control through deep reinforcement learning", Nature, 2015.
https://www.nature.com/articles/nature14236
• Prioritized Experience Replay
• Schaul et al., "Prioritized Experience Replay", ICLR2016, 2016.
https://arxiv.org/abs/1511.05952
• Rainbow
• Hessel et al., "Rainbow: Combining Improvements in Deep Reinforcement Learning", AAAI-
18, 2018.
https://www.aaai.org/ocs/index.php/AAAI/AAAI18/paper/download/17204/16680
• Ape-X
• Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
https://openreview.net/forum?id=H1Dy---0Z
• R2D2
• Kapturowski et al., "Recurrent Experience Replay in Distributed Reinforcement Learning",
ICLR2019, 2019. https://openreview.net/forum?id=r1lyTjAqYX
• MuZero
• Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned
Model", arXiv preprint arXiv:1911.08265, 2019. https://arxiv.org/abs/1911.08265
• W. Duvaud, "MuZero General: Open Reimplementation of MuZero", GitHub repository, 2019.
https://github.com/werner-duvaud/muzero-general
• David Foster, "How To Build Your Own MuZero AI Using Python (Part 1/3)", Medium, 2019.
https://medium.com/applied-data-science/how-to-build-your-own-muzero-in-python-
f77d5718061a
• 布留川 英⼀, "AlphaZero 深層学習・強化学習・探索 ⼈⼯知能プログラミング実践⼊⾨", ボー
ンデジタル, 2019. https://www.borndigital.co.jp/book/14383.html
• Agent57
• Badia et al., "Agent57: Outperforming the Atari Human Benchmark", arXiv preprint
arXiv:2003.13350, 2020. https://arxiv.org/abs/2003.13350
• Badia et al., "Never Give Up: Learning Directed Exploration Strategies", ICLR2020, 2020.
https://openreview.net/forum?id=Sye57xStvB
• Burda et al., "Exploration by Random Network Distillation", arXiv preprint arXiv:1810.12894,
2018. https://arxiv.org/abs/1810.12894
• London Machine Learning Meetup, "Charles Blundell - Agent57: Outperforming the Atari
Human Benchmark", YouTube, 2020. https://youtu.be/VQEg8aSpXcU
• Sutton and Barto の強化学習の教科書
• Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
http://incompleteideas.net/book/the-book-2nd.html
• Hide and Seek かくれんぼ
• Baker et al., "Emergent Tool Use From Multi-Agent Autocurricula", ICLR2020, 2020.
https://openreview.net/forum?id=SkxpxJBKwS
• Autocurricula
• Leibo et al., "Autocurricula and the Emergence of Innovation from Social Interaction: A
Manifesto for Multi-Agent Intelligence Research", arXiv preprint arXiv:1903.00742, 2019.
https://arxiv.org/abs/1903.00742
• 奥村さんの強化学習アーキテクチャ勉強会での発表スライド
• “DQNからRainbowまで 〜深層強化学習の最新動向〜”
https://www.slideshare.net/juneokumura/dqnrainbow
• “深層強化学習の分散化・RNN利⽤の動向〜R2D2の紹介をもとに〜”
https://www.slideshare.net/juneokumura/rnnr2d2
• 関⾕さんの強化学習アーキテクチャ勉強会での発表スライド
• “強化学習の分散アーキテクチャ変遷” https://www.slideshare.net/eratostennis/ss-
90506270
• 向井さんの強化学習アーキテクチャ勉強会での発表スライド
• ” RNDは如何にしてモンテスマズリベンジを攻略したか”
https://www.slideshare.net/ssuser1ad085/rnd-124137638
• 三好さんのDo2dle勉強会での発表スライドとコード
• “⼈⼯知能と進化論” https://do2dle.connpass.com/event/161217/
• Ray/RLlib
• Moritz et al., "Ray: A Distributed Framework for Emerging AI Applications", 13th USENIX
Symposium on Operating Systems Design and Implementation, 2018.
https://www.usenix.org/conference/osdi18/presentation/moritz
• Liang et al., "RLlib: Abstractions for Distributed Reinforcement Learning", ICML 2018, 2018.
https://arxiv.org/abs/1712.09381
• The Ray Team, "Ray - Fast and Simple Distributed Computing", 2020. https://ray.io/
• 全脳アーキテクチャハッカソン
• 全脳アーキテクチャ・イニシアティブ, "第4回全脳アーキテクチャハッカソン", 2018.
https://wba-initiative.org/3401/
• Animal-AI Olympics
• Beyret et al., "The Animal-AI Environment: Training and Testing Animal-Like Artificial
Cognition", arXiv preprint arXiv:1909.07483, 2019. https://arxiv.org/abs/1909.07483
• Crosby et al.,"The Animal-AI Testbed", 2020. http://animalaiolympics.com/AAI/
• 本⽇の発表のソースコード/設定ファイル
• “分散計算フレームワークRayによる分散型強化学習実装の試み”
https://github.com/susumuota/distributed_experience_replay
• 本⽇の発表のconnpassページ(Do2dle勉強会)
• https://do2dle.connpass.com/event/178184/
付録: ダブルQ学習
• Q学習の問題点
• 最⼤化バイアス(maximization bias)
• 価値を評価する際に最⼤値を過⼤評価してしまう
• 2つの⾏動価値関数を使いバイアスを解消
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
• 例: 右上図
• ε=0.1
• Aからスタートして右か左に移動
• Bに移動後、正規分布(平均-0.1 分
散1)で報酬を得る
• Aから右に⾏くのが最適⽅策(報酬
合計0)
• Bに⾏くと正の報酬があるように⾒
える(実際は平均-0.1)
付録: nステップTD学習
• temporal-difference(TD)学習
• 連続する時間(例えばtとt+1)の違
いに基づいて学習
• 価値VをターゲットG (⾚線部分)に
近づける
• nステップTD学習
• nステップリターンをターゲット
としてTD学習
Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
付録: Prioritized DDQN
• 優先順位を元に確率的
サンプリング
• 重点サンプリング(IS)
• 確率が⼤きい(優先順位が
⾼い)経験はQ関数の更新
を⼩さく
• 経験リプレイによるバイ
アスを訂正する
• →ただしR2D2ではISなし
• TD誤差の絶対値を優先
順位に
Schaul et al., "Prioritized Experience Replay", ICLR2016, 2016.
• Ape-Xのアルゴリズムの省略部分の詳細

分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み

  • 1.
  • 2.
    ⽬次 • ⾃⼰紹介 • 強化学習とは •分散型強化学習⼿法の最近の動向 • 分散計算フレームワークRayによる分散型強化学習実装の試み • まとめ
  • 3.
    ⽬次 • ⾃⼰紹介 • 強化学習とは •分散型強化学習⼿法の最近の動向 • 分散計算フレームワークRayによる分散型強化学習実装の試み • まとめ
  • 4.
    ⾃⼰紹介 • 太⽥ 晋 •フリーランスエンジニア • 東京⼯科⼤学⾮常勤講師 • 2018年頃から強化学習に関⼼ • 全脳アーキテクチャハッカソン2018 に参加 • 眼球運動に関する6個のタスク(右上図) • 5個解けた(ただしルールベース) 最優秀賞(7チーム中) • The Animal-AI Olympics 2019 に参加 • 動物の認知に関する10個のタスク(右下図) • エサの獲得・対象の永続性・因果推論等 • コンペ中はタスクが⾮公開(テーマとタスク構築ツールだ けが提⽰) →テーマを考慮して⾃分でタスクを設計してエージェントを学 習させる必要 • 三好さんとチームで参加し、カリキュラム学習、Path Integration、LIDARによるマップ作成等を試した • 全体18位(61チーム中) • カテゴリ7(Internal Models)賞 (繰り上げ) • 現在はマルチエージェント強化学習、内的報酬、 モデルベース強化学習等に興味があります http://animalaiolympics.com/AAI/ https://wba-initiative.org/3401/
  • 5.
    ⾃⼰紹介 • The Animal-AIOlympics 2019 に参加して感じたこと • カリキュラム学習の難しさ • どのようなカリキュラムを設計するか • どの程度学習できたら次のカリキュラムに移⾏するか(基準) • ⾃動カリキュラムの必要性 • The Problem Problem (Leibo et al., 2019) • 「⼈⼿で問題を作らなければならない問題」が今後のAI研究のボトル ネック →「機械が問題を作り機械が問題を解く」仕組みが求められる 例: Hide and Seek かくれんぼ (右図) • マルチエージェント強化学習 (HiderとSeekerの2チーム) • エピソード前半はHiderだけ⾏動可能. 後半からSeekerが⾏動可能に • ブロックで三⽅を囲って砦→傾斜ブロックで砦を突破→傾斜ブロック を固定して阻⽌ • 道具を使うことにインセンティブを与えていないのに道具の使い⽅を 創発 • Hiderが問題を作りSeekerが問題を解く 例: 敵対的⽣成ネットワーク(GAN) • ⽣成器が問題を作り識別器が問題を解く • 計算量が膨⼤になる →分散型⼿法が必要 Baker et al., "Emergent Tool Use From Multi-Agent Autocurricula", ICLR2020, 2020. https://openai.com/blog/emergent-tool-use/ Leibo et al., "Autocurricula and the Emergence of Innovation from Social Interaction: A Manifesto for Multi-Agent Intelligence Research", arXiv preprint arXiv:1903.00742, 2019. Hide and Seek については三好さんのスライドが参考になります https://do2dle.connpass.com/event/161217/
  • 6.
    本⽇の発表内容 • 分散型強化学習⼿法の最近の動向 • MuZero(2019年11⽉), Agent57 (2020年3⽉) を中⼼に • 分散計算フレームワークRayによる分散型強化学習実装の試み • Rayを使って Amazon EC2 でクラスタ構築する⽅法・注意点 Agent57 (2020) が Atariのゲーム57種類全てで ⼈間以上のスコア Rayベースの強化学習フレームワークRLlibの パフォーマンス(⾚線が従来⼿法)https://youtu.be/imAeLt1BPu4
  • 7.
  • 8.
    ⽬次 • ⾃⼰紹介 • 強化学習とは •分散型強化学習⼿法の最近の動向 • 分散計算フレームワークRayによる分散型強化学習実装の試み • まとめ
  • 9.
    強化学習とは • 強化学習 • 環境との直接的な相互作⽤から学習 •4要素: ⽅策・報酬・価値関数・(環境のモデル) • 報酬が後から得られる場合がある • マルコフ決定過程(MDP)によって定式化 (右上図) • エージェント・環境との相互作⽤を状態・⾏動・報酬によって記述 • 遷移後の状態と報酬は現在の状態と⾏動のみに依存 • 価値関数 • 状態/⾏動の価値とは、将来得られると予想される報酬の合計(収益) • 価値関数の推定は強化学習課題を解くために厳密に必要というわけではない(例: 進化的⼿法) • 探索と利⽤のジレンマ • 探索を重視すると計算時間増⼤ or 収束しない • 利⽤を重視すると局所最適解 • εグリーディ法やソフトマックス法等(温度Tで調整)でランダムな探索的⾏動を取り⼊れる Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
  • 10.
    強化学習⼿法の分類 • モデルフリー vsモデルベース • ⽅策ベース vs 価値ベース • 状態価値V(s) vs ⾏動価値Q(s, a) • On-Policy vs Off-Policy • エピソードタスク vs 連続タスク • 1ステップ vs nステップ vs モンテカルロ (右図) • 単⼀型計算 vs 分散型計算 • シングルエージェント vs マルチエー ジェント Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018. ⾚字は本発表で主に扱う部分 上記以外にも様々な分類がある
  • 11.
    モデルフリー強化学習とモデルベース強化学習 • ⽬的 • 価値関数/⽅策の改善 •モデルフリー強化学習 • 直接強化学習 • シンプル • モデル設計のバイアスを受けない • モデルベース強化学習 • 間接強化学習(モデル経由) • 限られた経験を最⼤限利⽤ • 少数の環境との相互作⽤から、より 良い⽅策を⾒つけることが出来る Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
  • 12.
    On-Policy(Sarsa)とOff-Policy(Q学習) • On-Policy • 例:Sarsa • ⾏動選択時の⽅策と価値関数更新 時の⽅策が同じ • 両⽅ともε-グリーディ • Off-Policy • 例: Q学習 • ⾏動選択時の⽅策と価値関数更新 時の⽅策が異なる • ε-グリーディとグリーディ • 経験リプレイが使える • 経験の⽣成と学習が分離可能 Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
  • 13.
    SarsaとQ学習の⽐較 崖歩き(Cliff Walking) • ⽬的 •崖に落ちないようにしてゴールへ移動(左上図) • ⾏動: 4(上下左右) • 報酬 • 崖: -100 • それ以外: -1 • 最適⽅策時のエピソード報酬合計: -13 • ε=0.1の結果 (左下図) • εを徐々に減らせば(アニーリング)、両⼿ 法とも漸近的に最適⽅策に収束 • どの位のペースで減らせば良いのか? • →探索と利⽤のジレンマ Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
  • 14.
    ⽬次 • ⾃⼰紹介 • 強化学習とは •分散型強化学習⼿法の最近の動向 • 分散計算フレームワークRayによる分散型強化学習実装の試み • まとめ
  • 15.
    分散型強化学習の概要 • DQN(2013)〜Rainbow(2017) • 分散型ではない •ダブルQ学習 • 優先順位付き経験リプレイ • デュエリングネットワーク • nステップTD学習 • Ape-X (2018) • DQN, DDPGの分散型 • 経験の⽣成(Actor)と学習器 (Learner)の分離 • 2018年当時Atari-57のSotA • R2D2 (2019) • Ape-Xの発展 • 経験リプレイからRNNを学習 • 2019年当時Atari-57のSotA • NGU(2019)〜Agent57 (2020) • R2D2, RNDの発展 • 内的報酬 (⻑期/短期) • メタコントローラ(探索と利⽤の バランス調整) • Atari-57のゲーム57種類全てで⼈ 間以上のスコア • AlphaGo(2016)〜MuZero (2019) • モデルベース強化学習 • モンテカルロ⽊探索(MCTS) • セルフプレイ(経験の⽣成) • 分散型 • 2020年6⽉現在Atari-57のSotA https://deepmind.com/blog/article/Agent57-Outperforming-the-human-Atari-benchmark 今回は⾚字の⼿法を中⼼に説明. それ以外の⼿法は以下のスライドが参考になります https://www.slideshare.net/juneokumura/dqnrainbow https://www.slideshare.net/juneokumura/rnnr2d2 https://www.slideshare.net/eratostennis/ss-90506270 https://www.slideshare.net/ssuser1ad085/rnd-124137638
  • 16.
    Atari-57 の SotA •Rainbow(2017)までは単⼀型 • Ape-X(2018)以後が分散型 • 今回紹介する⼿法 • DQN (2015) • Rainbow (2017) • Ape-X (2018) • R2D2 (2019) • MuZero (2019) • Agent57 (2020) • Atari-57のSotAではないが57種 類のゲーム全てで⼈間以上のス コア https://paperswithcode.com/sota/atari-games-on-atari-57 Rainbow
  • 17.
    Atari-57 の評価⽅法 • HumanNormalized Score (HNS) • ⼈間のスコアを 100% • ランダム⽅策のスコアを 0% • 57個のゲームの平均値(mean)と中央値(median) • 中央値の⽅が重要(平均値は得意なゲームで点数を伸ばすと上昇してしまう) • ⼈間のスコアを超えたゲームの個数 • 最近は苦⼿なゲームをなくすことに注⽬→RND, Go-Explore, NGU, Agent57等 • エピソード開始時の状態 • no-ops: ランダムに0-30ステップ分何もせず(no-op)、エピソード開始 • human starts: ⼈間のエキスパートの経験(プレイ記録)からランダムに開始位置をサンプ リングしてエピソード開始 • 初期状態が限られることによる決定論的な過学習を防ぐ • ゲーム毎にネットワーク構造/ハイパーパラメータのチューニングはしない • 報酬のクリッピングが必要になる • ⼈間のエキスパートのプレイ(demonstrations)を使わない • 使う⼿法: R2D3, Go-Explore with domain knowledge 等
  • 18.
    DQN (2013, 2015) •モデルフリー強化学習 • Q学習(Off-Policy) • ニューラルネットワーク(NN) による⾏動価値関数Qの近似 • 畳み込みニューラルネットワー ク(CNN) • 2つのネットワーク(オンライン とターゲット) • 経験リプレイ • ⼀様にランダムサンプリング • 前処理φ • 直近4フレームをグレースケール 化して84x84にリスケール • 報酬のクリッピング • 結果は次スライド Mnih et al., "Human-level control through deep reinforcement learning", Nature, 2015.
  • 19.
    Rainbow (2017) • 2017年のAtari-57のSotA •分散型ではない • DQNの改良⼿法6個を統合 • 6個の⼿法を⼀つずつ切除してど の⼿法が有効か実験 • 以下の順で有効 • 優先順位付き経験リプレイ(⽔⾊) • n-ステップ学習(⻩⾊) • 収益の分布を学習 • ノイジーネットワーク • デュエリングネットワーク • ダブルQ学習 Hessel et al., "Rainbow: Combining Improvements in Deep Reinforcement Learning", AAAI-18, 2018. DQNからRainbowまでのまとめは奥村さんのスライドが参考になります https://www.slideshare.net/juneokumura/dqnrainbow ダブルQ学習, n-ステップ学習, 優先順位付き経験リプレイの詳細はスライド末尾の付録を参照
  • 20.
    Ape-X (2018) • 2018年Atari-57のSotA •分散型強化学習⼿法 • DQN(2015), Rainbow(2017), Gorila(2015), DDPG(2016)等がベース • 離散的⾏動(Ape-X DQN)と連続的⾏動(Ape-X DPG)の両⽅に対応 • 分散型強化学習の2つの⽅向性 • 勾配の計算を分散 • 分散型確率的勾配降下法 (distributed stochastic gradient descent) • 勾配の計算は⽐較的重い • 勾配のサイズは⼤きいのでノード間の通信がボトルネックになる場合がある • 経験の⽣成を分散 • 分散型経験リプレイ (distributed experience replay) • Ape-Xはこちらを実装 • 分散型勾配計算を組み合わせることも可能 • 以後の分散型⼿法でもApe-Xのアーキテクチャがベース • R2D2, NGU, Agent57, MuZero等 Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
  • 21.
    Ape-Xのアーキテクチャ • Learner (学習プロセス) •Replayからサンプリングされ た経験を読み込み • NNの重みを更新 • 優先順位を更新してReplayに 送る • Actor (経験⽣成プロセス) • NNの重みを定期的に読み込み • 経験を⽣成 • 経験と優先順位の初期値をReplay に送る Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018. • Replay (データベース) • 経験と優先順位を保存 • 優先順位を元に経験をサンプリ ング
  • 22.
    Ape-X DQN (離散的⾏動) •分散型アーキテクチャ • 経験の⽣成(Actor)と学習(Learner)の 分離 • 優先順位付き経験リプレイ • TD誤差の絶対値を優先順位 pi • 確率的にサンプリング P(i) (α=0.6) • Q関数更新時に重点サンプリング • εiグリーディ • Actor毎に異なるε • アニーリングしない(徐々に減らさない) • nステップTD学習 (n=3) • ダブルQ学習 • デュエリングネットワーク • 状態価値V(s)とアドバンテージA(s, a) Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018. ロス関数 最⼤値 ε=0.4 最⼩値 ε=0.00066 優先順位付き経験リプレイの詳細はスライド末尾の付録を参照
  • 23.
    Ape-Xのアルゴリズム • 状態を⼊⼒して⽅策から⾏動 を得る • 環境に⾏動を適⽤して報酬と 割引率γ(エピソード末なら0) と次の状態を得る • ローカルバッファに経験を貯 める • ある程度貯まったら優先順位 を計算して、経験と優先順位 をリプレイバッファに送る • 定期的にNNの重みを読み込み • リプレイバッファから優先順 位を元に確率的にサンプリン グ • ロスを計算してQ関数を更新 • 優先順位を計算し直す Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
  • 24.
    Ape-X DQN 結果 •2018年のSotA • Atari-57のHNSの中 央値 • no-opスタート • 学習5⽇ • HNS 434% • 376 cores, 1 GPU • ⻘: Ape-X DQN • 橙: A3C • 紫: Rainbow • 緑: DQN Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
  • 25.
    R2D2 (2019) • Ape-Xに再帰的ニューラルネットワーク (RNN)を導⼊ •経験リプレイにRNNを導⼊する際の問題点 • 経験を⽣成するタイミングと学習するタイミ ングが異なる • 隠れ状態の初期状態をどうするか? • ゼロにする or 経験⽣成時の値を保存しておく • 経験を⽣成した時のネットワークと経験を再 ⽣する時のネットワークが違う • burn-in フェーズを導⼊(下図) • 重点サンプリング(IS)を使わない • 報酬のクリッピング • 従来: [-1, 0, 1]にクリッピング • 複数のゲームを同じハイパーパラメータで 学習するため • R2D2: • エピソード終端 • 従来: 1ライフ • R2D2: ゲームオーバー R2D2については奥村さんのスライドが参考になります https://www.slideshare.net/juneokumura/rnnr2d2 Kapturowski et al., "Recurrent Experience Replay in Distributed Reinforcement Learning", ICLR2019, 2019.
  • 26.
    R2D2 結果 • 2019年のSotA •Atari-57の HNSの中央値 • no-opスタート • 学習5⽇ • HNS 1920.6% • 橙: R2D2 (256 Actors) • ⻘: Ape-X (360 Actors) Kapturowski et al., "Recurrent Experience Replay in Distributed Reinforcement Learning", ICLR2019, 2019.
  • 27.
    MuZero (2019年11⽉) • モデルベース強化学習 •2020年6⽉現在Atari-57のSotA • MuZeroより前はモデルフリーがSotAだった • AlphaGo (2016年) • 囲碁 • モンテカルロ⽊探索(MCTS) • セルフプレイ • プロ棋⼠の棋譜データベース • AlphaGo Zero (2017年10⽉) • 囲碁 • MCTS • セルフプレイ • ⼈間の知識なし • プロ棋⼠の棋譜データベースを使わない • AlphaZero (2017年12⽉) • チェス, 将棋, 囲碁 • MCTS • セルフプレイ • 囲碁特有の学習⽅法を除外 • 盤⾯の回転による学習データ⽔増し • 引き分けの追加 • MuZero (2019年11⽉) • チェス, 将棋, 囲碁, ビデオゲーム(Atari) • MCTS • セルフプレイ • ゲームのルールの知識なし • 報酬のみで学習 • 報酬・価値のスケーリング • エピソード途中の報酬 https://storage.googleapis.com/deepmind-media/research/muzero_poster_neurips_2019.pdf Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019. 布留川 英⼀, "AlphaZero 深層学習・強化学習・探索 ⼈⼯知能プログラミング実践⼊⾨", ボーンデジタル, 2019.
  • 28.
    MuZero アーキテクチャ • Ape-Xと基本的に 同じ •ActorがSelf Play • LearnerがTrainer • ReplayがReplay Buffer • Shared Storageを 追加 • NNの重みを保存す るデータベース https://github.com/werner-duvaud/muzero-general/wiki/How-MuZero-works 参考: Ape-Xのアーキテクチャ Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018.
  • 29.
    MuZero ⽅法 • 2つのデータベース •リプレイバッファ • エピソード毎の観測・⾏動・報酬・⽅ 策・価値のシーケンス • シェアドストレージ • 表現・ダイナミクス・予測の3つの ニューラルネットワーク(NN)の重み • 学習器(単⼀のGPUマシン) • 学習 • リプレイバッファからをエピソードを1 つ読み込み • n-ステップTDで学習 • NNの重みをシェアドストレージに保存 • セルフプレイ(多数のCPUマシン) • プランニング • シェアドストレージからNNの重みを読み込み • MCTSでシミュレーション • ある局⾯から始まるツリーの各ノードの価値を 計算 • 次の1⼿を決めるバンディット問題(UCBの改良 版pUCTで解く) • ⾏動選択 • プランニングで得られた⽅策をもとにランダム 性を加えてサンプリングして⾏動を決定 • ⾏動を実環境に作⽤させ観測と報酬を得る • エピソード末で経験をリプレイバッファに保存 Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019. https://github.com/werner-duvaud/muzero-general/wiki/How-MuZero-works
  • 30.
    参考: バンディット問題 • 例:10個のスロットマシン • エージェントからは報酬の分布 は未知 • 状態は⾏動によって変化しない • 最適解 • ⾏動3を取り続けると報酬期待値 1.55に収束 • ⽅策 • 序盤は満遍なく • ある程度分布がわかれば集中 • 探索と利⽤のバランスをどうと るか? Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
  • 31.
    参考: UCB1 (UpperConfidence Bound 1) • バンディット問題の解法の1つ • ステップ数t, ⾏動aの報酬の平均値 Qt(a), ⾏動aの回数Nt(a) • 平均報酬1.55が最適解 • 序盤は探索(第2項)が⼤ • 次第に探索が減っていく • サンプル数が増えると信頼区間が狭 くなる • MuZeroでは • ある局⾯において、次の⼀⼿を決める 際にUCBの改良版(pUCT)を利⽤ 利⽤ 探索 Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018. Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
  • 32.
    参考: モンテカルロ⽊探索(MCTS) • 2種類の⽅策(ツリー⽅策と ロールアウト⽅策)を使う •選択(Selection) • ツリー⽅策(εグリーディ等)に 従ってリーフノードを選択 • 拡張(Expansion) • リーフノードから辿れる未探索 の⾏動を⼦ノードとして追加 • シミュレーション(Simulation) • 選択されたノードから、ロール アウト⽅策(ランダム⽅策等)に 従って完全なエピソードをシ ミュレーション • バックアップ(Backup) • ツリー⽅策で訪問されたノード の⾏動価値を更新 • ロールアウト⽅策で訪問された 部分は⾏動価値を保存しない Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
  • 33.
    MuZero プランニング(MCTS) • 3つのニューラルネットワーク(NN) • 実状態ではなく隠れ状態のツリー •ツリー⽅策にUCBの改良版pUCT • ロールアウトは⾏わずNNで近似 https://storage.googleapis.com/deepmind-media/research/muzero_poster_neurips_2019.pdf Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019. 右上の添字: シミュレーションのステップ 右下の添字: 実環境のステップ
  • 34.
    MuZero ⾏動選択 • プランニングで得られた⽅策をもとにサンプリングして⾏動を決定 • 右式でランダム性を加え探索を⾏う •N(α)はMCTSでノードを訪問した回数 • 徐々に温度パラメータTを減らしてランダム性を減らす • ⾏動を実環境に作⽤させ観測と報酬を得る • エピソード末で経験をリプレイバッファに保存 Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
  • 35.
    MuZero 学習 • リプレイバッファか らをエピソードを1つ 読み込み • nステップTDで学習 •NNの重みをシェアド ストレージに保存 • K=5 ⽅策価値報酬 Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019. 右上の添字: シミュレーションのステップ 右下の添字: 実環境のステップ
  • 36.
    MuZero 結果 • 2020年6⽉現在Atari-57 のSotA •モデルフリー⼿法に⽐べ てサンプル効率が良い • ボードゲーム • 16 TPU(学習) • 1000 TPU(セルフプレイ) • Atari • 8 TPU(学習) • 32 TPU(セルフプレイ) Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
  • 37.
    参考: MuZero 結果詳細 •各ゲームのゲーム内スコア • MuZeroだけ成績が悪い(⾚枠) • montezuma revenge • solaris • venture • どの⼿法も成績が悪い(⻘枠) • pitfall • →NGUが初めて⼈間を超えた • skiing Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019.
  • 38.
    参考: Montezumaʼs Revengeの SotA • 探索が難しい • 環境から得られ る報酬(外部報 酬)が疎 • 内発的動機づ け・内部報酬・ 好奇⼼等のアイ デアを導⼊ https://paperswithcode.com/sota/atari-games-on-atari-2600-montezumas-revenge
  • 39.
    Agent57 (2020年3⽉) • モデルフリー強化学習 •R2D2 , RND, NGUの発展 • Atari のゲーム57種類全てで ⼈間以上 (左上図) • 基本的なアーキテクチャは Ape-Xと同じ(左下図) • 内発的動機づけが追加 • 内的報酬(NGU) • ⻑期(life-long)と短期 (episodic)に分けて計算 • メタコントローラ(Agent57) • 探索と利⽤のバランスを調整 London Machine Learning Meetup, "Charles Blundell - Agent57: Outperforming the Atari Human Benchmark", YouTube, 2020. https://youtu.be/VQEg8aSpXcU Badia et al., "Agent57: Outperforming the Atari Human Benchmark", arXiv preprint arXiv:2003.13350, 2020. Badia et al., "Never Give Up: Learning Directed Exploration Strategies", ICLR2020, 2020.
  • 40.
    NGU 内的報酬(⻑期/短期) • 内的報酬の導⼊ •βをメタコントローラで調整(Agent57) • 内的報酬を⻑期と短期に分けて計算 • ⻑期(life-long): RND • 短期(episodic): embedding network (ICM?) Badia et al., "Never Give Up: Learning Directed Exploration Strategies", ICLR2020, 2020. Burda et al., "Exploration by Random Network Distillation", arXiv preprint arXiv:1810.12894, 2018.RNDについては向井さんのスライドが参考になります https://www.slideshare.net/ssuser1ad085/rnd-124137638
  • 41.
    Agent57 メタコントローラ • 探索と利⽤のバランスを調整 •εiグリーディのアイデアを拡張 • 割引率γと内的/外的報酬の重み付けβをActor毎 に設定 • ⼩さいβと⼤きいγ →利⽤寄りの⽅策 • ⼤きいβと⼩さいγ →探索寄りの⽅策 • NGU • Actor毎に異なるγとβを設定して固定 • Agent57 • γとβをエピソード毎に変更 γ(i), β(i) • iはバンディットアルゴリズムで選択 • ⼩さいi→利⽤寄りの⽅策 • ⼤きいi→探索寄りの⽅策 • 学習初期は探索寄り, 後半は利⽤寄りの⽅策を 選択(右図) Badia et al., "Never Give Up: Learning Directed Exploration Strategies", ICLR2020, 2020. Badia et al., "Agent57: Outperforming the Atari Human Benchmark", arXiv preprint arXiv:2003.13350, 2020.
  • 42.
    NGU アルゴリズム • R2D2がベースで太字部分がNGUの追加部分 •γとβはActor毎に異なる値を設定して固定 • 内的報酬ためのRND(⻑期)とinverse dynamics model(短期)を学習 London Machine Learning Meetup, "Charles Blundell - Agent57: Outperforming the Atari Human Benchmark", YouTube, 2020. https://youtu.be/VQEg8aSpXcU
  • 43.
    Agent57 アルゴリズム • NGUがベースで太字部分がAgent57の追加部分 •γとβをエピソード毎に変更 γ(i), β(i) • iはバンディットアルゴリズムで選択 • ⼤きいi→探索寄りの⽅策 London Machine Learning Meetup, "Charles Blundell - Agent57: Outperforming the Atari Human Benchmark", YouTube, 2020. https://youtu.be/VQEg8aSpXcU
  • 44.
    Agent57 結果 • 57個全てのゲームで⼈間以上 •中央値(Median)でR2D2とほぼ同等 • 5 th Percentileでトップ • 57個のスコアを下から順に並べて、下位 5 %の位置にあるスコア(2.8番⽬) • MuZero は全く解けないゲームがいくつかあるので値が低くなる Badia et al., "Agent57: Outperforming the Atari Human Benchmark", arXiv preprint arXiv:2003.13350, 2020.
  • 45.
    分散型強化学習まとめ • ここ数年は分散型強化学習⼿法がAtari-57のSotA • Actor:経験の⽣成 (数百台のCPUマシン) • Learner: 学習 (1台のGPUマシン) • MuZero(2019)が2020年6⽉現在のAtari-57のSotA • モデルベース強化学習, MCTS, セルフプレイ • Agent57(2020)がAtari-57のゲーム57種類全てで⼈間以上のスコアを達成 • 内的報酬(⻑期/短期), メタコントローラ • 経験リプレイにRNNを導⼊するには⼯夫が必要 • burn-in フェーズ(R2D2) • 探索が難しいゲームは内的報酬が重要 • RND, NGU, Agent57 • 内的報酬を⽤いないMuZeroで全く解けない問題がある(モンテズマリベンジ等) • 分散型で探索と利⽤のバランスを調整することが重要 • εiグリーディ: Actor毎に違うεを設定しアニーリングしない • メタコントローラ: Actor毎に違う割引率γと内的/外的報酬の重み付けβをバンディットアルゴリズムで選択 • 今回取り上げていない⼿法 • A3C(2016), PPO(2017), Gorila(2015), IMPARA(2018), RND (2018), Go-Explore (2019), R2D3(2019) 等
  • 46.
    ⽬次 • ⾃⼰紹介 • 強化学習とは •分散型強化学習⼿法の最近の動向 • 分散計算フレームワークRayによる分散型強化学習実装の試み • まとめ
  • 47.
    Rayによる分散型強化学習実装の試み • なぜ分散型強化学習か • 今後マルチエージェント強化学習の研究がしたい •分散型強化学習アーキテクチャが有効 • →まずシンプルなApe-Xのサブセットを実装してみる • なぜRayか • Ray: 分散アプリケーションの構築・実⾏のためのフレームワークで、特に機械学習 系で使われている • サブプロジェクト • Tune: ハイパーパラメータチューニングのためのライブラリ • RLlib: 強化学習ライブラリ • Ape-X, IMPARA, PPO, A3C等が実装済み https://docs.ray.io/en/master/rllib-algorithms.html • ドキュメントがしっかりしている(特にチュートリアル) • シンプル(通常のPythonとほぼ同じ感覚で使える→後述) • AWS, GCP等でクラスタを構成するサンプルがある • https://docs.ray.io/en/master/autoscaling.html • muzero-generalというMuZero実装でRayが使われていて参考にできる • https://github.com/werner-duvaud/muzero-general
  • 48.
    Rayを使った分散型強化学習の実装の試み • 今回の発表内容 • Rayを使ってシンプルな分散型強化学習(経験の⽣成 と学習の分離のみ)を実装 •Amazon EC2でのクラスタ構築⽅法を紹介 • RLlibでのApe-Xの実⾏⽅法とリファレンス結果を紹 介 • 今後RLlibのApe-X実装をベースにするかRayで スクラッチから実装するか検討中 • 今回の発表で紹介するソースコード/設定 • https://github.com/susumuota/distributed_experi ence_replay • 参考: RLlibで対応している強化学習⼿法(右図) • https://docs.ray.io/en/master/rllib- algorithms.html
  • 49.
    RayのAPIの使い⽅ • 関数定義・クラス定義 • @ray.remoteを付加 • デコレータ • func = ray.remote(func) のシンタックスシュガー • 関数/メソッド呼び出し • func(args) を func.remote(args) に変更 • 戻り値は計算が終了するまでブロックされない • その代わりリモートオブジェクトが返ってくる • 戻り値の取得 • ray.get(object_id) で計算終了までブロックして戻り値を取得 • timeout を指定可能 • 基本的にこれだけ
  • 50.
    シンプルな分散型強化学習の 実装 (抜粋) • 経験の⽣成(Actor)と学習(Learner)の分離参考: Ape-Xのアーキテクチャ https://github.com/susumuota/distributed_experience_replay/blob/master/distributed_experience_replay.py
  • 51.
    Rayを使って Amazon EC2でクラスタ構築 • Amazon EC2 (コンピューティングサービス) を使ってスケーラ ブルな強化学習が実現可能か実験 • 今回はm5.largeという安価なマシンを3台借りて、Rayにより複 数マシンのクラスタを⾃動構築して分散計算できるか実験 • AWSでのクラスターの構築⽅法ドキュメント • https://docs.ray.io/en/master/autoscaling.html#aws
  • 52.
    Rayを使って Amazon EC2でクラスタ構築 AWS側の設定 • IAMコンソールでユーザ追加 • 「アクセスの種類」を「プログラムによ るアクセス」→アクセスキーIDとシーク レットアクセスキーが⽣成 • 「既存のポリシーを直接アタッチ」で 「AmazonEC2FullAccess」と 「IAMFullAccess」を追加 (右上図) • アクセスキーIDとシークレットアクセス キーが作成できたらローカルマシンの ~/.aws/credentials に保存 (右下図) • ポリシーの部分は要検討 • Rayのドキュメントにはどのポリシーが 必要か具体的には書いてない(or ⾒つか らなかった)ので、各⾃で適切なポリシー を設定 • 私の場合は、実験直前にユーザを作成し て実験が終わったらすぐユーザを削除
  • 53.
    Rayを使って Amazon EC2でクラスタ構築 ローカルマシン側の設定 • 設定ファイル(example-full.yaml) • 以下の設定ファイル例を修正 • https://github.com/ray- project/ray/blob/master/python/ray/autoscaler/aws/example-full.yaml • 今回の実験で使⽤した設定ファイル • https://github.com/susumuota/distributed_experience_replay/blob/ma ster/example-full.yaml • ノードの種類 • head (計算の中⼼となるノードで必ず1つ作成される) • worker (負荷に応じて増やされるノード) • workerノードの最⼤値・最⼩値・初期値 • 負荷によって⾃動的にインスタンスが増やされる(autoscaling) • インスタンス⽴ち上げにある程度時間がかかるので、負荷があらかじめ分 かっているなら、初期値と最⼤値は同じにした⽅が良いかもしれない • インスタンスのタイプ(m5.large等) • スポットインスタンス(通常の半額程度)も可能 • イメージ(Deep Learning⽤のOSイメージ等) • インスタンスの初期設定(Pythonモジュールのインストール等) • ほぼ⽤意されているAWS⽤の初期設定のままでOK https://github.com/susumuota/distributed_experience_replay/blob/master/example-full.yaml
  • 54.
    Rayを使って Amazon EC2でクラスタ構築 クラスタの操作 • 以下のコマンドは全てローカルマシンのターミナルから実⾏ • クラスタの⽴ち上げ • ray up example-full.yaml • クラスタでスクリプト実⾏ • ray submit example-full.yaml ape_x_dqn.py • sshでheadマシンにログインして Python スクリプトを実⾏ • クラスタの終了 • ray down example-full.yaml
  • 55.
    Rayを使って Amazon EC2でクラスタ構築 AWSコンソールでクラスタの様⼦を確認 • ray up/submit した後にインスタンスを確認 • ray down した後にこの画⾯からインスタンスの状態を終了 (terminated)にする • 停⽌(stopped)だと課⾦が継続するので注意
  • 56.
    Rayを使って Amazon EC2でクラスタ構築 プログラムの実⾏中のログ • m5.largeを3台 • スペックは下表 • 環境: CartPole-v0 • 数分程度で収束 • 毎秒約5回学習 • 毎秒約3600経験⽣成 経過時間4分 エピソード⻑200(収束) 学習/sec 経験⽣成/sec
  • 57.
    Rayを使って Amazon EC2でクラスタ構築 ダッシュボード (計算負荷のモニター) • ローカルマシンの別ターミナルから • ray dashboard example-full.yaml • Webブラウザで • http://localhost:8265 • ただし、メインの計算プロセスを巻き込んで落ちることが何回 かあったので使わない⽅が良いかもしれない...
  • 58.
    Rayを使って Amazon EC2でクラスタ構築 注意点 (実験終了後に削除すべきもの) • クラスタ⾃動構築時に作成されるものを削除 (私が確認できた範囲) • EC2 • インスタンス • デフォルトyaml設定では ray downしてもインスタンスが「停⽌」されるだけなので実験が終わったら⼿動で「終 了」する • yaml 設定で 「cache_stopped_nodes: False」を指定すると ray down時に「停⽌」ではなく「終了」するように なる • ボリューム • インスタンス開始とともに作成され、終了で削除されるはず • キーペアの追加 • ray-autoscaler* • セキュリティグループ • ray-autoscaler* • IAM • ロール追加 • ray-autoscaler-v1 • ssh秘密鍵 • ~/.ssh/ray-autoscaler*.pem • IAMコンソールで⾃分で作ったユーザも削除 • インスタンスとボリュームに関しては放っておくと課⾦が継続するのでAWSコン ソールで最終確認
  • 59.
    RLlib の Ape-X実⾏⽅法 • RLlib: Ray ベースの強化学習ライブラリ • RLlib Reference Results • https://github.com/ray-project/rl-experiments • RLlib で対応している各種強化学習⼿法の実⾏⽅法, ハイパーパラメー タ, リファレンス結果 (次スライド) • Amazon EC2 の g3.16xlarge マシンでの結果 • スペックと価格は右下図, スポットインスタンスなら半額程度 • 例: Atari を Ape-X で学習させるコマンド • rllib train -f atari-apex/atari-apex.yaml
  • 60.
    RLlib の Ape-Xのリファレンス結果 ゲームスコアの⽐較 • g3.16xlargeでの実 ⾏結果 • 4つのゲームそれぞ れのゲームスコア • Ape-X, A3C, DQN の⽐較 • 10Mステップの⽐ 較 (左上表) • 1時間の学習の⽐較 (左下表) https://github.com/ray-project/rl-experiments
  • 61.
    RLlib の Ape-Xのリファレンス結果 経験の⽣成速度 • Atariの1秒あたりのフレー ム⽣成数(FPS) • 4 Replay Shardsは4フレー ムおきにスキップ • ⾚線はApe-Xの元論⽂の結 果 45k FPS (256 workers) • 元論⽂に⽐べてRLlibは4倍 程度(160k FPS)のパフォー マンス Liang et al., "RLlib: Abstractions for Distributed Reinforcement Learning", ICML 2018, 2018.
  • 62.
    Rayを使った分散型強化学習の実装の試み 実験のまとめ • 実験の感想 • APIがシンプル •チュートリアルが分かり易い • サンプル設定ファイルを若⼲修正するだけで容易に複数ノードのクラスタ構 築が可能 • 問題点 • ray submit でスクリプト実⾏中にエラーで落ちることが複数回あり、落ちた 後しばらくするとworkerが停⽌。ray submitを再実⾏してもworkerは起動せ ず(headだけで計算実⾏) →複数ノードの対応は不安定な可能性 • まずはリファレンス結果を参考に、単⼀ノードの多コアのマシン(g3.16xlarge 等)で実験するのが良いかもしれない • TensorBoardでの学習のモニタリングが出来るはずだが今回出来なかった。オ プション等の⾒落としがないか調査中
  • 63.
    ⽬次 • ⾃⼰紹介 • 強化学習とは •分散型強化学習⼿法の最近の動向 • 分散計算フレームワークRayによる分散型強化学習実装の試み • まとめ
  • 64.
    まとめ • 分散型強化学習の最近の動向 • ここ数年は分散型強化学習⼿法がAtari-57のSotA •Ape-X(2018), R2D2(2019), MuZero(2019) • モデルベース強化学習のMuZero(2019)が2020年6⽉現在のAtari-57のSotA • 内的報酬やメタコントローラを使ったAgent57(2020)がAtari-57のゲーム57 種類全てで⼈間以上のスコア • 分散計算フレームワークRayによる分散型強化学習実装の試み • Rayの基本的な使い⽅を解説 • シンプルな分散型強化学習⼿法をRayにより実装 • Rayを使ってAmazon EC2 上にクラスタを構築する⽅法・注意点を解説 • Rayベースの強化学習ライブラリRLlibの実⾏⽅法とリファレンス結果を紹介
  • 65.
    参考⽂献 • DQN • Mnihet al., "Playing Atari with Deep Reinforcement Learning", arXiv preprint arXiv:1312.5602, 2013. https://arxiv.org/abs/1312.5602 • Mnih et al., "Human-level control through deep reinforcement learning", Nature, 2015. https://www.nature.com/articles/nature14236 • Prioritized Experience Replay • Schaul et al., "Prioritized Experience Replay", ICLR2016, 2016. https://arxiv.org/abs/1511.05952 • Rainbow • Hessel et al., "Rainbow: Combining Improvements in Deep Reinforcement Learning", AAAI- 18, 2018. https://www.aaai.org/ocs/index.php/AAAI/AAAI18/paper/download/17204/16680 • Ape-X • Horgan et al., "Distributed Prioritized Experience Replay", ICLR2018, 2018. https://openreview.net/forum?id=H1Dy---0Z • R2D2 • Kapturowski et al., "Recurrent Experience Replay in Distributed Reinforcement Learning", ICLR2019, 2019. https://openreview.net/forum?id=r1lyTjAqYX • MuZero • Schrittwieser et al., "Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model", arXiv preprint arXiv:1911.08265, 2019. https://arxiv.org/abs/1911.08265 • W. Duvaud, "MuZero General: Open Reimplementation of MuZero", GitHub repository, 2019. https://github.com/werner-duvaud/muzero-general • David Foster, "How To Build Your Own MuZero AI Using Python (Part 1/3)", Medium, 2019. https://medium.com/applied-data-science/how-to-build-your-own-muzero-in-python- f77d5718061a • 布留川 英⼀, "AlphaZero 深層学習・強化学習・探索 ⼈⼯知能プログラミング実践⼊⾨", ボー ンデジタル, 2019. https://www.borndigital.co.jp/book/14383.html • Agent57 • Badia et al., "Agent57: Outperforming the Atari Human Benchmark", arXiv preprint arXiv:2003.13350, 2020. https://arxiv.org/abs/2003.13350 • Badia et al., "Never Give Up: Learning Directed Exploration Strategies", ICLR2020, 2020. https://openreview.net/forum?id=Sye57xStvB • Burda et al., "Exploration by Random Network Distillation", arXiv preprint arXiv:1810.12894, 2018. https://arxiv.org/abs/1810.12894 • London Machine Learning Meetup, "Charles Blundell - Agent57: Outperforming the Atari Human Benchmark", YouTube, 2020. https://youtu.be/VQEg8aSpXcU • Sutton and Barto の強化学習の教科書 • Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018. http://incompleteideas.net/book/the-book-2nd.html • Hide and Seek かくれんぼ • Baker et al., "Emergent Tool Use From Multi-Agent Autocurricula", ICLR2020, 2020. https://openreview.net/forum?id=SkxpxJBKwS • Autocurricula • Leibo et al., "Autocurricula and the Emergence of Innovation from Social Interaction: A Manifesto for Multi-Agent Intelligence Research", arXiv preprint arXiv:1903.00742, 2019. https://arxiv.org/abs/1903.00742 • 奥村さんの強化学習アーキテクチャ勉強会での発表スライド • “DQNからRainbowまで 〜深層強化学習の最新動向〜” https://www.slideshare.net/juneokumura/dqnrainbow • “深層強化学習の分散化・RNN利⽤の動向〜R2D2の紹介をもとに〜” https://www.slideshare.net/juneokumura/rnnr2d2 • 関⾕さんの強化学習アーキテクチャ勉強会での発表スライド • “強化学習の分散アーキテクチャ変遷” https://www.slideshare.net/eratostennis/ss- 90506270 • 向井さんの強化学習アーキテクチャ勉強会での発表スライド • ” RNDは如何にしてモンテスマズリベンジを攻略したか” https://www.slideshare.net/ssuser1ad085/rnd-124137638 • 三好さんのDo2dle勉強会での発表スライドとコード • “⼈⼯知能と進化論” https://do2dle.connpass.com/event/161217/ • Ray/RLlib • Moritz et al., "Ray: A Distributed Framework for Emerging AI Applications", 13th USENIX Symposium on Operating Systems Design and Implementation, 2018. https://www.usenix.org/conference/osdi18/presentation/moritz • Liang et al., "RLlib: Abstractions for Distributed Reinforcement Learning", ICML 2018, 2018. https://arxiv.org/abs/1712.09381 • The Ray Team, "Ray - Fast and Simple Distributed Computing", 2020. https://ray.io/ • 全脳アーキテクチャハッカソン • 全脳アーキテクチャ・イニシアティブ, "第4回全脳アーキテクチャハッカソン", 2018. https://wba-initiative.org/3401/ • Animal-AI Olympics • Beyret et al., "The Animal-AI Environment: Training and Testing Animal-Like Artificial Cognition", arXiv preprint arXiv:1909.07483, 2019. https://arxiv.org/abs/1909.07483 • Crosby et al.,"The Animal-AI Testbed", 2020. http://animalaiolympics.com/AAI/ • 本⽇の発表のソースコード/設定ファイル • “分散計算フレームワークRayによる分散型強化学習実装の試み” https://github.com/susumuota/distributed_experience_replay • 本⽇の発表のconnpassページ(Do2dle勉強会) • https://do2dle.connpass.com/event/178184/
  • 66.
    付録: ダブルQ学習 • Q学習の問題点 •最⼤化バイアス(maximization bias) • 価値を評価する際に最⼤値を過⼤評価してしまう • 2つの⾏動価値関数を使いバイアスを解消 Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018. • 例: 右上図 • ε=0.1 • Aからスタートして右か左に移動 • Bに移動後、正規分布(平均-0.1 分 散1)で報酬を得る • Aから右に⾏くのが最適⽅策(報酬 合計0) • Bに⾏くと正の報酬があるように⾒ える(実際は平均-0.1)
  • 67.
    付録: nステップTD学習 • temporal-difference(TD)学習 •連続する時間(例えばtとt+1)の違 いに基づいて学習 • 価値VをターゲットG (⾚線部分)に 近づける • nステップTD学習 • nステップリターンをターゲット としてTD学習 Sutton et al., "Reinforcement Learning: An Introduction second edition", MIT Press, 2018.
  • 68.
    付録: Prioritized DDQN •優先順位を元に確率的 サンプリング • 重点サンプリング(IS) • 確率が⼤きい(優先順位が ⾼い)経験はQ関数の更新 を⼩さく • 経験リプレイによるバイ アスを訂正する • →ただしR2D2ではISなし • TD誤差の絶対値を優先 順位に Schaul et al., "Prioritized Experience Replay", ICLR2016, 2016. • Ape-Xのアルゴリズムの省略部分の詳細