AI時代系列(3) 機器學習三部曲: 📘 第三部:《強化學習 —— AI 的決策與進化》
25/100 第三週:📌 蒙地卡羅方法(Monte Carlo Methods)
25.採樣策略與重要性修正 🧮 現實與目標策略的權衡!
________________________________________
🎯 單元導讀:
現實中,我們常遇到這樣的問題:
想要訓練一套最優策略 π*,但只能從另一套已存在的策略 μ(行為策略) 收集資料,該怎麼辦?
這就是**離策略學習(Off-policy Learning)**中的核心挑戰!
而「重要性修正(Importance Sampling)」正是一種統計技巧,讓我們可以:
✅ 用現實中的策略資料,來評估或學習理想目標策略的效果!
________________________________________
🧠 一、行為策略 vs 目標策略
在強化學習中,**行為策略(μ)與目標策略(π)*是兩個重要概念。
行為策略 μ 指的是智能體在訓練過程中實際執行、用來收集互動資料的策略,通常包含探索成分,例如 ε-Greedy 隨機探索。
目標策略 π 則是我們希望最終學習出來的最佳決策策略,例如最優策略 π。
在某些演算法中,行為策略與目標策略相同(如蒙地卡羅控制的 on-policy 學習);而在 off-policy 學習中,則允許用行為策略 μ 來收集資料,同時用目標策略 π 進行學習與更新,兩者可分開設計,有助於兼顧探索與穩定學習。
📌 離策略學習的重點是:如何在使用 μ 收集樣本的前提下,正確學習 π 的價值或策略。
________________________________________
📦 二、什麼是重要性修正(Importance Sampling)?
重要性修正是一種「加權平均」方法,用來矯正來自不同分布(策略)資料的影響力。
V_pi(s) ≈ E_mu [ ρ * G_t ]
其中:
• V_pi(s) :在目標策略 π 下的狀態價值估計
• E_mu :在行為策略 μ 下收集的樣本平均
• G_t :從 t 開始的累積折扣報酬
• ρ :重要性權重 (Importance Sampling Ratio)
計算 ρ:
ρ = Π (k = t 到 T-1) [ π(a_k | s_k) / μ(a_k | s_k) ]
也就是:
ρ = (π(a_t | s_t) / μ(a_t | s_t)) *
(π(a_{t+1} | s_{t+1}) / μ(a_{t+1} | s_{t+1})) *
(π(a_{t+2} | s_{t+2}) / μ(a_{t+2} | s_{t+2})) *
... *
(π(a_{T-1} | s_{T-1}) / μ(a_{T-1} | s_{T-1}))
________________________________________
簡單理解:
• 每次在行為策略 μ 下執行的 action,都計算它在目標策略 π 下的機率比例;
• 把整個 episode 內的比值連乘起來形成 ρ;
• 最後用 ρ 乘以 Gₜ,修正偏差,得到正確的 V_pi(s) 估計。
重要性修正的核心意義是:
用行為策略 μ 下收集到的樣本,透過重要性權重 ρ 加權,來模擬出如果當時是依照目標策略 π 執行,應該得到的正確價值估計。
________________________________________
🔁 三、兩種重要性修正方式
在蒙地卡羅 off-policy 學習中,**普通重要性修正(Ordinary Importance Sampling)**直接對所有樣本的 ρ × Gₜ 進行平均,雖然估計結果無偏,但容易因為極端權重 ρ 而出現高變異性,導致收斂速度不穩定。為此,**加權重要性修正(Weighted Importance Sampling)**會將所有權重 ρ 進行歸一化,再做加權平均,雖然因此引入輕微偏差,但變異性大幅降低,整體收斂更穩定且實務應用中常見。
________________________________________
💻 四、簡單實作範例(Python)
python
def ordinary_importance_sampling(episodes, pi, mu, gamma=1.0):
V = defaultdict(float)
N = defaultdict(int)
for episode in episodes:
G = 0
rho = 1
for t in reversed(range(len(episode))):
s, a, r = episode[t]
G = gamma * G + r
rho *= pi[s][a] / mu[s][a]
N[s] += 1
V[s] += (rho * G - V[s]) / N[s] # 增量更新法
return V
這段程式碼實現了**普通重要性修正(Ordinary Importance Sampling)**的蒙地卡羅價值估計。對每個 episode 進行反向回溯計算,逐步累積總折扣報酬 G,並在每一步依據行為策略 μ 與目標策略 π 之間的機率比值更新重要性權重 ρ。每當某個狀態 s 被訪問時,透過增量平均的方式(即 V[s] += (rho * G - V[s]) / N[s])持續更新該狀態的價值估計 V(s)。由於直接乘上完整的 ρ 值,這種方法在理論上無偏,但當 ρ 出現極端值時,變異性可能較大,收斂速度容易受到影響。
_______________________________________
📊 五、實務中何時用?
在只能依靠歷史資料或真實環境無法頻繁試驗的情境下,蒙地卡羅與 off-policy 技術能發揮作用:透過舊資料學習新策略,並以穩定行為策略 μ 收集樣本,再用目標策略 π 優化決策,兼顧學習效率與穩定性。
________________________________________
🎮 六、生活與應用案例
情境 說明
股票投資策略訓練 用舊的交易策略數據評估新策略是否更好
醫療路徑預測 在不能直接實驗的情況下,模擬其他治療方式的效果
廣告投放優化 在歷史點擊資料基礎上估算不同推薦策略成效
________________________________________
🧩 七、挑戰任務與反思
1️⃣ 若 π 和 μ 差異很大,重要性修正會出現什麼問題?你會怎麼解決?
問題:
當目標策略 π 和行為策略 μ 差異過大時,某些動作在 π 下的機率高、在 μ 下的機率低,導致重要性權重 ρ 可能非常大(爆炸性)或非常小(接近 0)。這會造成估值結果高變異性,甚至收斂不穩定,容易被極端樣本主導。
解決方案:
使用加權重要性修正(Weighted IS):透過權重歸一化,降低高變異性的影響。
限制權重大小(Clipping):設定 ρ 的最大值上限,例如 ρ = min(ρ, C),避免極端值干擾。
逐漸收斂 μ → π:讓行為策略慢慢靠近目標策略,減少兩者差距。
混合 TD 方法:例如使用 off-policy TD(λ) 或 actor-critic 結構,減少完整重要性修正的依賴。
2️⃣ 為什麼加權重要性修正雖有偏差卻更常使用?
原因:
加權重要性修正透過將所有權重歸一化,雖然在理論上引入輕微偏差,但大幅減少了高變異性的影響,提升穩定性與收斂速度。
在實務應用中,穩定性往往比理論無偏更重要,尤其在樣本有限或高維環境中,穩定收斂能確保演算法可用且表現穩定,因此加權 IS 更受歡迎。
對大多數應用來說,輕微偏差在長期訓練過程中可以透過持續探索逐漸補回,而高變異性則可能讓整個學習失控。
3️⃣ 有什麼情況你會放棄使用離策略學習,而改用 on-policy(如 SARSA)?
適用 on-policy(SARSA)情境:
探索與執行策略一致時:例如實際部署系統中,行為策略與目標策略必須完全相同(安全性、風險考量)。
資源有限時:on-policy 方法如 SARSA,更新穩定,實作簡單,不需計算重要性權重,適合硬體資源有限或即時線上學習。
任務不需要大範圍探索:如環境較穩定、風險可控、不需從外部收集其他策略資料時,on-policy 學習更簡潔高效。
避免重要性修正的高變異風險:在高維度或罕見狀態極多的環境下,off-policy 重要性修正容易爆炸,直接採用 on-policy 更安全可控。
________________________________________
✅ 八、小結與啟示:
• 重要性修正是強化學習中實現「離策略學習」的關鍵
• 可讓我們在行為策略與目標策略不同的情況下,仍然學得有效策略
• 實務中更常使用加權重要性修正來穩定學習效果
• 是理解 DDPG、PPO、REINFORCE 等演算法的基礎概念之一!