ポリシーグラディエント(Policy Gradient)によるPyTorchの実装
'PyTorch implementation of Policy Gradient (ポリシーグラディエント)'
Deep Reinforcement Learning Classのユニット5、Hugging Faceと共に 🤗
⚠️ この記事の新しい更新版はこちらで利用可能です 👉 https://huggingface.co/deep-rl-course/unit1/introduction
この記事はDeep Reinforcement Learning Classの一部です。初心者からエキスパートまでの無料コースです。シラバスはこちらをご確認ください。
⚠️ この記事の新しい更新版はこちらで利用可能です 👉 https://huggingface.co/deep-rl-course/unit1/introduction
この記事はDeep Reinforcement Learning Classの一部です。初心者からエキスパートまでの無料コースです。シラバスはこちらをご確認ください。
前のユニットでは、Deep Q-Learningについて学びました。この価値ベースのDeep Reinforcement Learningアルゴリズムでは、各状態で可能なアクションごとの異なるQ値を近似するために、ディープニューラルネットワークを使用しました。
実際に、このコースの始まりから、私たちは価値ベースのメソッドだけを学びました。ここでは価値関数を学習する中間ステップとして最適な方策を見つけるために価値関数を推定します。
なぜなら、価値ベースでは、方策はアクション価値の推定のみに存在し、方策は状態に対して最も高い価値を持つアクションを選択する関数(例えば、貪欲な方策)に過ぎないからです。
しかし、ポリシーベースの方法では、価値関数を学習する中間ステップなしで直接方策を最適化したいのです。
ですので、今日は最初のポリシーベースの方法であるReinforceについて学びます。そして、PyTorchを使用してそれをゼロから実装します。その後、CartPole-v1、PixelCopter、およびPongを使用してその堅牢性をテストします。
さあ、始めましょう。
- ポリシーグラディエント法とは何か?
- ポリシーグラディエントの概要
- ポリシーグラディエント法の利点
- ポリシーグラディエント法の欠点
- Reinforce(Monte Carloポリシーグラディエント)
ポリシーグラディエント法とは何か?
ポリシーグラディエントはポリシーベースのメソッドのサブクラスであり、異なるテクニックを使用して価値関数を使用せずに直接方策を最適化するアルゴリズムのカテゴリです。ポリシーベースのメソッドとの違いは、ポリシーグラディエント法が最適方策の重みを勾配上昇法を使用して推定する一連のアルゴリズムであるということです。
ポリシーグラディエントの概要
ポリシーグラディエント法では、ポリシーの重みを推定することで行動の確率分布を制御し、将来のサンプリングにおいてリターンを最大化する良いアクションがより頻繁に選択されるように調整することが目標です。
簡単な例を見てみましょう:
-
ポリシーが環境と相互作用することによってエピソードを収集します。
-
次に、エピソードの報酬の合計(期待リターン)を見ます。この合計が正であれば、私たちはエピソード中に行われたアクションが良かったと考えます。したがって、各状態-アクションペアのP(a|s)(その状態でそのアクションを取る確率)を増やしたいと考えます。
ポリシーグラディエントアルゴリズム(簡略化されたもの)は次のようになります:
しかし、Deep Q-Learningは素晴らしいです!なぜポリシーグラディエント法を使用するのですか?
ポリシーグラディエント法の利点
ディープQ学習法に比べて、複数の利点があります。以下にいくつか挙げましょう:
-
統合のシンプルさ: 追加のデータ(行動価値)を保存することなく、ポリシーを直接推定できます。
-
ポリシーグラディエント法は確率的なポリシーを学習できるが、価値関数ではできない。
これには2つの結果があります:
a. 手動での探索と利用のトレードオフの実装は必要ありません。行動に対する確率分布を出力するため、エージェントは常に同じ軌跡を辿ることなく、状態空間を探索します。
b. 知覚エイリアシングの問題も解決されます。知覚エイリアシングとは、2つの状態が(または見えるようになるために)同じに見えるが、異なる行動が必要な場合のことです。
例を挙げましょう: ダストを吸い取り、ハムスターを殺さないことが目標の賢い掃除機があります。
私たちの掃除機は壁の位置しか知覚できません。
問題は、2つの赤いケースがエイリアスのある状態であることです。エージェントは上部と下部の壁をそれぞれ感知します。
確定的なポリシーの場合、赤い状態では右に移動するか左に移動します。どちらの場合も、エージェントは動けず、ダストを吸い取ることができません。
価値ベースの強化学習アルゴリズムの場合、準確な確定的なポリシー(”貪欲なε戦略”)を学習します。その結果、エージェントはダストを見つけるまでに多くの時間を費やすことがあります。
一方、最適な確率的なポリシーは、灰色の状態でランダムに左右に移動します。その結果、エージェントは動きが止まらず、目標状態に高い確率で到達します。
- ポリシーグラディエントは、高次元の行動空間や連続の行動空間でより効果的です。
確かに、ディープQ学習の問題は、各時間ステップで、現在の状態を考慮し、各可能な行動に対してスコア(最大の予想未来報酬)を割り当てる予測をします。
しかし、行動の無限の可能性がある場合はどうでしょうか?
例えば、自動運転車では、各状態で(ほぼ)無限の選択肢の行動(ハンドルを15°、17.2°、19.4°回す、クラクションを鳴らすなど)があります。各可能な行動に対してQ値を出力する必要があります!そして、連続的な出力の最大行動を選択することは、それ自体が最適化の問題です!
それに対して、ポリシーグラディエントでは、行動に対する確率分布を出力します。
ポリシーグラディエント法の欠点
ポリシーグラディエント法には、もちろんいくつかの欠点もあります:
- ポリシーグラディエント法はしばしば局所最大値に収束し、グローバル最適解に収束しづらい。
- ポリシーグラディエント法は、ステップバイステップで進むため、トレーニングに時間がかかる場合があります(非効率)。
- ポリシーグラディエント法は高い分散を持つ可能性があります(ソリューションのベースライン)。
👉 ポリシーグラディエント法の利点と欠点についてより詳しく知りたい場合は、このビデオをご覧ください。
ポリシーグラディエントとその利点と欠点の全体像を見たので、そのうちの1つである「Reinforce(モンテカルロポリシーグラディエント)」を学習して実装しましょう。
Reinforce(モンテカルロポリシーグラディエント)
Reinforce、またはモンテカルロポリシーグラディエントは、エピソード全体の推定リターンを使用してポリシーパラメータを更新する手法です。
θでパラメータを持つポリシーπがあります。このπは、ある状態に対して行動の確率分布を出力します。
ここで、πθ(at | st)は、状態stから行動atを選択するエージェントの確率を表します。これは、私たちのポリシーに基づいています。
しかし、私たちはポリシーが良いかどうかをどのように知ることができるのでしょうか?測定する方法が必要です。それを知るために、スコア/目的関数であるJ(θ)を定義します。
スコア関数Jは期待収益です:
ポリシーグラデーションは最適化問題と見なすことができることを覚えておいてください。したがって、スコア関数J(θ)を最大化するために最適なパラメータ(θ)を見つける必要があります。
そのためには、ポリシーグラデーション定理を使用します。数学的な詳細には触れませんが、興味がある場合はこのビデオをご覧ください。
Reinforceアルゴリズムは次のように機能します:ループ:
- ポリシーπθを使用してエピソードτを収集します
- エピソードを使用して勾配g ^ = ∇θJ(θ)を推定します
- ポリシーの重みを更新します:θ ← θ + αg ^
私たちができる解釈は次のとおりです:
- ∇θlogπθ(at|st)は、状態stで行動atを選択する確率の対数の確率の最も急速な増加方向です。=>これは、状態stで行動atの対数確率を増加/減少させたい場合に、ポリシーの重みをどのように変更する必要があるかを示しています。
- R(τ)はスコアリング関数です:
- リターンが高い場合、(状態、行動)の組み合わせの確率を上げます。
- それ以外の場合、リターンが低い場合、(状態、行動)の組み合わせの確率を下げます。
Reinforceの理論を学んだので、PyTorchを使用してReinforceエージェントをコーディングできるようになりました。そして、CartPole-v1、PixelCopter、およびPongを使用してその堅牢性をテストします。
ここからチュートリアルを始めましょう 👉 https://colab.research.google.com/github/huggingface/deep-rl-class/blob/main/unit5/unit5.ipynb
クラスメートとの結果を比較するためのリーダーボード 🏆 👉 https://huggingface.co/spaces/chrisjay/Deep-Reinforcement-Learning-Leaderboard
—
この章を終えておめでとうございます!情報がたくさんありました。そして、チュートリアルを終了しておめでとうございます。PyTorchを使用してスクラッチから最初のディープ強化学習エージェントをコーディングし、Hubで共有しました 🥳。
これらの要素すべてについてまだ混乱している場合は、普通です。これは私と強化学習を学んだすべての人に当てはまりました。
次に進む前に、材料を本当に理解するために時間をかけてください。
他の環境でエージェントをトレーニングすることを躊躇しないでください。学ぶ最良の方法は、自分自身で試してみることです!
さらなる読み物はシラバスに掲載されていますので、深く掘り下げたい場合はご覧ください 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit5/README.md
次のユニットでは、ポリシーベースとバリューベースの手法の組み合わせであるアクター・クリティック法について学びます。
そして、学びたい友達と共有するのを忘れないでください 🤗!
最後に、フィードバックをいただいてコースを改善・更新していくことを目指しています。ご意見があれば、このフォームに記入してください 👉 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