AI時代系列(3) 機器學習三部曲: 📘 第三部:《強化學習 —— AI 的決策與進化》
55/100 第六週:📌 策略梯度與 Actor-Critic 架構
55.優勢函數(Advantage Function)💡 分析比預期好多少!
_______________________________________
🎯 單元導讀
當我們進行策略梯度更新時,有一個問題常常困擾我們:
當一個動作得到正回報,它是真的「好」,還是「剛好符合預期」?
這時候,優勢函數 Advantage Function 就能幫我們解開這個疑惑。
它的核心思想是:
「動作的好壞不是絕對的,而是相對於預期!」
👉 如果做出某個動作後的結果比預期更好,那這就是一個「有優勢的」行為。
________________________________________
🧠 一、什麼是 Advantage Function?
優勢函數定義為:
A(s, a) = Q(s, a) - V(s)
項目 意義
Q(s, a) 在狀態 s 下採取動作 a 後的總期望回報
V(s) 在狀態 s 下平均所有動作的期望回報
A(s, a) 此動作 a 比平均期望回報多多少
換句話說,A(s, a) 表示這個動作比預期好多少。
________________________________________
🔁 二、為什麼要使用 Advantage?
在 REINFORCE 中,我們是這樣更新策略:
θ ← θ + α * ∇θ log π(a|s) * G_t
但 G_t 的方差很大,會導致學習不穩。
引入 Advantage 後,我們可以改為:
θ ← θ + α * ∇θ log π(a|s) * A_t
這樣做有三大好處:
1. ✅ 減少高方差(因為基準 V(s) 被扣掉)
2. ✅ 更聚焦在「比預期更好」的行為
3. ✅ 改善策略學習的穩定性與速度
________________________________________
📈 三、Advantage 的估算方式
常見有兩種:
方法一:從 Critic 網路估算
python
A(s, a) = Q(s, a) - V(s)
若 Critic 同時輸出 Q 與 V,就可以直接計算。
方法二:使用 TD 誤差估算
python
A(s, a) ≈ r + γ * V(s') - V(s)
這是最常用的估算方式之一,因為 V(s) 通常比 Q(s, a) 更容易學。
________________________________________
🧪 四、Advantage 的應用場景
場景 說明
A2C、A3C 演算法 使用 Advantage 代替 G_t,減少方差
PPO(Clip Loss) 使用 Advantage 作為策略更新的依據,穩定學習
Actor-Critic 結構 評估動作是否「優於平均」,協助 Actor 調整策略
________________________________________
📌 五、簡單數學例子說明
假設在某狀態 s:
• 動作 a1:Q(s, a1) = 8
• 動作 a2:Q(s, a2) = 5
• 平均 V(s) = 6.5
那麼:
• A(s, a1) = 8 - 6.5 = +1.5
• A(s, a2) = 5 - 6.5 = -1.5
👉 Actor 就知道該增加 a1 機率,降低 a2 機率
________________________________________
🔍 六、優勢函數與學習策略的關係
問題 Advantage 幫助
哪些行為是值得重複的? 看 A(s,a) 是否 > 0
哪些行為應該被減少? 看 A(s,a) 是否 < 0
學習是否容易收斂? 方差降低代表策略更新更穩定
策略是否太保守或激進? A(s,a) 分布幫助評估策略偏移程度
________________________________________
🧩 七、問題與思考 💭
1️⃣ 優勢函數與 TD 誤差有什麼關聯與差異?
👉
優勢函數 (Advantage Function) 定義為:
A(s, a) = Q(s, a) - V(s)
它描述某個動作相對於平均策略的好壞。而 TD 誤差計算為:
TD誤差 = r + γV(s') - V(s)
當使用狀態價值函數 V(s) 做 Critic 時,TD 誤差其實就是對 Advantage 的一種近似(但未使用真實的 Q(s,a)),因此在 Actor-Critic 中,經常直接用 TD 誤差當作 Advantage 來更新 Actor。差異在於:TD 誤差只使用一步的回饋,Advantage 是完整的期望價值差異。
2️⃣ 若 Actor 得到錯誤的 A(s,a) 估計,會造成什麼後果?
👉
若 Advantage 估計錯誤,Actor 可能會「強化錯誤的動作」,例如誤以為某動作優於平均而增加它的機率,實際上可能是低效行為;長期下來會偏離真正高效的策略,甚至陷入次優策略或局部最優,浪費大量訓練資源修正偏差,收斂速度降低甚至導致學壞。
3️⃣ 在現實生活中,有沒有「你以為做得不錯,但其實只是剛好」的例子?
👉
例如:
考試猜題猜對一題(其實沒學會,但成績剛好好看)
生意初期碰巧趕上短暫市場熱潮(但商業模式本身不穩定)
面試時隨口回答剛好符合主管期待(但實力尚未穩固)
這些情況就像錯誤高估了自己的 Advantage,短期看似不錯,但實際並未建立穩定長期優勢,若不調整認知,後續可能出現嚴重問題。
_______________________________________
✅ 八、小結與啟示
• Advantage Function 是幫助策略學習的核心概念之一
• 它幫我們比較:「這個動作比平均好多少?」
• 可減少方差、穩定學習、讓 Actor 更新更有方向感
• 和 TD 誤差搭配使用,可建立穩定、即時回饋的學習管道
• 就像生活中,真正的進步來自於**「高於平均」的持續累積!**