KL 約束問題
信賴域策略優化(Trust Region Policy Optimization,TRPO) 把第 1 篇的取捨講白。它不再用一個脆弱的係數去懲罰 KL 散度,而是加上一個硬性上限:在「舊策略與新策略間的平均 KL 維持在固定預算之下」這個條件下,最大化 替代目標函數。這個預算就是信賴域的半徑——在分布空間裡,替身值得信賴的那個鄰域。
TRPO 的核心问题:在硬性 KL 预算 δ 的约束下,最大化重要性采样的替代优势。
選擇約束而非懲罰,正是 TRPO 實務穩定性的來源。固定的 KL 預算讓每次更新在行為上維持同樣大小,無論你身處損失曲面的何處——這比一個「在不同點意義不同」的懲罰權重好調太多了。
在不對費雪矩陣求逆下求解
把替身線性化、把 KL 約束做二次逼近(它的矩陣就是 費雪資訊矩陣),最佳方向恰好就是 自然梯度。但對深度網路而言,組出費雪矩陣並求逆是不可行的。TRPO 的訣竅在於:它從不需要矩陣本身——只需要它與向量的乘積,而這可以很便宜地算出。
於是 共軛梯度(conjugate gradient) 登場。它只用費雪—向量乘積就能求解那個定義自然梯度方向的線性系統,在少少幾次迭代內收斂,且全程不必把矩陣具體化。每次費雪—向量乘積只是一次額外的反向傳播,因此整個求解只花費一個小的、常數次的梯度計算。
共轭梯度法仅用 Fisher–向量乘积求解 Fx = g,得到自然梯度方向,再用 β 把它缩放到 KL 预算边界 δ。
線搜尋這張安全網
共軛梯度方向來自真實 KL 約束的二次逼近,因此它建議的完整步伐可能過衝——真實 KL 可能超出預算,或真實替身反而下降。TRPO 用回溯式 線搜尋(line search) 防範這點:先試完整步伐,若真實 KL 太大、或替身沒有改善,就把步伐減半再檢查一次,直到兩個條件都成立為止。
可交互的梯度下降在损失曲面上滚动,示意回溯线搜索不断缩短步长直到安全。