強化學習

 

強化學習是從直接的實驗中進行學習。Reinforcement learning is learning from direct experiments.

The goal of the learner is to find out the optimal behavior or actions to maximize the reward or the cost function。


強化學習中,由於一階馬爾可夫鏈的限制,agent有時會對相同的狀態有相同的表述,並且期望損失會重複計算,學術上稱爲感知混疊。(perceptual aliasing)解決方案可以是,採取比較多的過去信息,或者是加入注意力agent,在進行觀測時,進行一定的選擇。

A more concrete definition of learning agents:

馬爾可夫決策過程(MDP)是強化學習的基礎數學模型。

 

馬爾可夫決策過程採用動態規劃可以較好的解決。但是,動態規劃依賴於精確的模型。而強化學習的出發點是不需要精確的模型的。因此,從動態規劃過渡到強化學習一種有效的方法是蒙特卡洛仿真。蒙特卡洛仿真實際上是代替了動態規劃。

 

 

 

Conventional method: TD(λ),一階時間差分算法。

 

時間差分方法是給定策略條件下,計算期望成本的一種方法。Although it can be used for the learning of action policies through the use of model-based iterative versions of the Policy Iteration algorithm, we would like to have a computational method for a direct model-free learning of optimal actions.

 

Q learning:是一種動作策略(action policy)學習迭代方法,並且給出了一種新的動作價值測度Q值:

 

理解:首先是對一個函數求期望,期望所針對的概率是什麼?目前猜測是轉移概率。函數是什麼?有(1)給定當前狀態和動作產生的獎勵值:(2)給定下一步狀態的最優的成本值,並加上一個折扣。表明:當前的reward和接下來狀態的最小成本作爲Q值。第二項就是一個期望,對未來一個狀態的成本期望。但是這裏V*是全局最優的cost value函數,意味着

是最優的策略。因此更進一步的,利用Bellman等式進行展開:

 

這個等式表明,給定當前狀態,全局最優的cost value函數爲當前狀態的最小化Q值。

因此,結合Bellman不等式,可以總結出Q-learning的學習規則:

Q值有一個非常重好的性質:他們是策略無關的或者是策略獨立的,因此最優的動作optimal action能夠被給出:

可以發現,Q-learning其實都在利用最優的策略。因爲最大化Q值,就是在尋找最優的策略。

 

 

其中

Q-learning在學習過程中,實際上要對每一種狀態求一個加權和,也就是期望。如果沒種狀態的轉移概率都是相等的,那麼即是找出轉移到下一個Q值最大的狀態。這就是一個學習或者是訓練的過程。Q-learning是一種tabular learning,收斂相對較慢。

V值對應的是長期的價值判斷,而獎勵對應的是短期的瞬時的感受。類比:人能對於某件事情感到即時的痛苦和快樂,而人長期形成的價值判斷就對應的V值,其是長期的富有遠見的,不是針對某一種獨特的狀態。可能當前狀態的reward值很低,但是其後續的狀態對應的reward值很大,因此V值可能就很大。在選擇狀態時就可能寧可犧牲當前的狀態對應的低狀態值。

V值需要長期的實踐,才能得來。Reward是基本的,而V值是排在第二位的。沒有reward就不可能有V值判斷。在實踐中,我們採取行動不是依據當前的reward,而是根據長期的V值。但是往往V值不容易獲得,需要agent的終身學習。可以毫不誇張的說,強化學習的大部分核心工作都圍繞着有效估計V值展開。

對環境的建模是可選擇的。因此可以將強化學習分爲:基於模型的和model-free的。

Incremental learning是爲了解決內存開銷過大的問題。

原始公式:當前的狀態所採取的動作a所對應的值如下:

很顯然,在實際訓練中,需要存儲很多reward在內存中,這樣的開銷是沒有上界的。因此通常的做法是採取incremental learning的方式,即

Rk表示之前第kth的reward值。對過往的reward進行平均。實際上incremental-learning是一種數學上的變換,可以有效的節省內存空間。

上面的式子可以總結爲下面的強化學習通用的公式:

Agent的目標是最大化長期的累積獎勵,也即是最大化V值函數。

 

