,,,,
(長江大學(xué)信息與數(shù)學(xué)學(xué)院,湖北 荊州 434023)
基于深度增強學(xué)習(xí)的自動游戲方法
袁月,馮濤,阮青青,趙銀明,鄒健
(長江大學(xué)信息與數(shù)學(xué)學(xué)院,湖北荊州434023)
增強學(xué)習(xí)近年來多被用于智能體自動游戲,但增強學(xué)習(xí)在面對過大的狀態(tài)或者行動空間時不能很好地處理。深度增強學(xué)習(xí)結(jié)合深度學(xué)習(xí)的感知能力和增強學(xué)習(xí)的決策能力,可以有效解決環(huán)境復(fù)雜問題。將增強學(xué)習(xí)與深度學(xué)習(xí)結(jié)合,通過改進的Markov決策過程逐步學(xué)習(xí)最優(yōu)策略。首先找到目前的環(huán)境中最有價值的狀態(tài),從而產(chǎn)生最大積累獎勵的行動,然后通過利用深度增強學(xué)習(xí)方法訓(xùn)練計算機自動完成一個簡單游戲,使用控制變量法分別分析迭代次數(shù)和游戲難易程度對游戲得分的影響。試驗結(jié)果表明,在外界環(huán)境相同時,準(zhǔn)確率隨著試驗迭代次數(shù)的增大或游戲難度的減弱而增大,從而驗證了智能體可以通過外界因素的改變進行更有效訓(xùn)練,最終獲取最優(yōu)結(jié)果。
深度增強學(xué)習(xí);自動游戲;智能體
近年來,深度學(xué)習(xí)已經(jīng)成為人工智能領(lǐng)域的研究熱點,其主要思想是通過訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),從高維數(shù)據(jù)中提取數(shù)據(jù)的深層特征[1]。增強學(xué)習(xí)作為一種重要的機器學(xué)習(xí)方法,其目的在于根據(jù)不同目標(biāo)構(gòu)造一個最優(yōu)策略。即當(dāng)智能體(Agent)處于某種動態(tài)的未知環(huán)境時,通過與環(huán)境狀態(tài)的交互作用,以環(huán)境反饋為輸入,然后不斷學(xué)習(xí),改進自身性能并調(diào)整行為,最終使所獲的累計獎勵最大化[2,3]。深度增強學(xué)習(xí)結(jié)合深度學(xué)習(xí)的感知能力和增強學(xué)習(xí)的決策能力,引起了研究者的廣泛關(guān)注,形成了人工智能領(lǐng)域新的研究熱點,在游戲、機器人控制、機器視覺等應(yīng)用領(lǐng)域都有著廣泛的應(yīng)用[4,5]。下面,筆者利用深度增強學(xué)習(xí)方法訓(xùn)練計算機自動完成一個簡單游戲,并且分析訓(xùn)練次數(shù)對游戲得分的影響。
1.1策略
Agent執(zhí)行每一步所獲得回報,該回報是對后面每個狀態(tài)的影響的總和,狀態(tài)是指Agent在某時刻所能觀察到的環(huán)境狀況,狀態(tài)決定下一步的動作,動作又對應(yīng)著一種狀態(tài),因此狀態(tài)和動作存在某種映射關(guān)系,這個過程稱為策略。策略用策略函數(shù)表示為:
at=π(st)
(1)
式中,st是時刻t的圖像輸入,即Agent在時刻t的狀態(tài);at是Agent下一步的行為。
Agent根據(jù)自己觀測到的st選擇一種行為at,環(huán)境接收到at后,會更新狀態(tài)為st+1。在這個游戲里,增強學(xué)習(xí)的任務(wù)就是找到一個最優(yōu)策略,使得累積回報達(dá)到最大。
通常,為了簡化增強學(xué)習(xí)模型,將該模型表示為一Markov過程,即下一狀態(tài)僅取決于當(dāng)前的狀態(tài)和當(dāng)前的動作。因此,狀態(tài)由來自游戲的幀序列(由于人眼的視覺暫留特性)以及玩家最近一次的動作(而并非之前所有動作)確定。為確定下一狀態(tài),需要定義一個函數(shù),并求出其最優(yōu)值,即最優(yōu)動作價值函數(shù)。
1.2最優(yōu)動作價值函數(shù)
因為動作對應(yīng)的狀態(tài)唯一,而狀態(tài)對應(yīng)的動作不唯一,因此用動作產(chǎn)生的回報更有利于找到最優(yōu)策略。而一個行為產(chǎn)生的獎勵肯定發(fā)生在行為之后,可以用一個價值函數(shù)來定義動作的潛在價值,即對未來回報的期望,表示為:
Qπ(s,a)=E[Rt|st=s,at=a,π]
(2)
Q*(s,a)=arg maxπQπ(s,a)
(3)
即從所有策略中選擇Q值(即累積回報)最大的。計算最優(yōu)Q值需要進行大量試驗,鑒于試驗的復(fù)雜性,可以通過使用Bellman方程迭代更新得到最優(yōu)Q值,即:
Q*(s,a)=Es′[r+λmaxa′Q*(s′,a′)|s,a]
(4)
式中,r是t時刻的獎勵;maxa′Q*(s′,a′)是使t+1時刻的a′達(dá)到最大的Q值。顯然,當(dāng)前狀態(tài)下是無法得知下一步情況的,但上一步的狀態(tài)可以得到,因此可以通過每次迭代新得到的r和之前的Q值更新Q值:
Qi+1(s,a)=Es′[r+λmaxa′Qi(s′,a′)|s,a]
(5)
理論上可以證明,當(dāng)i→∞時,Qi→Q*[7]。
在求解最優(yōu)動作價值函數(shù)時,每次迭代都要將所有的Q值更新一遍,而在此過程中只有有限的樣本提供給系統(tǒng),為了減小估計誤差造成的影響,不直接將目標(biāo)Q值賦給下一個,而是嘗試用一個神經(jīng)網(wǎng)絡(luò)來近似Q-函數(shù),這個神經(jīng)網(wǎng)絡(luò)其實就是一個卷積神經(jīng)網(wǎng)絡(luò),稱為深度Q-網(wǎng)絡(luò)(DQN)[8,9]。
1.3深度Q網(wǎng)絡(luò)
首先,定義一個用于訓(xùn)練DQN的損失函數(shù):
(6)
其中,要更新的目標(biāo)是Q網(wǎng)絡(luò),θ是神經(jīng)網(wǎng)絡(luò)的權(quán)重??梢杂嬎愠鰮p失函數(shù)對參數(shù)θ的梯度為:
(7)
Q(st,at)+α(Rt+1+λmaxaQ(st+1,a)-Q(st,at))→Q(st,at)
(8)
式中,α是學(xué)習(xí)率。
1.4經(jīng)驗回放
為了保證算法的穩(wěn)定收斂,在訓(xùn)練過程中添加了經(jīng)驗回放技術(shù)。時刻t的經(jīng)驗表示為et=(st,at,rt,st+1)。將時刻t之前的所有經(jīng)驗都存儲在Dt中,稱為回放記憶,表示為Dt={e1,e2,…,et},這樣有利于調(diào)用學(xué)習(xí),大大提高學(xué)習(xí)效率。每次迭代對神經(jīng)網(wǎng)絡(luò)的參數(shù)θ進行更新時,就從Dt中隨機抽取一小批經(jīng)驗,幫助神經(jīng)網(wǎng)絡(luò)的培訓(xùn)。抽取經(jīng)驗樣品的隨機性避免了相鄰經(jīng)驗的過度耦合,使其不再受價值函數(shù)波動對環(huán)境的影響,同時,Dt也為式(6)中的2個Q-網(wǎng)絡(luò)提供了不同時刻的輸入狀態(tài)和動作,為計算損失函數(shù)提供了回報r。
1.5初始動作的選擇
在游戲中,初始動作也需要一個策略來生成,通常有2種做法:一是隨機生成一個動作,二是根據(jù)當(dāng)前的Q值得到一個最優(yōu)的動作,表示為:
π(St+1)=arg maxaQ(St+1,a)
(9)
前者相當(dāng)于探索未知,有利于Q值的更新,獲得更好的策略,而后者利用之前的策略,相對前者對Q值的更新稍弱。筆者把探索與利用相結(jié)合,稱為ε-貪婪法,ε是指探索的概率,這將鼓勵A(yù)gent在開始不知道如何玩游戲時大量探索,此時狀態(tài)空間是非常大的。接著它做大量的隨機動作,并開始計算在不同的狀態(tài)下哪些動作更好,從而利用更多,并試圖縮小最佳的行動范圍。通過更改ε的值可以調(diào)整探索與利用的比例。
綜合以上步驟,得到訓(xùn)練游戲的帶經(jīng)驗回放深度增強學(xué)習(xí)算法如下:
初始化經(jīng)驗回放D,容量為D
初始化動作估值函數(shù)Q,隨機初始化參數(shù)
for episode =1,…,Mdo
初始化狀態(tài)S0,并用特征提取器進行預(yù)處理φ1=φ(S0);
fort=1,…,Tdo
以ε的概率選擇一個隨機動作at
或是根據(jù)式(9)選擇一個最佳動作
執(zhí)行at,得到獎勵rt;觀察下一個輸入圖像,得到像素數(shù)據(jù)xt+1
到達(dá)下一個狀態(tài)St+1,同樣進行預(yù)處理φt+1=φ(St+1);
添加經(jīng)驗et=(φt,at,rt,φt+1)到D中
從D中隨機抽樣一批樣品在10至100之間
通過反向傳播和隨機梯度更新DQN。
end for
end for
下面,筆者將通過一個游戲來驗證提出的深度增強學(xué)習(xí)算法的有效性。首先利用Python編寫一個簡單的游戲,如圖1所示,游戲規(guī)則如下:在屏幕的左上角有一個小方塊,底部放置了一個可移動的木板,小方塊每移動一步,玩家控制木板左移一步或右移一步或保持不動,待小方塊因碰撞屏幕四壁而改變飛行軌跡最終掉落下來時,觀察木板是否能夠接住小方塊。若木板成功接住小方塊,則能夠獲得分?jǐn)?shù)獎勵且小方塊反彈上去;若木板未能接住小球,則不得分,且小方塊與底部發(fā)生碰撞反彈上去。木板接住小方塊的次數(shù)越多,則獲得的分?jǐn)?shù)越高。
圖1 游戲在3種不同難度下(困難,中等,簡單)的示意圖
在利用筆者提出的深度增強學(xué)習(xí)算法訓(xùn)練時,DQN的結(jié)構(gòu)如下:該網(wǎng)絡(luò)采用84×84輸入圖像,第1層是一個卷積層,有32個步幅為4、8×8的濾波器,由整流非線性跟隨;第2層也是卷積層,有48個步幅為2、4×4的濾波器,另一個整流線性單元的濾波器跟隨;第3層是卷積層,具有64個步幅為2、3×3的濾波器,跟隨有整流線性單元。接著是全連接層,具有3456個輸出,最后輸出層也是全連接,具有784個輸出層,每個動作有一個輸出,如圖2所示。算法的相關(guān)參數(shù)設(shè)置如下:首先程序輸入的是屏幕大小為[320,400],小方塊的大小為[15,15]以及木板尺寸為[50,5],神經(jīng)網(wǎng)絡(luò)中學(xué)習(xí)率為0.99,存儲過往經(jīng)驗的回放記憶Dt為500000,批量設(shè)定為100,訓(xùn)練次數(shù)為500000,測試為50000。假設(shè)要教會Agent玩這個游戲,輸入以上數(shù)據(jù)后,對于木板將會輸出3個動作:左、右以及原地不動接小方塊。其次是當(dāng)小方塊每一個動作完成,會輸出屏幕圖像即每一個游戲畫面,它隱含地包括了所有得分情況的相關(guān)信息。最后是小方塊的速度和方向。以上3個方面的因素共同影響著動作的值,進而影響了下一個像素中木板的左右移動方向,用一個神經(jīng)網(wǎng)絡(luò)代表Q函數(shù),以狀態(tài)(游戲屏幕)作為輸入和動作作為輸出對應(yīng)的Q值。
圖2 DQN結(jié)構(gòu)
在試驗中,設(shè)置小方塊的大小為15mm×15mm,木板的高度為5mm,長度分別為50、150、250mm,分別對應(yīng)游戲難度為困難、中等、簡單。由于迭代次數(shù)較大,用小方塊的掉落次數(shù)表示(小方塊每掉落在底端或木板上一次,迭代次數(shù)為上百次),以木板成功接住小方塊的準(zhǔn)確率為試驗結(jié)果,如表1所示。
表1 不同環(huán)境下的準(zhǔn)確率
表1給出了小方塊的掉落次數(shù)與不同難易程度的關(guān)系,其中小方塊掉落200次對應(yīng)的木板移動步數(shù)大概為50000。由表1可以看出,在不同難易程度中,木板接住小方塊的準(zhǔn)確率會隨著掉落次數(shù)增大,最終趨于平緩。并且,游戲由簡單到困難,準(zhǔn)確率上升的速率也不盡相同。在困難的環(huán)境下,準(zhǔn)確率上升速率遠(yuǎn)遠(yuǎn)慢于在簡單的環(huán)境下。
圖3表示了在中等難度下木板接住小方塊的準(zhǔn)確率的曲線圖,橫坐標(biāo)依然是小方塊的掉落次數(shù),縱坐標(biāo)是準(zhǔn)確率。首先,由于游戲剛剛開始,準(zhǔn)確率會有很大的波動(如木板在第一次就接住小方塊,此時準(zhǔn)確率就是100%),在接近掉落次數(shù)單位為12的地方,除了小小的波動,準(zhǔn)確率開始以較大的速率增長,慢慢地,在接近掉落次數(shù)單位為70的地方,準(zhǔn)確率緩慢增長,大概保持在0.83。
圖3 中等難度下的準(zhǔn)確率曲線圖
闡述了深度增強學(xué)習(xí)方法的基本思想,并將其簡單應(yīng)用在一種自動游戲上,得到了智能體經(jīng)過訓(xùn)練的試驗結(jié)果,結(jié)果表明深度增強學(xué)習(xí)在進一步的應(yīng)用上有很大的潛力。在今后工作中,筆者也會嘗試將其進行改進應(yīng)用在其他游戲中,考查更多結(jié)果的影響。當(dāng)然,自動游戲中的深度增強學(xué)習(xí)還有不少亟待解決的問題,如如何丟掉那些不利于獲得獎勵的經(jīng)驗,使其不被從回放記憶中取樣,如何優(yōu)先處理能導(dǎo)致更好性能的經(jīng)驗等,這些都有待進一步研究。
[1]孫志軍, 薛磊, 許陽明,等. 深度學(xué)習(xí)研究綜述[J]. 計算機應(yīng)用研究, 2012, 29(8):2806~2810.
[2]高陽, 陳世福, 陸鑫. 強化學(xué)習(xí)研究綜述[J]. Acta 自動化學(xué)報, 2004, 30(1):86~100.
[3] 陳學(xué)松, 楊宜民. 強化學(xué)習(xí)研究綜述[J]. 計算機應(yīng)用研究, 2010, 27(8):2834~2838,2844.
[4] Mnih V, Kavukcuoglu K, Silver D, et al. Human-level control through deep reinforcement learning.[J]. Nature, 2015, 518(7540):529~533.
[5] Sallab A E,Abdou M,Perot E,et al.Deep reinforcement learning frame work for antonomous driving[J].Electronic Imaging,2017(19):70~76.
[6] Mnih V, Kavukcuoglu K, Silver D, et al. Playing atari deep reinforcement learning[J]. Computer Science, 2013,1312(5602):23~32.
[7] Sutton R S, Barto A G. Reinforcement learning I: Introduction[J]. Nature,1998,94720:143~148.
[8]陳先昌. 基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)算法與應(yīng)用研究[D]. 杭州:浙江工商大學(xué), 2013.
[9]盧宏濤, 張秦川. 深度卷積神經(jīng)網(wǎng)絡(luò)在計算機視覺中的應(yīng)用研究綜述[J]. 數(shù)據(jù)采集與處理, 2016, 31(1):1~17.
[編輯]洪云飛
2017-06-28
國家自然科學(xué)基金項目(61503047);長江大學(xué)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目(2016123)。
趙銀明(1965-),男,副教授,現(xiàn)主要從事應(yīng)用數(shù)學(xué)方面的教學(xué)與研究工作,452667017@qq.com。
引著格式袁月,馮濤,阮青青,等.基于深度增強學(xué)習(xí)的自動游戲方法[J].長江大學(xué)學(xué)報(自科版),2017,14(21):40~44.
TP391.4
A
1673-1409(2017)21-0040-05