閱讀筆記 增強學習1

2022-08-19 23:33:16 字數 3668 閱讀 9357

增強學習1

增強學習要解決的是如下的問題:乙個能夠感知環境的自治agent(可以簡單的理解為具有學習能力的機械人),通過怎樣的學習方式選擇能達到其目的的最優動作。在agent在其環境中做出每個動作時,施教者會提供獎勵或懲罰措施以表示結果狀態的正確與否。典型場景可見在學習棋類對弈時,在訓練agent進行棋類對弈時,施教者可在遊戲勝利時給出正回報,而在遊戲失敗時給出負回報,其他時候給出零回報。agent需要在這樣乙個非直接的、有延遲的回報中學習,以便後續的動作產生最大的累積回報。

顯然,我們關係的問題是,agent如何在其環境中做實驗並成功學習到控制策略,假定agent的目標可被定義為乙個回報函式,這個回報函式對agent在不同狀態中選取不同的動作賦予乙個數字值,即立即回報。這個回報函式可內嵌在agent中,或者只有外部施教者知道。agent執行一系列動作,觀察其後果,再學習控制策略。我們希望的控制策略是能夠從任何初始狀態選擇恰當的動作,使agent隨時間的累積獲得的回報達到最大。配圖1展示了agent學習問題的一般框架。圖中涉及到了狀態s、狀態集s、動作a、動作集a、目標函式。

上面提到的目標函式是控制策略π:s -> a。它在給定當前狀態s集合中的s時,從動作集a中輸出乙個合適的動作a。

不過從圖中給出的那個最大回報的求和公式∑_0^∞▒〖γ^i 〖 r〗_i 〗中可以看出,增強學習有幾個特點:

延遲回報,agent的任務是學習乙個目標函式π,它把當前狀態s對映到最優動作a = π(s)。在增強學習中施教者只在agent執行序列動作時提供乙個序列立即回報,而不提供顯式的訓練樣本。可以理解為不會像訓練乙個簡單的神經網路一樣,我們在訓練前就已經準備好了輸出樣例和對應的輸出樣例。增強學習可能會出現這樣的情況,agent執行了乙個動作,這個動作可能是很一般的動作,也可能是施教者可能沒有想到過或者極少的情況,但是作為施教者必須在agent執行了這次動作後提供乙個立即回報值。也就是說,我們在訓練乙個神經網路的流程是通過已知來**未知,但是在增強學習的過程中可能在agent訓練時就會出現需要「**」的情況發生,不過在不同的環境和具體問題設立的條件下,有些增強學習過程是可以避免這種不確定因素發生的。在這種學習機制的條件下,agent面臨乙個時間信用分配的問題,它需要確定最終回報的生成應歸功於序列中哪乙個動作。

探索,增強學習的過程中,學習器面臨權衡,agent既可以選擇探索未知的狀態和動作,也可以利用已經學會的可以產生高回報的狀態和動作來使累積回報最大化。如何選擇、如何決策才能產生最好的學習效果呢?

部分可觀察狀態,在實際的agent學習過程中,其感測器只能提供部分資訊,只有前置攝像頭的agent不能看到它背後的情況。在此情況下可能需要結合考慮其以前的觀察以及當前的感測器資料來選擇動作,而最優策略可能是選擇特定動作改進環境可觀察性,比如這個agent可以逆時針或者順時針轉90°,使原先觀察的前後方位現在可以兼顧(變成左右,假設這個agent左右可以同時兼顧),然後再決定向左側移動還是右側移動(現在的左右側是之前的前後側)。

終生學習,agent可能被要求再相同環境中使用相同感測器完成多個學習任務,比如再狹小走廊中獲取固定位置的物體。這使得有可能使用先前獲得的經驗或知識在學習新任務時減小樣本複雜度。(這句話是我原封不動的從書上抄下來的,這句話只可意會,拿正規的語法是沒法劃分這個句子的成分的,正所謂成分雜糅。。。)

下面我們規範化這個學習任務,按照馬爾可夫決策過程(mdp)來定義這個問題的一般描述。mdp中,agent感知到其環境的狀態集s中的任意乙個狀態,並且可以執行動作集合a中的任意動作。在每個離散時間步t(可以簡單理解為乙個時間步長或時間單位),agent當前狀態s_t,選擇當前動作a_t並執行它。環境響應此agent給出回報r_t= r(s_t,a_t),產生乙個後繼狀態s_(t+1)=δ(s_t,a_t)(從這個遞推公式可以很明顯的看出動態規劃的內容,這個等式說白了就是個狀態轉移方程)。函式δ和r是環境的一部分,agent並不知道。一般情況下這兩個函式是不確定的,但我們首先從確定性的情形開始。強調一次,agent的學習任務是學習乙個策略π:s -> a,agent基於當前狀態s_t,選擇動作a_t,即π(s_t )=a_t。乙個明顯的指定學習策略的方式就是求解此策略對agent產生的最大累積回報。我們定義:通過遵循乙個任意策略π從任意初始狀態s_t獲得的累積值為無窮級數v^π (s_t )=∑_(i=0)^∞▒γ^i r_(t+i)。其中,回報序列r_(t+i)的生成是通過由狀態s_t開始並重複使用策略π來選擇上述的動作,這裡很明顯又是個迭代遞推狀態轉移的過程,π(s_t )=a_t,s_(t+1)=δ(s_t,a_t),π(s_(t+1) )=a_(t+1)。這裡0≤γ<1,即乙個小於1的非負數,它確定了延遲回報和立即匯報二者之間的相對比例,在未來的第i時間步收到的回報被因子γ^i以指數折算。當γ=0時,累積值只考慮立即回報;當γ接近1時,未來的回報會更有價值些。這個累積量稱為由策略π從初始狀態s_t獲得的折算累積回報。現在進一步闡述agent的學習任務,我們要求agent學習乙個策略π,使得對於所有狀態s,v^π (s)最大。這個策略稱為最優策略,並用π^*來表示。

