AI時代系列(3) 機器學習三部曲: 📘 第三部:《強化學習 —— AI 的決策與進化》
63/100 第七週:📌 高階強化學習演算法
63.Proximal Policy Optimization(PPO)⚙️ 最受歡迎的強化學習演算法!
PPO(Proximal Policy Optimization,近端策略優化)是什麼?
PPO 是一種改良型的 策略梯度強化學習演算法,目的是在「學習穩定性」與「實作簡單性」之間取得平衡。
________________________________________
🎯 學習目標
• 理解 PPO 的核心設計理念與動機
• 掌握 PPO 的「剪裁目標函數(Clipped Objective)」
• 理解 PPO 如何實現穩定、簡單且高效的策略更新
• 知道 PPO 為何成為深度強化學習界的主流方法
________________________________________
🧩 背景:為什麼會有 PPO?
TRPO 雖然穩定,但:
• 🧮 計算代價高(需要 Hessian 近似與共軛梯度法)
• 🧠 實作複雜,不易部署到工業應用中
👉 OpenAI 在 2017 年提出了 PPO:保持 TRPO 的穩定性,同時簡化實作,效果一樣好,速度更快!
________________________________________
🧠 PPO 核心概念:限制策略變化,但用簡單方法達成
PPO 的關鍵思想是:透過 clip 函數限制新舊策略的更新幅度,在穩定學習的同時持續改進策略性能。
• 不用真實 KL 限制區間
• 改用 目標函數中「剪裁」策略比例(Probability Ratio) 來避免更新過大
________________________________________
📘 PPO 的目標函數(Clipped Surrogate Objective)
L_CLIP(theta) = E_t [ min( r_t(theta) * A_t ,
clip( r_t(theta), 1 - epsilon, 1 + epsilon ) * A_t ) ]
where r_t(theta) = pi_theta(a_t | s_t) / pi_old(a_t | s_t)
其中:
r_t(theta) :新舊策略在同一狀態下對應動作的機率比值(重要性比率)。
A_t :該狀態下動作的優勢值 (Advantage)。
clip(...) :將 r_t(theta) 裁剪在區間 [1 - epsilon, 1 + epsilon] 內,防止更新幅度過大。
min(...) :取裁剪前後的較小值,讓學習過程中即使 Advantage 很大時,也不會出現過度放大的梯度更新,達到穩定學習。
✅ 為什麼用 min()?
min() 的作用就是讓 PPO 變成「想進步 → 但不讓你一次跳太遠」。
只允許「溫和穩定地」提升策略,穩定性大大提高。
________________________________________
🔁 PPO 全流程架構
1. 與環境互動 → 蒐集多條 episode
↓
2. 利用現有策略 π_old 評估 Advantage(可用 GAE)
↓
3. 構建剪裁目標函數 L^CLIP
↓
4. 使用 SGD 或 Adam 進行多次小批次(mini-batch)更新
↓
5. 更新策略 π_new,並重複流程
________________________________________
🆚 TRPO vs PPO 的比較
- 更新限制方式:TRPO 採用 KL 散度硬限制;PPO 使用策略比剪裁軟限制。
- 實作難度:TRPO 高,需要 Hessian 估算;PPO 中等,只需一階導數。
- 計算成本:TRPO 高,需共軛梯度法;PPO 低,採用 SGD + clip。
- 常用場景:TRPO 用於理論要求高的研究場景;PPO 為工程應用首選。
- 穩定性:TRPO 理論上穩定;PPO 在實務表現上同樣穩定。
- 是否主流:TRPO 中等;PPO 壓倒性成為主流方法。
________________________________________
🧪 實作技巧與建議
• 使用 GAE(Generalized Advantage Estimation) 能讓 Advantage 更平滑
• PPO 適合使用 Adam Optimizer、mini-batch SGD、隨機打亂資料
• 通常每次更新會用 52048 條樣本
________________________________________
📦 PPO 應用場景(廣泛!)
• 🧍 模擬機器人(MuJoCo、Bullet)
• 🕹 遊戲訓練(Atari, Unity ML-Agents)
• 🤖 機器學習控制(OpenAI Five, Dota2)
• 💬 對話系統與回饋學習(ChatGPT RLHF)
________________________________________
✅ 單元小結
- 策略比 r_t:衡量新策略與舊策略的差異,作為更新依據。
- 剪裁策略比:限制更新幅度,避免策略偏離過遠。
- GAE:透過廣義優勢估計,使 Advantage 計算更穩定並降低方差。
- SGD + mini-batch:分批隨機梯度下降,提高訓練效率與收斂穩定性。
- PPO 優勢:實作簡單、效率高、更新穩定,成為目前主流的強化學習方法。
________________________________________
🎓 延伸任務建議
• ✅ 在 OpenAI Gym 中用 PPO 訓練 CartPole-v1 和 Pendulum-v1
• ✅ 比較 PPO 與 REINFORCE 的收斂速度
• ✅ 實驗不同剪裁範圍 ϵ\epsilonϵ,觀察策略穩定性與學習曲線變化