AI時代系列(3) 機器學習三部曲: 📘 第三部:《強化學習 —— AI 的決策與進化》
64/100 第七週:📌 高階強化學習演算法
64.PPO 演算法細節解析 🔍 損失函數、剪切範圍與訓練技巧!
PPO近端策略優化演算法 在 2017 年由 OpenAI 提出,透過簡單裁剪 (clip) 機制,實現穩定更新,且容易實作。
________________________________________
🎯 本單元目標
• 深入理解 PPO 的損失函數設計與數學原理
• 掌握剪切範圍的影響與調整策略
• 探索實作中常見的訓練技巧、穩定訓練與最佳化方式
________________________________________
🔍 一、PPO 損失函數詳細解析
✅ 基礎式子:
PPO 使用的是 Clipped Surrogate Objective,如下:
L_CLIP(θ) = E_t [ min( r_t(θ) * Â_t , clip( r_t(θ), 1 - ε, 1 + ε ) * Â_t ) ]
其中:
r_t(θ) = π_θ(a_t | s_t) / π_θ_old(a_t | s_t) (新舊策略的比值)
Â_t 是 advantage(優勢函數估計值)
ε 是超參數(一般設為 0.1 ~ 0.3)
👉
想像你在教一隻小狗表演跳圈圈:
1️⃣ r_t(θ) 是什麼?
這代表「新的訓練方法」和「舊的訓練方法」相比,進步了多少。
• 假設:
o 舊方法:用零食 A 獎勵,小狗 8 成會跳圈圈;
o 新方法:換了零食 B 獎勵,小狗 9 成會跳圈圈;
• 那麼 r_t(θ) 大概就是 9/8 = 1.125(新舊比值)。
2️⃣ Â_t 是什麼?
這代表「這次跳圈圈的價值有多高」,也就是 Advantage。
• 比如說:
o 如果小狗成功跳一個大圈,觀眾很開心,價值高 → Â_t 比較大;
o 如果只是小圈,觀眾反應普通,Â_t 比較小。
3️⃣ 為什麼要 clip (限制範圍)?
PPO 怕你太興奮,一下子用新方法做太大的調整。
• 如果新方法一出現,r_t(θ) 變成 2、3、甚至 10 倍,
• 那你可能會太早「全押在新方法」上,萬一只是運氣好,反而學壞。
所以:
👉 PPO 幫你設定一個保險繩:「不管新方法再好,最多就讓比值在 1 ± ε 之間(例如 0.9 到 1.1)」。
白話總結:
• PPO 就像在教狗表演,雖然會根據新表現來調整訓練方法,但又怕改太快失控,所以每次訓練都「小幅微調」。
• min() 這個動作,就是自我保護:如果新方法好,慢慢調整;
如果新方法太激進,先把效果「剪平」後再調整,穩穩進步。
________________________________________
⚙ 二、完整的 PPO 總損失函數(包含三大項)
PPO 實際訓練時會同時考慮:
1️⃣ Clipped Policy Loss(策略損失)
就像你每天練習投籃,教練會幫你微調出手動作,
如果今天出手角度比昨天進步一點點,教練會說:「很好,繼續照這樣調整!」
但如果你一下子改太多,出手完全不一樣,教練就會說:「慢一點,別突然大改!」
防止策略更新過快
________________________________________
2️⃣ Value Function Loss(值函數損失)
像你做投資:
你要學會判斷「這家公司的未來價值是多少?」
每次錯估,虧錢了,就當作一次學習,讓估值模型變得更準。
________________________________________
3️⃣ Entropy Bonus(熵獎勵)
像你在城市裡找好餐廳:
如果你只去吃過一次就覺得這家最好,那可能錯過更好的。
保持適度好奇心,偶爾試試新餐廳,避免錯失機會。
________________________________________
🔧 PPO 總損失函數如下:
L_PPO = L_clip - c1 * L_value + c2 * L_entropy
PPO 的訓練就像一位嚴謹的教練,核心是穩定穩定再穩定。
透過 L_clip 來控制每次策略更新的幅度,像駕駛一輛車一樣穩穩前進,避免一次大轉彎而失控。
同時輔以 L_value,讓模型學習準確地預估每個動作未來能帶來多少回報,像是在不斷訓練自己的投資眼光,幫助判斷何時該做什麼決策。
而為了避免太快鎖死在某些固定行為上,還會加入一點 L_entropy,讓模型保持探索的好奇心,像偶爾去旅行冒險,尋找可能的更好方案。
整個訓練中,策略更新穩定是最核心(主要考慮 L_clip),價值預估次之(c1=0.5),探索獎勵則適度引導(c2=0.01)。最終讓模型在穩健更新、準確預估與持續探索之間,取得最佳的學習平衡。
一句話總結 PPO:
PPO 就像一位教練:「每天穩穩訓練,估值越來越準,還會鼓勵你偶爾冒險,但不准你一夜暴衝失控。」
________________________________________
📏 三、剪切範圍(clip range)怎麼設定?
PPO 中的 clip range (ε) 是控制每次策略更新幅度的重要超參數。
一般而言,預設值 0.2 是最常用、穩定且效果良好的選擇,適用於大多數標準訓練環境,如 OpenAI Gym 等經典任務。如果任務環境特別穩定、結構簡單,允許更快學習時,可以考慮稍微提高到 0.3,加快收斂速度,但穩定性會稍微下降。
反之,當遇到高風險、極度複雜或容易崩潰的環境時,建議保守設定在 0.1,讓每次更新更小幅度、更穩定。
通常 ε 超過 0.3 之後很少使用,容易導致策略震盪與不穩定,除非你對環境特性非常了解並能控制其風險。整體來說,clip range 越小越穩,越大學得越快但越冒險,要根據任務特性做適當取捨。
________________________________________
🛠 四、訓練技巧總整理(實務最重要區塊)
在實際訓練 PPO 時,為了提升穩定性與收斂效果,常採用一系列實務技巧。
Advantage 估計通常使用 GAE(Generalized Advantage Estimation),設定 λ = 0.95 與 γ = 0.99,可有效降低估計方差。
優化器方面建議使用 Adam,學習率設定在 2.5e-4 到 3e-4 之間通常有不錯的效果。資料收集方面,建議每累積 2048 筆樣本後進行一次更新,每次更新進行 4 到 10 個 epoch 的多次學習,並將資料切分成 32 到 64 個 mini-batch 做訓練。
保持探索,熵獎勵初期可以設為 0.01,隨著訓練穩定後可逐步降低。止損機制方面,建議每次更新的最大 KL divergence 控制在 0.01 到 0.03 之間,避免更新幅度過大導致崩潰失穩。此外,搭配 gradient clipping 正則化可以有效防止梯度爆炸,提升整體訓練穩定性。這些設置在多數環境下被證明能讓 PPO 穩定且高效地學習。
________________________________________
🧪 五、常見失敗與解法
在 PPO 訓練過程中,常見幾個典型問題與對應解法。當策略出現大幅震盪時,通常是因為剪切值(clip range)設定過大或學習率步長過高,此時可考慮適當降低 clip 值或引入 KL 懲罰項來穩定更新。
如果值函數預估不準,可能是訓練次數不足或目標值本身波動過大,可以透過增加 value loss 的更新次數或對 value loss 也進行 clip 處理來改善。若模型在早期就失去探索多樣性,往往是因為熵獎勵設得太小或未加入,此時可提高 entropy bonus 以鼓勵探索更多行為模式。
最後,當整個訓練無法收斂時,通常是因為收集的資料量過少或每次更新的 epoch 次數不足,可以增加 rollout 資料量或提升每次訓練的更新輪數來促進收斂效果。透過針對性調整,能有效強化 PPO 訓練的穩定性與學習效率。
________________________________________
✅ 單元總結
元素 重點摘要
Clipped Loss 限制策略變動幅度,穩定更新
Value Loss 預測未來獎勵的重要組件,避免策略盲目探索
Entropy Bonus 提高策略的多樣性與探索性
clip ε 值 控制策略更新幅度,建議設為 0.2
GAE 減少 Advantage 的估計方差,提高樣本效率
實作技巧 mini-batch SGD、entropy、early stopping 都是穩定訓練的關鍵
________________________________________
🎓 延伸任務
• ✅ 修改剪切範圍 ε = 0.1, 0.2, 0.3 分別訓練 Pendulum-v1,觀察學習曲線
• ✅ 在 PPO 損失函數中關掉熵項,比較策略表現差異
• ✅ 加入 early stop 條件(如 max_KL > 0.02),觀察是否避免策略崩潰
🏠 PPO 的生活應用案例
1️⃣ 飲食控制 – 健康減重
如果突然大幅減少熱量(等於一次更新太大),容易造成身體負擔或復胖。PPO 的剪裁概念就像設定每天僅小幅調整飲食比例,既能控制進度,又能長期保持穩定效果。
2️⃣ 交通駕駛 – 平穩轉彎
開車轉彎時如果打方向盤過猛,就可能失控。PPO 的剪裁範圍 ε 就像「轉彎角度限制」,讓駕駛只在合理幅度內調整方向,確保行車安全又能逐步抵達目的地。
3️⃣ 職場管理 – 員工績效提升
公司要提升團隊表現,如果一次推動過多新規制度,員工可能反感或效率下降。PPO 的精神就是「逐步微調」:設小目標、給適度獎勵(entropy bonus 保持動力),在不引起反彈的情況下穩定提升績效。