強化學習五大方面-獎勵與策略結構

前言

  在本篇文章中將介紹獎勵與策略結構相關的知識,這一部分是強化學習的極重要一部分,所以會有較長篇幅介紹。算法

獎勵

  獎勵是代理不斷完善本身,使本身可以自主實現目標的直接經驗來源。代理經過接受來自環境獎勵判斷本身行爲地好壞,從而經過更大可能的選擇收益高的行爲使本身趨於目標狀態。比如老師爲你的行爲打的分數。數組

策略

  前文提到,策略是代理狀態空間到動做空間的映射,即策略是一個函數,輸入是代理所處的狀態,輸出是代理的行爲,能夠看出策略的做用是指示代理在某一個狀態作出一個動做,即爲代理的行動指示手冊,而最優策略則爲代理在任意狀態,該手冊(策略)都可以給出最優的動做使代理得到最大的長期獎勵(價值),最初代理是一個白癡,而學習就是經過長期訓練使得策略收斂於最佳策略,而在學習的過程當中會產生這樣一個問題,若代理在一個狀態執行動做得到較高的獎勵,是否之後在該狀態都會執行該行爲?例如代理的狀態空間爲S = {s1,s2,s3,s4},動做空間A = {a1,a2,a3,a4},也意味着代理在四個狀態均有四種動做能夠執行,在初始時代理是一個白癡,不知道在每個狀態執行每個動做分別會得到怎樣的獎勵,所以會隨機選擇一個動做執行,也稱之爲代理的探索,如今假定代理在s1,執行動做a1後得到+1的獎勵,因而代理記住了在s1執行a1會得到好的獎勵,所以代理在s1狀態都會執行動做a1,這樣就產生了一個問題,代理在s1時,執行a二、a三、a4得到的獎勵是未知的,也許會存在獎勵更大的狀況,這樣子顯然不是一個最佳的學習方法,爲了解決這個問題,引入了探索與利用的概念。網絡

探索與利用

  探索指的是代理在該狀態隨機選擇一個動做執行,這個動做不必定是得到最大獎勵的動做,是徹底隨機的,用於探索環境中未知的因素;利用指代理老是選取當前狀態下獲益最大的動做執行。接下來咱們分析一下兩種極端狀況,代理純粹探索與純粹利用。函數

純探索

  純探索的意思是代理在任意狀態下動做的選取都是隨機的,不會受到任何因素的干擾,這樣致使的後果是代理過分學習,一直在探索、一直在學習,不會利用本身已經學習到的知識,哪怕代理已經直到在某個狀態執行某個狀態對本身最有利,可是它任然會隨機選擇行爲執行,可見這樣的訓練毫無價值。學習

純利用

  純利用是指代理在每個狀態都選取最有利的動做執行,這樣產生的後果即是代理對環境的探索不充分,環境的不少地方都得不到探索,會致使獲得的策略並非最優策略。能夠看出純探索和純利用都是不利的,最佳的方法是應該在探索與利用間尋求平衡,時代裏可以探索完整的環境,又能在必定時間收斂到最佳策略。 .net

利用與探索的平衡

  從上文能夠看出,純探索和純利用都要有極大的缺點,並非咱們想要的訓練方式,若是能在探索與利用之間找到平衡,即可較快速的訓練出聰明的代理。因而在這裏引入一個變量ε,它是一個機率,被稱之爲貪婪係數,代表在當前狀態有ε的機率去探索環境(隨機選擇動做),(1-ε)的機率利用以前學到的經驗(即選擇最有利的動做),一般ε很小,相似於0.1之類的值甚至更小,這樣既能保證代理有概率探索環境,也能使得代理利用以前學習到的知識。爲了使得策略更快的收斂於最佳策略,ε會呈現某種形式衰減,對衰減方式感興趣的小夥伴兒能夠查詢資料,這裏不作過多闡述。設計

獎勵與價值

  強化學習中,須要區別獎勵與價值兩個概念,前文提到,代理更有可能選擇長期獎勵較高的行爲執行,這裏的長期獎勵即是價值。即:
