近接方策最適化(PPO)は、インテリジェントエージェントを訓練するための強化学習(RL)アルゴリズムです。具体的には、方策勾配法の一種であり、方策ネットワークが非常に大規模な場合に深層強化学習でよく用いられます。
PPOの前身であるTrust Region Policy Optimization (TRPO)は2015年に発表されました。これは、古いポリシーと新しいポリシー間のKLダイバージェンスを制限するために信頼領域法を使用することで、別のアルゴリズムであるDeep Q-Network (DQN)の不安定性の問題を解決しました。しかし、TRPOは信頼領域を強制するためにヘッセ行列(2階微分行列)を使用しますが、ヘッセ行列は大規模な問題には非効率的です。[ 1 ]
PPOは2017年に発表されました。これは基本的に、ヘッセ行列を計算する必要のないTRPOの近似です。KLダイバージェンス制約は、ポリシー勾配を単純にクリッピングすることで近似されました。[ 2 ]
2018年以来、PPOはOpenAIのデフォルトの強化学習アルゴリズムでした。[ 3 ] PPOは、ロボットアームの制御、 Dota 2のプロプレイヤーを打ち負かす(OpenAI Five )、Atariゲームのプレイなど、多くの分野に適用されています。[ 4 ]
TRPOはPPOの前身であり、オンポリシーアルゴリズムです。離散的な行動空間と連続的な行動空間のどちらの環境にも使用できます。
擬似コードは以下のとおりです。[ 5 ]
擬似コードは以下のとおりです。[ 6 ]
他のすべての方策勾配法と同様に、PPOは、勾配上昇法によって微分可能な方策関数によって行動が決定される強化学習エージェントを訓練するために使用されます。
直感的に言えば、方策勾配法は小さな方策更新ステップを取るため、エージェントは期待値としてより高い報酬に到達できる。
方策勾配法は不安定になる可能性がある。ステップサイズが大きすぎると、方策が最適ではない方向に進んでしまい、回復の可能性がほとんどなくなる。一方、ステップサイズが小さすぎると、全体的な効率が低下する。
不安定性を解決するために、PPOはエージェントのポリシー更新が大きくなりすぎないように制限するクリップ関数を実装し、勾配上昇プロセスに悪影響を与えることなくより大きなステップサイズを使用できるようにします。[ 7 ]
PPOトレーニングプロセスを開始するには、エージェントを現在の入力に基づいてアクションを実行する環境に設定します。トレーニングの初期段階では、エージェントは自由にソリューションを探索し、結果を追跡できます。その後、一定量の遷移サンプルとポリシーの更新を経て、エージェントは確率分布からランダムにサンプリングすることで、実行するアクションを選択します。ポリシーネットワークによって生成されます。[ 8 ]最も有益である可能性が高い行動は、ランダムサンプルから選択される確率が最も高くなります。エージェントが行動することで異なるシナリオ(新しい状態)に到達すると、正の報酬または負の報酬が与えられます。エージェントの目的は、エピソードと呼ばれる一連の状態にわたる累積報酬シグナルを最大化することです。
利点関数(以下、)は、特定のエージェントの行動が、与えられた状態における他の可能な行動よりも優れているか劣っているかという問いに答えようとするため、PPO の中心となるものです。定義上、優位性関数は、選択された行動の相対的価値の推定値です。この関数の出力が正であれば、問題の行動は平均リターンよりも優れていることを意味し、その特定の行動を選択する可能性が高まります。負の優位性出力の場合はその逆です。[ 1 ]
利点関数は次のように定義できます。、 どこは割引後の報酬の合計(エピソード完了に対する加重報酬の合計)であり、はベースライン推定値です。[ 9 ] [ 1 ]アドバンテージ関数はエピソードの完了後に計算されるため、プログラムはエピソードの結果を記録します。したがって、アドバンテージの計算は本質的に教師なし学習問題です。ベースライン推定値は、現在の状態から始まるエピソードの期待割引合計を出力する価値関数から得られます。PPOアルゴリズムでは、ベースライン推定値はポリシー関数自体と同様にニューラルネットワークを使用するため、ノイズ(ある程度の分散)が含まれます。そして計算すると、優位関数は、実際の割引収益からベースライン推定値を差し引くことによって計算されます。[ 10 ]実際の行動のリターンが経験から期待されるリターンよりも優れている場合、実際の収益はさらに悪い。
PPOでは、比率関数()行動を選択する確率を計算します州内現在の政策ネットワークを前提として、それを旧政策下での以前の確率で割った値。言い換えれば、次のようになる。
したがって、この比率関数は、旧政策と現政策の乖離を容易に推定できる。[ 11 ] [ 7 ]
PPOの目的関数は期待値演算子(と表記される)を取る。これは、この関数が軌跡の量に対して計算されることを意味します。期待値演算子は、次の2つの項のうち最小値をとります。
PPO の背後にある基本的な直感は TRPO と同じで、保守主義です。クリッピングにより、新しいポリシーの保守的な優位性推定値が得られます。その理由は、エージェントが高い優位性推定値のために大きな変更を行うと、ポリシーの更新が大きく不安定になり、回復の可能性がほとんどないまま最適ポリシーから逸脱する可能性があるからです。[ 13 ]クリッピング関数には 2 つの一般的な適用例があります。新しいポリシーの下での行動が優位性関数に基づいて良い選択である場合、クリッピング関数は、重み付けされた良い行動に対して新しいポリシーに与えられるクレジットを制限します。一方、古いポリシーの下での行動が悪いと判断された場合、クリッピング関数は、エージェントが新しいポリシーの重み付けされた悪い行動をどれだけ受け入れることができるかを制限します。[ 14 ]したがって、クリッピングメカニズムは、両方向にクリッピングすることで、定義された範囲を超えて移動するインセンティブを抑制するように設計されています。この方法の利点は、TRPOの厳密なKLダイバージェンス制約とは異なり、勾配降下法で直接最適化できるため、実装がより高速かつ直感的になることです。
クリップされた代理目的関数を計算した後、エージェントは、クリップされていないものとクリップされたものの 2 つの確率比を持ちます。次に、2 つの目的関数の最小値を取ることで、最終的な目的関数は、エージェントが可能であることを認識しているものの下限 (悲観的な下限) になります。 [ 14 ]言い換えれば、最小値法は、エージェントが可能な限り安全な更新を行うことを保証します。
PPOはTRPOの動作を近似するもので、計算量は大幅に少なくて済みます。PPOは一次最適化(クリップ関数)を使用してポリシー更新を制約しますが、TRPOはKLダイバージェンス制約(二次最適化)を使用します。TRPOと比較すると、PPO法は実装が比較的容易で、必要な計算リソースと時間も少なくて済みます。したがって、大規模な問題ではPPOを使用する方が安価で効率的です。[ 15 ]
他の強化学習アルゴリズムではハイパーパラメータの調整が必要ですが、PPOではそれほど必要ありません(ほとんどの場合、イプシロンに0.2を使用できます)。[ 16 ]また、PPOは高度な最適化技術を必要としません。標準的な深層学習フレームワークで簡単に実践でき、幅広いタスクに一般化できます。
サンプル効率は、アルゴリズムが優れたポリシーを学習するために、より多くのデータを必要とするか、より少ないデータを必要とするかを示します。PPOは、代理目的関数を使用することでサンプル効率を達成しました。代理目的関数により、PPOは新しいポリシーが古いポリシーから大きく離れるのを防ぐことができます。クリップ関数はポリシーの更新を正則化し、トレーニングデータを再利用します。サンプル効率は、データ収集と計算にコストがかかる複雑で高次元のタスクに特に役立ちます。[ 17 ]