1. 程式人生 > >強化學習(RLAI)讀書筆記第六章差分學習(TD-learning)

強化學習(RLAI)讀書筆記第六章差分學習(TD-learning)

第六章:Temporal-Difference Learning

TD-learning演算法是強化學習中一個獨具特色而又核心的想法,結合了蒙特卡洛演算法和動態規劃的想法。和MC一樣不需要環境模型直接從sample裡學習,也像DP一樣使用bootstrap通過別的狀態值的估計更新當前狀態值。首先也關注的是給定策略進行prediction或者叫policy evaluation。對於control(找到最優策略)的問題,DP,TD和MC都用的是GPI的框架,主要的區別在prediction的時候。

6.1 TD Prediction

TD和MC演算法都使用經驗來解決prediction的問題。給定一個策略\pi

決策下的一些經驗序列,兩個方法都為出現在序列裡的非中止狀態更新值函式V。大致上說,MC方法需要等到一個狀態後面所有的反饋都知道,把這個return作為值函式V的目標。簡單的一個非穩態環境的every-visit方法的更新為V(S_{t}) \leftarrow V(S_{t})+\alpha\[G_{t}-V(S_{t})\]。這種方法叫做常數\alphaMC。MC需要等待一個序列到達重點才能更新V,而TD方法只需要等待下一步完成。最簡單的TD方法更新為

V(S_{t}) \leftarrow V(S_{t})+\alpha\[R_{t+1}+\gamma V(S_{t+1})-V(S_{t})]

在MC方法中目標值是G_{t}而這裡是R_{t+1}+\gamma V(S_{t+1}),這種方法叫做TD(0),也叫一步TD法。

TD方法中的估計值在兩個方面,一個是其是對期望值的一個取樣,第二是它使用了當前的V值進行計算而不是v_{\pi}。所以TD結合了MC中的取樣法和DP的boostrapping。表格型TD(0)演算法的backup diagrams如右圖。TD法和MC法被叫做sample updates是因為它們都往後進行了狀態的取樣,並且將後面狀態的值函式和反饋用來更新當前值函式。sample updates和DP演算法的期望更新不同,因為它基於對後面狀態的單個取樣而不是基於所有狀態的分佈。

最後要提到TD演算法更新時括號裡的部分可以被認為是一種用來評估當前狀態值函式和更好的估計值R_{t+1}+\gamma V(S_{t+1})之間的誤差。這個值叫做TD error,在強化學習演算法中以各種形式出現。

練習6.1

G_{t}-V(S_{t}) = R_{t+1}+\gamma G_{t+1}-V(S_{t})+\gamma V(S_{t+1})-\gamma V(S_{t+1})-\alpha\delta_{t} \\=(1-\alpha)\delta_{t}+\gamma(G_{t+1}-V(S_{t+1}))\\=(1-\alpha)\delta_{t}+\gamma(1-\alpha)\delta_{t+1}+\gamma^{2}(G_{t+2}-V(S_{t+2}))\\=\sum_{k=t}^{T-1}\gamma^{k-t}\delta_{k}

練習6.2 TD演算法在到達新建築的時候就可以根據以往經驗v中從下一個位置parking lot的值進行預測,而MC需要經歷從頭到尾的遍歷而且前幾次的預測方差會很大。

6.2 Advantages of TD Prediction Methods

首先TD演算法相比於DP演算法的一個優勢就是不需要環境模型,也就是下一狀態的反饋和狀態分佈。而TD相比於MC演算法的最明顯的優勢是TD可以很自然的作為一種線上的全增量的方式計算。MC必須等到一個episode結束以後才可以進行計算,而有些episode很長,有些episode是無法走到中止狀態的。TD演算法就可以直接在每一個狀態轉移之間進行學習。

同時,TD(0)演算法在保證步長是足夠小的常數或者步長根據2.7收斂條件不斷縮小的情況下是保證收斂的。而且TD法和MC演算法都可以進行非同步更新並且保證收斂。雖然沒有數學證明但是實踐中往往TD演算法收斂的更快。

練習6.3 0.45

練習6.4 不會變化。TD演算法的趨勢是步長越小收斂越慢但相對方差會更小,而MC是步長越大,最後方差越大而收斂速度變化不明顯。

練習6.5 TD演算法本身會造成一定的偏差

練習6.6 1.直接解方程組  2.線性規劃  3. policy evaluation   直接解

 

6.3 Optimality of TD(0)

