強化學習經典入門書的讀書筆記系列--第三篇(上)

從這一章開始,我們介紹的問題將是本書剩餘部分一直要解決的問題。對於我們來說,這個問題定義了強化學習的全部領域:任何以解決這個問題為目的的方法都可以看成是強化學習方法。

我們這一章的目標是在更通用的意義上研究強化學習問題。我們試圖在更廣的範圍裡面去解釋一些可以被認為是強化學習應用的任務。同時我們儘可能用數學語言來描述這些問題及其相關理論。我們也會引入一下數學上的重要元素,比如價值函數和貝爾曼方程。在人工智慧領域普遍存在著應用廣泛性和數學複雜性的矛盾,我們將討論這些矛盾,並給出一些折衷的方法。

3.1 The agent-environment interface

強化學習問題如何定義呢?我們可以把它看成是從交互作用中獲取某個目標的直接建模過程。學習者或者說是決策者被稱作agent,和它交互的東西,是除了agent之外所有東西的組合,叫做environment。執行機構和環境之間的交互始終持續:agent依據當前environment選擇一個動作,environment給予這個動作以reward,然後給出一個新的environment。後文中我們統一把agent叫做執行機構,把environment叫做環境。對環境的完整的確定定義了一個任務,這個任務就是一個強化學習實例。

更具體點說,agent和environment在一系列離散的時間點上進行交互作用,t=0,1,2,3...

在每一個時間點上,agent會收到環境狀態的表示:S_{t} in S,S表示所有可能狀態的集合,在這狀態的基礎上選擇一個動作:A_{t} in A(S_{t})A(S_{t})表示在狀態S_{t}下所有可能的動作的集合,之後,作為對動作的回應,agent會收到一個數值化的獎勵(reward),然後進入新的狀態:S_{t+1}

在每一個時間點上,agent可以生成一個映射,這個映射是把當前狀態映射到所有可能執行的動作的概率上。所有的映射組成一起就叫做policy,也就是策略,表示成pi_{t},其中pi_{t}(a|s)就是當S_{t}=s,A_{t}=a的概率。強化學習方法就是用來確定agent的policy如何根據和環境交互的經驗來變化的方法。agent的目標,粗略的說,就是最大化在長遠過程之後得到的總獎勵。

下圖可以明確看出執行機構、環境、獎勵之間的關係:

這個框架很抽象,也很靈活,可以用在不同的問題上。比如,時間點不一定必須是固定間隔的真實時間,它也可以指的是任意的有關決策和動作的連續過程。動作可以是低層次的控制動作,比如機器人手臂電機的電壓;也可以是高層次的決策動作,比如是否吃午餐或者是否去上學。相似的,環境狀態也可以有不同的形式:它既可以低層次的感測器讀數,也可以是抽象的符號表示,比如屋裡的物體。甚至有的時候環境狀態可以基於過往的記憶或者完全是精神層面的。比如一個執行機構可以處在「不知道物體在哪裡」的狀態,或者說處在被某個定義好的感覺所「震驚」的狀態。比如有一些動作可以控制執行機構去選擇思考某些事情,或者是應該把注意力集中在什麼地方。總之,動作可以是我們能想到的任何我們想要做的決策,而狀態可以是任何我們認為對做決策有用的東西。

特別要提一下的是,執行機構和環境之間的邊界,並不是我們想像中的機器人或者動物的身體的物理邊界。通常來說,這個邊界離agent更近。比如:機器人中電機和機械的聯繫以及感測器的硬體應該屬於環境而不是執行機構。類似的,如果考慮人和動物,那麼肌肉、骨架、感覺器官應該屬於環境。

關於執行機構和環境的區分邊界的一個通用的規則就是:但凡不能被執行機構任意改動的部分都屬於外界環境。然而我們並非假設環境中的所有東西對於執行機構來說都是未知的。比如,通常執行機構都會知道一些關於其得到的獎勵是如何根據動作和環境狀態的方程計算出來的。不過通常來說我們還是把reward的計算看成是屬於外部環境的,因為reward決定了執行機構面對的任務,所以必須超出執行機構的控制範圍才行(如果執行機構可以控制其得到的reward,就亂套了,環境狀態的變化意義就消失了)。有時執行機構完全知道環境如何變化,然而仍然面臨很困難的學習任務。這其中的原因就在於control和know之間的區別。也就是說,執行機構和環境的邊界,在於其是否對該部分有完全的控制能力,而並非是否有完全的了解。

