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 架構)

PPO 通常與 Actor-Critic 架構結合使用。簡單來說,Actor(策略網路)負責根據當前狀態 輸出動作的機率分佈
,而 PPO 的目標函數就是用更新 Actor 網路的。
而 Critic(價值網路)則負責估計狀態的價值 ,而這個價值函數主要用來計算優勢函數
。而 Critic 的學習過程主要基於時序差分學習(Temporal Difference Learning, TD Learning)的思想:
- 做出預測:當 Agent 處於某個狀態
時,Critic 網路根據當前自己的參數,對此狀態做出一個預測
- 觀察實際發生的結果:Agent 根據 Actor 的策略,在
執行了
動作,環境立刻給出的獎勵
,並且此時進入了下一個狀態
- 此時 Critic 擁有了更即時的資訊(立即獎勵
和下一個狀態
),它需要把這真實的資訊和對未來的預測整合為一個目標值 —— TD 目標(TD Target):
其中 同樣是一個衰減、折扣參數。
- 計算預測誤差:Critic 比較自己最初的預測以及更可靠的 TD Target
之間的差距,計算出 TD 誤差(TD Error),記作
:
接著 Critic 網路就可以通過像是均方誤差這類損失函數進行更新了。
順帶一提,Actor 和 Critic 通常會共享一部分的網路層,以提高學習效率。
總結
總結來說,PPO 是一種透過巧妙設計目標函數(特別是 PPO-Clip 中的裁剪機制)來限制策略更新幅度,從而實現穩定高效訓練的強化學習演算法。它結合了 Actor-Critic 架構,在易用性、穩定性和性能之間取得了很好的平衡,使其成為目前應用最廣泛的強化學習算法之一。
相較於 TRPO 難以實作與運算開銷較大,PPO 在實作簡單性與穩定性之間提供了一個極佳的折衷,因此廣泛應用在 Atari 遊戲、連續控制(MuJoCo)甚至 RLHF 訓練大型語言模型中,成為目前最具代表性的策略梯度方法之一。
References
- Multiple-UAV Reinforcement Learning Algorithm Based on Improved PPO in Ray Framework
- [1707.06347] Proximal Policy Optimization Algorithms