JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

TRPO:讓信賴域真正可行

信賴域策略優化把單調改善的理論,化成一個你真能執行的演算法——靠共軛梯度與回溯線搜尋。

KL 約束問題

信賴域策略優化(Trust Region Policy Optimization,TRPO) 把第 1 篇的取捨講白。它不再用一個脆弱的係數去懲罰 KL 散度,而是加上一個硬性上限:在「舊策略與新策略間的平均 KL 維持在固定預算之下」這個條件下,最大化 替代目標函數。這個預算就是信賴域的半徑——在分布空間裡,替身值得信賴的那個鄰域。

\max_{\theta}\ \mathbb{E}\!\left[\frac{\pi_\theta(a\mid s)}{\pi_{\theta_{\text{old}}}(a\mid s)}\,\hat{A}(s,a)\right]\quad \text{s.t.}\quad \mathbb{E}\big[D_{\text{KL}}(\pi_{\theta_{\text{old}}}\,\|\,\pi_\theta)\big]\le \delta

TRPO 的核心问题:在硬性 KL 预算 δ 的约束下,最大化重要性采样的替代优势。

選擇約束而非懲罰,正是 TRPO 實務穩定性的來源。固定的 KL 預算讓每次更新在行為上維持同樣大小,無論你身處損失曲面的何處——這比一個「在不同點意義不同」的懲罰權重好調太多了。

在不對費雪矩陣求逆下求解

把替身線性化、把 KL 約束做二次逼近(它的矩陣就是 費雪資訊矩陣),最佳方向恰好就是 自然梯度。但對深度網路而言,組出費雪矩陣並求逆是不可行的。TRPO 的訣竅在於:它從不需要矩陣本身——只需要它與向量的乘積,而這可以很便宜地算出。

於是 共軛梯度(conjugate gradient) 登場。它只用費雪—向量乘積就能求解那個定義自然梯度方向的線性系統,在少少幾次迭代內收斂,且全程不必把矩陣具體化。每次費雪—向量乘積只是一次額外的反向傳播,因此整個求解只花費一個小的、常數次的梯度計算。

F\,x=\hat{g}\ \Rightarrow\ x=F^{-1}\hat{g},\qquad \beta=\sqrt{\dfrac{2\delta}{x^{\top}F\,x}}

共轭梯度法仅用 Fisher–向量乘积求解 Fx = g,得到自然梯度方向,再用 β 把它缩放到 KL 预算边界 δ。

線搜尋這張安全網

共軛梯度方向來自真實 KL 約束的二次逼近,因此它建議的完整步伐可能過衝——真實 KL 可能超出預算,或真實替身反而下降。TRPO 用回溯式 線搜尋(line search) 防範這點:先試完整步伐,若真實 KL 太大、或替身沒有改善,就把步伐減半再檢查一次,直到兩個條件都成立為止。

由于二次近似可能步子过大,TRPO 会沿提议方向回溯——像谨慎下山一样逐步缩短步长——直到实测 KL 落在预算内且替代目标确实提升。

可交互的梯度下降在损失曲面上滚动,示意回溯线搜索不断缩短步长直到安全。

TRPO 全流程

  1. 用目前策略蒐集一批軌跡,並估計優勢(GAE)。
  2. 重要性取樣 對舊策略計算替身梯度。
  3. 用共軛梯度搭配費雪—向量乘積,求得自然梯度方向。
  4. 把該方向縮放到 KL 預算內最大的步伐。
  5. 用線搜尋回溯,直到 KL 約束 成立且替身改善;然後套用。