- 深度強化學習算法與實踐:基于PyTorch的實現(xiàn)
- 張校捷編著
- 3688字
- 2022-05-06 17:08:33
2.2 強化學習的探索和利用
在2.1節(jié)的介紹中可以看到,策略的選取總是以狀態(tài)價值函數(shù)或者狀態(tài)-動作價值函數(shù)為先決條件的。尤其是我們使用貪心策略的時候,智能體的決策原則是永遠要到達具有更高狀態(tài)價值函數(shù)值的一個狀態(tài),這就導致了一個問題:因為使用的狀態(tài)價值函數(shù)的估計方法是一個迭代方法,所以雖然算法本身能夠保證收斂,但是無法保證收斂到的狀態(tài)價值函數(shù)永遠正確。假如初始的估算以及后續(xù)的策略選擇有問題,可能最終收斂到的狀態(tài)價值函數(shù)也有問題。這種情形在簡單的強化學習環(huán)境中可能不常見,在復雜的強化學習環(huán)境中卻比比皆是。舉個簡單的例子,假如訓練一個博弈游戲的智能體(可以是各種棋類,或者撲克類等有勝負的游戲),規(guī)定智能體在對決中勝出獲得獎勵為+1,平局獲得獎勵為0,輸?shù)粲螒颢@得獎勵為-1。假如跟游戲智能體博弈的對手足夠強,可以預見到智能體一開始獎勵都為負,直到在后續(xù)的嘗試中智能體發(fā)現(xiàn)了如何能夠在游戲里打平。由于打平獲得的獎勵比輸?shù)粲螒虻莫剟钜螅踔量赡苡螒虼蚱降母怕屎艽螅鄬Χ砸恢贝蚱接螒蚴侵悄荏w的一個較好的選擇,于是智能體的策略可能會收斂到一直打平這個策略上。但這個強化學習算法得到的智能體并不是最優(yōu)的,換言之,需要一個能夠獲得正獎勵的智能體,而不是一直獲得零的獎勵的智能體。出現(xiàn)這種情況的原因一般是智能體對環(huán)境的探索程度不夠。這也引出了本節(jié)的主題,即智能體對環(huán)境的探索(Exploration)和利用(Exploitation)。
1.環(huán)境的探索
下面討論對于環(huán)境的探索。這里首先定義智能體在馬爾可夫決策過程中經(jīng)過的一系列的狀態(tài)(和動作、獎勵)為軌跡(Trajectory)。對于1.2.2節(jié)中介紹的片段任務(wù)來說,在一個片段中智能體經(jīng)歷的決策對應的狀態(tài)(和動作、獎勵)可以認為是一條軌跡;相對而言,如果是連續(xù)任務(wù),可以對這個連續(xù)任務(wù)進行拆分,按照一定的長度對這些狀態(tài)(和動作、獎勵)拆分成多條片段,每條片段對應一條軌跡。對于智能體來說,一開始對環(huán)境的信息總是比較少的,為了能夠了解環(huán)境,感知到哪些狀態(tài)能夠獲取更多的獎勵,智能體需要考慮如何對周圍的環(huán)境進行探索。根據(jù)前面介紹的貪心策略,在探索的初始階段,因為智能體對環(huán)境的了解比較少,可以預見到,每個狀態(tài)的狀態(tài)價值函數(shù)基本上都為零或者接近于零,于是智能體的探索就接近于隨機探索,同時,在這個階段對應的軌跡應該是隨機化的,其中每條軌跡各不相同。在隨機探索的階段過后,隨著智能體對環(huán)境探索的增加,智能體獲取了更多對環(huán)境的信息,可以預見到的是智能體會逐漸找到一條相對來說獎勵比較高的決策過程,并且到最后這個軌跡逐漸收斂作為智能體認為最優(yōu)的軌跡固定下來。這是由前面介紹的最優(yōu)策略的迭代算法的收斂性決定的。雖然最優(yōu)策略的迭代算法能夠保證收斂,但是我們無法確定最后收斂的軌跡是最優(yōu)的,因為對于很多環(huán)境來說,智能體能夠通過迭代經(jīng)歷到的可能的狀態(tài)往往是環(huán)境可能狀態(tài)的一小部分,換言之,智能體很難經(jīng)歷所有的狀態(tài)。在這種狀態(tài)下,智能體選擇的軌跡是局部最優(yōu)的(相對于鄰近的其他軌跡而言最優(yōu)),而不是全局最優(yōu)的。
為了緩解這種狀況,這里引入一種新的策略稱為?-貪心策略(?-Greedy),這種策略可以在保證收斂的同時,增加智能體找到全局最優(yōu)的概率。具體實現(xiàn)的思想很簡單,智能體在選擇最大化價值函數(shù)的動作以外,有一定的概率選擇隨機的動作。一般來說,在實際的算法中會選取一個比較小的概率?,使得算法按照1-?的概率選擇正常的貪心策略,而按照?的概率選擇隨機的策略。為了保證算法的收斂性,可以逐步對概率?做衰減,直到衰減到接近于0,這樣就能兼顧探索新的狀態(tài)和讓算法收斂到最優(yōu)策略的特性。除了上面所述的?-貪心策略,還有其他算法來增加智能體對周圍環(huán)境的探索。在基于策略的模型中,往往會加入熵(Entropy)這個概念來衡量模型策略選擇的隨機性。熵的定義如式(2.8)所示。其中x是隨機變量,i是隨機變量的可能值,對應的式(2.8)的數(shù)學含義是隨機變量所有可能狀態(tài)的概率乘以概率的自然對數(shù)的和(這里定義0log0=0)。為了演示熵對于決策的影響,這里考慮一個具有兩個取值a和b的隨機變量x。假設(shè)p(x=a)=p,則p(x=b)=1-p,代入式(2.8),可以計算得到式(2.9)。