執行機構和環境的邊界,在不同的應用場景下有不同的表現。比如,一個執行機構所做的高等決策,可以正是組成了環境狀態的一部分,而這個環境狀態又正是一個低等執行機構面臨的,而這個低等執行機構,又幫助生成了高等的決策。在實際操作中,這個邊界當我們選定了環境狀態、動作和獎勵的時候就被確定下來了。

強化學習使用action,state和reward三個元素,作為一種廣泛的抽象。雖然對於實際問題的對應並不是百分百契合,但是仍然幾乎是可以概括所有問題的。

在具體的應用中,如何正確的表示state和action,會對學習效果有很大影響。(這裡或許可以類比成在寫面向對象的程序時,如何封裝一個類,有時好的封裝定義會簡潔,壞的定義會很複雜)。然而本書的主要目標還是關注當表示已經確定下來時,後續如何學的更好的問題。

接下來是書中給出了幾個具體例子,表示在不同應用條件下的action和state區分,這裡就不再一一解釋。

3.2 Goals and rewards

在強化學習中,執行機構的目標是獲取最大化的獎勵總和。這意味著不能單單只看眼前的獎勵,而要看長遠過程下的獎勵之和。

使用reward這個概念來形式化地表示目標是強化學習最重要的特點之一。儘管這種表示剛開始看起來有局限性,但是在實際應用中卻被證明是及其靈活且具有廣泛適用性。理解這一點最好的方式就是去看幾個例子:假如我們想讓一個機器人學會走路,研究人員提供了和機器人向前移動距離成比例的reward。為了讓機器人學會走出迷宮,只有當機器人成功逃出迷宮時,reward為1,而其他大多數時間都為0;迷宮問題的另一種reward設置方法是:在成功逃出迷宮之前的每一步的reward都設置成-1,這樣會讓機器人更快的找到辦法。

你可以從這些例子中看到,執行機構總是儘可能最大化它的reward。如果我們想讓執行機構完成什麼事情,我們就必須設法在執行機構正確完成我們的目標的一系列過程中給予獎勵。因此很重要的一點是,我們設置的獎勵要明確表明我們想完成的目標。說的更明白一點:獎勵信號是用來告訴執行機構你最終想要得到什麼,而不是你認為的怎麼去得到。舉例:下棋的時候,你應該在當你要真正贏得比賽的時候給予適當的獎勵,而不應該在某個好的局部局勢下給予正向獎勵,比如吃掉對方的棋子,佔據某個主動等等,雖然這些情況對於最終贏得勝利或許有用,但是如果總是在這些情況下給予獎勵,那麼執行機構就會傾向於獲得局部優勢,而忽略了全盤局面。

剛接觸強化學習的同學,有時會驚訝於獎勵是由環境決定的而不是由執行機構決定的。的確對於動物來說,大部分最終的目標都來源於自己身體內的計算:比如識別食物、飢餓、疼痛和快樂的感測器。然而,正如我們前面章節所說的,我們在理解強化學習問題時,最好把身體部分歸於環境因素。比如,如果機器人的目標是其內部電池電量,那麼這些就被看成是環境的一部分(儘管電池處於機器人內部,仍被看作外界因素);如果我們的目標是機器人手臂的位置,那麼手臂位置也看作是環境的一部分,也就是說agent和environment的邊界在控制系統和機器人手臂之間。為了便於我們更好的理解強化學習問題,我們在理解這個邊界概念的時候,不要被物理上的局限限制住,而是關注控制系統在哪裡。

我們這麼做的理由是agent的最終目標是一些它不能完美控制的東西,而不應該讓agent可以隨意改變reward。因此,我們把reward放在agent不能控制的範圍,這並非是禁止agent去自我定義內在的reward。事實上,這正是強化學習要解決的問題。

3.3 Return

到目前為止我們明確了強化學習的目標,我們知道agent的目標是在長遠時間內最大化總體reward(這裡為什麼不明確的說reward之和呢?讀者思考一下)。那麼如何正式的定義長遠狀況下的reward之和?假設在某個時間點t之後的一系列的reward序列為:R_{t+1},R_{t+2},R_{t+3}。那麼對於這個序列,我們選擇哪些方面去最大化呢?通常,我們選擇最大化「期望返回值(expected return)」用G_{t}表示。注意這裡某個時間點上的G_{t},也就是期望返回值,是從該時間點往後所有獲取的reward序列的某種函數,這個函數最簡單的形式是將所有項加和,但是並非只能是加和。

G_t=R_{t+1}+R_{t+2}+R_{t+3}+...

