學號:16040520018
姓名:米芃
[嵌牛導讀]本文是強化學習名作——“Reinforcement Learning: an Introduction”一書中最為重要的內容,旨在介紹學習強化學習最基礎的概念及其原理,讓讀者能夠盡快的實現最新模型。畢竟,對任何機器學習實踐者來說,RL(強化學習,即Reinforcement Learning)都是一種十分有用的工具,特別是在AlphaGo的盛名之下。
[嵌牛鼻子]強化學習 馬爾科夫決策
[嵌牛提問]AlphaGo強大的背后有什么支持
[嵌牛正文]
監督學習 vs. 評估學習
對于很多感興趣的問題,監督學習的范例沒有辦法給我們提供所需要的靈活性。監督學習和強化學習這兩者之間最主要的區別在于收到的反饋是評估性的還是指導性的。指導性的反饋告訴你如何達到目標,而評估性的反饋則告訴你將會把目標完成到什么程度。監督學習以指導性的反饋為基礎來解決問題,而強化學習則是基于評估性反饋來解決問題的。圖像分類就是用帶有指導性反饋的監督學習解決問題的一個實際例子;當算法嘗試分類一些特定的數據時,它將從指導性的反饋中了解到哪個才是真正的類別。而另一方面,評估性的反饋僅僅告訴你完成目標的程度。如果你用評估性反饋來訓練一個分類器,你的分類器可能會說“我認為這是一個倉鼠”,然后它會得到50分。但是,由于沒有任何語境信息,我們不知道這 50 分是什么。我們需要進行其他的分類,探索50分意味著我們是準確或是不準確。或許10000分是一個更好的分值,因此我們還是不知道它是什么,除非我們嘗試去對其他數據再進行分類。
猜到是倉鼠就可以得到兩個金色星星和一個笑臉,而猜沙鼠能得到一個銀色星星和一個大拇指
在我們感興趣的很多問題中,評估性反饋的想法是更直觀的,更易實現的。例如,想象一個控制著數據中心溫度的系統。指導性反饋在這里似乎沒有任何用處,你怎樣告訴你的算法在任意給定的時間步中每個零件正確的設置是什么?評估性反饋在這里就將發揮它的用處了。你能很容易的知道在一個特定的時間段用了多少電,或者平均溫度是多少,甚至有多少機器溫度過高了等數據。這實際上就是谷歌使用強化學習解決這些問題的方式。讓我們直接來學習吧。
馬爾科夫決策過程
假定我們知道狀態 s,如果未來的狀態條件獨立于過去的狀態,那么狀態 s 就具有馬爾科夫性質。這意味著s描述了所有過去的狀態直到現在的狀態。如果這很難理解,那我們就用一個例子來解釋,讓這個問題顯得更簡單一點。假設一個球飛過空中,如果它的狀態是由它的位置和速度決定,并足以描述它當前的位置和接下來的位置(不考慮物理模型和外界影響)。因此,這一狀態就具備馬爾科夫性質。但是,如果我們只知道這個球的位置不知道它的速度,它的狀態就不再是馬爾科夫。因為現在的狀態并不是所有以前狀態的歸納,我們需要以前的時間點所得到的信息去構建合適的球的模型。
強化學習通常可以建模為一個馬爾科夫決策過程,即MDP(Markov Decision Process)。MDP是一個有向圖,它有節點和邊的狀態,可以描述馬爾科夫狀態之間的轉變,下面是一個簡單的例子:
一個簡單的馬爾科夫決策過程
這個MDP展示了學習馬爾科夫決策的過程。在最開始你在一個“不理解”的狀態中,接下來,你有兩個可能的動作,學習或者不學習。如果你選擇不學習,則有100%的可能性返回到不理解的狀態里。但是,如果你選擇學習,只有20%的可能性讓你回到最開始的地方,即80%的可能性變成理解的狀態。
實際上,我確定轉換到理解狀態的可能性超過80%,MDP的核心其實很簡單,在一個狀態你可以采取一系列的動作,在你采取行動之后,這里有一些你能轉化去什么狀態的分布。在采取不學習動作的例子中,這個轉化也能被很好的確定。
強化學習的目標是去學習怎么花更多的時間在更有價值的狀態上,為了有一個更有價值的狀態,我們需要MDP提供更多的信息。
你不需要一個MDP來告訴自己餓了要吃飯,但是強化學習的機制是需要它的
這個MDP增加了獎勵機制,你每轉化到一個狀態,就會獲得一次獎勵。在這個例子中,由于接下來狀態是饑餓,你會得到一個負面的獎勵,如果接下來狀態是餓死,那會得到一個更負面的獎勵。如果你吃飽了,就會獲得一個正面的獎勵。現在我們的MDP已經完全成型,我們可以開始思考如何采取行動去獲取能獲得的最高獎勵。
由于這個MDP是十分簡單的,我們很容易發現待在一個更高獎勵的區域的方式,即當我們饑餓的時候就吃。在這個模型中,當我們處于吃飽狀態的時候沒有太多其它的選擇,但是我們將會不可避免的再次饑餓,然后立馬選擇進食。強化學習感興趣的問題其實具有更大更復雜的馬爾科夫決策過程,并且在我們開始實際探索前,我們通常不知道這些策略。
形式化強化學習問題
現在我們有了很多我們需要的基礎材料,接下來我們需要將目光轉向強化學習的術語。最重要的組成是智能體(agent)和環境(environment)。智能體是被間接控制的,且存在于環境中。回顧我們的馬爾科夫決策模型,智能體可以在給定的狀態下選擇一個對它有顯著影響的動作。然而,智能體并不能完全的控制環境的動態,環境會接收這些動作,然后返回新的狀態和獎勵
來自Sutton和Barto的書“Reinforcement Learning: an Introduction”(這是強烈推薦的)的這張圖,很好的解釋了智能體和環境之間的相互作用。在某個時間步t,智能體處于狀態s_t,采取動作a_t。然后環境會返回一個新的狀態s_t+1和一個獎勵r_t+1。獎勵處于t+1時間步是因為它是由環境在t+1的狀態s_t+1返回的,因此讓它們兩個保持一致更加合理(如上圖所示)。
我們現在已經有一個強化學習問題的框架,接下來準備學習如何最大化獎勵函數。在下一部分中,我們將進一步學習狀態價值(state value)函數和動作價值(action value)函數,以及奠定了強化學習算法基礎的貝爾曼(Bellman)方程,并進一步探索一些簡單而有效的動態規劃解決方案。
獎勵與回報
正如前面所說的,強化學習中的智能體學習如何最大化未來的累積獎勵。這個用來描述未來的累積獎勵的詞稱為回報,通常用R表示。我們還使用下標t來表示在某個時間步驟下的返回值。數學公式的表示如下:
如果我們讓這個級數無限延伸,那么我們可能會得到無窮的回報,但這樣的話使得這個問題的定義失去意義。因此,只有當我們期望得到的獎勵是有限級的,這個等式才有意義。有終止程序的任務稱為情景任務。紙牌游戲是情景性問題的好例子。情景的開始是向每個人發牌,并且不可避免地根據特定的游戲規則而結束。然后,下一輪另一個情景又開始,再次處理這些紙牌。
比起使用未來的累積獎勵,更為常用地是使用未來累積折扣獎勵:
在這里0<γ<1。以這種方式來定義回報值有兩個好處:不僅能夠以無限級數來定義回報值,而且還能為隨后的回報賦予更好的權重,這意味著我們更關心即將到來的回報,而不是我們將來會得到的回報。γ的值越小,就越正確。在特殊情況下,我們令γ等于0或者1。當γ等于1時,我們就回到了第一個等式,我們關心的是所有的回報,而不是考慮到未來有多遠。另一方面,當γ等于0時,我們關心的是當前的回報,而不考慮之后的任何回報。這將導致我們的算法缺乏長遠性。它將學會采取最適合當前情況的行動,但不會考慮此行動對未來的影響。
策略
策略,被記為Π(s,a),描述了行動的一個方式。它是一個這樣的函數:接受一個狀態和一個動作,并返回在該狀態下采取這個動作的概率。因此,對于一個給定的狀態,它必須滿足 。在下面的例子中,當我們餓時,我們可以在吃和不吃兩個動作之間做出選擇。
我們的策略應該描述如何在每個狀態下采取行動。因此,一個等概率的隨機策略就該像這樣子: 其中E代表吃的行動, 代表不吃的行動。這意味著,如果你處于饑餓狀態,你在選擇吃或者不吃的概率是相同的。
我們使用強化學習的目標是為了去學習一個最優的策略Π*,它告訴我們如何行動以得到最大化的回報。這只是一個簡單的例子,容易知道例子中的最優決策是餓了就吃 。在這個實例中,正如許多MDPs (馬爾可夫決策過程)一樣,最優的決策是確定性的。每一個最佳狀態都有一個最佳行動。有時這被寫成
Π*(s)=a,這是一個從狀態到這些狀態下最優決策行動的一個映射。
價值函數
我們利用價值函數來得到學習的最優策略。強化學習中有兩種類型的價值函數:狀態價值函數,表示為V(s);和行為價值函數,表示為Q(s,a)。
狀態價值函數描述了在執行一個策略時的狀態值。這是一個從狀態s開始執行我們的策略Π所得到的預期回報:
值得注意的是,即使在相同的環境下,價值函數也會根據策略而改變。這是因為狀態的價值函數取決于你的行為方式,因為你在某一個特定的狀態下的行為會影響你預期的回報。同樣要注意的是期望的重要性。(期望就像一個平均值,就是你期望看到的回報)。我們使用期望的原因在于:當你到達一個狀態時,會發生一些隨機狀況。你可能有一個隨機策略,這意味著我們需要將我們所采取的所有不同行動的結果結合起來。同樣地,過渡函數可以是隨機的,也就是說,我們不能以100%的概率結束任何狀態。記住上面的這個例子:當你選擇一個行動時,環境將返回下一個狀態。可能有多個狀態可以返回,甚至是一個動作。更多的信息我們將會在Bellman方程(貝爾曼方程)中得到。期望將所有的隨機性都考慮在內。
我們將使用另一個價值函數是動作價值函數。動作價值函數是指我們采取某一特定策略時,在某個狀態下采取一個動作所產生的價值。這是在策略Π下,對給定狀態和行動時所返回的預期回報:
對狀態價值函數的注釋同樣適用于動作價值函數。它將考慮到未來行動的隨機性,以及從環境中返回狀態的隨機性。
貝爾曼方程
Richard Bellman是一位美國應用數學家,他推導了以下方程,讓我們能夠開始求解這些MDPs (馬爾可夫決策過程)。在強化學習中,貝爾曼方程無處不在,必須了解強化學習算法是如何工作的。但是在我們了解貝爾曼方程之前,我們需要了解一些更有用的符號。我們P和R定義為如下:
P是過渡概率。如果我們在狀態s處開始,采取行動a,那么我們在狀態s’的概率為
是另一種表達我們從狀態s開始,采取行動a,到狀態s’的期望 (或平均) 獎勵的表達方式。
最后,有了這些知識,我們準備推導Bellman方程 (貝爾曼方程)。我們將把狀態價值函數考慮到Bellman方程(貝爾曼方程)之內。根據回報的定義,我們可以修改公式(1)為如下所示:
如果我們想從總和回報中提出第一個獎勵,公式可以被改寫為這樣:
在這里期望可以被描述如果我們采取策略Π時,繼續從狀態s出發的期望回報。可以通過對所有可能的動作和所有可能的返回狀態的求和來描述期望。接下來的兩個方程可以幫助我們邁出下一步。
通過對這兩個部分分配期望值,我們就可以將我們的方程轉化為如下形式:
值得注意得是,方程(1)和這個方程的結束部分是一樣的。因此,我們可以將其替換,得到如下:
Bellman方程(貝爾曼方程)的動作價值函數可以以類似的方式推導出來。感興趣的人可以在文章的最后看到具體的步驟。其最終結果如下:
Bellman方程的重要性在于,它能讓我們將一個狀態的值表達成其他狀態的值。這意味著當我們知道狀態st+1的值時,我們可以輕松地計算出狀態st的值。這為我們解決每個狀態值的迭代計算問題打開了大門,因為如果我們知道下一個狀態的值,我們就能知道當前狀態的值。在這里,最重要的是要記住方程式的編號。最后,隨著Bellman方程(貝爾曼方程)的出現,我們可以開始研究如何計算最優策略,并編寫我們的第一個強化學習智能體程序。
下一步:動態規劃
在下一篇文章中,我們將研究使用動態規劃來計算最優策略,這將為更高級的算法奠定基礎。然而,這將是第一個實際編寫強化學習算法的機會。我們將研究策略迭代和值迭代以及他們的優缺點。在此之前,感謝您的閱讀。
正如所承諾的:推導Bellman方程的動作價值函數(貝爾曼方程)
摘自微信公眾號:人工智能頭條
文中部分圖片無法下載粘貼,附原文鏈接:http://mp.weixin.qq.com/s/LgSY1vdJFoTwSggq6wCbHQ