動態規劃是解決MDP(有限馬爾可夫過程)的有效方法。但是,馬爾可夫模型依賴於精確的模型,即如果外部環境能夠被精確建模(model-based),並且能夠被較好的離散化,那麼採用DP(動態規劃)就是非常方便的。對於連續的任務,需要將任務進行離散化,此時比較實用帶有折扣的強化學習。此時,DP就可以派上用場了。但是,在實際中,DP用的還是不多,因爲其複雜度比較高,對內存開銷比較大。

In fact, all of these methods can be viewed as attempts to achieve much the same effect as DP, only with less computation and without assuming a perfect model of the environment.

 

但是DP產生的算法利用策略迭代,其非常耗時。並且不容易收斂。在實際中,要進行合適的截斷,即在保證最優性的前提下,做合理的近似。比如,迭代時,不訪問所有的狀態,而是僅僅採用緊接下來的一個狀態,這樣就能降低複雜度。這種方法也被稱爲值迭代策略。

策略迭代,是基於所有的策略的期望。

值迭代,進行了一階截斷,不需要對所有的策略進行期望。


Monte Carlo 方法估計值函數

Monte Carlo方法是解決MDP問題比較高效的方法,其與DP相比較,複雜度更低。這種優勢的來源在於:(1)Monte Carlo方法每次在更新值函數,或者是從某個狀態出發,達到最終狀態的軌跡只與出發狀態相關,而不用管每個episode中的其他狀態。而DP則是一顆樹,每個action都會嘗試,每個episode下的每個狀態都會更新,這樣就會造成較大的複雜度。MC的對感興趣的狀態的學習過程更像一條樹枝,其他的狀態不理睬。    

狀態值函數V的估計與環境的模型是否已知有關係。With a model, state values alone are sufficient to determine a policy  (給狀態state,就能給出動作action); one simply looks ahead one step and chooses whichever action leads to the best combination of reward and next state, as we did in the chapter on DP. 有具體的模型,可以根據狀態直接設計出動作,因爲模型是已知的,就能知道哪種動作肯定是最優的。

Without a model, state values alone are not sufficient to determine a policy. One must explicitly estimate the value of each action in order for the values to be useful in suggesting a policy. 而當模型未知時,需要對每個action的值函數進行評估,從而採取最有用的動作。

TD, DP and MC are three key components in RL. 他們針對的場景各不相同,總的來說,DP是精確的,但是要已知環境模型。即能根據狀態知道動作的,也就是知道策略函數。而MC和TD是近似的方法,但它們近似的對象各不相同。

首先:MC的方法如下:

他是對Gt的近似,因爲Gt是return,即t時刻之後所有的獎勵的多項式。但我們無法進行無限次學習,只能進行截斷,然後對期望進行平均從而達到近似的效果。

而TD則是對策略值函數進行近似。具體來講,

MC是對上式中的第一行的Gt進行近似,而TD是對最後一行的進行近似,用進行代替。這裏V和v的區別是,v是全局的精確的,V是局部的估計的。但是理論證明,局部最優的V也能滿足bellman等式,達到最優性條件。TD方法是將MC方法和自助DP方法的有機結合。TD的更新公式爲:

。TD(0)的更新策略如下:

可以發現,TD(0)僅僅只估計下一個狀態的,而不考慮一直要到終點狀態。

一般來講,TD比DP好,比MC好。

Sarsa-on-policy TD learning (control)

State-action pair更新公式爲:

算法框架如下:

在每個episode中,每次狀態轉移涉及到一個5元組,即

,這也是Sarsa算法的由來。值得注意的是,這裏大寫的字母都是集合。

 

Q-learning:off-policy TD control

One-step Q learning的更新規則如下:

很顯然,這個Q-learning與策略無關,因爲在更新過程中,最大化Q值用來近似替代最優的q*. 尋找最合適的動作從而採用最大的Q值。

算法框架如下:

注意,這裏的下一個狀態的Q值與SARSA不同,這裏是一個值,僅僅表示某一個狀態和某一個動作對應的Q值。而SARSA(model-dependent)表示的動作action和狀態對應的Q值,動作不需要做優化,因爲動作能根據模型結合狀態直接給出。應該是一個向量。

考慮這樣一個實例:灰色區域爲懸崖,獎勵爲-100,其他的轉移爲-1。Q-learning和SARSA算法表現不一樣。SARSA選擇更加安全的道路,因爲他會考慮所有的動作所帶來的Q值,而Q-learning不會,他只會選擇最大的Q的動作,從而,可以鋌而走險,選擇最快的道路。這種狀況發生的原因是:存在一個誤差概率隨機選擇策略,就可能掉入懸崖。當這種誤差貪心概率趨向於0時,他們就會選擇最快的道路了。此時SARSA和Q-learning性能相同。

 