這種表示形式在有著自然的時間點概念的應用中很合適,比如下棋的過程、走迷宮的過程或者任何重複性的交互過程。我們把這一類過程叫做片段。每一個片段都有一個終止狀態,這個狀態之後意味著整個過程重置成初始狀態,或者來自初始狀態標準分布的其中一個採樣。帶有片段式過程的任務叫做片段任務。在片段式任務中我們通常需要區分所有非終止狀態,用S表示,終止狀態,用S^+表示。

有了片段式任務,自然就有連續式任務。在連續式任務中,很難把交互過程看成離散的時間點。比如連續過程式控制制任務,或者有著很長壽命的的機器人。這樣的上面片段式任務的定義就有點問題,因為最終的時間T=infty而我們希望最大化的返回值,可以很容易的就是無窮大。因此在本書中,我們將採用一種概念上很複雜但數學表示上很簡單的return定義。

這個定義方式就是discounting sum。如下所示:

G_{t}=R_{t+1}+gamma R_{t+2}+gamma^2 R_{t+3}+...=sum_{k=0}^{infty}{gamma^{k}R_{t+k+1}}

前面的係數,即discounting rate 0 leq gamma leq 1,決定了未來獎勵的當前價值。

discounting rate 的含義就是,在當前時間點k步之後的獎勵,在當前的價值是未來的gamma^{k-1}倍。當該係數小於1,最終和會收斂,只要獎勵序列是有限的。當係數為0,則執行機構是短視的,只顧眼前利益;如果係數大於1,執行機構是遠視的,也就是重視長遠獎勵。

3.4 Unified Notation for Episodic and Continuing Tasks

在之前的內容里,我們討論了兩類任務,一種是離散性質的片段式任務,另一種是連續任務。前一種任務在數學上簡單一點,因為它涉及的獎勵序列是有限的。在本書中,我們有時會討論片段式任務,有時也會討論連續式任務,但是經常兩者都會有,因此最好我們能有一種兩者都適用的表示法。

為了精確表示片段式任務,我們需要額外的表示。我們需要考慮一系列的片段,每個片段包含有限的時間點序列,而不在是之前的單一的長時間序列。我們把每個片段中的時間序列的起始點都設置為0。因此我們需要把之前的S_{t}變成S_{t,i},表明在片段i的時間點t。然而,當我們在討論片段式任務的時候,我們幾乎不需要考慮不同片段之間的不同。我們只需要考慮某一個片段的情況,然後聲明這些情況對於所有片段都適用。因此,我們還是用S_{t}來代表S_{t,i}

我們還需要另一個約定符號來統一兩種任務形式。我們已經定義了有限項的返回值公式和無限項的返回值公式。這兩個公式可以通過某種方式合併起來:把片段式任務的終點看成是進入了一個特殊的「吸收狀態」(absorbing state),這種狀態的特點是其狀態轉移過程始終發生在自身,並且產生的reward都是0。例如下圖:

這張圖中的灰色正方形就代表吸收態。這種形式在引入discounting rate的時候也適用。因此我們就可以定義了廣義上的return,如下式所示:

G_t=sum_{k=0}^{T-t-1}{gamma^{k}R_{t+k+1}}

這個公式包含了T=inftygamma=1的可能(但並非同時滿足這兩種可能)。我們在本書餘下的部分會一直使用這種表示形式。

3.5 The Markov Property

在強化學習的框架中,agent做出的決策基於環境狀態。在這一節,我們主要討論什麼樣的狀態信號是我們需要的,還有就是我們希望狀態信號提供什麼樣的信息。特別的,我們定義了一種叫做馬爾科夫性質的環境性質,這種性質的環境狀態具有一些特別的特點。

在本書中,我們用「狀態」這個詞來表示agent可以獲得的所有信息。我們假設這些狀態來自於環境中的某些預處理系統。本書中我們不去討論狀態的構建、轉化、或者獲取等問題,並不是因為覺得這些不重要,而是想把主要重點放在「決策」過程上。

毋庸置疑,狀態信息應該包含一些採集信息採集裝置比如感測器,但實際上它包含的內容更多。狀態表示可以時原始信息經過高度處理之後得到的,或者是依據原始序列信息,經過複雜變化之後得到的。比如,當我們移動目光看一片景色的時候,每一時間點,我們其實只能看到一小部分,然而最終我們的印象里得到的是整個景象和細節。用一個更普通的例子說明,一個控制系統可以通過在不同時間測量同一物體的位置而得到它的速度。在這兩個例子中可以看出,狀態信息都依據即時的感測信息進行了重新處理。我們沒必要非得把狀態信息限制為最原始的信息,事實上在某些應用中,我們需要對這些原始感測信息進行重構,獲取一些高維信息。