π^*=〖argmax〗_π (v^π (s)) ,∀s

下面舉乙個例子,這個例子就是書上的例子,節約時間起見這裡我直接貼圖:

如果你很疑惑圖中v^π (s_t )的值是怎麼來的的話,我們選擇γ=0.9,我寫出了左下角81和中下90兩個位置的計算,都是根據配圖中給出的那個最優策略,根據那個無窮級數計算,由於進入了g後agent可選擇動作只能是留在該狀態中,所以兩個算式中會有無窮多個0相加的部分,不過這些部分是實實在在的0相加,跟無窮小相加的概念不同,不需要額外的極限計算就可得到。

不過上述就是乙個簡單的案例,它已經給出了乙個最優策略。然而乙個agent直接學習函式π^*:s→a非常困難,因為訓練資料中沒有提供,這一點在上面我們提到了。作為替代,唯一可用的訓練資訊就是立即回報數列r(s_i,a_i),因此很容易學習乙個定義在狀態s和動作a上的數值評估函式,然後以此評估函式的形式來實現最優策略。很明顯評估函式的乙個選擇是上面提到的v^*,只要v^* (s_1 )>v^* (s_2 )時,agent認為狀態s1優於狀態s2。當然agent的策略要選擇的是動作而非狀態,即我們需要得到a= π^* (s),而根據

π^*=〖argmax〗_π (v^π (s)) ,∀s

可知使用v^*也可以選擇動作,即〖a= π〗^* (s)=〖argmax〗_a (v^π (s)) ,而前面提到的眾多遞推關係r_t= r(s_t,a_t),s_(t+1)=δ(s_t,a_t),π(s_(t+1) )=a_(t+1),v^π (s_t )=∑_(i=0)^∞▒γ^i r_(t+i),可知v^* (s_t )=r(s_t,a_t )+〖γv〗^* (s_(t+1) )(這裡其實是數列題裡面經常出現的乙個變形技巧,不難看出),即書上那個公式〖 π〗^* (s)=〖argmax〗_a [〖r(s,a)+〖γv〗^π (δ(s,a))],這個最終的狀態轉移方程可以解釋為,在狀態s下的最優動作是使立即回報r(s,a)加上立即後續狀態的v^*值(已經被γ折算過的)最大的動作a。當agent得知回報函式r和狀態轉移函式δ時,就可以通過上述表示式來計算任意狀態下的最優動作a了。可是在一般狀態下,當回報函式r或狀態轉移函式δ都未知時,學習v^*是無助於選擇最優動作的,因為agent不能通過該式進行評估。這個時候agent使用什麼樣的評估函式呢?這個問題留給明天。

今天就說這麼多吧,寒假沒怎麼學習,考研結束後一直都是提不起勁的狀態,畢設做來做去也就做不下去了,沒什麼樂趣。

倒是今天晚上寫這篇部落格燃起了我極大的熱情,現在已經是凌晨0:31了,晚安!

BT協議學習筆記1 閱讀概覽

這幾天看了bt協議的規範,互動的流程很簡單 相對於tcp ip協議互動的那些複雜的機制 下面列舉一些我參考的文獻以及做一些總結。其中1 2為bt協議的作者bram cohen本人寫的,最具權威性。1是標準的概覽,2後面的piece selection和peer selection部分十分詳細。1 2...

Effective C 閱讀筆記(1)

關鍵字 explicit 用於告知編譯器,該建構函式可以用於完成隱式型別轉換 implicit type conversation 建議 除非有乙個很好的理由,否則將建構函式申明為 explicit!c 是乙個由多個次語言組成的語言聯邦 c 風格 物件導向的c 泛型c stl c 不同的次語言尤其各...

pandas閱讀筆記 1

這幾天在閱讀python的pandas庫。現在還在閱讀第二章的內容,在第二章中又乙個例項,有乙個關於電影資料的資料集,然後,我們對它做一些簡單的分析,做個今天學習的總結。part 1讀取資料 首先使用的是pandas的read table函式,函式主要又以下幾個引數 filepath or buff...