此後的強化學習模型都是基於TD進行開發,要麼考慮多步數結合MC方法,要麼考慮用值函數代替表格,一種可行的方法是用神經網絡。或者是調加一個模型,可以是神經網絡,從而與動態規劃聯繫起來。

Eligibility traces

Eligibility traces是基本的機制在強化學習中。SARSA和Q-learning都可以結合Eligibility traces提高學習效率。看待這種機制有兩個基本視角:

一個資格軌跡是對某種狀態的訪問或動作的實施的臨時記錄。軌跡標記着滿足資格的經歷學習變化的事件的記憶參數。當Td誤差出現時,只有資格狀態或動作被處罰或受譴責。Thus, eligibility traces help bridge the gap between events and training information. Eligibility traces are a basic mechanism for temporal credit assignment.

n-step TD方法是對one-step方法的擴展。當n等於終止狀態時,那麼就與MC相同了。

具體的V值更新公式爲:

其中n-step reward函數爲

然後,有V值更新公式:

這是一種online的更新策略,雖然需要等n步,但和MC方法還是有本質的不同。

多步方法是對TD(0)和MC之間的一種混合,不要求更新全部的步數,而是採取一個超參數λ來融合這種方法的優點。具體來講,TD(λ)是這樣實現的:首先引入超參數λ,然後對一步的reward函數Gt進入加權,越往後的步權重越小,衰減係數爲λ,初始權重爲1-λ。總的權重求和爲1. 具體如下圖所示:

實際上,這種TD(λ)的方式是對one-step方式的擴展,動機是結合MC方法。不難發現,當λ爲1時,就是MC方法了。當λ爲0時,就是one-step方法了,包括SARSA和Q-learning。

在一個episode中,每一步的狀態存儲圖如下:

這是一種online的更新策略,雖然需要等n步,但和MC方法還是有本質的不同。

這種前向的視角,是關注當前的reward,而遠處的reward值權重比較小。-return函數爲:

 

增量爲:

這種-retur算法是前向視角的資格軌跡算法的基礎。而資格軌跡算法是TD()算法的基礎。不過這種前向視角是非因果的。在實際中,不易實施。

後向視角的資格軌跡算法需要引入一個變量,記爲。在每一步t,未被訪問的狀態的資格軌跡衰減爲:

而對於已被訪問的狀態St,則資格軌跡爲

就相當於當前的狀態出現了TD error後,將回溯,對過去已經訪問的狀態進行打分,讓他們對自己當前error負責。也就是更新他們的V值。t時刻的TD error是

從而線性增量爲:

下圖爲後向視角資格軌跡的示意圖,這種視角是因果的。

One line的後向的資格軌跡TD()算法爲:

值得注意的是,當時,這種方法雖然與MC方法相似,但比MC方法具有更加廣泛的應用場景。因爲他可以處理有折扣的連續任務。

SARSA(λ)只是將TD(λ)進行適當的改進。具體來講,就是將V值用Q值替換,然後相應的引入新的資格軌跡Ets,a. 然後相應的增量更新爲:

其中

具體的算法框架爲(online)

擴展卻沒有那麼直觀。因爲,Q存在探索狀態,即有時候不採取貪心action,測試動作就出現了不連續性,也就沒必要繼續將資格軌跡進行下去。因此,

資格軌跡滿足滿足上述表達式,這是後向視角。因此增量更新爲

算法的基本框架也就能確定了。

的算法框架如下:

總的來講,RL中比較重要的算法分爲SARSA和Q-learning,分別爲on-policy和off-policy的。他們的區別是:前者是基於模型的,後者是不需要模型的。對於一般的物理系統而言,模型一般都是已知的。在已知模型的基礎上,給定狀態,就能確定動作。這可以加快強化學習的過程。至於SARSA(λ)和Q(λ)則是針對於連續任務來的。當然我們總可以將連續任務離散化,然後採用SARSA和Q來學習。但是沒有於SARSA(λ)和Q(λ)來的自然。對於連續任務,實際上也是將其劃分爲episodes,然後加入折扣因子。結合增量學習,就能較好的完成控制任務。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章