1. 程式人生 > 其它 >深度強化學習——ppo(待重寫)

深度強化學習——ppo(待重寫)

PPO

abstract

PPO通過與環境互動來取樣資料和使用隨機梯度上升優化"替代"目標函式之間交替使用。鑑於標準策略梯度方法對每個資料嚴格不能執行一次梯度更新,本文章提出了一個新的目標函式,該函式支援多個epochs的小批量更新。

Introduction

本文使用的演算法在僅使用一階優化的情況下,可實現TRPO的資料效率和可靠效能。本文提出了一種新的具有截斷概率比的目標,形成了策略效能的下界。為了優化策略,本文在從策略中取樣資料和對取樣資料執行優化之間及逆行交替。

Background: Policy Optimization

在trpo中,目標函式是在約束下對目標進行最大化策略更新。即,


\(\theta_{old}\)是更新前策略引數的向量。在對目標進行線性近似和對約束進行二次近似後,可以使用共軛梯度演算法有效地近似求解該問題,也可以將上述的問題轉化為下面無約束的問題

對於上述問題,能夠實現的前提是,上述目標( 計算狀態上的最大KL散度而不是平均值)能夠對策略\(\pi\)的效能估計形成了下界,這個和引數\(\beta\)相關。但是在TRPO使用硬約束而不是懲罰,因此很難選擇一個\(\beta\)的值,使得該值在不同的問題中表現良好,甚至在單個問題中表現良好。因此為了實現模擬TRPO單調改進的一階演算法的目標,實驗表明,僅僅選擇一個固定的懲罰係數\(\beta\)並用SGD優化懲罰目標方程是不夠的,需要進行額外的修改。

Clipped Surrogate Objective

首先令\(r_t(\theta)=\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\),顯然\(r_t(\theta_{old})=1\)

那麼TRPO的優化目標可以修改為;\(L^{CPI}(\theta)=\widehat E_t[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\widehat A_t]=\widehat E_t[r_t(\theta)\widehat A_t]\)

上述CPI指的是保守策略迭代,如果沒有約束,\(L^{CPI}\)

的最大化將導致過大的策略更新;因此,現在考慮如何修改目標,能夠懲罰\(r_t(\theta)\)遠離1時的策略變化。

因此,為了完成上述目標。提出來的目標如下:

\[L^{CLIP}(\theta)=\widehat E_t\{min[r_t(\theta)\widehat A_t,clip(r_t(\theta),1-\epsilon,1+\epsilon)\widehat A_t]\} \]

其中\(\epsilon\)為超引數.

Adaptive KL Penalty Coeffcient

還有另外一種方法,可以用作裁剪代理目標的替代,或作用補充,即對KL散度進行懲罰並調整懲罰係數,以使我們在每次策略更新時實現KL散度的某個目標值。最簡單的演算法流程如下:

  • 使用小批量更新SGD,優化KL-懲罰目標:
    • \(L^{KLPEN}(\theta)=\widehat E_t[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\widehat A_t-\beta KL[\pi_{\theta_{old}}(\cdot|s_t),\pi_\theta(\cdot|s_t)]]\)
  • 計算\(d=\widehat E_t[ KL[\pi_{\theta_{old}}(\cdot|s_t),\pi_\theta(\cdot|s_t)]]\)
    • 如果\(d<d_{targ}/1.5,\beta\leftarrow\beta/2\)
    • 如果\(d>d_{targ}/1.5,\beta\leftarrow \beta\times2\)

使用上述方法,我們偶爾會看到KL散度明顯異於\(d_{targ}\)的情況下進行更新,但是這種情況是少見的,並且\(\beta\) 會快速調整。上述公式中的1.5和2也是啟發式選擇的,但是演算法對它們不是很敏感。\(\beta\)的初始值是另一個超引數,但實際上並不重要,因為演算法會快速調整它。

Algorithm

對於損失函式的定義,如果使用在策略和值函式之間共享引數的神經網路結構,則必須使用結合策略代理和值函式誤差項的損失函式。

結合以前的工作,可以構建以下的目標函式,該目標在每次迭代中近似最大化:

\[L^{CLIP+VF+S}_t(\theta)=\widehat E_t[L_t^{CLIP}(\theta)-c_1L^{VF}_t(\theta)+c_2S[\pi_\theta](s_t)] \]

其中\(c_1、c_2\)是超引數,S是軌跡的回報,\(L_t^{VF}\)是一個平方誤差\((V_\theta(s_t)-V_t^{targ})^2\)

在之前中的工作中提出了一種策略梯度實現方法為針對T個時間步長執行策略,並使用收集的樣本進行更新。可以表示為如下的形式:

\[\widehat A_t =-V(s_t)+r_t+\gamma r_{t+1}+\cdots+\gamma^{T-t-1}r_{T-1}+\gamma^{T-t}V(s_t) \]

對上述形式進行推廣,可以使用廣義優勢估計的截斷版本:

\[\widehat A_t=\delta_t+(\gamma\lambda)\delta_{t+1}+\cdots+\cdots+(\gamma\lambda)^{T-t+1}\delta_{T-1} \\where\ \ \ \delta_t=r_t+\gamma V(s_{t+1})-V(s_t) \]

那麼PPO-clip的虛擬碼為: