RL中的策略優化問題

一、策略迭代

如果使用值函數重新定義強化學習的目標,我們可以得到:RL就是找到最優的策略,使得每一個狀態的價值最大化。相當於求解
π=argmaxaqπ(s,a)\pi^{*}=argmax_{a}q_{\pi^{*}}(s,a)
而對於每一個狀態對應的行爲,我們希望找到使其價值最大化的行爲:
a=argmaxaqπ(s,a)a^{*}=argmax_{a}q_{\pi^{*}}(s, a)

可以看出爲了求出最終的結果,我們需要同時更新交織在一起的策略與價值。這個問題有一個解決算法是 策略迭代法。

只要能得到精確的值函數,就可以使用貝爾曼公式求出最優策略,也就是說最優策略滿足上面提到的公式2。

二、策略梯度

策略梯度法不採用迂迴的方式更新策略,而是直接計算策略可能更新的方向。

回到問題的本質,RL的目標是最大化長期回報期望,於是目標可以寫成如下形式:

π=argmaxπEτπ(τ)[r(τ)]\pi^{*}=\operatorname{argmax}_{\pi} E_{\boldsymbol{\tau} \sim \pi(\boldsymbol{\tau})}[r(\boldsymbol{\tau})]

其中 τ\tau 表示使用策略進行交互得到的一條軌跡,r(τ)r(\tau) 表示這條軌跡的總體回報。由於值函數也是一個函數,我們可以將之表示爲策略參數的函數,然後就可以通過求導的方式,使參數沿着梯度上升的方向更新,也就是提升策略了。這就是利用梯度的方法進行策略優化。

算法推導

將上述目標函數用J(θ)J(\theta) 表示,將軌跡的期望回報展開,可以得到

J(θ)=Eτπθ(τ)[r(τ)]=τπθ(τ)πθ(τ)r(τ)dτ J(\theta)=E_{\boldsymbol{\tau} \sim \pi_{\theta}(\tau)}[r(\boldsymbol{\tau})]=\int_{\boldsymbol{\tau} \sim \pi_{\theta}(\tau)} \pi_{\theta}(\boldsymbol{\tau}) r(\boldsymbol{\tau}) \mathrm{d} \boldsymbol{\tau}

由於策略函數通常是定義良好的函數,所以求導運算可以和積分運算互換,這樣可以得到

θJ(θ)=τπθ(τ)θπθ(τ)r(τ)dτ \nabla_{\theta} J(\theta)=\int_{\tau \sim \pi_{\theta}(\tau)} \nabla_{\theta} \pi_{\theta}(\tau) r(\tau) \mathrm{d} \tau

爲了方便計算,我們將上式進行一下變形。這裏用到對數求導的基本公式
xlogy=1yxy \nabla_{x} \log y=\frac{1}{y} \nabla_{x} y

yy 乘到左邊可得到
yxlogy=xy y \nabla_{x} \log y=\nabla_{x} y

yy 替換成 πθ(τ)\pi_{\theta}(\tau), 將 xx 替換成 θ\theta ,同時將公式左右兩邊互換,就可以得到
θπθ(τ)=πθ(τ)θlogπθ(τ) \nabla_{\theta} \pi_{\theta}(\tau)=\pi_{\theta}(\tau) \nabla_{\theta} \log \pi_{\theta}(\tau)

帶入前面的公式,得到

θJ(θ)=τπθ(τ)πθ(τ)θlogπθ(τ)r(τ)dτ=Eτπθ(τ)[θlogπθ(τ)r(τ)] \begin{aligned} \nabla_{\theta} J(\theta) &=\int_{\tau \sim \pi_{\theta}(\tau)} \pi_{\theta}(\tau) \nabla_{\theta} \log \pi_{\theta}(\tau) r(\tau) \mathrm{d} \tau \\ &=\boldsymbol{E}_{\tau \sim \pi_{\theta}(\tau)}\left[\nabla_{\theta} \log \pi_{\theta}(\boldsymbol{\tau}) r(\boldsymbol{\tau})\right] \end{aligned}

求出的梯度公式還是有不易計算的部分,比如 θlogπθ\nabla_{\theta} log \pi_{\theta}.下面將公式進一步拆解。之前我們說過,τ\tau 表示的是從狀態 sts_{t} 出發的某條路徑,那麼假設軌跡總長度爲 TT,將其展開可以得到:

π(τ)=π(s0,a0,,sT,aT)=p(s0)t=0Tπθ(atst)p(st+1st,at) \begin{aligned} \pi(\boldsymbol{\tau}) &=\pi\left(\boldsymbol{s}_{0}, \boldsymbol{a}_{0}, \cdots, \boldsymbol{s}_{T}, \boldsymbol{a}_{T}\right) \\ &=p\left(\boldsymbol{s}_{0}\right) \prod_{t=0}^{T} \pi_{\theta}\left(\boldsymbol{a}_{t} | \boldsymbol{s}_{t}\right) p\left(\boldsymbol{s}_{t+1} | \boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right) \end{aligned}

對齊求導,可以得到
θlogπ(τ)=θlog[t=0Tπθ(atst)]=θ[p(s0)+t=0Tlogπθ(atst)+t=0Tlogπθp(st+1st,at)]=t=0Tθlogπθ(atst) \begin{aligned} \nabla_{\theta}log\pi(\boldsymbol{\tau}) &=\nabla_{\theta}log[\prod_{t=0}^{T}\pi_{\theta}\left(\boldsymbol{a}_{t} | \boldsymbol{s}_{t}\right)] \\ &=\nabla_{\theta}[p\left(\boldsymbol{s}_{0}\right)+\sum_{t=0}^{T}log\pi_{\theta}\left(\boldsymbol{a}_{t} | \boldsymbol{s}_{t}\right)+\sum_{t=0}^{T}log\pi_{\theta}p\left(\boldsymbol{s}_{t+1} | \boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right)] \\ &=\sum_{t=0}^{T}\nabla_{\theta}log\pi_{\theta} \left(\boldsymbol{a}_{t} | \boldsymbol{s}_{t}\right)\end{aligned}

到這裏公式和最大似然公式沒有區別。再想一下蒙特卡羅方法,他是一種通過隨機採樣估計期望的方法,所以我們可以通過樣本序列逼近真實的期望,樣本序列就是從狀態ss和行爲aa開始不斷地與環境交互得到的,
st,at,st+1i,at+1ii=1N{s_t, a_t,s_{t+1}^{i}, a_{t+1}^{i}}_{i=1}^{N}

將上式中的期望用蒙特卡羅近似的方法進行替換,可以得到求解梯度的最終形式

總結 PG方法

  1. 計算 θJ(θ)\nabla_{\theta}J(\theta)
  2. 更新參數 θ=θ+αθJθ\theta =\theta + \alpha*\nabla_{\theta}J{\theta}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章