根據(jù)式(2.9),以p為自變量,可以得到圖2.4。在圖2.4中可以看到,當p=0.5時,隨機變量的熵值最大,這意味著隨機變量在取值過程中如果讓兩個不同值的概率相等,則隨機變量的熵達到最大。換句話說,也就是隨機變量取不同值的概率要盡可能均勻,才能讓熵達到最大。讀者可以證明,同樣的單個變量有多個不同取值的情況下,一定是各個取值概率相等的情況熵最大。而在策略函數(shù)π(a|s)中,同樣的熵最大意味著采取不同的動作的概率相等,這就和前面介紹的隨機探索的概念相符合,即在熵最大的情況下智能體的探索行為應該是完全隨機的。在實際應用中,會在策略梯度的損失函數(shù)中加入熵相關(guān)的項,這樣在優(yōu)化策略的時候會同時考慮盡可能讓每次決策的動作有一定的隨機性,我們會在后續(xù)的策略梯度的章節(jié)介紹如何實現(xiàn)對應的代碼。

圖2.4 二值隨機變量的熵隨著概率的變化
2.智能體對環(huán)境的利用
介紹完探索之后,接下來介紹智能體對環(huán)境的利用。跟探索的過程相反,利用的過程著重是如何在智能體已知信息的范圍內(nèi),讓智能體盡可能獲取最多的獎勵。正如在前面介紹的那樣,算法中使用比較多的是利用貪心策略獲得盡可能多的獎勵。在實際的強化學習過程中,為了能夠盡可能準確地估計狀態(tài)價值函數(shù),智能體往往會多次到達某個狀態(tài),直到最后估計的狀態(tài)價值函數(shù)收斂。在這個過程中,關(guān)于利用這個環(huán)節(jié),對比前面介紹的探索環(huán)節(jié),利用環(huán)節(jié)的目標主要是在短期內(nèi)收獲更多的獎勵,而探索環(huán)節(jié)是在長期內(nèi)看到能夠獲得更多獎勵的可能性。一旦在探索環(huán)節(jié)中找到了一些潛在的具有高回報的狀態(tài),智能體通過多次到達這個狀態(tài)能夠準確估算出這個狀態(tài)的價值函數(shù),如果經(jīng)過該狀態(tài)的軌跡比原先選定的軌跡所收獲的獎勵要高,則利用環(huán)節(jié)會優(yōu)先選擇通過該狀態(tài)的路徑。可以看到,利用環(huán)節(jié)的主要目的是在已知的所有狀態(tài)中選取一條路徑,使得這條路徑的獎勵盡可能大。對于智能體來說,探索和利用是相互矛盾的,一方面,探索要盡可能找到新的狀態(tài),這些狀態(tài)從長遠來看能夠獲得更高的獎勵;另一方面,利用則要盡可能從已知的狀態(tài)中獲取盡可能多的獎勵,著重是短期的獎勵。因此,對于一個強化學習算法,如何平衡探索和利用這兩點非常關(guān)鍵。
3.探索和利用的作用
下面用經(jīng)典的多臂賭博機問題(Multi-armed Bandit)來闡述探索和利用的作用。多臂賭博機是一種機器,它有N個搖桿,當智能體決策的時候,隨機搖動其中的搖桿,能夠從N個服從不同期望和方差正態(tài)分布的變量x1,x2,…,xN中隨機選取一個隨機變量,并且對這個隨機變量進行采樣,以這個采樣值作為智能體獲取的獎勵。可以預見到,在智能體的初始探索階段,因為采樣的隨機變量不夠多,智能體初始得到的獎勵可能和正態(tài)分布的平均值差別很大,這樣會導致智能體偏好選取初始獎勵比較高的搖桿。如果在這個階段采用貪心策略,就會收斂到一些期望的獎勵不夠高的狀態(tài)上。用代碼2.2的例子來闡述多臂賭博機的模型。在代碼中使用了兩個類,第一個類Env用來描述智能體所處的環(huán)境,第二個類EGreedyAgent用來描述智能體和對應的策略。可以看到,代碼中采用了兩種策略,第一種是貪心策略,在greedy_search方法中實現(xiàn),這個方法就是選擇具有最高價值函數(shù)的狀態(tài),并且選擇該狀態(tài)作為智能體的決策結(jié)果;第二種是隨機策略,在這個策略中,智能體會隨機選擇一個狀態(tài)作為智能體的決策結(jié)果。而?-貪心策略是這兩種策略的混合,代碼在這里設(shè)置一個概率,用這個概率控制隨機策略和貪心策略的比例,完全的貪心策略是一個特例,意味著EGreedyAgent采取隨機策略的概率為0。
代碼2.2 多臂賭博機的模型。


