CS229 Lecture 20
CS229 Lecture 20
POMDPs(Partially Observed MDPs)
Policy search
Reinforce
Pagasus
conclusion
回顧
st+1=Ast+Bat+wts_{t+1}=As_t+Ba_t+w_tst+1?=Ast?+Bat?+wt?
yt=Cst+vty_t=Cs_t+v_tyt?=Cst?+vt?
At+1:at+1=LtstA_{t+1}:a_{t+1}=L_ts_tAt+1?:at+1?=Lt?st?
在LQR問題中,因為噪聲等因素的存在無法觀測到真實狀態(tài)sts_tst?,只能通過混雜著噪聲的觀察狀態(tài)y1,y2,?,yty_1,y_2,\cdots,y_ty1?,y2?,?,yt?來得出下一步的動作。首先需要得出對sts_tst?的最佳估計st∣ts_{t|t}st∣t?,通過Kalman Filter可以得出st∣y1,y2,?,yt~N(st∣t,Σt∣t)s_{t|y_1,y_2,\cdots,y_t}\sim N(s_{t|t},\Sigma_{t|t})st∣y1?,y2?,?,yt??~N(st∣t?,Σt∣t?),然后通過at:=Lt,st∣ta_t:=L_t,s_{t|t}at?:=Lt?,st∣t?。
POMDPs
部分觀測馬爾可夫決策過程定義為一個元組(S,A,Y,{Psa},O,T,T)(S,A,Y,\{P_{sa}\},\mathcal{O},T,T)(S,A,Y,{Psa?},O,T,T),其中YYY是所有可能觀測值的集合,Os\mathcal{O}_sOs?是觀測所屬的分布,每次觀測中在sts_tst?下觀測為yty_tyt?服從yt~Osty_t\sim \mathcal{O}_{st}yt?~Ost?。
Policy search
policysearchpolicy\,\,\,searchpolicysearch 和之前LQR方式不同在于,之前通過最大化值函數(shù)V?V^{\star}V?進而得出最佳的π?\pi^{\star}π?。這里的policysearchpolicy\,\,\,searchpolicysearch是直接對policypolicypolicy進行選取。
定義Π\PiΠ為policypolicypolicy的合集,需要在Π\PiΠ中搜索到好的π\(zhòng)piπ,其中π∈Π\pi\in \Piπ∈Π,這里十分類似于在最前面學習的監(jiān)督學習,在假設集合H\mathcal{H}H中搜索到一個好的假設。
定義一個隨機policypolicypolicy為一個π:S×A→R\pi:S\times A\rightarrow \mathbb{R}π:S×A→R 的函數(shù),這里π(s,a)\pi(s,a)π(s,a)是在狀態(tài)sss下采取動作aaa的概率。注∑π(s,a)=1,π(s,a)≥0\sum\pi(s,a)=1,\,\,\pi(s,a)\ge0∑π(s,a)=1,π(s,a)≥0。
課上使用PolicysearchPolicy\,\,searchPolicysearch的例子:假設一個倒立擺,其中擺與垂線的夾角為?\phi?小車的位置為xxx,現(xiàn)在小車無非兩個選擇向左運動或者向右運動。假設向右運動為a1a_1a1?,向左為a2a_2a2?。假設有:πθ(s,a1)=11+e?θTs,πθ(s,a2)=1?11+e?θTs\pi_{\theta}(s,a_1)=\frac{1}{1+e^{-\theta^Ts}},\,\,\,\pi_{\theta}(s,a_2)=1-\frac{1}{1+e^{-\theta^Ts}}πθ?(s,a1?)=1+e?θTs1?,πθ?(s,a2?)=1?1+e?θTs1?。這里s=[1xx˙??˙]s=\\\left[ \begin{matrix}1 \\ x \\ \dot{x} \\ \phi \\ \dot{\phi} \end{matrix} \right]s=???????1xx˙??˙?????????,θ=[00010]\theta=\left[ \begin{matrix} 0 \\ 0 \\ 0 \\ 1 \\ 0 \end{matrix} \right]θ=???????00010????????,那么p(a=a1)=11+e?θTs=11+e??p(a=a_1)=\frac{1}{1+e^{-\theta^Ts}}=\frac{1}{1+e^{-\phi}}p(a=a1?)=1+e?θTs1?=1+e??1?。下圖就是小車向右運動和夾角?\phi?的關系。例如當夾角為正時,我們需要向右移動以保證倒立擺不倒下。
實際上我們的目標是最大化預期回報max?θE[R(s0,a0)+?+R(sT,at)∣πθ,s0]\max_{\theta}E[R(s_0,a_0)+\dots+R(s_T,a_t)|\pi_{\theta},s_0]maxθ?E[R(s0?,a0?)+?+R(sT?,at?)∣πθ?,s0?]
注:當動作是多個離散的選擇是可以選擇softmaxsoftmaxsoftmax函數(shù),動作是連續(xù)的可以選取動作的密度函數(shù)。
Reinforce algorithm
假設s0s_0s0?是一個固定的初始狀態(tài),我們的期望是:max?θE[R(s0,a0)+?+R(sT,at)∣πθ,s0]\max_{\theta}E[R(s_0,a_0)+\dots+R(s_T,a_t)|\pi_{\theta},s_0]maxθ?E[R(s0?,a0?)+?+R(sT?,at?)∣πθ?,s0?]
其中回報的期望為:
E[R(s0,a0)+?+R(sT,at)∣πθ,s0]=∑s0,a0,s1,?,stp(s0,a0,s1,?,st)[R(s0,a0)+?+R(sT,at)∣πθ,s0]=∑s0,a0,s1,?,stp(s0)πθ(s0,a0)ps0,a0(s1)πθ(s1,ai)?πθ(st,at)[R(s0,a0)+?+R(sT,at)∣πθ,s0]E[R(s_0,a_0)+\dots+R(s_T,a_t)|\pi_{\theta},s_0]\\ =\sum_{s_0,a_0,s_1,\cdots,s_t}p(s_0,a_0,s_1,\cdots,s_t)[R(s_0,a_0)+\dots+R(s_T,a_t)|\pi_{\theta},s_0]\\ =\sum_{s_0,a_0,s_1,\cdots,s_t}p(s_0)\pi_{\theta}(s_0,a_0)p_{s_0,a_0}(s_1)\pi_{\theta}(s_1,a_i)\cdots\pi_{\theta}(s_t,a_t)[R(s_0,a_0)+\dots+R(s_T,a_t)|\pi_{\theta},s_0]E[R(s0?,a0?)+?+R(sT?,at?)∣πθ?,s0?]=s0?,a0?,s1?,?,st?∑?p(s0?,a0?,s1?,?,st?)[R(s0?,a0?)+?+R(sT?,at?)∣πθ?,s0?]=s0?,a0?,s1?,?,st?∑?p(s0?)πθ?(s0?,a0?)ps0?,a0??(s1?)πθ?(s1?,ai?)?πθ?(st?,at?)[R(s0?,a0?)+?+R(sT?,at?)∣πθ?,s0?]
算法的流程為:
LoopLoopLoop??{
???? 抽樣 s0,a0,s1,a1,?,st,ats_0,a_0,s_1,a_1,\cdots,s_t,a_ts0?,a0?,s1?,a1?,?,st?,at?
???? 計算收益payoff=[R(s0,a0)+?+R(sT,at)∣πθ,s0]payoff =[R(s_0,a_0)+\dots+R(s_T,a_t)|\pi_{\theta},s_0]payoff=[R(s0?,a0?)+?+R(sT?,at?)∣πθ?,s0?]
???? 更新θ\thetaθ的方式為:θ:=θ+α[?θπθ(s0,a0)πθ(s0,a0)+?+?θπθ(sT,aT)πθ(sT,aT)]?payoff\theta:=\theta+\alpha[\frac{\nabla_{\theta}{\pi_{\theta}(s_0,a_0)}}{\pi_{\theta}(s_0,a_0)}+\cdots+\frac{\nabla_{\theta}{\pi_{\theta}(s_T,a_T)}}{\pi_{\theta}(s_T,a_T)}]*payoffθ:=θ+α[πθ?(s0?,a0?)?θ?πθ?(s0?,a0?)?+?+πθ?(sT?,aT?)?θ?πθ?(sT?,aT?)?]?payoff
}
上述算法之所以使用梯度上升的方式更新θ\thetaθ見下面推導:
鏈式求導原則
ddθf(θ)g(θ)h(θ)=f′(θ)g(θ)h(θ)+f(θ)g′(θ)h(θ)+f(θ)g(θ)h′(θ)\fracze8trgl8bvbq{d\theta}f(\theta)g(\theta)h(\theta)=f^{'}(\theta)g(\theta)h(\theta)+f(\theta)g^{'}(\theta)h(\theta)+f(\theta)g(\theta)h^{'}(\theta)dθd?f(θ)g(θ)h(θ)=f′(θ)g(θ)h(θ)+f(θ)g′(θ)h(θ)+f(θ)g(θ)h′(θ)
我們的目的是使得期望回報最大因此我們對回報的期望求導:
?θE[payoff]=∑s0,a0,s1,?,st[p(s0)(?θπθ(s0,a0))ps0,a0(s1)πθ(s1,ai)?πθ(st,at)+p(s0)πθ(s0,a0)ps0,a0(s1)(?θπθ(s1,a1))?πθ(st,at)+p(s0)πθ(s0,a0)ps0,a0(s1)πθ(s1,ai)?(?θπθ(st,at))]?payoff=∑s0,a0,s1,?,stp(s0)πθ(s0,a0)ps0,a0(s1)πθ(s1,ai)?πθ(st,at)?[?θπθ(s0,a0)πθ(s0,a0)+?+?θπθ(sT,aT)πθ(sT,aT)]?payoff=∑s0,a0,s1,?,stp(s0,s1,?,st,at)?[?θπθ(s0,a0)πθ(s0,a0)+?+?θπθ(sT,aT)πθ(sT,aT)]?payoff=E[?θπθ(s0,a0)πθ(s0,a0)+?+?θπθ(sT,aT)πθ(sT,aT)]?payoff\nabla_{\theta}E[\,payoff]\\ =\sum_{s_0,a_0,s_1,\cdots,s_t}[p(s_0)(\nabla_{\theta}{\pi_{\theta}(s_0,a_0)})p_{s_0,a_0}(s_1)\pi_{\theta}(s_1,a_i)\cdots\pi_{\theta}(s_t,a_t)+p(s_0)\pi_{\theta}(s_0,a_0)p_{s_0,a_0}(s_1)(\nabla_{\theta}{\pi_{\theta}(s_1,a_1)})\cdots\pi_{\theta}(s_t,a_t)+\\ p(s_0)\pi_{\theta}(s_0,a_0)p_{s_0,a_0}(s_1)\pi_{\theta}(s_1,a_i)\cdots(\nabla_{\theta}\pi_{\theta}(s_t,a_t))]*payoff\\ =\sum_{s_0,a_0,s_1,\cdots,s_t}p(s_0)\pi_{\theta}(s_0,a_0)p_{s_0,a_0}(s_1)\pi_{\theta}(s_1,a_i)\cdots\pi_{\theta}(s_t,a_t)*[\frac{\nabla_{\theta}{\pi_{\theta}(s_0,a_0)}}{\pi_{\theta}(s_0,a_0)}+\cdots+\frac{\nabla_{\theta}{\pi_{\theta}(s_T,a_T)}}{\pi_{\theta}(s_T,a_T)}]*payoff\\ =\sum_{s_0,a_0,s_1,\cdots,s_t}p(s_0,s_1,\cdots,s_t,a_t)*[\frac{\nabla_{\theta}{\pi_{\theta}(s_0,a_0)}}{\pi_{\theta}(s_0,a_0)}+\cdots+\frac{\nabla_{\theta}{\pi_{\theta}(s_T,a_T)}}{\pi_{\theta}(s_T,a_T)}]*payoff\\ =E[\frac{\nabla_{\theta}{\pi_{\theta}(s_0,a_0)}}{\pi_{\theta}(s_0,a_0)}+\cdots+\frac{\nabla_{\theta}{\pi_{\theta}(s_T,a_T)}}{\pi_{\theta}(s_T,a_T)}]*payoff?θ?E[payoff]=s0?,a0?,s1?,?,st?∑?[p(s0?)(?θ?πθ?(s0?,a0?))ps0?,a0??(s1?)πθ?(s1?,ai?)?πθ?(st?,at?)+p(s0?)πθ?(s0?,a0?)ps0?,a0??(s1?)(?θ?πθ?(s1?,a1?))?πθ?(st?,at?)+p(s0?)πθ?(s0?,a0?)ps0?,a0??(s1?)πθ?(s1?,ai?)?(?θ?πθ?(st?,at?))]?payoff=s0?,a0?,s1?,?,st?∑?p(s0?)πθ?(s0?,a0?)ps0?,a0??(s1?)πθ?(s1?,ai?)?πθ?(st?,at?)?[πθ?(s0?,a0?)?θ?πθ?(s0?,a0?)?+?+πθ?(sT?,aT?)?θ?πθ?(sT?,aT?)?]?payoff=s0?,a0?,s1?,?,st?∑?p(s0?,s1?,?,st?,at?)?[πθ?(s0?,a0?)?θ?πθ?(s0?,a0?)?+?+πθ?(sT?,aT?)?θ?πθ?(sT?,aT?)?]?payoff=E[πθ?(s0?,a0?)?θ?πθ?(s0?,a0?)?+?+πθ?(sT?,aT?)?θ?πθ?(sT?,aT?)?]?payoff
在POMDPs也可以使用policysearchpolicy\,\,\,searchpolicysearch,假設有sss的近似值s^\hat{s}s^ (可以通過Kalman Filter 計算s^=st∣t\hat{s}=s_{t|t}s^=st∣t?)。如πθ(s^,a)=11+e?θs^\pi_{\theta}(\hat{s},a)=\frac{1}{1+e^{-\theta \hat{s}}}πθ?(s^,a)=1+e?θs^1?
Pegasus
Pegasus是Policy Evaluation of Gradient And Search Using Scenarios的縮寫。我們一般馬爾可夫的過程是s0?π(s0)s1?π(s1)s2?π(s2)s3??π(sT?1)sTs_0 \stackrel{\pi(s_0)}\longrightarrow s_1 \stackrel{\pi(s_1)}\longrightarrow s_2 \stackrel{\pi(s_2)} \longrightarrow s_3\cdots \stackrel{\pi(s_{T-1})}\longrightarrow s_Ts0??π(s0?)?s1??π(s1?)?s2??π(s2?)?s3???π(sT?1?)?sT?,在實際應用中一般會創(chuàng)建一個模擬來模擬輸入sts_tst?和sts_tst?得到st+1s_{t+1}st+1?的過程,我們一般假設st+1=Ast+Bat+wts_{t+1}=As_t+Ba_t+w_tst+1?=Ast?+Bat?+wt?可以知道每次模擬器生產st+1s_{t+1}st+1?的時候都帶有隨機噪聲,那么當我們在policypolicypolicy搜索時候,如果policypolicypolicy不同且wtw_twt?的噪聲每次還有很大差異就很難找到最優(yōu)的policypolicypolicy,因此此時存在多個變化的量,無法根據(jù)最大回報來得出最佳的policypolicypolicy。因為我們的模擬器因為要模擬噪聲,那么每次都會生成隨機數(shù)來實現(xiàn),即使是相同的策略,得出的回報也會不同。我們需要做的就是在每個場景固定一組隨機數(shù),基于這個隨機數(shù)場景計算各個policypolicypolicy的回報,然后平均多個隨機數(shù)序列場景然后評估出最佳的policypolicypolicy 。這就是Pegasus名字的由來。
一般來說直接的決策(如:自動駕駛、倒立擺)使用policysearchpolicy searchpolicysearch比較好,而對于前面的決策對后續(xù)回報有影響的(如:圍棋、俄羅松方塊)最好選擇值迭代方式找到最佳的policypolicypolicy
注:pegasus 請參見Lecture 20 48分~65分的講解
結論
CS229 2008系列完結!
總結
以上是生活随笔為你收集整理的CS229 Lecture 20的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SOC与SIP小芯片两种IP互联技术
- 下一篇: APP Icon