姓名:苗春雨 ? ? 學(xué)號:16019110036
轉(zhuǎn)載自:http://geek.csdn.net/news/detail/245625
【嵌牛導(dǎo)讀】:本文是強(qiáng)化學(xué)習(xí)名作——“Reinforcement Learning: an Introduction”一書中最為重要的內(nèi)容,旨在介紹學(xué)習(xí)強(qiáng)化學(xué)習(xí)最基礎(chǔ)的概念及其原理,讓讀者能夠盡快的實(shí)現(xiàn)最新模型。畢竟,對任何機(jī)器學(xué)習(xí)實(shí)踐者來說,RL(強(qiáng)化學(xué)習(xí),即Reinforcement Learning)都是一種十分有用的工具,特別是在AlphaGo的盛名之下。
【嵌牛鼻子】:人工智能
【嵌牛提問】:關(guān)于人工智能的強(qiáng)化學(xué)習(xí)方法?
【嵌牛正文】:第一部分,我們將具體了解了MDPs (馬爾可夫決策過程)以及強(qiáng)化學(xué)習(xí)框架的主要組成部分;第二部分,我們將構(gòu)建并學(xué)習(xí)有關(guān)價(jià)值函數(shù)和Bellman (貝爾曼方程)的理論知識,它是強(qiáng)化學(xué)習(xí)中最重要公式,我們將一步一步地推導(dǎo)、解釋,以揭開強(qiáng)化學(xué)習(xí)的神秘面紗。
當(dāng)然,本文只是盡力用最快、最直觀的方式帶你來理解強(qiáng)化學(xué)習(xí)背后的理論,而要加深自己在該話題上的理解,Sutton和Barto所寫的“Reinforcement Learning:An Introduction”肯定值得你用心讀一讀。此外,AlphaGo身后的大神David Silver在YouTube上所講強(qiáng)化學(xué)習(xí)十課也值得你認(rèn)真學(xué)一學(xué)。
監(jiān)督學(xué)習(xí) vs. 評估學(xué)習(xí)
對于很多感興趣的問題,監(jiān)督學(xué)習(xí)的范例沒有辦法給我們提供所需要的靈活性。監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)這兩者之間最主要的區(qū)別在于收到的反饋是評估性的還是指導(dǎo)性的。指導(dǎo)性的反饋告訴你如何達(dá)到目標(biāo),而評估性的反饋則告訴你將會(huì)把目標(biāo)完成到什么程度。監(jiān)督學(xué)習(xí)以指導(dǎo)性的反饋為基礎(chǔ)來解決問題,而強(qiáng)化學(xué)習(xí)則是基于評估性反饋來解決問題的。圖像分類就是用帶有指導(dǎo)性反饋的監(jiān)督學(xué)習(xí)解決問題的一個(gè)實(shí)際例子;當(dāng)算法嘗試分類一些特定的數(shù)據(jù)時(shí),它將從指導(dǎo)性的反饋中了解到哪個(gè)才是真正的類別。而另一方面,評估性的反饋僅僅告訴你完成目標(biāo)的程度。如果你用評估性反饋來訓(xùn)練一個(gè)分類器,你的分類器可能會(huì)說“我認(rèn)為這是一個(gè)倉鼠”,然后它會(huì)得到50分。但是,由于沒有任何語境信息,我們不知道這 50 分是什么。我們需要進(jìn)行其他的分類,探索50分意味著我們是準(zhǔn)確或是不準(zhǔn)確?;蛟S10000分是一個(gè)更好的分值,因此我們還是不知道它是什么,除非我們嘗試去對其他數(shù)據(jù)再進(jìn)行分類。
猜到是倉鼠就可以得到兩個(gè)金色星星和一個(gè)笑臉,而猜沙鼠能得到一個(gè)銀色星星和一個(gè)大拇指
在我們感興趣的很多問題中,評估性反饋的想法是更直觀的,更易實(shí)現(xiàn)的。例如,想象一個(gè)控制著數(shù)據(jù)中心溫度的系統(tǒng)。指導(dǎo)性反饋在這里似乎沒有任何用處,你怎樣告訴你的算法在任意給定的時(shí)間步中每個(gè)零件正確的設(shè)置是什么?評估性反饋在這里就將發(fā)揮它的用處了。你能很容易的知道在一個(gè)特定的時(shí)間段用了多少電,或者平均溫度是多少,甚至有多少機(jī)器溫度過高了等數(shù)據(jù)。這實(shí)際上就是谷歌使用強(qiáng)化學(xué)習(xí)解決這些問題的方式。讓我們直接來學(xué)習(xí)吧。
馬爾科夫決策過程
假定我們知道狀態(tài) s,如果未來的狀態(tài)條件獨(dú)立于過去的狀態(tài),那么狀態(tài) s 就具有馬爾科夫性質(zhì)。這意味著s描述了所有過去的狀態(tài)直到現(xiàn)在的狀態(tài)。如果這很難理解,那我們就用一個(gè)例子來解釋,讓這個(gè)問題顯得更簡單一點(diǎn)。假設(shè)一個(gè)球飛過空中,如果它的狀態(tài)是由它的位置和速度決定,并足以描述它當(dāng)前的位置和接下來的位置(不考慮物理模型和外界影響)。因此,這一狀態(tài)就具備馬爾科夫性質(zhì)。但是,如果我們只知道這個(gè)球的位置不知道它的速度,它的狀態(tài)就不再是馬爾科夫。因?yàn)楝F(xiàn)在的狀態(tài)并不是所有以前狀態(tài)的歸納,我們需要以前的時(shí)間點(diǎn)所得到的信息去構(gòu)建合適的球的模型。
強(qiáng)化學(xué)習(xí)通??梢越橐粋€(gè)馬爾科夫決策過程,即MDP(Markov Decision Process)。MDP是一個(gè)有向圖,它有節(jié)點(diǎn)和邊的狀態(tài),可以描述馬爾科夫狀態(tài)之間的轉(zhuǎn)變,下面是一個(gè)簡單的例子:
一個(gè)簡單的馬爾科夫決策過程
這個(gè)MDP展示了學(xué)習(xí)馬爾科夫決策的過程。在最開始你在一個(gè)“不理解”的狀態(tài)中,接下來,你有兩個(gè)可能的動(dòng)作,學(xué)習(xí)或者不學(xué)習(xí)。如果你選擇不學(xué)習(xí),則有100%的可能性返回到不理解的狀態(tài)里。但是,如果你選擇學(xué)習(xí),只有20%的可能性讓你回到最開始的地方,即80%的可能性變成理解的狀態(tài)。
實(shí)際上,我確定轉(zhuǎn)換到理解狀態(tài)的可能性超過80%,MDP的核心其實(shí)很簡單,在一個(gè)狀態(tài)你可以采取一系列的動(dòng)作,在你采取行動(dòng)之后,這里有一些你能轉(zhuǎn)化去什么狀態(tài)的分布。在采取不學(xué)習(xí)動(dòng)作的例子中,這個(gè)轉(zhuǎn)化也能被很好的確定。
強(qiáng)化學(xué)習(xí)的目標(biāo)是去學(xué)習(xí)怎么花更多的時(shí)間在更有價(jià)值的狀態(tài)上,為了有一個(gè)更有價(jià)值的狀態(tài),我們需要MDP提供更多的信息。
你不需要一個(gè)MDP來告訴自己餓了要吃飯,但是強(qiáng)化學(xué)習(xí)的機(jī)制是需要它的
這個(gè)MDP增加了獎(jiǎng)勵(lì)機(jī)制,你每轉(zhuǎn)化到一個(gè)狀態(tài),就會(huì)獲得一次獎(jiǎng)勵(lì)。在這個(gè)例子中,由于接下來狀態(tài)是饑餓,你會(huì)得到一個(gè)負(fù)面的獎(jiǎng)勵(lì),如果接下來狀態(tài)是餓死,那會(huì)得到一個(gè)更負(fù)面的獎(jiǎng)勵(lì)。如果你吃飽了,就會(huì)獲得一個(gè)正面的獎(jiǎng)勵(lì)。現(xiàn)在我們的MDP已經(jīng)完全成型,我們可以開始思考如何采取行動(dòng)去獲取能獲得的最高獎(jiǎng)勵(lì)。
由于這個(gè)MDP是十分簡單的,我們很容易發(fā)現(xiàn)待在一個(gè)更高獎(jiǎng)勵(lì)的區(qū)域的方式,即當(dāng)我們饑餓的時(shí)候就吃。在這個(gè)模型中,當(dāng)我們處于吃飽狀態(tài)的時(shí)候沒有太多其它的選擇,但是我們將會(huì)不可避免的再次饑餓,然后立馬選擇進(jìn)食。強(qiáng)化學(xué)習(xí)感興趣的問題其實(shí)具有更大更復(fù)雜的馬爾科夫決策過程,并且在我們開始實(shí)際探索前,我們通常不知道這些策略。
形式化強(qiáng)化學(xué)習(xí)問題
現(xiàn)在我們有了很多我們需要的基礎(chǔ)材料,接下來我們需要將目光轉(zhuǎn)向強(qiáng)化學(xué)習(xí)的術(shù)語。最重要的組成是智能體(agent)和環(huán)境(environment)。智能體是被間接控制的,且存在于環(huán)境中。回顧我們的馬爾科夫決策模型,智能體可以在給定的狀態(tài)下選擇一個(gè)對它有顯著影響的動(dòng)作。然而,智能體并不能完全的控制環(huán)境的動(dòng)態(tài),環(huán)境會(huì)接收這些動(dòng)作,然后返回新的狀態(tài)和獎(jiǎng)勵(lì)
來自Sutton和Barto的書“Reinforcement Learning: an Introduction”(這是強(qiáng)烈推薦的)的這張圖,很好的解釋了智能體和環(huán)境之間的相互作用。在某個(gè)時(shí)間步t,智能體處于狀態(tài)s_t,采取動(dòng)作a_t。然后環(huán)境會(huì)返回一個(gè)新的狀態(tài)s_t+1和一個(gè)獎(jiǎng)勵(lì)r_t+1。獎(jiǎng)勵(lì)處于t+1時(shí)間步是因?yàn)樗怯森h(huán)境在t+1的狀態(tài)s_t+1返回的,因此讓它們兩個(gè)保持一致更加合理(如上圖所示)。
我們現(xiàn)在已經(jīng)有一個(gè)強(qiáng)化學(xué)習(xí)問題的框架,接下來準(zhǔn)備學(xué)習(xí)如何最大化獎(jiǎng)勵(lì)函數(shù)。在下一部分中,我們將進(jìn)一步學(xué)習(xí)狀態(tài)價(jià)值(state value)函數(shù)和動(dòng)作價(jià)值(action value)函數(shù),以及奠定了強(qiáng)化學(xué)習(xí)算法基礎(chǔ)的貝爾曼(Bellman)方程,并進(jìn)一步探索一些簡單而有效的動(dòng)態(tài)規(guī)劃解決方案。
獎(jiǎng)勵(lì)與回報(bào)
正如前面所說的,強(qiáng)化學(xué)習(xí)中的智能體學(xué)習(xí)如何最大化未來的累積獎(jiǎng)勵(lì)。這個(gè)用來描述未來的累積獎(jiǎng)勵(lì)的詞稱為回報(bào),通常用R表示。我們還使用下標(biāo)t來表示在某個(gè)時(shí)間步驟下的返回值。數(shù)學(xué)公式的表示如下:
如果我們讓這個(gè)級數(shù)無限延伸,那么我們可能會(huì)得到無窮的回報(bào),但這樣的話使得這個(gè)問題的定義失去意義。因此,只有當(dāng)我們期望得到的獎(jiǎng)勵(lì)是有限級的,這個(gè)等式才有意義。有終止程序的任務(wù)稱為情景任務(wù)。紙牌游戲是情景性問題的好例子。情景的開始是向每個(gè)人發(fā)牌,并且不可避免地根據(jù)特定的游戲規(guī)則而結(jié)束。然后,下一輪另一個(gè)情景又開始,再次處理這些紙牌。
比起使用未來的累積獎(jiǎng)勵(lì),更為常用地是使用未來累積折扣獎(jiǎng)勵(lì):
在這里0<γ<1。以這種方式來定義回報(bào)值有兩個(gè)好處:不僅能夠以無限級數(shù)來定義回報(bào)值,而且還能為隨后的回報(bào)賦予更好的權(quán)重,這意味著我們更關(guān)心即將到來的回報(bào),而不是我們將來會(huì)得到的回報(bào)。γ的值越小,就越正確。在特殊情況下,我們令γ等于0或者1。當(dāng)γ等于1時(shí),我們就回到了第一個(gè)等式,我們關(guān)心的是所有的回報(bào),而不是考慮到未來有多遠(yuǎn)。另一方面,當(dāng)γ等于0時(shí),我們關(guān)心的是當(dāng)前的回報(bào),而不考慮之后的任何回報(bào)。這將導(dǎo)致我們的算法缺乏長遠(yuǎn)性。它將學(xué)會(huì)采取最適合當(dāng)前情況的行動(dòng),但不會(huì)考慮此行動(dòng)對未來的影響。
策略
策略,被記為Π(s,a),描述了行動(dòng)的一個(gè)方式。它是一個(gè)這樣的函數(shù):接受一個(gè)狀態(tài)和一個(gè)動(dòng)作,并返回在該狀態(tài)下采取這個(gè)動(dòng)作的概率。因此,對于一個(gè)給定的狀態(tài),它必須滿足 。在下面的例子中,當(dāng)我們餓時(shí),我們可以在吃和不吃兩個(gè)動(dòng)作之間做出選擇。
我們的策略應(yīng)該描述如何在每個(gè)狀態(tài)下采取行動(dòng)。因此,一個(gè)等概率的隨機(jī)策略就該像這樣子: 其中E代表吃的行動(dòng), 代表不吃的行動(dòng)。這意味著,如果你處于饑餓狀態(tài),你在選擇吃或者不吃的概率是相同的。
我們使用強(qiáng)化學(xué)習(xí)的目標(biāo)是為了去學(xué)習(xí)一個(gè)最優(yōu)的策略Π*,它告訴我們?nèi)绾涡袆?dòng)以得到最大化的回報(bào)。這只是一個(gè)簡單的例子,容易知道例子中的最優(yōu)決策是餓了就吃 。在這個(gè)實(shí)例中,正如許多MDPs (馬爾可夫決策過程)一樣,最優(yōu)的決策是確定性的。每一個(gè)最佳狀態(tài)都有一個(gè)最佳行動(dòng)。有時(shí)這被寫成
Π*(s)=a,這是一個(gè)從狀態(tài)到這些狀態(tài)下最優(yōu)決策行動(dòng)的一個(gè)映射。
價(jià)值函數(shù)
我們利用價(jià)值函數(shù)來得到學(xué)習(xí)的最優(yōu)策略。強(qiáng)化學(xué)習(xí)中有兩種類型的價(jià)值函數(shù):狀態(tài)價(jià)值函數(shù),表示為V(s);和行為價(jià)值函數(shù),表示為Q(s,a)。
狀態(tài)價(jià)值函數(shù)描述了在執(zhí)行一個(gè)策略時(shí)的狀態(tài)值。這是一個(gè)從狀態(tài)s開始執(zhí)行我們的策略Π所得到的預(yù)期回報(bào):
值得注意的是,即使在相同的環(huán)境下,價(jià)值函數(shù)也會(huì)根據(jù)策略而改變。這是因?yàn)闋顟B(tài)的價(jià)值函數(shù)取決于你的行為方式,因?yàn)槟阍谀骋粋€(gè)特定的狀態(tài)下的行為會(huì)影響你預(yù)期的回報(bào)。同樣要注意的是期望的重要性。(期望就像一個(gè)平均值,就是你期望看到的回報(bào))。我們使用期望的原因在于:當(dāng)你到達(dá)一個(gè)狀態(tài)時(shí),會(huì)發(fā)生一些隨機(jī)狀況。你可能有一個(gè)隨機(jī)策略,這意味著我們需要將我們所采取的所有不同行動(dòng)的結(jié)果結(jié)合起來。同樣地,過渡函數(shù)可以是隨機(jī)的,也就是說,我們不能以100%的概率結(jié)束任何狀態(tài)。記住上面的這個(gè)例子:當(dāng)你選擇一個(gè)行動(dòng)時(shí),環(huán)境將返回下一個(gè)狀態(tài)。可能有多個(gè)狀態(tài)可以返回,甚至是一個(gè)動(dòng)作。更多的信息我們將會(huì)在Bellman方程(貝爾曼方程)中得到。期望將所有的隨機(jī)性都考慮在內(nèi)。
我們將使用另一個(gè)價(jià)值函數(shù)是動(dòng)作價(jià)值函數(shù)。動(dòng)作價(jià)值函數(shù)是指我們采取某一特定策略時(shí),在某個(gè)狀態(tài)下采取一個(gè)動(dòng)作所產(chǎn)生的價(jià)值。這是在策略Π下,對給定狀態(tài)和行動(dòng)時(shí)所返回的預(yù)期回報(bào):
對狀態(tài)價(jià)值函數(shù)的注釋同樣適用于動(dòng)作價(jià)值函數(shù)。它將考慮到未來行動(dòng)的隨機(jī)性,以及從環(huán)境中返回狀態(tài)的隨機(jī)性。
貝爾曼方程
Richard Bellman是一位美國應(yīng)用數(shù)學(xué)家,他推導(dǎo)了以下方程,讓我們能夠開始求解這些MDPs (馬爾可夫決策過程)。在強(qiáng)化學(xué)習(xí)中,貝爾曼方程無處不在,必須了解強(qiáng)化學(xué)習(xí)算法是如何工作的。但是在我們了解貝爾曼方程之前,我們需要了解一些更有用的符號。我們P和R定義為如下:
是另一種表達(dá)我們從狀態(tài)s開始,采取行動(dòng)a,到狀態(tài)s’的期望 (或平均) 獎(jiǎng)勵(lì)的表達(dá)方式。
最后,有了這些知識,我們準(zhǔn)備推導(dǎo)Bellman方程 (貝爾曼方程)。我們將把狀態(tài)價(jià)值函數(shù)考慮到Bellman方程(貝爾曼方程)之內(nèi)。根據(jù)回報(bào)的定義,我們可以修改公式(1)為如下所示:
如果我們想從總和回報(bào)中提出第一個(gè)獎(jiǎng)勵(lì),公式可以被改寫為這樣:
在這里期望可以被描述如果我們采取策略Π時(shí),繼續(xù)從狀態(tài)s出發(fā)的期望回報(bào)。可以通過對所有可能的動(dòng)作和所有可能的返回狀態(tài)的求和來描述期望。接下來的兩個(gè)方程可以幫助我們邁出下一步。
通過對這兩個(gè)部分分配期望值,我們就可以將我們的方程轉(zhuǎn)化為如下形式:
值得注意得是,方程(1)和這個(gè)方程的結(jié)束部分是一樣的。因此,我們可以將其替換,得到如下:
Bellman方程(貝爾曼方程)的動(dòng)作價(jià)值函數(shù)可以以類似的方式推導(dǎo)出來。感興趣的人可以在文章的最后看到具體的步驟。其最終結(jié)果如下:
Bellman方程的重要性在于,它能讓我們將一個(gè)狀態(tài)的值表達(dá)成其他狀態(tài)的值。這意味著當(dāng)我們知道狀態(tài)st+1的值時(shí),我們可以輕松地計(jì)算出狀態(tài)st的值。這為我們解決每個(gè)狀態(tài)值的迭代計(jì)算問題打開了大門,因?yàn)槿绻覀冎老乱粋€(gè)狀態(tài)的值,我們就能知道當(dāng)前狀態(tài)的值。在這里,最重要的是要記住方程式的編號。最后,隨著Bellman方程(貝爾曼方程)的出現(xiàn),我們可以開始研究如何計(jì)算最優(yōu)策略,并編寫我們的第一個(gè)強(qiáng)化學(xué)習(xí)智能體程序。
下一步:動(dòng)態(tài)規(guī)劃
在下一篇文章中,我們將研究使用動(dòng)態(tài)規(guī)劃來計(jì)算最優(yōu)策略,這將為更高級的算法奠定基礎(chǔ)。然而,這將是第一個(gè)實(shí)際編寫強(qiáng)化學(xué)習(xí)算法的機(jī)會(huì)。我們將研究策略迭代和值迭代以及他們的優(yōu)缺點(diǎn)。在此之前,感謝您的閱讀。
正如所承諾的:推導(dǎo)Bellman方程的動(dòng)作價(jià)值函數(shù)(貝爾曼方程)
正在我們推導(dǎo)出Bellman方程狀態(tài)價(jià)值函數(shù)的過程一樣,我們用相同的推導(dǎo)過程得到了一系列的方程,下面我們從方程(2)開始繼續(xù)推導(dǎo):
相關(guān)鏈接:
Reinforcement Learning: an Introduction
http://incompleteideas.net/sutton/book/the-book-2nd.html
RL Course by David Silver
https://www.youtube.com/watch?v=2pWv7GOvuf0
RL Course by David Silver PPT
http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html
Everything You Need to Know to Get Started in Reinforcement Learning
https://joshgreaves.com/reinforcement-learning/introduction-to-reinforcement-learning/
Understanding RL: The Bellman Equations
https://joshgreaves.com/reinforcement-learning/understanding-rl-the-bellman-equations/