前言
在本篇文章中將介紹獎勵與策略結構相關的知識,這一部分是強化學習的極重要一部分,因此會有較長篇幅介紹。
獎勵
獎勵是代理不斷完善自己,使自己能夠自主實現目標的直接經驗來源。代理通過接受來自環境獎勵判斷自己行為地好壞,從而通過更大可能的選擇收益高的行為使自己趨於目標狀態。好比老師為你的行為打的分數。
策略
前文提到,策略是代理狀態空間到動作空間的對映,即策略是一個函式,輸入是代理所處的狀態,輸出是代理的行為,可以看出策略的作用是指示代理在某一個狀態做出一個動作,即為代理的行動指示手冊,而最優策略則為代理在任意狀態,該手冊(策略)均可以給出最優的動作使代理獲得最大的長期獎勵(價值),最初代理是一個白痴,而學習就是通過長期訓練使得策略收斂於最佳策略,而在學習的過程中會產生這樣一個問題,若代理在一個狀態執行動作獲得較高的獎勵,是否以後在該狀態都會執行該行為?例如代理的狀態空間為S = {s1,s2,s3,s4},動作空間A = {a1,a2,a3,a4},也意味著代理在四個狀態均有四種動作可以執行,在初始時代理是一個白痴,不知道在每一個狀態執行每一個動作分別會獲得怎樣的獎勵,因此會隨機選擇一個動作執行,也稱之為代理的探索,現在假定代理在s1,執行動作a1後獲得+1的獎勵,於是代理記住了在s1執行a1會獲得好的獎勵,因此代理在s1狀態都會執行動作a1,這樣就產生了一個問題,代理在s1時,執行a2、a3、a4獲得的獎勵是未知的,也許會存在獎勵更大的情況,這樣子顯然不是一個最佳的學習方法,為了解決這個問題,引入了探索與利用的概念。
探索與利用
探索指的是代理在該狀態隨機選擇一個動作執行,這個動作不一定是獲得最大獎勵的動作,是完全隨機的,用於探索環境中未知的因素;利用指代理總是選取當前狀態下獲益最大的動作執行。接下來我們分析一下兩種極端情況,代理純粹探索與純粹利用。
純探索
純探索的意思是代理在任意狀態下動作的選取都是隨機的,不會受到任何因素的干擾,這樣導致的後果是代理過度學習,一直在探索、一直在學習,不會利用自己已經學習到的知識,哪怕代理已經直到在某個狀態執行某個狀態對自己最有利,但是它任然會隨機選擇行為執行,可見這樣的訓練毫無價值。
純利用
純利用是指代理在每一個狀態都選取最有利的動作執行,這樣產生的後果便是代理對環境的探索不充分,環境的很多地方都得不到探索,會導致得到的策略並不是最優策略。可以看出純探索和純利用都是不利的,最佳的方法是應該在探索與利用間尋求平衡,時代裡能夠探索完整的環境,又能在一定時間收斂到最佳策略。
利用與探索的平衡
從上文可以看出,純探索和純利用都要有極大的缺點,並不是我們想要的訓練方式,如果能在探索與利用之間找到平衡,便可較快速的訓練出聰明的代理。於是在這裡引入一個變數ε,它是一個概率,被稱之為貪婪係數,表明在當前狀態有ε的概率去探索環境(隨機選擇動作),(1-ε)的概率利用之前學到的經驗(即選擇最有利的動作),通常ε很小,類似於0.1之類的值甚至更小,這樣既能保證代理有機率探索環境,也能使得代理利用之前學習到的知識。為了使得策略更快的收斂於最佳策略,ε會呈現某種形式衰減,對衰減方式感興趣的小夥伴兒可以查詢資料,這裡不做過多闡述。
獎勵與價值
強化學習中,需要區別獎勵與價值兩個概念,前文提到,代理更有可能選擇長期獎勵較高的行為執行,這裡的長期獎勵便是價值。即:
獎勵:代理在當前狀態執行某動作獲得的即時獎勵
價值:代理從某一狀態向後執行一些列動作獲得的收益之和
舉個簡單例子,如下圖所示:代理在狀態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.