Proximal Policy Optimization (PPO) リリースノート – OpenAI Baselines
TL;DR
OpenAIは、最先端の手法と同等またはそれ以上の性能を発揮しながら、実装とチューニングがはるかに簡単な新しい強化学習アルゴリズムのクラスであるProximal Policy Optimization (PPO)のリリースを発表し、これがOpenAIにおけるデフォルトのRLアルゴリズムとなった。
PPOが重要な理由
ポリシー勾配法はステップサイズの選択に敏感であり、単純なタスクを学習するためにしばしば何百万、あるいは何十億ものタイムステップが必要となる。TRPOやACERなどの既存の制約付き更新手法はこれらの問題に対処するが、複雑さをもたらす:ACERはオフポリシー補正とリプレイバッファが必要であり、TRPOは共有パラメータアーキテクチャと容易に互換性がない。PPOは実装の容易さ、サンプル効率、チューニングの簡単さのバランスを提供する。
PPOの核となる考え方
PPOは、前のポリシーからの逸れを小さく保ちながら目的を改善するポリシー更新を計算しようとする。このアルゴリズムは、確率的勾配降下法と互換性のあるトラストリージョンスタイルの更新を可能にするクリップされたサロゲート目的を使用する。
クリップされた目的の式
$$L^{C L I P} \left( heta ight) = \left(\hat{E} ight)_{t} \left[ ext{min} \left( {t} \left( heta ight) \hat{A}{t}, ext{clip} _{t} \left( heta ight), 1-\epsilon, 1+\epsilon ight) ight] ight]$$ where:
- (\theta) はポリシーのパラメータである
- (\left(\hat{E}\right)_{t}) はタイムステップに対する経験的期待値である
- (r_{t}) は新しいポリシーと古いポリシーにおける確率の比である
- (\left(\hat{A}\right)_{t}) は時刻 (t) における推定アドバンテージである
- (\epsilon) はハイパラメータで、通常は 0.1 または 0.2 である
この式はKLペナルティを伴わないトラストリージョン更新を実装し、アルゴリズムを簡素化しながら性能を維持する。
実証的なパフォーマンス
テストでは、クリップされたPPO目的は連続制御タスクにおいて最高のパフォーマンスを示し、実装がはるかに簡単であるにもかかわらず、AtariベンチマークにおいてACERのパフォーマンスにほぼ匹敵した。
ベースラインリリース
OpenAI Baselines リポジトリには、データ転送にMPIを使用したスケーラブルで並列なPPOおよびTRPOの実装が含まれており、これらはPython 3およびTensorFlow向けに記述されている。さらに、Roboschoolエージェントズー用の事前学習済みポリシーも提供されている。
PPO2とACERの追加
アップデートにより、GPU対応のPPO2と呼ばれる実装が導入され、Atariにおいて元のPPOベースラインの約3倍の速度で動作する。さらに、Experience Replay (ACER) を用いたActor‑Criticの実装がリリースされ、ACERはリプレイバッファを使用して経験サンプルごとに複数の勾配更新を行い、Retraceアルゴリズムで訓練されたQ関数近似器を組み込んでいる。
コントロール可能なロボットのデモンストレーション
PPOで訓練されたインタラクティブなエージェントがRoboschoolで構築された。キーボードを使用して、ユーザーはロボットの新しい目標位置を設定できる。トレーニング中に見られた入力シーケンスとは異なるが、ポリシーは新しいコマンドにも一般化する。
コントリビューターの募集
OpenAIは、強化学習コードベースの構築と最適化に貢献してくれるコントリビューターを募集している。興味のある方は、提供されたリンクから応募し、応募時にbaselines PPOの投稿を読んだことを記述してほしい。
Sources
- OriginalProximal Policy Optimization