從另一方面來說,狀態信息不應該把關於環境的所有信息都提供給agent。比如agent正在玩blackjack,我們就不能告訴它下一張牌是什麼。如果agent正在打電話,我們就不能讓它提前知道誰打的電話。在這幾個例子中,在環境中存在著隱藏信息,儘管那些信息對於agent來說是有用的,但是agent不能知道這些信息,因為它沒有任何可以獲取這些信息的途徑。

理想情況下,狀態信息應該簡潔綜合了歷史信息 ,也就是用某種方式記住所有相關信息。能夠成功保留所有相關信息的狀態信息叫做具有馬爾科夫狀態的狀態。例如棋盤的盤面狀態,可以看成具有馬爾科夫性質,因為它包含了所有以往可以生成當前盤面的序列信息。很多序列信息都丟失了,但是所有對於將來盤面重要的信息都被保留下來了。相似的,炮彈當前的位置和速度信息就可以完全決定將來的飛行軌跡。通常也把這種性質叫做「independence of path」,因為所有關鍵的信息都存在當前的狀態信息中,也就是說當前狀態信息獨立於所有歷史狀態信息。

現在我們正式定義一下馬爾科夫性質。為了使數學表示儘可能的簡單,我們假設有有限的狀態和獎勵值。這樣我們就能求和和概率的數學語言來表示,而不需要用積分和概率分布。在通常情況下,當前的狀態取決於所有已經發生過的歷史狀態,因此我們可以定義如下:

Pr(R_{t+1}=r,S_{t+1}=s|S_0,A_0,R_1,...S_{t-1},A_{t-1},R_t,S_t,A_t)

那麼如果狀態信息滿足馬爾科夫性質,那麼t+1時刻下的狀態只取決於t時刻的狀態和動作,因此我們有可以用另一種形式表示:

Pr(R_{t+1}=r,S_{t+1}=s|S_t,A_t)

如果狀態信息滿足馬爾科夫性質,那麼上面兩式一定相等,反之亦然。

如果環境具有馬爾科夫性質,那麼我們就能根據當前的狀態和動作預測下一時間點的狀態和期望的reward。於是乎,如果我們有了當前的狀態和動作信息,通過不斷迭代上面的相等關係,我們就可以把所有將來的狀態和期望獎勵值都算出來了。馬爾科夫性質告訴我們,依據當前信息做出的最優選擇,也就是依據所有歷史信息能做出的最優選擇。

然而,就算是有些情況下環境狀態並非嚴格遵守馬爾科夫性質,其實影響也並不是那麼重要,依然可以當成馬爾科夫性質來處理。

馬爾科夫性質在強化學習中之所以那麼重要,是因為我們假定agent做出的決策和該決策的價值(value)是當前狀態信息的函數。為了讓這個假設成立,我們必須讓當前的狀態是具有充分信息性的(也就是能完全足夠代表歷史信息做出決策)。在本書中的所有狀態都建立在具有馬爾科夫性質的假設上。然而,基於馬爾科夫性質所研究的演算法,也能幫助我們解決一些非嚴格遵守馬爾科夫性質的應用中。最後要說的是,馬爾科夫性質的假設,並非僅僅出現在強化學習領域,而是在很多人工智慧領域都有涉及。

【作者的話:這一篇結尾主要提了一下馬爾科夫性質,下一篇我們將依據一個具體例子來詳細闡述馬爾科夫過程,以及後面幾節關於價值函數、貝爾曼方程的內容。】

------------------------------------------------------------------------------------------------------------------------

原文鏈接: 強化學習經典入門書的讀書筆記系列--第三篇(上)

本書資料下載:pan.baidu.com/s/1hrFcDG

歡迎關注我們的微信公眾號:神經網路與強化學習

文章原創,禁止轉載。

歡迎大家提出寶貴意見,多多交流~


推薦閱讀:

計算機視覺之我見,碧空的cv之旅開篇
聽說你剛中了NIPS?恭喜(研究德撲、老鼠鬍鬚等AI的都入圍了)
一文了解各種卷積結構原理及優劣
MATLAB神經網路(二):BP非線性建模
【神經網路】激活函數面面觀

TAG:神经网络 | 强化学习ReinforcementLearning | 深度学习DeepLearning |