Skip to content

Proximal Policy Optimization(PPO)筆記

Last Updated on 2025-05-05 by Clay

介紹

Proximal Policy Optimization(PPO)是一種在強化學習(Reinforcement Learning, RL)領域非常知名且效果卓越的一種策略梯度(Policy Gradient)演算法,由 OpenAI 在 2017 年提出,旨在解決傳統策略梯度方法在訓練穩定性上的一些問題。

閱讀全文: Proximal Policy Optimization(PPO)筆記

策略梯度

而所謂的策略梯度價值基礎(Value-based,如 Q-Learning 和 DQN)不同,策略本身並不是一個價值函數,而通常由另外一個神經網路表示,通常記作 ,表示策略函數直接輸出在狀態 下,採取動作 的機率,其中 是策略網路的參數。

而策略梯度的目標就是找到一組最佳的參數 ,使得策略 的期望總回報(Expected Total Return)最大化。而這個期望總回報又被定義成一個目標函數(Objective Function),記作


在這裡:

  • 代表一個軌跡(trajectory),也就是代理人(agent)遵循策略 與環境互動產生的一系列狀態、動作和獎勵(
  • 是該軌跡的總折扣回報(Total Discounted Return), 是所謂的折扣因子,通常為分數,隨著時間距離做出決策越遠而對獎勵影響程度衰減
  • $latex \mathbb{E}{r\sim\pi{\theta}}[…] &s=1$ 表示對所有遵循策略 產生的軌跡取期望值

至於實際上是怎麼讓我們想要優化的模型學習、調整參數呢?那就是使用梯度上升(Gradient Ascent)。我們需要計算根據目標函數 相對於參數 的梯度 ,並沿著梯度的方向更新參數(跟梯度下降做的事情其實一樣):


其中 是我們可以設定的學習率(Learning Rate)。


PPO 核心概念

傳統的策略梯度方法(例如 REINFORCE 或 A2C 的基本形式)直接計算策略梯度並更新策略網路的參數,目標是最大化期望的累積獎勵;然而,這類方法對於學習率非常敏感,如果學習率太大,策略可能會劇烈變動,導致性能崩潰;反之若是太小,則會是訓練非常緩慢。

Trust Region Policy Optimization (TRPO) 試圖解決這個問題,它透過限制新舊策略之間的 KL 散度(KL Divergence)來確保每次更新都在一個信任區域內進行,避免策略劇烈變動,但是因其計算複雜,實作較為困難。
PPO 是想要實現 TRPO 的穩定性,但使用更簡單的方法。它不像是 TRPO 那樣直接強制 KL 散度約束,而是透過修改目標函數來間接限制策略更新的幅度。


PPO-Clip

這是最常見的 PPO 型態,其核心就在於特殊的剪裁目標函數。

它首先計算了新策略 和舊策略 對於某個動作 在狀態 下的機率比

接著,PPO-Clip 計算一個優勢函數(Advantage Function),這個值計算了在狀態 下採取動作 相較於平均動作的好壞程度。

如果 ,表示這個動作比平均要好;反之,則表示這個動作比平均較差。
PPO-Clip 的目標函數定義如下:

  • 是一個超參數,通常設定為 0.1 或 0.2
  • 的意思是將 的值限制在 區間內
  • 的操作是關鍵:
    • (動作是好的): 目標函數可以視為 ,這意味著 (新策略選擇的動作是正向的機率)增加得太多,也會被限制在 中,防止策略更新過度樂觀。
    • (動作是壞的): 目標函數可以視為 ,這意味著 (新策略選擇的動作是負面的機率)降低得太多,也會被限制在 中,防止策略更新過度悲觀,讓策略變化太大。

以結論來說,透過一個簡單的剪裁動作,約束了模型的策略更新幅度,提昇了訓練的穩定性。


PPO 的實現(Actor-Critic 架構)

Multiple-UAV Reinforcement Learning Algorithm Based on Improved PPO in Ray Framework

PPO 通常與 Actor-Critic 架構結合使用。簡單來說,Actor(策略網路)負責根據當前狀態 輸出動作的機率分佈 ,而 PPO 的目標函數就是用更新 Actor 網路的。

而 Critic(價值網路)則負責估計狀態的價值 ,而這個價值函數主要用來計算優勢函數 。而 Critic 的學習過程主要基於時序差分學習(Temporal Difference Learning, TD Learning)的思想:

  1. 做出預測:當 Agent 處於某個狀態 時,Critic 網路根據當前自己的參數,對此狀態做出一個預測
  2. 觀察實際發生的結果:Agent 根據 Actor 的策略,在 執行了 動作,環境立刻給出的獎勵 ,並且此時進入了下一個狀態
  3. 此時 Critic 擁有了更即時的資訊(立即獎勵 和下一個狀態 ),它需要把這真實的資訊和對未來的預測整合為一個目標值 —— TD 目標(TD Target):

其中 同樣是一個衰減、折扣參數。

  1. 計算預測誤差:Critic 比較自己最初的預測以及更可靠的 TD Target 之間的差距,計算出 TD 誤差(TD Error),記作

接著 Critic 網路就可以通過像是均方誤差這類損失函數進行更新了。

順帶一提,Actor 和 Critic 通常會共享一部分的網路層,以提高學習效率。


總結

總結來說,PPO 是一種透過巧妙設計目標函數(特別是 PPO-Clip 中的裁剪機制)來限制策略更新幅度,從而實現穩定高效訓練的強化學習演算法。它結合了 Actor-Critic 架構,在易用性、穩定性和性能之間取得了很好的平衡,使其成為目前應用最廣泛的強化學習算法之一。

相較於 TRPO 難以實作與運算開銷較大,PPO 在實作簡單性與穩定性之間提供了一個極佳的折衷,因此廣泛應用在 Atari 遊戲、連續控制(MuJoCo)甚至 RLHF 訓練大型語言模型中,成為目前最具代表性的策略梯度方法之一。


References


Read More

Leave a Reply取消回覆

Exit mobile version