Open AI Spinning Up で深層強化学習のお勉強 -Algorithms-
Algorithms
今回のページとソースコードです。ざっくりとまとめていきます。
spinningup.openai.com
github.com
以下のアルゴリズムのコードが含まれているようです。 これらはすべて、非再帰的MLP(Multilayer perceptron: 多層パーセプトロン)actor-criticsで構成されており、Gym Mujocoのような、完全知覚で、画像ベースではない環境に適しています。 これらは核となるdeep RLアルゴリズムです。特にPPOとSACは、最近のdeep RL分野の歴史からの有用な進歩を反映しています。これらは、方策学習アルゴリズム間の信頼性とサンプル効率に関するSOTA(state of the art: 最先端技術)です。また、deep RLでアルゴリズムを設計および使用する際に生じるトレードオフの一部についても学べます。 Vanilla Policy Gradientは、deep RLの出現よりも大きく先行しています。そのため、deep RL分野で最も基本的なアルゴリズムです。 VPGのコア要素は、80年代後半から90年代初頭にさかのぼります。そこから、最終的にTRPOやPPOなどの強力なアルゴリズムを導く研究となっていきます。
これらのアルゴリズムの重要な特徴は、すべてOn-Policy型ということです。つまり、古いデータを使用しないため、サンプルの効率が低下します。しかし、これには十分な理由があります。これらのアルゴリズムは、考慮している目的(方策の性能)を直接最適化し、更新を計算するために方策の上のデータが必要であることが数学的にわかります。したがって、このアルゴリズムファミリは、安定性を優先してサンプルの効率を犠牲にしますが、サンプルの効率の不足を補うために機能する技術(VPG→TRPO→PPO)の進歩を見ることができます。 DDPGはVPGと同様に基盤となるアルゴリズムですが、DDPGにつながった決定的勾配降下の理論は2014年まで公開されていませんでした。DDPGはQ学習アルゴリズムと密接に関連しており、互いに改善しあうQ関数と方策を同時に学習します。
DDPGやQ学習のようなアルゴリズムは、Off-Policyなので、非常に効率よく古いデータを再利用することができます。これは、最適化用のベルマン方程式のおかげです。Q関数は、(環境内で高報酬のエリアでの十分な経験がある限り)どんな環境の相互作用データを使ってもベルマン方程式を満たす学習ができます。
しかし、ベルマン方程式を満たす学習をしても、優れた方策性能が得られるという保証はありません。経験的には、あるモデルが優れた性能を得ることができた場合、サンプル効率はとてもよいです。しかし、性能の保証はないため、このようなアルゴリズムは潜在的に脆弱で不安定になります。TD3とSACはDDPGの子孫であり、これらの問題を軽減するためにさまざまな工夫をしています。 Spinning Upの実装はすべて標準テンプレートに準拠しています。アルゴリズムのコアロジックを含むアルゴリズムファイルと、アルゴリズムの実行に必要なさまざまなユーティリティを含むコアファイルの2つのファイルに分割されています。 アルゴリズムファイルは常に、経験バッファオブジェクトのクラス定義で始まります。これは、エージェントと環境の相互作用からの情報を格納するために使用されます。 次に、アルゴリズムを実行し、次のタスクをこの順序で実行する1つの関数があります。 また、コマンドラインからGym環境でアルゴリズムを直接実行するためのサポートがあります。 コアファイルは、アルゴリズムファイルほどテンプレートに忠実ではありませんが、おおよその構造を持っています。 アルゴリズム全部coreファイルとalgorithmファイルに分かれていてみやすい。勉強が捗る。VPGめっちゃ古いですね。
OpenAI Spinning Upの記事一覧
coffee-g9.hatenablog.comWhat's Included
Why These Algorithm?
The On-Policy Algorithms
The Off-Policy Algorithms
Code Format
The Algorithm File
actor_critic
関数を引数としてアルゴリズム関数に渡すことで、actor-criticの計算グラフを構築する
The Core File
actor_critic
メソッドに関連する計算グラフの節を構築するための関数まとめ