強化學習是從直接的實驗中進行學習。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,然後加入折扣因子。結合增量學習,就能較好的完成控制任務。