AI時代系列(3) 機器學習三部曲: 📘 第三部:《強化學習 —— AI 的決策與進化》
56/100 第六週:📌 策略梯度與 Actor-Critic 架構
56.使用 Baseline 降低方差 📉 訓練更穩定不搖擺!
________________________________________
🎯 單元導讀
在策略梯度方法中,策略更新會乘上一個「回報」值,如 G_t 或 Advantage A_t,這導致學習可能產生劇烈震盪。
為了解決這個問題,我們可以引入一種叫做 Baseline(基準線) 的技巧。它不會改變期望值(不影響正確性),但能有效 降低梯度估計的方差,讓學習更加穩定。
________________________________________
🧠 一、為什麼需要 Baseline?
策略梯度的一般形式如下:
θ ← θ + α ∇θ log π(a|s) * G_t
但 G_t(整集總回報)可能波動很大,會導致:
• 🚨 更新不穩定
• 🚨 學習方向錯亂
• 🚨 訓練失敗或收斂緩慢
引入 baseline 後,改寫為:
θ ← θ + α ∇θ log π(a|s) * (G_t - b)
其中 b 是 baseline,常見選擇是 狀態價值函數 V(s)。
________________________________________
💡 二、Baseline 不改變期望值
令人驚奇的是:
即使你減去一個 baseline,期望的策略梯度 方向仍然正確!
這是因為:
E[∇θ log π(a|s)] = 0
所以 E[∇θ log π(a|s) * b] = b * 0 = 0
所以從理論上來說:
✅ 加入 baseline 不會影響學習的方向
✅ 只會幫助我們降低梯度的波動性(方差)
________________________________________
🔢 三、最常見的 Baseline 選擇:V(s)
我們通常選擇:
baseline b = V(s)
那麼策略梯度變為:
θ ← θ + α ∇θ log π(a|s) * (Q(s, a) - V(s)) = ∇θ log π(a|s) * A(s, a)
➡️ 這正是 Advantage Function 的形式!
________________________________________
📌 四、Baseline 的作用與好處
項目 說明
🎯 降低梯度的方差 訓練更穩定,收斂速度更快
🎯 不改變期望值 保證理論正確性
🎯 可進一步引導學習 配合 Actor-Critic 架構,建立更明確的學習方向
🎯 與 Advantage 等價 Advantage 就是 Q - baseline 的一種實現
________________________________________
📈 五、與不使用 Baseline 的比較
比較項目 不使用 Baseline 使用 Baseline
收斂速度 較慢 較快
學習方差 較大 較小
穩定性 容易震盪 穩定進步
理論一致性 ✅ ✅
________________________________________
🧪 六、實作說明(PyTorch)
python
# 假設已有 G_t、狀態 s、動作 a
# baseline: 用 Critic 預測 V(s)
baseline = critic(s)
# Advantage
advantage = G_t - baseline
# 策略更新
loss = -log_prob(a) * advantage
loss.backward()
這段程式利用 Critic 預測的 V(s) 作為 baseline,計算 Advantage:
A(s, a) = G_t - V(s)
接著將 Advantage 乘上當前動作的負對數機率:
loss = -log_prob(a) * A(s, a)
作為損失函數,透過反向傳播更新策略參數。當 Advantage 為正時,增加該動作的機率;當 Advantage 為負時,降低該動作的機率,從而穩定地提升整體策略表現。
________________________________________
🔍 七、Baseline 的變種與擴展
在策略梯度法中,Baseline 主要用來降低方差、穩定學習。其中固定 baseline可使用所有回合回報 𝐺𝑡的平均作為簡單參考值;動態 baseline則透過神經網路學習狀態價值 𝑉(𝑠),提供更精準的即時估計;進一步的Generalized Advantage Estimation (GAE),則綜合考慮多個時間步的折扣回報,平衡偏差與方差,進一步提升 Advantage 估計的穩定性與效率。
________________________________________
🧩 八、問題與思考 💭
1️⃣ 為什麼加入 baseline 後會更穩定?請用方差的角度解釋。
👉
在原始策略梯度公式中,每次更新的權重是完整回報 𝐺𝑡,但實際回報常受環境隨機性影響,造成梯度估計方差很大,容易讓更新方向劇烈擺動。引入 baseline 後,實際更新的是 𝐺𝑡−𝑏𝑎𝑠𝑒𝑙𝑖𝑛𝑒G t−baseline(即 Advantage),去除了整體回報的公共部分,讓更新更專注於動作的相對好壞,減少無關噪音對梯度的影響,方差大幅降低,學習方向更穩定。
2️⃣ Baseline 如果估得不準(例如 V(s) 有誤),會對策略更新有什麼影響?
👉
如果 V(s) 估得不準,Advantage 可能會偏離正確值,導致強化或削弱了錯誤的行為,輕則學習效率降低、收斂變慢,重則可能持續強化次優甚至錯誤策略。不過只要 baseline 的誤差是穩定且隨機的,對整體策略更新方向的偏差影響有限,主要還是增加學習的方差而已,但若存在系統性偏誤(長期高估或低估),則容易偏離正確策略。
3️⃣ 請設計一個實際場景,你認為可以使用 baseline 來穩定決策學習?
👉
例如在股票投資組合管理中,每日市場波動巨大,但整體長期趨勢相對平穩。若把當前市場整體平均收益(如指數報酬率)作為 baseline,讓演算法學習相對於市場平均的超額報酬 (excess return),可讓學習更專注在辨別哪些決策真正在當下市場中具備額外價值,有效穩定學習過程、提升投資決策品質。
________________________________________
✅ 九、小結與啟示
• Baseline 是策略梯度學習中關鍵的穩定化技巧
• 使用 baseline 可以顯著降低更新的波動性
• 最常見的 baseline 是 V(s),對應到 Advantage Learning
• 加入 baseline 不改變學習方向,只是讓訓練更「不搖擺」
• 真實人生中也可以這樣思考:「我今天的行動,是否優於我的期望?」