3d

  獎勵:代理在當前狀態執行某動做得到的即時獎勵 代理

  價值:代理從某一狀態向後執行一些列動做得到的收益之和 blog

  舉個簡單例子,以下圖所示:代理在狀態s2,僅僅能夠左右移動。考慮代理收取兩步內的獎勵,若是是一個鼠目寸光的代理,那麼它僅僅會注重眼前的利益,因而他會向左移動獲得1的獎勵到達s0,再向右移動獲得0的獎勵回到s0,這樣兩步的總獎勵是1;而對於一個有長遠目光的代理,他注重當前和之後的回報,於從s0向右移動到達s1,得到-1獎勵,再次向右移動到達s4得到+5獎勵,兩步總獎勵+4,比前者更多。而咱們固然更喜歡一個具備長遠目光、重視將來收益的代理,那麼是否是代理越重視將來收益越好呢?顯然也不是,比如因爲貨幣貶值,如今你兜裏的100元比你一年後兜裏的102元更值錢,所以將來的收益變得不在可靠,因而爲了下降將來獎勵帶來的風險,須要對將來的獎勵打折扣,離如今越遠,折扣越大,引入了折扣因子γ(0<=γ<=1),則總獎勵爲: m = i-1

$$
\R = \sum_{k=1}^T γ^ m*r_i
$$

  能夠看出離如今越遠,對其獎勵越不重視,若γ等於0,則是一個鼠目寸光得代理,只重視眼前利益,若γ等於1,則是一個過分重視將來獎勵的代理。

在這裏插入圖片描述

策略表達方式

  前文提到,策略其實是一個以狀態爲輸入,以動做爲輸出的函數,那麼他有哪些表達方式呢,這裏主要介紹基於表格和神經網絡。

基於表格

  若是環境的狀態和動做空間離散,且數量少,則可使用簡單表格來表示策略。 表格正是指望的形式:一個數組,其中,輸入做爲查詢地址,輸出是表格 中的相應數字。有一種基於表格的函數類型是 Q-table,它將狀態和動做 映射到價值。使用 Q-table,策略會在當前狀態給定的狀況下檢查每一個可能動做的價值,而後選擇具備最高價值的動做。使用 Q-table 訓練代理將包括肯定表格中每一個狀態/動做對的正確價值。在表格徹底填充正確的值以後,選擇將會產生最多長期獎勵回報的動做就至關直接

在這裏插入圖片描述

基於神經網絡

  當狀態/動做對的數量變大或變爲無窮大時,在表格中表示策略參數就不可行了。這就是所謂的維數災難。爲了直觀地理解這一點,讓咱們考慮一個用於控制倒立擺的策略。倒立擺的狀態多是從 -π 到 π 的任何角度和任何角速率。另外,動做空間是從負極限到正極限的任何電機轉矩。試圖在表格中捕獲每一個狀態和動做的每一種組合是不可能的。

在這裏插入圖片描述

  神經網絡是一組節點或人工神經元,採用一種可以使其成爲通用函數逼近器的方式鏈接。這意味着,給出節點和鏈接的正確組合,您能夠設置該網絡,模仿任何輸入與輸出關係。儘管函數可能極其複雜,神經網絡的通用性質能夠確保有某種神經網絡能夠實現目標。

在這裏插入圖片描述

  因此,與其嘗試尋找適合特定環境的完美非線性函數結構,不如使用神經網絡,這樣就能夠在許多不一樣環境中使用相同的節點和鏈接組合。惟一的區別在於參數自身。學習過程將包括系統地調節參數,找到最優輸入/輸出關係。

  左邊是輸入節點,一個節點對應函數的一個輸入,右邊是輸出節點。中間是稱爲隱藏層的節點列。此網絡有 2 個輸入、2 個輸出和 2 個隱藏層,每層 3 個節點。對於全鏈接的網絡,存在從每一個輸入節點到下一層中每一個節點的加權鏈接,而後是從這些節點鏈接到後面一層,直到輸出節點爲止。關於神經網絡的介紹就到這裏,感興趣的小夥伴能夠查閱資料。

總結

  本篇文章主要介紹了強化學習關於獎勵和策略結構的相關知識,梳理的很簡略,但這一部分在強化學習中十分重要,尤爲在算法的設計方面,不太理解的小夥伴能夠查閱資料繼續瞭解。

導航

五大方面之環境: https://blog.csdn.net/weixin_54445841/article/details/112965944.

入門資料: https://download.csdn.net/download/weixin_54445841/14910862.

Python工程:
https://download.csdn.net/download/weixin_54445841/14910913.

相關文章
相關標籤/搜索