Dwango Media Village(ドワンゴメディアヴィレッジ,dmv)

非同期分散なDQN実装 MarltasCore

MarltasCoreのシステム

Dwango Media Villageの佐々木です。 近年のDeep Q-Network(DQN)の研究では非同期分散の学習方法を導入することでパフォーマンス向上を行っていますが、複数のノードを使った分散学習が可能な実装は多くありません。 そこで我々はオープンソースな非同期分散DQN実装、MarltasCoreを公開しました。 ソースコードはGitHubで公開しています。 この記事ではMarltasCoreのアーキテクチャデザイン、実装されているアルゴリズム、そしてAtariでの実験結果を紹介します。

非同期分散なDQN

Deep Q-Network (DQN, [Mnih et al. 2015]) は連続状態から離散の行動選択を行うシステムを機械学習によって構築する方法の1つです。 強化学習ベンチマークであるAtari 57において一貫して人間のパフォーマンスを超えることが報告されるなど、DQNは自動的なゲームプレイを始めとしてゲームの煩雑なデバッグやレコメンデーションなどへの応用が期待されます。

DQNの性能向上において行動価値の近似方法の発展はもちろん、効率的なデータサンプリングも重要な要因の1つです。 Q学習はオンライン学習であるためエージェントは環境とのインタラクションを通して学習データを収集する必要があります。 より多様で多くの学習データを効率的に集めるための方法として、複数の環境でかつQ-Networkの更新と同期することなく実行する非同期分散のデータ収集が考えられます。 さらにこの方法はロボットシミュレーション、高品質なゲーム、ブラウザなどの計算が重い環境を実行する場合に有効です。

1つのノードで実行できる非同期分散なDQN実装にはCleanRLrlpytなどがあります。 しかしながら複数ノードを使って実行可能な実装はRLlib(解説記事はこちら)などがあるものの、設計とデバッグの煩雑さのため数が少ないのが現状です。

MarltasCoreのサンプル収集効率

そこで我々は複数ノードで実行可能な非同期分散DQN実装MarltasCoreを公開することにしました。 上の図はMarltasCoreのデータ収集効率のスケーラビリティを示しています。 具体的には横軸が計算で利用したプロセス数、縦軸が単位時間あたりに環境が進んだステップ数を表しています。

アーキテクチャデザイン

MarltasCoreは上の動画にあるように複数のモジュールが相互に通信し合う構造になっています。 PythonではGlobal Interpreter lockの制約があるため1つのプロセス内での並列化では効率を上げることが困難です。 そこでMarltasCoreではMultiprocessingを使って個々のモジュールを分散実行させています。 モジュール間のデータ転送はRemote Procedure CallのフレームワークであるgRPCを利用しています。 gRPCはHTTPを介した通信を行うため、特別な通信バックエンドを使わずともモデルパラメータやサンプルデータを複数のノード間で共有できます。 また、ニューラルネットの計算フレームワークはPyTorchを使用しました。

モジュール一覧:

実装されているアルゴリズム

最近のDQN研究のアルゴリズムとMarltasCoreがサポートしているアルゴリズム
Algorithm Ape-X R2D2 Never Give Up Agent57 MarltasCore
RNN-DQN x x x x
Prioritized Experience Replay x x x x x
Double DQN x x x x x
Dueling Network x x x x x
Retrace x x
Random network distillation x x x
Episodic Curiosity x x x
Meta-Controller x x

MarltasCoreはApe-XからAgent57に続くDQN研究で提案されたアルゴリズムを実装しています。 特に内的報酬(好奇心)の計算、内的報酬と外的報酬のバランスを取るためのメタ学習などをサポートしています。

Ape-X [Horgan et al. 2018]ではDQNモデルの非同期分散アーキテクチャを提案しました。 この手法ではConvolutional Neural Network(CNN)にDueling arhitecture [Wang et al. 2016]、double Q-Learnining [Lafferty et al. 2010] 、n-step Q-learning method [Mnih et al. 2016] が組み合わされています。

