(三)表格型方法
??當看到這一章名字的時候,應該首先考慮到三個問題:
??1)這里的表格指的是什么?
??2)表格型方法是用來解決什么問題的?
??3)表格型方法中具體有哪些方法?
??隨著后面的介紹,將陸續(xù)解開神秘的面紗。
??前面已經介紹了馬爾可夫決策過程,可以使用<S,A,P,R>這個四元組表示。而且從馬爾可夫決策過程中,我們推導出了貝爾曼期望方程。之前也介紹過有模型和免模型的概念,區(qū)別在于是否已知狀態(tài)轉移和獎勵函數。大多數情況最開始是沒有和現(xiàn)實世界有接觸的,所以我們更加關注于免模型,后面的討論都是基于免模型展開。
??在上一章介紹過,我們使用價值函數V來評價策略的好壞。用Q函數(也就是狀態(tài)動作價值函數)來判斷在什么動作下能夠拿到最大獎勵。這個獎勵是個總體的獎勵,是后面狀態(tài)的累加和。要清楚的意識到,獎勵的本質也是價值。
從Q函數的定義中知道,它就是在某一個狀態(tài)下執(zhí)行某一個動作的價值。設想如果我們能夠記錄下來所有的Q函數值,也就是知道了一個狀態(tài)下執(zhí)行每一個動作的價值有多少。那不是可以選取最高價值的動作了嗎?這不就是最優(yōu)策略!把所有的狀態(tài)對應所有的動作的價值都記錄下,就會形成一張表格,這就是Q表格。也是本篇主要的研究對象。當然最開始生成的Q表格因為與環(huán)境交互少,效果不一定好。所以Q表格內容也是在不斷優(yōu)化更新的。Q表格中縱軸是狀態(tài),橫軸是動作
??這里解釋一個問題:為什么可以用未來的總收益來評價當前動作的好壞?
??首先想想強化學習最根本的目標就是回報最大化。回報也是分為兩部分:當前回報和未來回報。有的人會認為未來回報都不重要,直接抹殺。但舉這樣一個例子:紅燈情況下,普通車如果直接通過,它的收益會比較低。因為未來不會有什么大的收益獎勵它。但如果是消防車,雖然闖了紅燈,但把病人及時送到醫(yī)院收益會很高。所以當前狀態(tài)有可能是受未來收益影響,所以要考慮這點。也不總是這種情況,像股票這類的希望即時收益。所以要加上折扣因子。
??再次重申下Q表格數據的意義:在狀態(tài)S下采取動作a的總回報
??現(xiàn)在的主要問題變成了:在沒有馬爾可夫決策過程的模型情況下如何能估計給定策略的價值。求給定策略的價值,是不是有點兒熟悉?這不就是上一張的馬爾可夫獎勵做的事情嗎?所以求解方法有三種迭代方法:蒙特卡羅法、動態(tài)規(guī)劃法、時序差分法。下面來詳細介紹一下它們吧!
??1)蒙特卡羅法(Monte Carlo,簡稱MC)
??蒙特卡羅(其實有的時候也叫蒙特卡洛,傻傻分不清,知道這個意思就行了)。它的思想非常簡單,就是采樣取均值。之前介紹過,價值是當前狀態(tài)下的累計回報。如果取樣到很多軌跡,然后取平均值,數量足夠多的情況下,大數定律告訴我們這個是可以來近似價值的。
??先來看看常規(guī)的MC:
??看了上面這個圖,很明確吧。不需要多說了。但總覺得這種好像有點兒過于粗暴,我們希望迭代一次就能更新一次系數。所以提出了增量式MC:
??增量式MC,基于普通MC,相當于把經驗均值轉換成增量均值。具體的推導過程如下圖所示:
??有的時候會為了簡便,把分數替換成學習率α,寫成下面這個樣子:
??了這種求價值函數的方法,再來看看他的優(yōu)缺點吧!
??優(yōu)點:免模型,不需要自舉不斷更新(因為沒有估計量都是測量的量)
??缺點:必須完整完成一次軌跡采樣,適用情況受限。比如對于軌跡無終止的情況就不適用。
??可能會有疑惑,==怎么看出來是免模型的?==其實這個很好判斷,之前說過有模型和免模型最大的差距在于是否對環(huán)境建模。具體一點兒就是有沒有獎勵函數和狀態(tài)轉移函數。從上面的表達式上看,沒有的就是免模型。下面的就是有模型。
??2)動態(tài)規(guī)劃(自舉,用于有模型):
??數學表達式如下:
??動態(tài)規(guī)劃的實現(xiàn)原理是基于貝爾曼期望備份,用上一時刻的v來更新當前的v。貝爾曼期望備份圖如下:
??注意s’和s與之前的不一樣了,這里面的s’是上一時刻而不是下一時刻。從表達式中可以看出來用兩次加和,算了兩次期望。在期望的計算中,更新了相關的所有狀態(tài)。這點和蒙特卡羅是不同的,蒙特卡洛只更新了一條軌跡上所有的狀態(tài)
??3)時序差分(Temporal-Difference,簡稱TD):
??回想一下,上一章對于TD的引入。是因為MC要完整的采樣一條軌跡,而有時這樣的條件是沒有的。我們希望狀態(tài)更新一次就能優(yōu)化一遍價值。這里取決于一種思想:下一個狀態(tài)的價值是可以不斷地取強化影響上一個狀態(tài)的價值的。這里依舊需要進行一次采樣
??先給出TD的更新表達式,如下:
??首先可以明確,TD適用的情況是免模型的。因為沒有狀態(tài)轉移函數和獎勵函數
??來看一看它是怎么實現(xiàn)更新的,主要是關注一下α后面括號里的內容,
??前面的內容叫做是估計回報,也叫做時序差分目標:
??括號內的整體叫做時序差分誤差:
??估計回報的推導過程如下圖:
??它的思想也非常簡單,通過對V的更新不斷減少時序差分誤差。當時序差分誤差減少到可以接受的值時就結束。
??有一個問題需要注意:時序差分目標其實是一個估計值,因為每一個v都是估計出來的,并不是真實的V(Π)(???)
??的TD實現(xiàn)1步就可以更新價值函數,這種叫TD(0)。當然也可以做調整,幾步之后再更新價值函數,也就是TD(n)。區(qū)別就在于G(t)的表達上:
??當然如果n趨向于∞的話就會退化為MC了(相當于完成了一次軌跡采樣了)
??TD優(yōu)點:
????1)一步/幾步就可以更新,效率高
????2)可以從那個不完整序列進行學習(MC必須是完整)
????3)可以在沒有中止環(huán)境下學習
??時序差分可以稱為是MC和DP的結合版。因為其中既有采樣,又有自舉。時序差分 = 采樣(R(t))+自舉(后面的回報)
??==那以上三種方法有什么關系呢?==其實如果以之前說過的備份圖來代表一個過程的話,TD代表兩個狀態(tài)轉換那一段、MC代表從一個狀態(tài)直到最終的一條、動態(tài)規(guī)劃是從一層的狀態(tài)轉移到下一層的狀態(tài)。如果沒明白,請看下面這個圖:
??我們來理理思路,以上主要介紹了兩種方法:MC和TD,兩種方法都是來求解價值的。也就是策略迭代中的一部分。那什么是策略迭代呢?
??策略迭代:
??如上圖所示,策略迭代就是在策略和價值中循環(huán)迭代。先評估策略的價值,然后選價值最大的作為策略(這里的貪心就是讓總價值最大,不是單步的貪心)。
??數學化的表達就是:
??從上面這個表達式來看,==是針對于有模型的。那沒有模型的咋辦呢?==這就涉及到廣義策略迭代
??廣義策略迭代:不知道獎勵函數和狀態(tài)轉移時(無模型情況),如何進行策略的優(yōu)化
??它的實現(xiàn)思想就是把狀態(tài)價值變成動作價值,如下圖
??如果這種方法行得通的話,一個重要的問題就是:在不知道獎勵函數和狀態(tài)轉移時,怎么完成Q和Π之間的交互?方法是把之前對于V的估計要變成對Q的估計。
??廣義的策略迭代對策略迭代的策略評估部分進行了修改,用MC的方法代替DP的方法去估計Q函數。
??復習:策略迭代包括策略評估和策略改進兩部分
??那現(xiàn)在問題就是 如何用MC來進行估計Q函數?
??這里涉及到一個假設,也算是給Q函數一個初始化值。假設回合有探索性開始,這個保證了所有的狀態(tài)和動作都能夠在無限步執(zhí)行后被采樣到。還記得上面的Q表格嗎!現(xiàn)在是MC的方式,就可以執(zhí)行每一條軌跡獲得價值后填到Q表格中。所以設計算法的時候核心思想就是使用MC來填充Q表格。算法過程如下:
??上面這個算法只是說了需要探索性。但沒有明確具體探索的方式,這里介紹一下常見的探索方式:ε-貪心(ε-greedy)探索。來看看這個的思想,現(xiàn)在我們有了Q函數,要利用Q函數來改進策略。但MC是要實際做動作的,也就是說要根據Q函數確定動作。之前說過動作的選擇有探索和利用兩種思想,從Q函數確定動作就是利用,在Q函數不是很好的時候利用是沒有效果的,更希望使用探索來做。ε-貪心就是通過設置ε值。1-ε的概率選擇Q函數決定動作,ε的概率選擇隨即動作(探索)。不過Q函數不斷完善時,ε值會減少。由Q函數決定的程度會增大。
??使用MC+ε-貪心形式時,可以保證Q函數是單調的改進的,具體的證明過程如下:
??將MC和ε-貪心結合,就會得到以下的算法偽代碼:
??既然MC可以,那TD應該也可以。而且TD有低方差、在線學習、不完整序列學習這幾個優(yōu)點。用TD估計Q表格,這樣也是好處多多。下面來介紹兩種TD框架來估計Q函數的方法吧。
??在此之前我們先回顧一下TD的數學式吧:
??在介紹兩種方法之前,先做一點兒基礎知識學習:關于同策略和異策略。
??同策略:學習的智能體與和環(huán)境交互的智能體是同一個
??異策略:學習的智能體與和環(huán)境交互的智能體不是同一個
??所以對于同策略和異策略最大區(qū)別就是優(yōu)化的對象不同
??1)Saras:同策略時序差分控制
??Saras做出的改變很簡單,就是V變Q,也就是這樣:
??按照前面的,時序差分目標:
??時序差分誤差:
??看這個表達式,有了哪幾項我們可以進行更新:S(t) 、A(t)、R(t+1)、S(t+1)、A(t+1)。這些都是可以根據一步更新拿到的。這五項練起來就是SARAS,也是名字的由來。
??TD有N步更新,自然可以把這種思想遷移過來,形成n步Saras,具體的算法如下:
??2)Q學習:異策略時序差分控制
??Saras是一種同策略算法,優(yōu)化的是它執(zhí)行的策略。而Q學習用異策略優(yōu)化目標函數。Q學習中有兩種策略:行為策略和目標策略。。如果還是不明白異策略,那就看看下面這幅圖:
??行為策略與環(huán)境交互,采集大量的經驗。而目標策略從這些經驗中進行學習,而且因為是完全獨立,所以目標策略可以任意選擇,直接選最優(yōu)的,不需要任何顧慮。那什么是有顧慮的呢?以躲避懸崖為例,在異策略情況下目標策略進行優(yōu)化時是不管行為策略的行為的,哪怕行為策略掉進了懸崖,但目標策略得到了很大的回報,也是可以選擇的。但對于同策略來說,它是一體的,要保證自己既能優(yōu)化又能探測,所以會刻意避開懸崖,保持在安全范圍內。
??目標策略Π直接在Q表格上使用貪心策略,狀態(tài)的策略就是選最好的狀態(tài)動作。
??現(xiàn)在了解到Q學習每一個動作都是通過argmax選出來的,所以可以得到下式(代表就是單步的價值),
??也可以把它換成增量學習方式,數學式如下:
??從上面這個式子中看出,Q-learning更新一次,需要四個變量:S(t)、A(t)、S(t+1)、R(t+1)。這個比之前的少了一個A(t+1)。原因在于,而Sarsa中的A’是下一步驟一定會執(zhí)行的動作,而Q-learning默認的下一個動作不是通過行為策略來選取的。而是直接從Q表格中選擇的是最大值,只要保證這個動作的價值最大就可以。
??現(xiàn)在來討論一下Q學習和Sarsa的區(qū)別,首先它們的目標不同,下面這張圖可以說明(上面是sarsa,下面是Q學習):
??學到這兒,這一章已經接近尾聲了。這章我們學習了表格型方法,學習了Q表格,并在此基礎上學習了基于Q表格的多種求解策略價值的方法。并將策略迭代推廣到廣義的策略迭代,用TD改進了MC。像下面這張圖一樣:
??老規(guī)矩,課后題來嘍:
因作者水平有限,如有錯誤之處,請在下方評論區(qū)指出,謝謝!
總結
- 上一篇: 语法分析与中间代码生成
- 下一篇: 排序算法:堆排序算法实现及分析