下面分析一下EGreedyAgent運行的結(jié)果(這里取1000個智能體的平均值,算法迭代100次的結(jié)果)。
圖2.5展示了這個策略的結(jié)果,在?=0.00時是完全貪心策略,智能體會永遠選擇獲取獎勵最高的狀態(tài)。可以看到,這個策略的表現(xiàn)平均來說還是很不錯的,特別是在迭代次數(shù)大于20的時候,基本上都能獲得最高的獎勵。這主要是因為狀態(tài)數(shù)目相對較少(10個不同的狀態(tài)),獎勵的隨機性比較強(正態(tài)分布),智能體在一定時間內(nèi)可以探索所有的狀態(tài)。但是貪心策略在迭代次數(shù)小于20的時候,效果比?=0.01的?-貪心策略要稍微差一點,原因是貪心策略的探索能力不夠強。但是由于加入了隨機策略,?-貪心策略在迭代次數(shù)大于60的時候得到的獎勵會小于貪心策略,這意味著在算法的后期?-貪心策略在利用上會弱于完整的貪心策略。至于最后一個?=0.1的狀況,則是另外一種極端的情況。在這種情況下,智能體采取隨機策略的概率會大大增加,同時智能體更加關(guān)注的是探索的過程,可見在大概10個迭代次數(shù)的時候這個策略能獲得的獎勵和前面的兩種策略接近,但是在后續(xù)幾個迭代后,由于智能體更側(cè)重于探索而非利用,對于獎勵的獲取會減少,因此最終的效果會不如前兩種策略。在這個例子中可以看到,一個合理的智能體應該能夠讓策略中探索和利用這兩種不同的方面取得平衡。

圖2.5 ?-貪心策略在多臂賭博機問題上的表現(xiàn)
有興趣的讀者可以考慮更改代碼中策略的輸入?yún)?shù),觀察不同的參數(shù)對于智能體探索和利用的影響,也可以實現(xiàn)一個EGreedyAgent,進行探索概率的衰減,觀察探索概率衰減是否能夠更有效地幫助算法找到一個更好的策略。
- 流量的秘密:Google Analytics網(wǎng)站分析與優(yōu)化技巧(第2版)
- 數(shù)據(jù)庫系統(tǒng)教程(第2版)
- 造個小程序:與微信一起干件正經(jīng)事兒
- JavaScript+jQuery網(wǎng)頁特效設(shè)計任務(wù)驅(qū)動教程(第2版)
- Responsive Web Design by Example
- Spring Boot進階:原理、實戰(zhàn)與面試題分析
- Scientific Computing with Scala
- 青少年信息學競賽
- ASP.NET開發(fā)與應用教程
- Joomla!Search Engine Optimization
- Java服務(wù)端研發(fā)知識圖譜
- C#程序開發(fā)參考手冊
- Swift iOS Programming for Kids
- 計算機應用基礎(chǔ)
- SFML Essentials