机器学习(三十四)——策略梯度
策略梯度
價(jià)值函數(shù)可以進(jìn)行近似的參數(shù)化表達(dá),策略本身也同樣可以函數(shù)化、參數(shù)化:
πθ(s,a)=P[a∣s,θ]\pi_\theta(s,a)=P[a | s, \theta]πθ?(s,a)=P[a∣s,θ]
所謂函數(shù)化是指,通過(guò)一個(gè)概率分布函數(shù)πθ(s,a)\pi_\theta(s,a)πθ?(s,a),來(lái)表示每一步的最優(yōu)策略,在每一步根據(jù)該概率分布進(jìn)行action采樣,獲得當(dāng)前的最佳a(bǔ)ction取值。顯然概率越高的a,就是該策略最傾向的a。
顯然,生成action的過(guò)程,本質(zhì)上是一個(gè)隨機(jī)過(guò)程;最后學(xué)習(xí)到的策略,也是一個(gè)隨機(jī)策略(stochastic policy).
而策略函數(shù)的參數(shù)化就和價(jià)值函數(shù)的參數(shù)化類似了,無(wú)非是用較少的參數(shù),來(lái)表示巨大的狀態(tài)空間而已。
基于策略學(xué)習(xí)的優(yōu)點(diǎn):
-
基于策略的學(xué)習(xí)可能會(huì)具有更好的收斂性,這是因?yàn)榛诓呗缘膶W(xué)習(xí)雖然每次只改善一點(diǎn)點(diǎn),但總是朝著好的方向在改善;但是上講提到有些價(jià)值函數(shù)在后期會(huì)一直圍繞最優(yōu)價(jià)值函數(shù)持續(xù)小的震蕩而不收斂。
-
在對(duì)于那些擁有高維度或連續(xù)狀態(tài)空間來(lái)說(shuō),使用基于價(jià)值函數(shù)的學(xué)習(xí)在得到價(jià)值函數(shù)后,制定策略時(shí),需要比較各種行為對(duì)應(yīng)的價(jià)值大小,這樣如果行為空間維度較高或者是連續(xù)的,則從中比較得出一個(gè)有最大價(jià)值函數(shù)的行為這個(gè)過(guò)程就比較難了,這時(shí)候使用基于策略的學(xué)習(xí)就高效的多。
連續(xù)行為空間內(nèi)的action對(duì)應(yīng)一個(gè)具體的數(shù)值,這個(gè)數(shù)值可以從上述的策略分布中隨機(jī)采樣產(chǎn)生。因此策略學(xué)習(xí)天生支持連續(xù)行為空間。
-
能夠?qū)W到一些隨機(jī)策略。這一點(diǎn)后文會(huì)詳述。
-
有時(shí)候計(jì)算價(jià)值函數(shù)非常復(fù)雜。比如當(dāng)小球從從空中某個(gè)位置落下你需要左右移動(dòng)接住時(shí),計(jì)算小球在某一個(gè)位置時(shí)采取什么行為的價(jià)值是很難得;但是基于策略就簡(jiǎn)單許多,你只需要朝著小球落地的方向移動(dòng)修改策略就行。
缺點(diǎn):
-
容易收斂到局部最優(yōu),而非全局最優(yōu)。
-
因?yàn)榛趦r(jià)值函數(shù)的策略決定每次都是推促個(gè)體去選擇一個(gè)最大價(jià)值的行為;但是基于策略的,更多的時(shí)候策略的選擇時(shí)僅會(huì)在策略某一參數(shù)梯度上移動(dòng)一點(diǎn)點(diǎn),使得整個(gè)的學(xué)習(xí)比較平滑,因此不夠高效。
隨機(jī)策略
隨機(jī)策略有時(shí)是最優(yōu)策略。對(duì)于石頭剪刀布的游戲,只要一方有一個(gè)確定性的策略,就會(huì)被對(duì)手抓住進(jìn)而整體上輸?shù)簟_@個(gè)時(shí)候最好的策略就是隨機(jī)選擇每次出法,以得到最大可能的總體獎(jiǎng)勵(lì)。
以上面的Gridworld圖為例,如果我們用某一個(gè)格子的某個(gè)方向是否有墻擋住來(lái)描述格子狀態(tài)的話,就會(huì)發(fā)生灰色格子的狀態(tài)是一樣的情況,這就是所謂的狀態(tài)重名(Aliased)。
在這種情況下,如果采用確定性的策略話,在個(gè)體處于無(wú)論哪個(gè)灰色格子時(shí),都只能選取相同的行為。假設(shè)個(gè)體現(xiàn)在學(xué)到了一個(gè)價(jià)值函數(shù),在這個(gè)價(jià)值函數(shù)里狀態(tài)就是基于上述特征的參數(shù)化表示,此時(shí)當(dāng)個(gè)體處在灰色格子中,如果采取的是greedy執(zhí)行的方式,價(jià)值函數(shù)給出的策略要么都是向東,要么都是向西。如果是向西,那么當(dāng)個(gè)體處在左側(cè)灰色格子時(shí),它將一直(greedy)或很長(zhǎng)時(shí)間(?\epsilon?-greedy)徘徊在長(zhǎng)廊左側(cè)兩個(gè)格子之間而無(wú)法到達(dá)有錢袋子的格子,因而很長(zhǎng)時(shí)間得不到獎(jiǎng)勵(lì)。
當(dāng)發(fā)生狀態(tài)重名情況時(shí),隨機(jī)策略將會(huì)優(yōu)于確定性的策略。之前的理論告訴我們,對(duì)于任何MDP總有一個(gè)確定性的最優(yōu)策略。不過(guò)那是針對(duì)狀態(tài)可完美觀測(cè)、或者使用的特征可以完美描述狀態(tài)的情況下的。當(dāng)發(fā)生狀態(tài)重名無(wú)法區(qū)分,或者使用的近似函數(shù)無(wú)法對(duì)狀態(tài)完美描述時(shí),個(gè)體得到的狀態(tài)信息等效于部分觀測(cè)的環(huán)境信息,這時(shí)問(wèn)題將不具備Markov性。而此時(shí)的最優(yōu)策略,也不再是確定性的。
策略目標(biāo)函數(shù)(Policy Objective Functions)
首先,我們看看如何評(píng)價(jià)一個(gè)策略的好壞。
- Start value:
J1(θ)=Vπθ(s1)=Eπθ[v1]J_1(\theta)=V^{\pi_\theta}(s_1)=E_{\pi_\theta}[v_1]J1?(θ)=Vπθ?(s1?)=Eπθ??[v1?]
上式表示在能夠產(chǎn)生完整Episode的環(huán)境下,從狀態(tài)s1s_1s1?開(kāi)始,直到結(jié)束狀態(tài)所能獲得的累計(jì)獎(jiǎng)勵(lì)。在這種情況下,由于整個(gè)Episode的狀態(tài)、路徑都是確定的,因此獎(jiǎng)勵(lì)也是確定的。我們需要做的只是最大化start value,以找到最佳路徑(也就是最佳策略)。
- Average Value:
JavV(θ)=∑sdπθ(s)Vπθ(s)J_{avV}(\theta)=\sum_s d^{\pi_\theta}(s)V^{\pi_\theta}(s)JavV?(θ)=s∑?dπθ?(s)Vπθ?(s)
對(duì)于連續(xù)環(huán)境條件,不存在一個(gè)開(kāi)始狀態(tài),這個(gè)時(shí)候可以使用average value。上式中的dπθ(s)d^{\pi_\theta}(s)dπθ?(s)表示πθ\pi_\thetaπθ?對(duì)應(yīng)的MDP過(guò)程的Markov chain的穩(wěn)態(tài)分布。
- Average reward per time-step:
JavR(θ)=∑sdπθ(s)∑aπθ(s,a)Rs,aJ_{avR}(\theta)=\sum_s d^{\pi_\theta}(s)\sum_a\pi_\theta(s,a)R_{s,a}JavR?(θ)=s∑?dπθ?(s)a∑?πθ?(s,a)Rs,a?
上式表示每一個(gè)time-step在各種情況下所能得到的平均獎(jiǎng)勵(lì)。
當(dāng)然了,在很多情況下,我們未必可以得到一個(gè)真實(shí)的獎(jiǎng)勵(lì)值,這時(shí)使用相關(guān)函數(shù)的估計(jì)值作為獎(jiǎng)勵(lì)值即可。
策略優(yōu)化(Policy Optimisation)
主要分為兩大類:
1.非gradient算法。
- Hill climbing
- Simplex / amoeba / Nelder Mead
- Genetic algorithms
2.gradient算法。
- Gradient descent
- Conjugate gradient
- Quasi-newton
一般來(lái)說(shuō),gradient算法的優(yōu)化效率較高,因此本文只討論gradient算法。
我們可以仿照ML中的梯度優(yōu)化算法,定義策略的梯度函數(shù):
Δθ=α?θJ(θ)\Delta\theta=\alpha\nabla_\theta J(\theta)Δθ=α?θ?J(θ)
其中,
?θJ(θ)=(?J(θ)?θ1??J(θ)?θn)\nabla_\theta J(\theta)=\begin{pmatrix} \frac{\partial J(\theta)}{\partial \theta_1} \\ \vdots \\ \frac{\partial J(\theta)}{\partial \theta_n} \end{pmatrix}?θ?J(θ)=??????θ1??J(θ)???θn??J(θ)???????
然而,梯度函數(shù)有的時(shí)候并不簡(jiǎn)單,也許并不可微。這時(shí)可以使用有限差分法:
?J(θ)?θk≈J(θ+?uk)?J(θ)?\frac{\partial J(\theta)}{\partial \theta_k}\approx \frac{J(\theta + \epsilon u_k)-J(\theta)}{\epsilon}?θk??J(θ)?≈?J(θ+?uk?)?J(θ)?
這里的uku_kuk?是第k個(gè)元素為1,其余元素為0的單位向量。
有限差分法簡(jiǎn)單,不要求策略函數(shù)可微分,適用于任意策略;但有噪聲,且大多數(shù)時(shí)候不高效。
Monte-Carlo Policy Gradient
?θπθ(s,a)=πθ(s,a)?θπθ(s,a)πθ(s,a)=πθ(s,a)?θlog?πθ(s,a)\nabla_\theta \pi_\theta(s,a) = \pi_\theta(s,a)\frac{\nabla_\theta \pi_\theta(s,a)}{\pi_\theta(s,a)}=\pi_\theta(s,a) \nabla_\theta \log \pi_\theta(s,a)?θ?πθ?(s,a)=πθ?(s,a)πθ?(s,a)?θ?πθ?(s,a)?=πθ?(s,a)?θ?logπθ?(s,a)
上式一般被稱作Likelihood ratios,這里使用到了一個(gè)公式:dlog?(y)=dy/y\mathrmozvdkddzhkzd\log(y)=\mathrmozvdkddzhkzdy/ydlog(y)=dy/y
我們定義Score function為:?θlog?πθ(s,a)\nabla_\theta \log \pi_\theta(s,a)?θ?logπθ?(s,a)
下面討論幾種常見(jiàn)的策略。
Softmax Policy
Softmax Policy適用于離散行為空間,它把行為權(quán)重看成是多個(gè)特征在一定權(quán)重下的線性代數(shù)和:?(s,a)Tθ\phi(s,a)^T\theta?(s,a)Tθ,則采取某一行為的概率為:
πθ(s,a)∝e?(s,a)Tθ\pi_\theta(s,a)\propto e^{\phi(s,a)^T\theta}πθ?(s,a)∝e?(s,a)Tθ
相應(yīng)的Score function為:
?θlog?πθ(s,a)=?(s,a)?Eπθ[?(s,?)]\nabla_\theta \log \pi_\theta(s,a)=\phi(s,a)-E_{\pi_\theta}[\phi(s,\cdot)]?θ?logπθ?(s,a)=?(s,a)?Eπθ??[?(s,?)]
上式中,等號(hào)右邊第一部分是采取某行為的Score,第二部分是當(dāng)前狀態(tài)的期望分值。
Gaussian Policy
Gaussian Policy適用于連續(xù)行為空間。比如,如果控制機(jī)器人行走要調(diào)整流經(jīng)某個(gè)電機(jī)的電流值,而這個(gè)電流值是連續(xù)值。
它用一個(gè)正態(tài)分布表示策略:a~N(μ(s),σ2)a\sim N(\mu(s), \sigma^2)a~N(μ(s),σ2),其中μ(s)=?(s)Tθ\mu(s)=\phi(s)^T\thetaμ(s)=?(s)Tθ。
相應(yīng)的Score function為:
?θlog?πθ(s,a)=(a?μ(s))?(s)σ2\nabla_\theta \log \pi_\theta(s,a)=\frac{(a-\mu(s))\phi(s)}{\sigma^2}?θ?logπθ?(s,a)=σ2(a?μ(s))?(s)?
下面我們用一個(gè)圖來(lái)演示一下相關(guān)步驟。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-UI1YvCTe-1571621618479)(/images/img3/pg.png)]
左圖的藍(lán)點(diǎn)表示采樣X(jué),箭頭指示該點(diǎn)的梯度方向,既然是正態(tài)分布,這些箭頭顯然是遠(yuǎn)離中心的。中圖表示,X對(duì)應(yīng)的Score function。我們根據(jù)Score function更新參數(shù)(沿著綠色箭頭方向,或者沿著紅色箭頭的反方向)。最終得到右圖中的新的正態(tài)分布。
從貝葉斯學(xué)習(xí)的角度來(lái)看,左圖相當(dāng)于先驗(yàn)分布,而中圖相當(dāng)于后驗(yàn)分布。
參考:
https://karpathy.github.io/2016/05/31/rl/
Deep Reinforcement Learning: Pong from Pixels
Policy Gradient Theorem
One-Step MDP是一類特殊的MDP:它從任意狀態(tài)開(kāi)始,只執(zhí)行一次動(dòng)作,然后就結(jié)束了。
J(θ)=Eπθ[r]=∑s∈Sd(s)∑a∈Aπθ(s,a)Rs,aJ(\theta)=E_{\pi_\theta}[r]=\sum_{s\in S} d(s)\sum_{a\in A}\pi_\theta(s,a)R_{s,a}J(θ)=Eπθ??[r]=s∈S∑?d(s)a∈A∑?πθ?(s,a)Rs,a?
?θJ(θ)=∑s∈Sd(s)∑a∈A?θlog?πθ(s,a)Rs,a=Eπθ[?θlog?πθ(s,a)r]\nabla_\theta J(\theta)=\sum_{s\in S} d(s)\sum_{a\in A}\nabla_\theta \log \pi_\theta(s,a)R_{s,a}=E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)r]?θ?J(θ)=s∈S∑?d(s)a∈A∑??θ?logπθ?(s,a)Rs,a?=Eπθ??[?θ?logπθ?(s,a)r]
One-Step MDP的相關(guān)結(jié)論可以擴(kuò)展到multi-step MDP,只需要將即時(shí)獎(jiǎng)勵(lì)r,替換為長(zhǎng)期獎(jiǎng)勵(lì)(一般使用其估計(jì)函數(shù)Qπ(s,a)Q^{\pi}(s,a)Qπ(s,a))即可。
在監(jiān)督學(xué)習(xí)里,當(dāng)前狀態(tài)、行為的好壞由監(jiān)督信息告知;而在強(qiáng)化學(xué)習(xí)里,則需要通過(guò)價(jià)值函數(shù)來(lái)估計(jì)當(dāng)前狀態(tài)行為的好壞。
我們將Policy Gradient應(yīng)用到MC算法上,則得到如下流程:
Initialise θ\thetaθ arbitrarily
for each episode {s1,a1,r2,…,sT?1,aT?1,rT}~πθ\{s_1,a_1,r_2,\dots,s_{T?1},a_{T?1},r_T\}\sim \pi_\theta{s1?,a1?,r2?,…,sT?1?,aT?1?,rT?}~πθ? {
for t = 1 to T?1T?1T?1 {
θ←θ+α?θlog?πθ(st,at)vt\theta \leftarrow \theta + \alpha\nabla_\theta \log \pi_\theta (s_t , a_t )v_tθ←θ+α?θ?logπθ?(st?,at?)vt?
}
}
return θ\thetaθ
在基于策略的學(xué)習(xí)算法中,算法挑選策略的時(shí)候不需使用?\epsilon?-貪婪搜索,策略是直接根據(jù)參數(shù)θ\thetaθ得到的。同時(shí)在對(duì)策略參數(shù)更新時(shí)有一個(gè)學(xué)習(xí)率α\alphaα,它體現(xiàn)了在梯度方向上更新參數(shù)θ的步長(zhǎng)(step size),一般的我們?cè)诟聟?shù)時(shí)是按梯度方向只更新由α\alphaα確定的一定量。
打個(gè)比方,當(dāng)前策略在更新時(shí)提示梯度方向傾向于選擇“向左”的行為,那么在更新策略參數(shù)時(shí),可以朝著向左的方向更新一定的值,如果這個(gè)α\alphaα取值增大,則導(dǎo)致決策朝著更容易選擇“向左”的行為傾斜,這其實(shí)就相當(dāng)于沒(méi)有探索的貪婪決策行為。而只要學(xué)習(xí)在持續(xù),就有可能因?yàn)樘荻茸兓鴩L試更多的行為,這一過(guò)程中參數(shù)α\alphaα控制了策略更新的平滑度。
如果基于價(jià)值函數(shù)制定策略,則使用查表(table look-up)的方式可以保證收斂到全局最優(yōu)解。即使使用的是直接基于策略的學(xué)習(xí)方法;但是,如果使用的是通用化的近似函數(shù)表示方法,比如神經(jīng)網(wǎng)絡(luò)等,則無(wú)論是基于價(jià)值函數(shù),還是基于策略,都可能陷入局部最優(yōu)解。
參考
https://zhuanlan.zhihu.com/p/54825295
基于值和策略的強(qiáng)化學(xué)習(xí)入坑
https://blog.csdn.net/gsww404/article/details/80705950
策略梯度(Policy Gradient)
總結(jié)
以上是生活随笔為你收集整理的机器学习(三十四)——策略梯度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 机器学习(三十三)——价值函数的近似表示
- 下一篇: 机器学习(三十五)——Actor-Cri