一、策略迭代
如果使用值函數重新定義強化學習的目標,我們可以得到:RL就是找到最優的策略,使得每一個狀態的價值最大化。相當於求解
π∗=argmaxaqπ∗(s,a)
而對於每一個狀態對應的行爲,我們希望找到使其價值最大化的行爲:
a∗=argmaxaqπ∗(s,a)
可以看出爲了求出最終的結果,我們需要同時更新交織在一起的策略與價值。這個問題有一個解決算法是 策略迭代法。
只要能得到精確的值函數,就可以使用貝爾曼公式求出最優策略,也就是說最優策略滿足上面提到的公式2。
二、策略梯度
策略梯度法不採用迂迴的方式更新策略,而是直接計算策略可能更新的方向。
回到問題的本質,RL的目標是最大化長期回報期望,於是目標可以寫成如下形式:
π∗=argmaxπEτ∼π(τ)[r(τ)]
其中 τ 表示使用策略進行交互得到的一條軌跡,r(τ) 表示這條軌跡的總體回報。由於值函數也是一個函數,我們可以將之表示爲策略參數的函數,然後就可以通過求導的方式,使參數沿着梯度上升的方向更新,也就是提升策略了。這就是利用梯度的方法進行策略優化。
算法推導
將上述目標函數用J(θ) 表示,將軌跡的期望回報展開,可以得到
J(θ)=Eτ∼πθ(τ)[r(τ)]=∫τ∼πθ(τ)πθ(τ)r(τ)dτ
由於策略函數通常是定義良好的函數,所以求導運算可以和積分運算互換,這樣可以得到
∇θJ(θ)=∫τ∼πθ(τ)∇θπθ(τ)r(τ)dτ
爲了方便計算,我們將上式進行一下變形。這裏用到對數求導的基本公式
∇xlogy=y1∇xy
把 y 乘到左邊可得到
y∇xlogy=∇xy
將 y 替換成 πθ(τ), 將 x 替換成 θ ,同時將公式左右兩邊互換,就可以得到
∇θπθ(τ)=πθ(τ)∇θlogπθ(τ)
帶入前面的公式,得到
∇θJ(θ)=∫τ∼πθ(τ)πθ(τ)∇θlogπθ(τ)r(τ)dτ=Eτ∼πθ(τ)[∇θlogπθ(τ)r(τ)]
求出的梯度公式還是有不易計算的部分,比如 ∇θlogπθ.下面將公式進一步拆解。之前我們說過,τ 表示的是從狀態 st 出發的某條路徑,那麼假設軌跡總長度爲 T,將其展開可以得到:
π(τ)=π(s0,a0,⋯,sT,aT)=p(s0)t=0∏Tπθ(at∣st)p(st+1∣st,at)
對齊求導,可以得到
∇θlogπ(τ)=∇θlog[t=0∏Tπθ(at∣st)]=∇θ[p(s0)+t=0∑Tlogπθ(at∣st)+t=0∑Tlogπθp(st+1∣st,at)]=t=0∑T∇θlogπθ(at∣st)
到這裏公式和最大似然公式沒有區別。再想一下蒙特卡羅方法,他是一種通過隨機採樣估計期望的方法,所以我們可以通過樣本序列逼近真實的期望,樣本序列就是從狀態s和行爲a開始不斷地與環境交互得到的,
st,at,st+1i,at+1ii=1N
將上式中的期望用蒙特卡羅近似的方法進行替換,可以得到求解梯度的最終形式
總結 PG方法
- 計算 ∇θJ(θ)
- 更新參數 θ=θ+α∗∇θJθ