R2D2 [Kapturoski et al. 2019] ではApe-XのDQNモデルをCNNからRecurrent Neural Network(RNN)に変更しています。 この研究では学習シーケンスにおけるRNNの隠れ層の初期値をどのように扱うかが議論されており、 固定長の前向き計算で隠れ状態を求め直す"Burn-in"、探索時の状態を保存する"Stored-state"が検討されていました。 MarltasCoreでは"Stored-state"の方式を採用しています。

Never Give Up [Badia et al. 2020a] では状態の新しさに伴う内的報酬の導入が行われました。 具体的には“life-long novelty module”と“episodic novelty module”と呼ばれる2つのモジュールを導入しています。 前者はRandom Network Distillation (RND, [Burda et al. 2018]) であり、ランダムなパラメータで初期化されたCNNによる状態の特徴量と、この特徴量を予測するPredictor Networkと呼ばれるCNNの特徴量の距離を報酬にしています。 Predictor Networkはランダム初期化されたCNNの知識を蒸留していくことで学習の始めから現在までの状態の知識を蓄積する仕組みになっています。 後者の“episodic novelty module”も同様に状態の特徴量間距離を計算しますが、過去の状態に関する知識はエピソード毎にリセットされます。 NGU論文ではさらに探索時と学習時の方策の違いをImportance Samplingで補正するRetrace [Munos et al. 2016] が導入されています。 MarltasCoreではこれら2つの内的報酬の計算のみをサポートしています。

Agent57 [Badia et al. 2020b] では探索と利用のジレンマに着目しています。 NGU論文では内的報酬(好奇心)と外的報酬とのバランスはハイパーパラメータによる混合でバランスを取っていました。 これに対してAgent57はSliding-Window UCB [Moulines et al. 1985] を使ってこの混合バランスを探索させることでより効率的な学習を目指しています。 MarltasCoreではこの混合バランスのメタ探索をSliding-Window UCBと同じ方法で学習されるUCB1-Tuned [Kuleshov et al. 2014] を使っています。

Atariゲームの実験

AtariのPongを使ってMarltasCoreで実装されたアルゴリズムの評価を行いました。 アルゴリズムのON/OFFを通して複数のAgentを用意し、それぞれ1つのノード内で3回の乱数シードで学習させました:

Train step vs. Reward
(a) 学習ステップ数とエピソード報酬和
Environment step vs. Reward
(b) 環境ステップ数とエピソード報酬和
Relative time vs. Reward
(c) 実行時間とエピソード報酬和

上の図は割引なしのエピソード報酬和の移動平均を表しています。 それぞれの図は同じ値の推移ですが横軸が異なっており、学習ステップ数(DQNモデルの更新数、図中(a))、環境ステップ数(全Actorの環境ステップ数、図中(b))、実行時間(学習開始からの経過時間、図中(c))に対応しています。 これら全て実験は同じ計算リソースを使って行いました。

BaselineとBaselineをもとにしたエージェントはPongの上限である報酬和21の近くまで到達しました。 対してSyncとCNNエージェントは最大の学習ステップ数内では到達できていません。 内的報酬のモジュールを利用することによるメリットはPongの実験では特に見られませんでした。 これはPongが探索の工夫を必要とするほど難しくないのが原因だと思われます。

環境ステップ数に対するエピソード報酬和の推移を見るとSyncエージェントの性能が他よりも良くなっています。 しかし実行時間で比較してみるとSyncは他のエージェントに比べて大幅に遅いことが分かります。 実行時間の比較においてはCNNとBaselineがRNDなどの内的報酬を使った場合に比べて早く収束しています。 これは内的報酬由来と外的報酬由来それぞれの行動価値を予測するモデルを使っており、2倍の前向き/後ろ向き計算を必要とするためです。 非同期な学習では実時間で早い収束が望めますが、大量の学習データ(環境ステップの実行)を必要とします。 対して同期な学習では実行時間はかかるものの高いSample Complexityが望めます。

まとめ

この記事ではDQN実装MarltasCoreの紹介を行いました。 MarltasCoreは最近のDQN研究において使われている非同期分散学習をサポートしています。 この学習方法は学習効率を向上させるだけではなく、計算データが重いサンプリングを必要とする場合に有効です。 gRPCによるHTTP通信を行うモジュール郡によって非同期分散の学習が実現されており、内的報酬を始めとしたDQNのアルゴリズムを実装しています。

Pongの実験結果でわかるように、DQNのパフォーマンスは近似アルゴリズムやハイパーパラメータだけではなく実装方法によっても影響を受けます。 この実装がDQN実験を行う強化学習の研究者や開発者の役に立てばと思っています。

References

[Mnih et al. 2015] Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Andrei A. Rusu, Joel Veness, Marc G. Bellemare, Alex Graves, et al. “Human-Level Control through Deep Reinforcement Learning.” Nature 518, no. 7540 (February 26, 2015): 529–33.

[Horgan et al. 2018] Dan Horgan, John Quan, David Budden, Gabriel Barth-Maron, Matteo Hessel, Hado van Hasselt, and David Silver. “Distributed Prioritized Experience Replay.” ICLR2018, 1–19. arxiv

[Kapturoski et al. 2019] Steven Kapturowski, Georg Ostrovski, John Quan, and Will Dabney. “Recurrent Experience Replay in Distributed Reinforcement Learning.” ICLR2019, 1–19. openreview

[Badia et al. 2020a] Adrià Puigdomènech Badia, Pablo Sprechmann, Alex Vitvitskyi, Daniel Guo, Bilal Piot, Steven Kapturowski, Olivier Tieleman, Martin Arjovsky, Alexander Pritzel, Andrew Bolt, Charles Blundell. “Never Give Up: Learning Directed Exploration Strategies," ICLR2020. arxiv

[Badia et al. 2020b] Adrià Puigdomènech Badia, Bilal Piot, Steven Kapturowski, Pablo Sprechmann, Alex Vitvitskyi, Daniel Guo, and Charles Blundell. “Agent57: Outperforming the Atari Human Benchmark,” 2020. arxiv

[Lafferty et al. 2010] Hado Hasselt. “Double Q-Learning.” Advances in Neural Information Processing Systems 23: 2613-2621, 2010.

[Wang et al. 2016] Ziyu Wang, Tom Schaul, Matteo Hessel, Hado Hasselt, Marc Lanctot, Nando Freitas. “Dueling Network Architectures for Deep Reinforcement Learning.” International Conference on International Conference on Machine Learning, PMLR 48:1995-2003, 2016. arxiv

[Mnih et al. 2016] Volodymyr Mnih, Adrià Puigdomènech Badia, Mehdi Mirza, Alex Graves, Tim Harley, Timothy P. Lillicrap, David Silver, and Koray Kavukcuoglu. “Asynchronous Methods for Deep Reinforcement Learning,” In Proceedings of the 33rd International Conference on International Conference on Machine Learning - Volume 48 (ICML'16). JMLR.org, 1928–1937, 2016. arxiv

[Burda et al. 2018] Yuri Burda, Harrison Edwards, Amos Storkey, Oleg Klimov. “Exploration by Random Network Distillation.” 7th International Conference on Learning Representations, ICLR2019, 1–17. arxiv

[Moulines et al. 1985] Aurélien GarivierEric Moulines. “On Upper-Confidence Bound Policies for Non-Stationary Bandit Problems,” Lecture Notes in Computer Science, vol 6925. Springer, Berlin, Heidelberg. 2011. arxiv

[Kuleshov et al. 2014] Kuleshov, Volodymyr, and Doina Precup. “Algorithms for Multi-Armed Bandit Problems,” February 24, 2014. arxiv

[Munos et al. 2016] Remi Munos, Tom Stepleton, Anna Harutyunyan, and Marc Bellemare “Safe and Efficient Off-Policy Reinforcement Learning.” Advances in Neural Information Processing Systems Safe and e, no. Nips (June 8, 2016): 1054–62. arxiv

著者

2021/02/15

Kazuma SASAKI