如果只有有限數量的episode作為訓練樣本,那麼這些樣本會被重複訓練直到值函式收斂。而這些樣本在用來更新值函式的時候,每個轉換過程的都會多次計算相應增量式更新公式中的的error,但是值函式只會用這些error的和更新一次。每一個時間t的值函式更新了之後會對下一個狀態的值函式進行相同的計算直到所有的狀態都達到收斂。這種方式叫做batch updating因為所有的更新只有在處理完每一個batch的訓練資料之後才會進行。

只要步長設定的足夠小,那麼在batch updating下的TD(0)演算法都會確定性的收斂至一個和步長無關的值。常數步長的MC演算法也會同樣收斂,但收斂到不同的值上。在普通的更新方式下,兩個演算法並不是直接朝著各自收斂值而去,但是某種程度上也是朝著這個方向進行。

書中的例子表明了這兩個演算法估算值的區別。batchMC演算法總是收斂至一個在訓練集上最小方差的值,而batch TD(0)收斂到一個對於馬爾科夫模型的最大似然模型最相符的值。一個引數的最大似然估計是指產生概率最大的值。這種方法的值叫做certainty-equivalence estimate因為這個值對於相應建立起的環境模型是完全正確的而非估計值。TD(0)演算法就收斂到這個值。這也就解釋了為什麼TD(0)在實際中總是收斂得比MC演算法更快,因為它是直接朝著certainty equivalence estimate的方向進行計算的。但是這個值卻沒有辦法直接計算,相對來說TD(0)演算法可能是唯一一個可行的計算這個值的演算法。

練習6.7  V(S_{t}) \leftarrow V(S_{t})+\alpha[\rho_{t:t}R_{t+1}+\gamma V(S_{t+1})-V(S_{t})]

 

6.4 Sarsa: On-policy TD Control

現在考慮控制的問題。一般來說使用的都是GPI模型框架,只不過是使用了TD版本的評估方式。和MC演算法中一樣,需要考慮exploring和exploit以及使用on-policy 和 off-policy兩種方式的演算法。

首先我們計算狀態動作對值函式Q而不是V。而對於on-policy的演算法來說需要計算當前策略下每個狀態動作對的值函式,也就是上節prediction的過程。之後考慮從一個狀態動作對轉移到另一個,這個都是在GPI框架下的MDP,理論保證收斂,更新公式如下:

Q(S_{t},A_{t}) \leftarrow Q(S_{t}, A_{t})+\alpha[R_{t+1}+\gamma Q(S_{t+1},A_{t+1})-Q(S_{t}, A_{t})]

這利用了(S_{t}, A_{t}, R_{t+1}, S_{t+1}, A_{t+1})這一個五元組,也就得到了Sarsa演算法。演算法的backup diagrams如右圖。很自然想到用Sarsa prediction來進行一個on-policy的控制演算法。作為一個on-policy的演算法,我們進行評估演算法的同時也使用同樣的演算法來進行決策,同時對演算法進行改進。演算法過程如圖:

 

 

 

 

 

 

 

 

 

 

6.5 Q-learning: Off-policy TD Control

早期強化學習的一大突破就是一個off-policy的TD control演算法叫做Q-learning,更新公式為

Q(S_{t},A_{t}) \leftarrow Q(S_{t},A_{t})+\alpha\[R_{t+1}+\gamma max_{a}Q(S_{t+1},a)-Q(S_{t}, A_{t})]

這個演算法直接利用下一狀態的最優值來估計當前狀態動作對的值函式,而和當前遵守的策略無關。這很大程度的簡化了演算法的分析和促進了收斂證明。不過策略依然決定了選定那些狀態動作對來進行更新,想要達到收斂就依然需要遍歷所有的狀態動作對。同樣在這個假設下以及對步長引數的一些變化,Q-learning演算法保證收斂至最優值q。

練習6.11 因為Q-learning演算法正在遵循的策略和正在被評估的策略可能是兩種不同的策略。

練習6.12 不一定,因為Sarsa在更新狀態值之前選擇動作,而Q-learning在更新當前狀態動作值函式之後選擇。這樣有可能下一個狀態和當前狀態相同會導致選的動作不一樣。

6.6 Expected Sarsa

考慮一個類似Q-learning的演算法但是下一個狀態的估計值從最大值改為期望值,也就是考慮緊當前策略下采取動作的概率。更新規則為

Q(S_{t},A_{t}) \leftarrow Q(S_{t},A_{t})+\alpha\[R_{t+1}+\gamma E_{\pi}[Q(S_{t+1},A_{t+1})|S_{t+1}]-Q(S_{t},A_{t})\]\\ \leftarrow Q(S_{t},A_{t})+\alpha\[R_{t+1}+\gamma \sum_{a}\pi(a|S_{t+1})Q(S_{t+1},a)-Q(S_{t},A_{t})\]

