アドバンテージアクタークリティック(A2C)
A2C
ハギングフェイスとのDeep Reinforcement Learningクラスのユニット7
⚠️ この記事の新しい更新版はこちらでご覧いただけます 👉 https://huggingface.co/deep-rl-course/unit1/introduction
この記事はDeep Reinforcement Learningクラスの一部です。初心者からエキスパートまでの無料コースです。シラバスはこちらをご確認ください。
⚠️ この記事の新しい更新版はこちらでご覧いただけます 👉 https://huggingface.co/deep-rl-course/unit1/introduction
この記事はDeep Reinforcement Learningクラスの一部です。初心者からエキスパートまでの無料コースです。シラバスはこちらをご確認ください。
ユニット5では、最初のPolicy-BasedアルゴリズムであるReinforceについて学びました。Policy-Basedメソッドでは、価値関数を使用せずにポリシーを直接最適化することを目指します。具体的には、ReinforceはPolicy-Gradientメソッドと呼ばれるPolicy-Basedメソッドのサブクラスの一部であり、Gradient Ascentを使用して最適なポリシーの重みを推定することでポリシーを直接最適化します。
Reinforceはうまく機能することを見ました。ただし、リターンを推定するためにモンテカルロサンプリングを使用するため、ポリシーグラデーションの推定にはかなりの分散があります。
ポリシーグラデーションの推定はリターンの最も急速な増加の方向です。つまり、良いリターンにつながるアクションのポリシーウェイトを更新する方法です。モンテカルロの分散は、このユニットでさらに詳しく学びますが、分散を緩和するために多くのサンプルが必要なため、トレーニングが遅くなります。
今日はActor-Criticメソッドを学びます。これはバリューベースとポリシーベースのメソッドを組み合わせたハイブリッドアーキテクチャで、トレーニングを安定化させるためのものです:
- エージェントの行動方法を制御するアクター(ポリシーベースのメソッド)
- 取られたアクションの良さを測る評価者(バリューベースのメソッド)
私たちはこれらのハイブリッドメソッドの1つであるAdvantage Actor Critic(A2C)を学び、PyBulletを使用してロボット環境でエージェントをトレーニングします。以下の2つのエージェントをトレーニングします:
- 二足歩行ロボット 🚶
- クモ 🕷️
ワクワクしますか?では、始めましょう!
- Reinforceの分散の問題
- Advantage Actor Critic(A2C)
- Actor-Criticメソッドによる分散の低減
- Actor-Criticプロセス
- Advantage Actor Critic
- PyBulletを使用したAdvantage Actor Critic(A2C)によるロボットシミュレーション
Reinforceにおける分散の問題
Reinforceでは、トラジェクトリごとにアクションの確率をリターンの高さに比例して増やしたいと思っています。
- リターンが高い場合、(状態、アクション)の組み合わせの確率を上げることになります。
- リターンが低い場合、(状態、アクション)の組み合わせの確率を下げることになります。
このリターン R ( τ ) R(\tau) R ( τ ) はモンテカルロサンプリングを使用して計算されます。実際には、トラジェクトリを収集し、割引リターンを計算し、そのスコアを使用してそのトラジェクトリで実行されたすべてのアクションの確率を増減させます。リターンが良い場合、すべてのアクションはその確率が高くなることで「強化」されます。
R ( τ ) = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . .
この方法の利点は、偏りがないことです。返り値を推定する必要がないため、実際の返り値のみを使用します。
ただし、問題は、分散が高いことです。環境の確率的性質(エピソード中のランダムイベント)やポリシーの確率的性質により、軌跡によって異なる返り値になる可能性があります。その結果、同じ開始状態でも返り値は大きく異なる場合があります。そのため、同じ状態での返り値はエピソードごとに大きく異なる場合があります。
この問題に対する解決策は、多数の軌跡を使用して分散を軽減し、集約された返り値の「真の」推定値を得ることです。
ただし、バッチサイズを大幅に増やすと、サンプルの効率が低下します。したがって、分散を軽減するための追加のメカニズムを見つける必要があります。
Deep Reinforcement Learningにおける分散とバイアスのトレードオフについてさらに詳しく知りたい場合は、以下の2つの記事をご覧ください:
- (Deep) Reinforcement Learningにおけるバイアス/分散トレードオフの理解
- 強化学習におけるバイアス-分散トレードオフ
Advantage Actor Critic(A2C)
Actor-Critic法による分散の軽減
Reinforceアルゴリズムの分散を軽減し、エージェントのトレーニングをより速く、より良く行うための解決策は、ポリシーベースとバリューベースの手法の組み合わせを使用することです:Actor-Critic法。
Actor-Criticを理解するために、ビデオゲームをプレイすると想像してください。あなたはフィードバックを提供してくれる友達と一緒にプレイします。あなたがアクターであり、友達がクリティックです。
最初はどのようにプレイするかわからないので、いくつかのアクションをランダムに試します。クリティックはあなたのアクションを観察し、フィードバックを提供します。
このフィードバックから学習し、ポリシーを更新してゲームのプレイ能力を向上させます。
一方、友達(クリティック)も次回に向けてフィードバック方法を改善します。
これがActor-Criticのアイデアです。2つの関数近似を学習します:
-
エージェントの行動を制御するポリシー:πθ(s,a)
-
アクションの良さを測定するためにポリシーアップデートを補助するバリューファンクション:^qw(s,a)
Actor-Criticのプロセス
Actor Criticの全体像を見たので、トレーニング中にActorとCriticがどのように改善されるかを理解するために、より詳しく見てみましょう。
Actor-Criticの手法では、2つの関数近似(2つのニューラルネットワーク)があります:
- Actor – パラメーター化されたポリシー関数:πθ(s,a)
- Critic – パラメーター化されたバリューファンクション:^qw(s,a)
ActorとCriticが最適化されるトレーニングプロセスを見てみましょう:
-
各タイムステップtで、現在の状態Stを環境から取得し、ActorとCriticに入力として渡します。
-
ポリシーは状態を受け取り、アクションを出力します。
- クリティックはそのアクションも入力として受け取り、StとAtを使用してその状態でのそのアクションの価値であるQ値を計算します。
- 環境で実行される行動 A t A_t A t は、新しい状態 S t + 1 S_{t+1} S t + 1 と報酬 R t + 1 R_{t+1} R t + 1 を出力します。
- アクターは、Q値を使用してポリシーパラメータを更新します。
-
更新されたパラメータにより、アクターは新しい状態 S t + 1 S_{t+1} S t + 1 を考慮して次の行動 A t + 1 A_{t+1} A t + 1 を生成します。
-
その後、評価者は値のパラメータを更新します。
Advantage Actor Critic(A2C)
さらに、アドバンテージ関数をアクション価値関数ではなく、評価者として使用することで学習を安定させることができます。
このアイデアは、アドバンテージ関数が「その状態における平均値と比較してその行動を取ることがどれだけ良いか」を計算するというものです。つまり、状態アクションペアから状態の平均値を引いています:
言い換えると、この関数は「その状態でこの行動を取った場合に得られる追加の報酬」を計算します。
追加の報酬は、その状態の期待値を超えるものです。
- A(s,a) > 0 の場合:勾配は「その方向に押されます」。
- A(s,a) < 0(行動がその状態の平均値よりも悪い場合):勾配は「逆方向に押されます」。
このアドバンテージ関数を実装する際の問題は、2つの値関数、Q ( s , a ) Q(s,a) Q ( s , a ) と V ( s ) V(s) V ( s ) が必要とされることです。幸い、TD誤差をアドバンテージ関数の良い推定量として使用することができます。
Advantage Actor Critic(A2C)を使用したPyBulletによるロボティクスシミュレーション 🤖
Advantage Actor Critic(A2C)の理論を学んだので、Stable-Baselines3を使用してロボティクス環境でA2Cエージェントを訓練する準備ができました。
ここからチュートリアルを始めましょう 👉 https://colab.research.google.com/github/huggingface/deep-rl-class/blob/main/unit7/unit7.ipynb
クラスメートとの結果を比較するためのリーダーボード 🏆 👉 https://huggingface.co/spaces/chrisjay/Deep-Reinforcement-Learning-Leaderboard
結論
この章を終えておめでとうございます!たくさんの情報がありました。また、チュートリアルもおめでとうございます 🥳。
これらの要素についてまだ混乱している場合は、それは正常です。これは私やRLを学んだ他の人々にも同じでした。
続ける前に、材料を理解するために時間をかけてください。この記事やシラバスで提供されている追加の参考資料も参照してみてください 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit7/README.md
他の環境でエージェントを訓練することを躊躇しないでください。学ぶ最良の方法は、自分自身で試してみることです!
次のユニットでは、Proximal Policy Optimizationを使用してActor-Criticメソッドを改善する方法を学びます。
そして、学びたい友達と共有するのを忘れないでください 🤗!
最後に、フィードバックを通じて、私たちはコースを改善し、継続的に更新したいと考えています。もしご意見がありましたら、このフォームに記入してください 👉 https://forms.gle/3HgA7bEHwAmmLfwh9
学び続けて、素晴らしくしてください 🤗
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles