强化学习的学习之路(四十八)2021-02-17 GAE(Generalized Advantage Estimation)
作為一個新手,寫這個強化學(xué)習(xí)-基礎(chǔ)知識專欄是想和大家分享一下自己學(xué)習(xí)強化學(xué)習(xí)的學(xué)習(xí)歷程,希望對大家能有所幫助。這個系列后面會不斷更新,希望自己在2021年能保證平均每日一更的更新速度,主要是介紹強化學(xué)習(xí)的基礎(chǔ)知識,后面也會更新強化學(xué)習(xí)的論文閱讀專欄。本來是想每一篇多更新一點內(nèi)容的,后面發(fā)現(xiàn)大家上CSDN主要是來提問的,就把很多拆分開來了(而且這樣每天任務(wù)量也小一點哈哈哈哈偷懶大法)。但是我還是希望知識點能成系統(tǒng),所以我在目錄里面都好按章節(jié)系統(tǒng)地寫的,而且在github上寫成了書籍的形式,如果大家覺得有幫助,希望從頭看的話歡迎關(guān)注我的github啊,謝謝大家!另外我還會分享深度學(xué)習(xí)-基礎(chǔ)知識專欄以及深度學(xué)習(xí)-論文閱讀專欄,很早以前就和小伙伴們花了很多精力寫的,如果有對深度學(xué)習(xí)感興趣的小伙伴也歡迎大家關(guān)注啊。大家一起互相學(xué)習(xí)啊!可能會有很多錯漏,希望大家批評指正!不要高估一年的努力,也不要低估十年的積累,與君共勉!
GAE
GAE全稱是generalized advantage estimator,幾乎所有最先進(jìn)的policy gradient算法實現(xiàn)里面都使用了該技術(shù)。
我們已經(jīng)知道在策略梯度法中,如果直接使用 On-Policy 的方法交互采樣,并用 每一時刻的回報作為梯度中的長期回報估計 ∑t′=tTγt′?trt′,\sum_{t^{\prime}=t}^{T} \gamma^{t^{\prime}-t} \boldsymbol{r}_{t^{\prime}},∑t′=tT?γt′?trt′?, 會使算法產(chǎn)生較大的波動,換句話說,梯度的方差會比較大。如果采用 Actor-Critic 的方法,通過模型估計狀態(tài)的價值,那么模型優(yōu)化的方差會減小,但是由于函數(shù)擬合的問題,這個方法會產(chǎn)生一定偏差。因此問題的關(guān)鍵就在于如何平衡偏差和方差帶來的影響。
Actor Critic 的價值梯度可以表示為
?θJ(θ)=Es,a~τ[∑t=0∞Aπ,γ(st,at)?θlog?πθ(at∣st)]\nabla_{\theta} J(\theta)=E_{\boldsymbol{s}, a \sim \boldsymbol{\tau}}\left[\sum_{t=0}^{\infty} A^{\pi, \gamma}\left(\boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right) \nabla_{\theta} \log \pi_{\theta}\left(\boldsymbol{a}_{t} \mid \boldsymbol{s}_{t}\right)\right] ?θ?J(θ)=Es,a~τ?[t=0∑∞?Aπ,γ(st?,at?)?θ?logπθ?(at?∣st?)]
其中
Aπ,γ(st,at)=Qπ,γ(st,at)?Vπ,γ(st)Qπ,γ(st,at)=Est+1,at+1~τ[∑l=0∞γlrt+l]Vπ,γ(st)=Est+1,at~τ[∑l=0∞γlrt+l]\begin{aligned} A^{\pi, \gamma}\left(s_{t}, a_{t}\right) &=Q^{\pi, \gamma}\left(s_{t}, a_{t}\right)-V^{\pi, \gamma}\left(s_{t}\right) \\ Q^{\pi, \gamma}\left(s_{t}, a_{t}\right) &=E_{s_{t+1}, a_{t+1} \sim \tau}\left[\sum_{l=0}^{\infty} \gamma^{l} r_{t+l}\right] \\ V^{\pi, \gamma}\left(s_{t}\right) &=E_{s_{t+1}, a_{t} \sim \tau}\left[\sum_{l=0}^{\infty} \gamma^{l} r_{t+l}\right] \end{aligned} Aπ,γ(st?,at?)Qπ,γ(st?,at?)Vπ,γ(st?)?=Qπ,γ(st?,at?)?Vπ,γ(st?)=Est+1?,at+1?~τ?[l=0∑∞?γlrt+l?]=Est+1?,at?~τ?[l=0∑∞?γlrt+l?]?
總的來說, Aπ,γ(st,at)A^{\pi, \gamma}\left(s_{t}, a_{t}\right)Aπ,γ(st?,at?) 已經(jīng)可以做到在保持無偏差的情況下,盡可能地降低方差值。如果我們能通過學(xué)習(xí)得到一個完美的優(yōu)勢函數(shù),模型就可以得到很好的表現(xiàn)。但實際中直接學(xué)習(xí)優(yōu)勢函數(shù)比較困難,我們往往需要組合其他函數(shù)得到優(yōu)勢函數(shù),同時還需要考慮偏差和方差對模型的影響,為此我們給出了一個定義: γ\gammaγ -just。當(dāng)一個函數(shù) A^t\hat{A}_{t}A^t? 滿足 γ\gammaγ -just 條件時,它就滿足下面的公式:
Es0,a0,…~τ[A^t(s0:∞,a0:∞)?θlog?πθ(at∣st)]=Es0,a0,…~τ[Aπ,γ(st,at)?θlog?πθ(at∣st)]E_{s_{0}, a_{0}, \ldots \sim \tau}\left[\hat{A}_{t}\left(s_{0: \infty}, a_{0: \infty}\right) \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]=E_{s_{0}, a_{0}, \ldots \sim \tau}\left[A^{\pi, \gamma}\left(s_{t}, a_{t}\right) \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]Es0?,a0?,…~τ?[A^t?(s0:∞?,a0:∞?)?θ?logπθ?(at?∣st?)]=Es0?,a0?,…~τ?[Aπ,γ(st?,at?)?θ?logπθ?(at?∣st?)]
如果我們找到的估計函數(shù)能夠滿足上面的公式,它就可以用來替換優(yōu)勢函數(shù)。經(jīng)過推導(dǎo)分析我們發(fā)現(xiàn), rt+γVπ,γ(st+1)?Vπ,γ(st)r_{t}+\gamma V^{\pi, \gamma}\left(s_{t+1}\right)-V^{\pi, \gamma}\left(s_{t}\right)rt?+γVπ,γ(st+1?)?Vπ,γ(st?) 滿足上述條件,是一個合格的替換 項,于是后面的工作將圍繞它替換進(jìn)行。
令 VVV 為一個近似的值函數(shù),我們定義 δtV=rt+γV(st+1)?V(st),\delta_{t}^{V}=r_{t}+\gamma V\left(s_{t+1}\right)-V\left(s_{t}\right),δtV?=rt?+γV(st+1?)?V(st?), 這里的 δtV\delta_{t}^{V}δtV? 可 以作為 ata_{t}at? 的一個優(yōu)勢價值估計。如果上面的公式中 V=Vπ,γ,V=V^{\pi, \gamma},V=Vπ,γ, 那么 δtV\delta_{t}^{V}δtV? 就是一個 γ\gammaγ -just 的估計函數(shù),它可以得到 Aπ,γA^{\pi, \gamma}Aπ,γ 的一個無偏估計:
Est+1[δtVπ,γ]=Est+1[rt+γVπ,γ(st+1)?Vπ,γ(st)]=Est+1[Qπ,γ(st,at)?Vπ,γ(st)]=Aπ,γ(st,at)\begin{aligned} E_{\boldsymbol{s}_{t+1}}\left[\boldsymbol{\delta}_{t}^{V^{\pi, \gamma}}\right] &=E_{\boldsymbol{s}_{t+1}}\left[\boldsymbol{r}_{t}+\gamma V^{\pi, \gamma}\left(s_{t+1}\right)-V^{\pi, \gamma}\left(s_{t}\right)\right] \\ &=E_{s_{t+1}}\left[Q^{\pi, \gamma}\left(s_{t}, \boldsymbol{a}_{t}\right)-V^{\pi, \gamma}\left(s_{t}\right)\right]=A^{\pi, \gamma}\left(\boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right) \end{aligned} Est+1??[δtVπ,γ?]?=Est+1??[rt?+γVπ,γ(st+1?)?Vπ,γ(st?)]=Est+1??[Qπ,γ(st?,at?)?Vπ,γ(st?)]=Aπ,γ(st?,at?)?
接下來我們考慮 nnn 步的優(yōu)勢函數(shù)估計,并用 A^t(k)\hat{A}_{t}^{(k)}A^t(k)? 表示,可以得到
A^t(1)=δtV=?V(st)+rt+γV(st+1)A^t(2)=δtV+γδt+1V=?V(st)+rt+γV(st+1)+γ(?V(st+1)+rt+1+γV(st+2))=?V(st)+rt+γrt+1+γ2V(st+2)\begin{array}{l} \hat{A}_{t}^{(1)}=\delta_{t}^{V}=-V\left(s_{t}\right)+r_{t}+\gamma V\left(s_{t+1}\right) \\ \hat{A}_{t}^{(2)}=\delta_{t}^{V}+\gamma \delta_{t+1}^{V} \\ =-V\left(s_{t}\right)+r_{t}+\gamma V\left(s_{t+1}\right)+\gamma\left(-V\left(s_{t+1}\right)+r_{t+1}+\gamma V\left(s_{t+2}\right)\right) \\ =-V\left(s_{t}\right)+r_{t}+\gamma r_{t+1}+\gamma^{2} V\left(s_{t+2}\right) \end{array} A^t(1)?=δtV?=?V(st?)+rt?+γV(st+1?)A^t(2)?=δtV?+γδt+1V?=?V(st?)+rt?+γV(st+1?)+γ(?V(st+1?)+rt+1?+γV(st+2?))=?V(st?)+rt?+γrt+1?+γ2V(st+2?)?
依此類推,可以得到
A^t(∞)=∑l=0∞γlδt+lV=?V(st)+rt+γrt+1+?+γkrt+k+?\hat{A}_{t}^{(\infty)}=\sum_{l=0}^{\infty} \gamma^{l} \delta_{t+l}^{V}=-V\left(s_{t}\right)+r_{t}+\gamma \boldsymbol{r}_{t+1}+\cdots+\gamma^{k} \boldsymbol{r}_{t+k}+\cdots A^t(∞)?=l=0∑∞?γlδt+lV?=?V(st?)+rt?+γrt+1?+?+γkrt+k?+?
我們知道 γ\gammaγ 是一個小于 1 的數(shù),隨著 kkk 趨近于無窮大,最終 γ∞V(st+∞)→0\gamma^{\infty} V\left(s_{t+\infty}\right) \rightarrow 0γ∞V(st+∞?)→0, 所 以 A^t(∞)\hat{A}_{t}^{(\infty)}A^t(∞)? 這一項相當(dāng)于用蒙特卡羅法對優(yōu)勢函數(shù)進(jìn)行估計。此時我們看到,隨著估計步數(shù)的增加,估計值的偏差逐漸變小,方差逐漸變大。如果我們能將這些估計值同時考慮在內(nèi),是就可以在偏差和方差之間找到更好的平衡。
A^tGAE(γ,λ)=(1?λ)(A^t(1)+λA^t(2)+λ2A^t(3)+?)=(1?λ)(δtV+λ(δtV+δt+1V)+λ2(δtV+γδt+1V+γ2δt+2V)+?)=(1?λ)(δtV(1+λ+λ2+?)+γδt+1V(λ+λ2+λ3+?)+γ2δt+2V(λ2+λ3+λ4+?)+?)=(1?λ)(δtV(11?λ)+γδt+1V(λ1?λ)+γ2δt+2V(λ21?λ)+?)=∑l=0∞(γλ)lδt+lV\begin{aligned} \hat{A}_{t}^{\mathrm{GAE}(\gamma, \lambda)} &=(1-\lambda)\left(\hat{A}_{t}^{(1)}+\lambda \hat{A}_{t}^{(2)}+\lambda^{2} \hat{A}_{t}^{(3)}+\cdots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}+\lambda\left(\delta_{t}^{V}+\delta_{t+1}^{V}\right)+\lambda^{2}\left(\delta_{t}^{V}+\gamma \delta_{t+1}^{V}+\gamma^{2} \delta_{t+2}^{V}\right)+\cdots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}\left(1+\lambda+\lambda^{2}+\cdots\right)+\gamma \delta_{t+1}^{V}\left(\lambda+\lambda^{2}+\lambda^{3}+\cdots\right)\right.\\ &\left.+\gamma^{2} \delta_{t+2}^{V}\left(\lambda^{2}+\lambda^{3}+\lambda^{4}+\cdots\right)+\cdots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}\left(\frac{1}{1-\lambda}\right)+\gamma \delta_{t+1}^{V}\left(\frac{\lambda}{1-\lambda}\right)+\gamma^{2} \delta_{t+2}^{V}\left(\frac{\lambda^{2}}{1-\lambda}\right)+\cdots\right) \\ &=\sum_{l=0}^{\infty}(\gamma \lambda)^{l} \delta_{t+l}^{V} \end{aligned} A^tGAE(γ,λ)??=(1?λ)(A^t(1)?+λA^t(2)?+λ2A^t(3)?+?)=(1?λ)(δtV?+λ(δtV?+δt+1V?)+λ2(δtV?+γδt+1V?+γ2δt+2V?)+?)=(1?λ)(δtV?(1+λ+λ2+?)+γδt+1V?(λ+λ2+λ3+?)+γ2δt+2V?(λ2+λ3+λ4+?)+?)=(1?λ)(δtV?(1?λ1?)+γδt+1V?(1?λλ?)+γ2δt+2V?(1?λλ2?)+?)=l=0∑∞?(γλ)lδt+lV??
我們發(fā)現(xiàn)這個公式的最終形式比較簡潔,雖然我們引人了一個新的超參數(shù),但是公式并沒有復(fù)雜太多。此時我們的估計值在偏差和方差方面得到了更好的平衡,我們可以分別計算 λ\lambdaλ 等于 0 和 1 時的值
GAE?(γ,0):A^t:=δt=rt+γv(st+1)?v(st)GAE?(γ,1):A^t:=∑l=0∞γlδt+l=sum?t=0∞γlrt+l?v(st)\begin{array}{lrl} \operatorname{GAE}(\gamma, 0): & \hat{A}_{t}:=\delta_{t} & =r_{t}+\gamma v\left(s_{t+1}\right)-v\left(s_{t}\right) \\ \operatorname{GAE}(\gamma, 1): & \hat{A}_{t}:=\sum_{l=0}^{\infty} \gamma^{l} \delta_{t+l} & =\operatorname{sum}_{t=0}^{\infty} \gamma^{l} r_{t+l}-v\left(s_{t}\right) \end{array} GAE(γ,0):GAE(γ,1):?A^t?:=δt?A^t?:=∑l=0∞?γlδt+l??=rt?+γv(st+1?)?v(st?)=sumt=0∞?γlrt+l??v(st?)?
可以看出,當(dāng) λ=0\lambda=0λ=0 時,算法等同于計算 TD-Error,這是一個方差較低但偏差較高的算法;
當(dāng) λ=1\lambda=1λ=1 時,算法變成蒙特卡羅目標(biāo)值和價值估計的差,這是一個偏差較低但方差較高的算法。我們可以通過調(diào)整 λ\lambdaλ 值使模型在兩者之間得到更好的平衡。因此,
我們可以用它代替前面公式中的優(yōu)勢函數(shù),此時計算的公式就變?yōu)?br /> ?θJ(θ)=Es,a~τ[∑t=0∞A^tGAE(γ,λ)?θlog?πθ(at∣st)]\nabla_{\theta} J(\theta)=E_{s, a \sim \tau}\left[\sum_{t=0}^{\infty} \hat{A}_{t}^{\mathrm{GAE}(\gamma, \lambda)} \nabla_{\theta} \log \pi_{\theta}\left(\boldsymbol{a}_{t} \mid s_{t}\right)\right] ?θ?J(θ)=Es,a~τ?[t=0∑∞?A^tGAE(γ,λ)??θ?logπθ?(at?∣st?)]
當(dāng)時第一次看GAE的時候很不理解為什么GAE選定了 δtV=rt+γV(st+1)?V(st)\delta_{t}^{V}=r_{t}+\gamma V\left(s_{t+1}\right)-V\left(s_{t}\right)δtV?=rt?+γV(st+1?)?V(st?)這種形式,后面看到吳恩達(dá)老師1998年reward shaping的論文,在做reward shaping的時候?qū)eward加上一個勢能函數(shù)的差值就保障了加入reward shaping之后策略沒有變壞:
r~(s,a,s′)=r(s,a,s′)+γΦ(s′)?Φ(s)\tilde{r}\left(s, a, s^{\prime}\right)=r\left(s, a, s^{\prime}\right)+\gamma \Phi\left(s^{\prime}\right)-\Phi(s) r~(s,a,s′)=r(s,a,s′)+γΦ(s′)?Φ(s)
感覺GAE就是將V函數(shù)替代r函數(shù)的一種操作,也就是說GAE是一種更加“長視”的reward shaping的方法?不知道這么理解對不對,歡迎大家討論。
上一篇:強化學(xué)習(xí)的學(xué)習(xí)之路(四十七)2021-02-16 TRPO實現(xiàn)策略上的單調(diào)提升(Monotonic Improvement with TRPO )
下一篇:強化學(xué)習(xí)的學(xué)習(xí)之路(四十九)2021-02-18基于GAE和TRPO的值函數(shù)優(yōu)化
總結(jié)
以上是生活随笔為你收集整理的强化学习的学习之路(四十八)2021-02-17 GAE(Generalized Advantage Estimation)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 向上滚动的文字的淡入淡出效果
- 下一篇: vbs弹窗