昨天提到模型一次走太大步,會崩潰,那有沒有什麼方法可以避免呢?
有的! 我們今天要介紹非常有名的PPO,但在這之前先介紹一下TRPO~
他引入了兩個東西!!!
負責利用舊經驗來評估新策略的好壞,指引 AI 變強的方向
[文末補充] 優勢函數(Advantage Function)
為了確保新策略不要偏離舊策略太遠,TRPO 引入了 KL 散度(Kullback-Leibler Divergence) 作為約束條件:
負責控制每次策略改變的幅度不能太大,避免模型崩潰
計算太慢且極度耗能(二階最佳化的代價):
為了解出那個「KL 散度限制」,TRPO 必須計算極度複雜的神經網路「二階導數(費雪資訊矩陣)」。每走一步都要花費龐大的運算資源和時間。
程式碼極度難寫與除錯:
TRPO 的實作包含了共軛梯度法和線性搜尋等複雜步驟,只要程式碼稍微有一點 Bug,模型就會完全無法收斂,對工程師來說非常不友善。
所以才有了PPO!!!
例子
具體數字範例(假設 Critic 算出這個動作的 Advantage A=3.8):
情境 A:機率比值在安全範圍內
因為 1.1 落在 [0.8,1.2] 範圍內(ϵ=0.2),不會被裁剪,直接用 機率比值乘上A = 1.1x3.8=4.18 當作更新力道
情境 B:機率比值暴衝,觸發裁剪
因為 2.5 超過上限 1.2,會被裁剪成 1.2
更新力道變成 1.2×3.8=4.56,而不是 2.5×3.8=9.5
TRPO 透過 Surrogate Objective 告訴模型「往哪裡變強」,再利用 KL Divergence 的 Trust Region 限制模型「不要一次走太遠」
TRPO 的問題是二階最佳化讓 TRPO 計算成本高、實作也複雜
PPO 則把這個複雜的限制,簡化成直觀的 Clipping 機制:當新舊策略的機率差距太大,就直接限制更新幅度,避免模型因為「一步走太大」而崩潰
TRPO 告訴我們「不要走太遠」,PPO 則用 Clipping 讓模型真的能安全地走
明天我們直接動手做一個小型實驗,看看 PPO 最核心的 Clip 大小 ε 到底會如何影響模型訓練!
實際比較不同 Clip 大小下的訓練效果,觀察「限制太嚴格」或「放得太寬」會帶來什麼差異,進一步理解 PPO 為什麼能在穩定性與學習效率之間取得平衡。
最後也會把這幾天的內容串起來,整理 RL → RLHF → Agent RL 的演進脈絡。
補充 優勢函數(Advantage Function)
利用Generalized Advantage Estimation(GAE)方法計算 Advantage 。
完全依賴 Critic 的估計的話,如果 Critic 估不準,誤差會被放大(偏差大);且每次計算只看一步,波動小(方差小)。
用 GAE 的話,不只看 1 步,也不看到底,而是把「未來所有步數的 TD Error」都加權平均起來,用一個參數 λ(lambda)控制「要看多遠」。
公式:
GAE加入了 λ 這個參數 (介於 0 到 1 之間),它就像一個調音旋鈕,在「瞎猜 (Bias)」與「運氣 (Variance)」之間找到完美的平衡:
公式展開:
- 當 λ=0 時(只看眼前的 TD Error):
![]()
- 當 λ=1 時(蒙地卡羅估計): 這時公式會退化成一路加到遊戲結束的實際回報(類似 REINFORCE 的作法)
在訓練 PPO 等演算法時,我們通常不會走極端,而是將 λ 設定在 0.95 左右。
TD Error
TD Error(δ)公式:
代表「實際結果」與「原本預期」的落差。