其它的部分都和Q-learning一樣。對於給定下一狀態,這個演算法和Sarsa一樣朝著其期望值的方向移動,所以這個演算法叫做Expected Sarsa演算法。演算法增加了一定的計算量,但是減小了採取動作造成的方差。對於同樣數量的樣本,這個演算法比Sarsa演算法表現的更好一些。這個演算法可以將步長設為1而不會降低效能,Sarsa演算法就只能在比較小的步長下表現的好。

expected Sarsa演算法也可以用為off-policy的形式,比如當行為策略是\epsilon-greedy而被評估的策略是貪婪演算法,那麼這個演算法就是Q-learning演算法。

 

6.7 Maximization Bias and Double Learning

目前討論的control演算法在構造目標策略的時候都使用了最大化。在這些演算法中,評估值的最大值被用來隱式地表示最大值的估計,這可能會導致一個很嚴重的正偏差。比如單個狀態s下有不同的動作a,每個動作a的值都是期望為0,但是有方差,因此有的動作的觀察值大於0有的小於0。但是最大的估計值是正的,因此就有了一個正的偏差,叫做maximization bias。

一種看待這個問題的觀點是說因為使用了同樣的樣本來決定最優的動作以及評估動作值。如果我們把樣本分成兩個集合,每個都估計一個獨立的估計值Q_{1}(a)Q_{2}(a)。可以使用其中一個值來決定最優動作即A^{*}=argmax_{a}Q_{1}(a),而另一個值來作為這個動作的值函式的估計即Q_{2}(A^{*}) = Q_{2}(argmax_{a}Q_{1}(a))。這樣這個評估值就是無偏的。需要注意雖然我們有兩個估計值,但是每一次轉移狀態只更新一個值,所以只增加了一倍的記憶體消耗但沒有增加計算量。這個double learning的方式可以很自然的拓展到完全的MDP演算法中去。比如Double q-learning,演算法虛擬碼如圖:

同樣的Sarsa和Expected Sarsa也有double的版本。

練習6.13 

Q_{1}(S,A)\leftarrow Q_{1}(S,A)+\alpha(R+\gamma\sum_{a}\pi(a|S)Q_{2}(S',a)-Q_{1}(S,A))

6.8 Games, Afterstates, and Other Special Cases

目前講述的都是通用的演算法,但是顯然總是有一些例外用一些特殊方法會更好。對於第一章中講的tic-tac-toe遊戲來說,使用TD演算法得到的既不是狀態值函式也不是動作值函式。傳統的狀態值函式是估算在當前狀態採取動作以後會得到的反饋期望,但是在這個例子裡估計的是agent採取了動作之後的狀態值。把這個狀態叫做afterstates,這些狀態值函式叫afterstate value functions。Afterstate可以被用在那些我們知道一些環境的變化但不能完全建模的情況。

使用這種設計顯然是更有效率的。因為有的不同的position在採取了動作之後可能變化到同樣的結果狀態。這樣對於傳統的狀態值函式這兩個狀態是分開的,但是對於afterstate value function就能夠發現他們是相等的。這個技術用在很多情境下,比如排隊任務等等。本書中目前講到的GPI和策略以及(afterstate)值函式都能夠大致的應用上,也需要考慮選擇on-policy和off-policy以及需要exploring等等。

6.9 Summary

本章介紹了一種新的學習演算法,差分(TD)學習。同樣分為prediction和control兩個部分。TD演算法是MC的替代品。兩種演算法都是用DP中總結的GPI收斂框架。也就是把策略和值函式以互動的方式朝著最優前進。GPI中兩個過程,一個是prediction。另一個是根據當前值函式改進策略。可以根據是否是on-policy來區分TDcontrol演算法。Sarsa演算法是on-policy的,Q-learning演算法是off-policy的,這裡講的expected Sarsa也是off-policy的。還有一種新的TD演算法在13章中會講。

這章講的演算法在強化學習裡都很常用。這可能是因為它們的簡單,可以是線上的形式,需要很少的計算量,直接和環境進行互動;可以基本上直接用一個等式來表示演算法,也只需要很小的程式碼程式來完成演算法。以後介紹的演算法都會保持這章演算法的核心:online處理experience和相對少的計算量,它們也都會用TD error。這張介紹的演算法應該被叫做one-step,tabular,model-free TD演算法。

最後本章介紹的TD演算法都是在強化學習環境下的,但是TD法可以用的更加的廣泛。比如預測金融資訊,大選結果等等。只有當TD法不被限制在強化學習的框架裡,它的思想才會被真正理解。