李淑琴,李 奕
(1.北京信息科技大學(xué) 計算機(jī)學(xué)院, 北京 100101; 2.感知與計算智能聯(lián)合實(shí)驗室, 北京 100101)
計算機(jī)博弈一直是驗證人工智能理論的試金石,也是人工智能最活躍的研究領(lǐng)域之一。計算機(jī)博弈相關(guān)理論和技術(shù)被廣泛應(yīng)用于金融、交通、軍事等領(lǐng)域。計算機(jī)博弈通常包括完全信息博弈[1]和非完全信息博弈[2]。非完全信息博弈問題相對于完全信息博弈,其研究更為困難也更加具有挑戰(zhàn)性。深度強(qiáng)化學(xué)習(xí)憑借深度學(xué)習(xí)的感知能力與強(qiáng)化學(xué)習(xí)的決策能力成為解決非完全信息博弈問題的主流方法[3-5],目前深度強(qiáng)化學(xué)習(xí)的研究點(diǎn)主要集中在樣本利用效率,獎勵函數(shù)設(shè)計以及決策方法上。
在樣本利用方面,以往的經(jīng)驗回放機(jī)制中最早采用的隨機(jī)經(jīng)驗回放,即將多條經(jīng)驗樣本存儲在經(jīng)驗池中,然后隨機(jī)采樣更新深度神經(jīng)網(wǎng)絡(luò),以便克服數(shù)據(jù)之間的相關(guān)性,這在一定程度上提高了數(shù)據(jù)利用率,但不符合人的學(xué)習(xí)習(xí)慣。人們在日常的學(xué)習(xí)中,往往對一些重要的經(jīng)驗記憶深刻,而忽略那些不重要的經(jīng)驗。文獻(xiàn)[6]首次提出了優(yōu)先經(jīng)驗回放機(jī)制,對于經(jīng)驗池中的樣本,根據(jù)經(jīng)驗重要性賦予不同的優(yōu)先級,樣本優(yōu)先級越大則其被采樣到的概率就越高,即希望越重要的經(jīng)驗使用次數(shù)越多,從而增加學(xué)習(xí)效率。文獻(xiàn)[7]提出根據(jù)經(jīng)驗樣本的時序差分誤差(temporal-difference)的不同,賦予每個樣本不同的優(yōu)先概率,誤差值越高,表明模型評估的差異越大,越需要訓(xùn)練,重要性越大。文獻(xiàn)[8]不僅考慮時序拆分誤差,還引入了Q值作為劃分標(biāo)準(zhǔn)。文獻(xiàn)[9]采用了回合平均獎勵作為優(yōu)先級進(jìn)行樣本選取??梢妰?yōu)先經(jīng)驗回放機(jī)制中對經(jīng)驗樣本的劃分方法并不統(tǒng)一,一般與具體領(lǐng)域有關(guān)。
本文從提高大眾麻將AI訓(xùn)練樣本利用率角度出發(fā),通過改進(jìn)強(qiáng)化學(xué)習(xí)算法中樣本利用方法,以便提升麻將AI的訓(xùn)練速度。
麻將是中國古代發(fā)明的一種不完全信息博弈游戲,在中國各地區(qū)都十分流行,不同地區(qū)有著不同的玩法。本文針對2021年中國計算機(jī)博弈錦標(biāo)賽中大眾麻將[10-11]進(jìn)行研究,大眾麻將游戲基本術(shù)語及規(guī)則如下:
玩家:大眾麻將游戲由4名玩家組成。
牌庫:牌的總張數(shù)。大眾麻將分為條、筒、萬三門,共計108張。
牌墻:開局發(fā)完初始手牌后,剩下的牌為牌墻,共55張。
局面:某位玩家在某一個時刻可以觀察到的所有信息。
條:條子牌共有9種,由序數(shù)牌一條至九條組成,每一種都有4張,共有36張。
筒:筒子牌共有9種,由序數(shù)牌一筒至九筒組成,每一種都有4張,共有36張。
萬:萬字牌共有9種,由序數(shù)牌一萬至九萬組成,每一種都有4張,共有36張。
順子:指同一花色中,順序相連的3張牌,如“一萬二萬三萬”。
刻子:指同一花色中,3張相同的牌,如“一萬一萬一萬”。
對子:指同一花色中,2張相同的牌,如“一萬一萬”。
摸牌:玩家從牌墻中摸1張牌。
出牌:玩家從手牌中選擇1張打出。
吃牌:當(dāng)上家打出的1張牌和自己手牌中的2張牌構(gòu)成順子時,則可進(jìn)行吃牌操作。
碰牌:其他玩家打出的1張牌和自己手牌中的2張牌相同,則可以進(jìn)行碰牌操作。
明杠:指其他玩家打出的1張牌和自己手牌中的3張牌相同,則可以進(jìn)行明杠操作。
暗杠:指自己手中有4張相同的牌,則可以進(jìn)行暗杠操作。
補(bǔ)杠:指自己手牌中有1張和自己已經(jīng)碰過的牌相同,則可以進(jìn)行補(bǔ)杠操作。當(dāng)牌墻中有剩余牌時玩家可以進(jìn)行杠牌,玩家摸完牌墻最后1張牌不能杠牌。
和牌:分為點(diǎn)炮、自摸、和搶杠胡,點(diǎn)炮是指其他玩家打出某張牌結(jié)合我方的手牌組成和牌牌型,自摸是指自己摸牌后的牌型為和牌牌型,搶杠胡是指其他玩家補(bǔ)杠的某張牌結(jié)合我方手牌組成和牌牌型,和牌牌型通常是An+B的格式,A為順子或刻子,B為對子,此外還包括七對(7個對子)和牌方式。
聽牌:當(dāng)玩家手牌打出某張牌后,還差1張牌就可以和牌時,此時的手牌是聽牌狀態(tài)。玩家可選擇是否進(jìn)行報聽操作。報聽后,雖然可以直接獲得分?jǐn)?shù)獎勵,但是此后不可吃、碰操作,后續(xù)摸什么牌就打什么牌,直到場上胡的那張牌出現(xiàn),才可進(jìn)行和牌操作。且在不影響原來聽的牌的情況下,當(dāng)場上有合法的杠牌出現(xiàn)時,可以選擇進(jìn)行杠牌操作。
開局時4位玩家分東南西北入座,每人起手摸13張牌,莊(東風(fēng)位置)玩家起手多摸1張牌,共計14張。之后由莊家位玩家開始按逆時針出牌操作,行牌過程中可進(jìn)行摸牌、出牌、吃牌、碰牌、杠牌、報聽和和牌操作。其中,吃牌、碰牌、杠牌、報聽和和牌都可獲得直接收益。且同一時刻可能會出現(xiàn)多種決策動作,各動作的優(yōu)先級為:和牌>杠牌>碰牌>吃牌。當(dāng)有玩家成功和牌或牌墻中的牌出完時,牌局結(jié)束,根據(jù)玩家動作以及和牌牌型的番種,統(tǒng)計各玩家的總分,麻將游戲番種如表1所示。
表1 麻將游戲番種
由于大眾麻將真人打牌數(shù)據(jù)有限,目前主要采用遷移學(xué)習(xí)[12-13]和深度強(qiáng)化學(xué)習(xí)的方法來進(jìn)行研究,但在樣本的使用上,存在兩個問題:
1) 經(jīng)驗樣本存在時序相關(guān)的特點(diǎn),不符合獨(dú)立同分布的假設(shè),因此網(wǎng)絡(luò)模型很難穩(wěn)定地去學(xué)習(xí)。
2) 經(jīng)驗樣本被利用一次后就被丟棄,樣本利用率差。
為解決上述問題,將經(jīng)驗樣本存入經(jīng)驗池,從經(jīng)驗池取出均勻采樣用于訓(xùn)練的方法,但是這樣做會導(dǎo)致經(jīng)驗樣本浪費(fèi),效率也低。為了提高經(jīng)驗樣本(Si,a,r,Si+1)的利用率,對重要的經(jīng)驗重復(fù)利用,本文綜合考慮經(jīng)驗樣本中局面Si的復(fù)雜程度D(Si)、時間差分誤差δi、動作的即時獎勵值ri三個因素。首先計算出經(jīng)驗樣本中各個因素的優(yōu)先值概率,然后通過對3個因素的概率值線性加權(quán),計算出經(jīng)驗樣本的總優(yōu)先概率,概率值越大,被抽取的概率越大。本文通過提高重要樣本的抽取概率,提高數(shù)據(jù)利用效率,加快網(wǎng)絡(luò)的訓(xùn)練速度。
結(jié)合大眾麻將游戲的特點(diǎn),麻將游戲?qū)儆诙嗳瞬┺挠螒?,游戲隱藏信息多,對手策略隱蔽,出牌不確定性程度高。由于距離和牌近的游戲局面往往比較容易取得勝利,局面相對簡單,而距離和牌越遠(yuǎn)的游戲局面不確定性程度大,局面比較復(fù)雜。因此,本文在選擇樣本重要程度時考慮了不同時刻局面的復(fù)雜程度,并根據(jù)局面復(fù)雜程度給出優(yōu)先級。
定義:麻將局面的復(fù)雜程度
一個局面的復(fù)雜程度為當(dāng)前局面與游戲結(jié)束局面時的距離。即當(dāng)前麻將局面下玩家替換若干手牌后可以和牌的最小值。
某個局面Si的復(fù)雜程度D(Si)計算。本文除了考慮計算4個搭子加1個對子的所有基本和牌牌型外,還考慮了七對這種特殊牌型,計算方法如式(1)所示。
D(Si)=min(D1(Si),D2(Si))
(1)
其中:D1(Si)表示計算4個搭子加1個對子的基本和牌牌型,計算方法如式(2)所示。
(2)
其中:m表示手牌中搭子(不相交的刻子數(shù)和順子數(shù));n表示手牌中不相交的搭子數(shù)(包括兩面搭子、邊張搭子、嵌張搭子和對子);p表示除去面子和搭子后手牌中是否還有一對子。
和牌不僅包括基本胡,還包括七對這種牌型,計算如式(3)所示。
D2(Si)=7-q
(3)
其中q表示當(dāng)前局面的手牌中的對子數(shù)。
樣本中局面復(fù)雜程度的優(yōu)先概率計算首先通過式(1)先得到每個局面復(fù)雜程度大小D(Si),然后根據(jù)式(5)計算該時段局面復(fù)雜程度重要性值Mi,最后通過式(4)歸一化得出樣本局面復(fù)雜程度的選取概率PD。Mi表示樣本i的復(fù)雜程度對應(yīng)的數(shù)值大小。相關(guān)定義如下:
(4)
Mi=-e(D(Si)-φ)2+f
(5)
式(5)表示不同時刻下樣本局面復(fù)雜程度大小,其中,e,φ,f為調(diào)節(jié)參數(shù),e使得不同復(fù)雜程度優(yōu)先級間隔平滑,f保證局面復(fù)雜程度對應(yīng)的重要性值為正,φ使得AI在不同時間局面復(fù)雜度的優(yōu)先級不同。起初φ=0,表示局面復(fù)雜程度為0的經(jīng)驗樣本概率最大;隨著游戲局?jǐn)?shù)的增加,φ逐漸增大,局面復(fù)雜程度位于(0,φ)之間值的重要性逐漸變小;局面復(fù)雜程度最高為7,所以值位于(φ,7)的樣本重要性逐漸增大,表明隨著學(xué)習(xí)的時間增加,學(xué)到的局面復(fù)雜程度越來越大。
在麻將游戲?qū)謺r刻t,對于狀態(tài)St做出了動作a,并轉(zhuǎn)移到下一個狀態(tài)St+1時,會獲得的立即回報為r?;貓蟮慕^對值大的樣本往往反應(yīng)映AI動作過好或者過壞,重要程度較高。因此,在選擇樣本重要程度時考慮動作的立即回報。立即回報選擇概率如式(6)所示。
(6)
其中:i表示為經(jīng)驗樣本中即時獎勵的下標(biāo);ε是一個很小的常數(shù),防止即時獎勵為0的經(jīng)驗被抽取到的概率為0。
在t時刻,狀態(tài)為St,動作為at, AI的狀態(tài)動作價值函數(shù)Q(St,at)與事先預(yù)估的狀態(tài)動作價值函數(shù)Q(St+1,at+1)的差值稱為時間差分誤差。時間差分誤差越大,表明AI對該局面動作選取越差,越需要學(xué)習(xí)更新。因此,在選擇樣本重要程度時考慮了樣本時序差分誤差。時序差分選擇概率如式(7)—(9)所示。
δt=r+λQ(St+1,at+1)-Q(St,at)
(7)
pi=|δi|+ε
(8)
(9)
其中:λ為衰減率;ε是一個很小的常數(shù),防止時序差分誤差為0的經(jīng)驗被抽取到的概率為0。
綜合考慮局面的復(fù)雜程度、動作即時獎勵以及時間差分誤差,采用線性加權(quán)的方式計算樣本總優(yōu)先概率值,多重優(yōu)先級計算方法如式(10)(11)所示。
(10)
(11)
其中:PTD(i),PR(i),PD(i)分別表示第i條經(jīng)驗樣本的時序差分誤差、獎勵、復(fù)雜程度概率;a∈[0,1],b∈[0,1],c∈[0,1]為三者的權(quán)重,它們的大小隨時間的增加而減小。隨著游戲?qū)值脑黾樱珹I對經(jīng)驗的學(xué)習(xí)越來越不依賴于這些優(yōu)先經(jīng)驗,當(dāng)對局?jǐn)?shù)目增大時μj減小。
提出的多重優(yōu)先級回放方法改變了經(jīng)驗的抽樣方式,但是它引入了偏差,不利于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。為此,通過使用重要性抽樣(importing sample)對高概率樣本降低學(xué)習(xí)率,以防止過擬合。
重要性采樣權(quán)重如式(12)所示:
(12)
其中β∈ [0,1],網(wǎng)絡(luò)剛開始訓(xùn)練時,β設(shè)置較小,隨著網(wǎng)絡(luò)訓(xùn)練β值逐漸增加至1。
相比于隨機(jī)經(jīng)驗回放,優(yōu)先經(jīng)驗回放在計算經(jīng)驗樣本的優(yōu)先級上需要額外的時間。所以,本文在經(jīng)驗樣本優(yōu)先級的計算以及經(jīng)驗樣本的抽取上進(jìn)行了時間優(yōu)化。主要方法包括:
1)當(dāng)一條新經(jīng)驗樣本覆蓋經(jīng)驗庫時,需要重新計算經(jīng)驗庫中每條經(jīng)驗樣本的優(yōu)先級,此時經(jīng)驗庫中總局面復(fù)雜程度、總即時獎勵以及總時序差分誤差不必重新累加,優(yōu)化方法如式(13)所示,其中W表示經(jīng)驗庫中局面復(fù)雜程度、即時獎勵或時序差分誤差:
W總=W總+W移入-W移除
(13)
2) 當(dāng)計算出個樣本的總優(yōu)先級值時,常用做法是對樣本排序后按概率進(jìn)行抽取,這種做法的平均時間復(fù)雜度為nlog2(n),本文通過構(gòu)建sum-tree進(jìn)行經(jīng)驗樣本的抽取,時間復(fù)雜度為log2(n),如圖1所示。
圖1 sum-tree示意圖
葉子節(jié)點(diǎn)表示經(jīng)驗庫中樣本的總優(yōu)先級值,父節(jié)點(diǎn)為子節(jié)點(diǎn)之和,構(gòu)建sum-tree時,當(dāng)葉子節(jié)點(diǎn)不為2n時,用0節(jié)點(diǎn)補(bǔ)至2n,自下而上構(gòu)建整棵樹。節(jié)點(diǎn)旁紅色數(shù)字為節(jié)點(diǎn)標(biāo)號,葉子結(jié)點(diǎn)下面是他們各自對應(yīng)的數(shù)值區(qū)間,葉子結(jié)點(diǎn)數(shù)值越大(優(yōu)先級越高)其區(qū)間長度就越大,因此從0~11中均勻抽樣一個數(shù)據(jù)落到這個區(qū)間內(nèi)的概率也就越大,這就是按照優(yōu)先級進(jìn)行抽樣的原理,具體抽樣過程如下:
a) 給定0~根節(jié)點(diǎn)范圍隨機(jī)數(shù)s將根結(jié)點(diǎn)作為父親結(jié)點(diǎn),遍歷其子節(jié)點(diǎn);
b) 如果左子節(jié)點(diǎn)大于s,將左子節(jié)點(diǎn)作為父親結(jié)點(diǎn),遍歷其子節(jié)點(diǎn);
c) 如果左子結(jié)點(diǎn)數(shù)值小于s,將s減去左子結(jié)點(diǎn)的數(shù)值,選擇右子結(jié)點(diǎn)作為父親結(jié)點(diǎn),遍歷其子節(jié)點(diǎn);
d) 直到遍歷的葉子結(jié)點(diǎn),該葉子結(jié)點(diǎn)的數(shù)值就是優(yōu)先級,下標(biāo)對應(yīng)的數(shù)值下標(biāo),可以從經(jīng)驗庫中找到對應(yīng)的數(shù)值。
例如,圖1給出隨機(jī)數(shù)8.5,選擇節(jié)點(diǎn)0作為父節(jié)點(diǎn)。8.5與節(jié)點(diǎn)1比較,8小于8.5,得到結(jié)果0.5,將節(jié)點(diǎn)2作為父節(jié)點(diǎn), 0.5與節(jié)點(diǎn)5比較,0.5小于1,選擇節(jié)點(diǎn)5,所以抽取節(jié)點(diǎn)5代表的經(jīng)驗樣本。
強(qiáng)化學(xué)習(xí)就是一個智能體(Agent)在狀態(tài)(State)采取行動(Action)獲得獎勵(Reward)與環(huán)境(Environment)發(fā)生交互并更新的自身循環(huán)過程。
對于大眾麻將游戲而言,要訓(xùn)練的AI可以看作一個智能體,博弈信息可以看作是環(huán)境狀態(tài),吃、碰、杠、聽、胡、棄牌可以看作是行動,是否獲勝,以及獲勝的番種可以看作為獎勵。博弈過程會隨著智能體根據(jù)博弈信息做出策略,而轉(zhuǎn)移到下一個狀態(tài),并獲得一定獎勵。麻將是一個四人博弈游戲,在一個智能體做完動作后,需要等其余3名玩家做出回應(yīng)后才能使得環(huán)境狀態(tài)進(jìn)行轉(zhuǎn)移。因此,本文將其他3個玩家設(shè)置為環(huán)境一部分。采用DDQN(double deep Q-learning)方法結(jié)合優(yōu)先經(jīng)驗回放進(jìn)行麻將AI訓(xùn)練。由于麻將數(shù)據(jù)離散,需要對麻將牌面進(jìn)行表示,以供神經(jīng)網(wǎng)絡(luò)的輸入,牌面表示如圖2所示。訓(xùn)練流程如圖3所示,其中紅色虛線框中多重經(jīng)驗回放機(jī)制部分是本文重難點(diǎn)研究的內(nèi)容。算法主要流程見算法1所示。
圖2 牌面表示示意圖
圖3 DDQN算法訓(xùn)練流程框圖
算法1:MPER-DDQN
1 輸入:minibatch大小為k學(xué)習(xí)率為α,折扣系數(shù)γ,回放周期為K,存儲數(shù)據(jù)大小為N,對局輪數(shù)M,單局對局時間T,探索率ε
2 輸出:預(yù)測網(wǎng)絡(luò)Q參數(shù)ε
4 for episode = 1 toMdo
5 fort= 1 toTdo
觀察初始狀態(tài)S0, 生成隨機(jī)數(shù)n,n∈[0,1];
6 ifn<ε
選擇隨機(jī)動作at
7 else
at=maxaQ*(St,a;θ)
8 end
9 得到該動作獎勵rt,以及下一狀態(tài)St+1,并將經(jīng)驗樣本(St,at,rt,St+1)存儲在經(jīng)驗庫H中;
10 forj= 1 toNdo
11 令yj=
//a為動作集,t′為時間步
12 計算δj=yj-Q(St′-at′);
13 計算P(j)D,P(j)r,P(j)TD;
14 計算優(yōu)先級
15 iftmodK== 0 then
//間隔K步回放一次
fori= 1 tokdo
損失函數(shù)Loss:
計算樣本的重要性權(quán)重ωj;
計算權(quán)重Δ←Δ+ωj·δj▽θ(St″,at″)
16 end for
17 更新預(yù)測網(wǎng)絡(luò)參數(shù)θ←θ+α·Δ
18 更新有先經(jīng)驗權(quán)重系數(shù)μi=μi*μ
19 一段時間θ-←θ;
20 end if
21 end for
22 end for
23end for
在訓(xùn)練過程中,DDQN使用預(yù)測網(wǎng)絡(luò)計算下一個狀態(tài)下的對應(yīng)各個打牌動作的Q值,并記錄其下標(biāo),然后使用目標(biāo)網(wǎng)絡(luò)計算下一個狀態(tài)里面的對應(yīng)各個打牌動作,將預(yù)測網(wǎng)絡(luò)預(yù)測的打牌動作索引對應(yīng)的Q值作為目標(biāo)Q值,避免了選取預(yù)測網(wǎng)絡(luò)最大Q值的過程,從而一定程度上避免了對當(dāng)前牌局下,對某個打牌動作過高Q值估計的問題,提高了訓(xùn)練的穩(wěn)定性。Double DQN與DQN相同的是他們都有被稱之為預(yù)測網(wǎng)絡(luò)與目標(biāo)網(wǎng)絡(luò)的兩個網(wǎng)絡(luò),只是在實(shí)作過程中,標(biāo)簽的計算過程做了修正,如式(14)。
(14)
yj表示模型訓(xùn)練時得到的Q值。如果當(dāng)前一輪游戲結(jié)束,則rj值為最終Q值;否則,Q值不僅包含即時獎勵rj,也包含預(yù)測網(wǎng)絡(luò)對下一牌局狀態(tài)預(yù)測的最大Q值。
與深度學(xué)習(xí)不同的是,DDQN輸出的不再是預(yù)測出牌的概率,而是對于當(dāng)前狀態(tài)下每個動作的Q值,選取Q值最大的動作進(jìn)行執(zhí)行,進(jìn)而利用eval網(wǎng)絡(luò)得到最大Q值打牌策略的下標(biāo),然后利用target網(wǎng)絡(luò)計算下一狀態(tài)下執(zhí)行該動作的實(shí)際Q值,進(jìn)而計算當(dāng)前局面下,執(zhí)行該打牌動作后的收益,與預(yù)估收益的均方誤差,作為DDQN的損失函數(shù)為:
(15)
在對智能體交互的環(huán)境進(jìn)行搭建的文獻(xiàn)中,OpenAI的gym[14]以及RLcard[15]給出了很好的范例,因此,本文借鑒其對智能體環(huán)境的搭建方式,并結(jié)合大眾游戲自身的特點(diǎn),建立一套大眾麻將自博弈環(huán)境。其自博弈流程如下:
算法2大眾麻將自博弈流程
1 輸入:初始化玩家手牌hand,莊家位置dealer,該回合玩家p
2 輸出:博弈結(jié)果
3p= 莊家;
4 while True do
5 ifp已經(jīng)聽牌 then
6 ifp和牌合法
7 直接胡
8 else ifp杠牌合法 then
9 獲取p的動作內(nèi)容
10 else
11 打出剛摸得牌
12 end if
13 else
14 驗證p動作action合法性;
15 if action == 和牌 then
16 游戲結(jié)束計算得分
17 else if action == 杠牌 then
18 if 補(bǔ)杠 then
19 if 搶杠胡(判定動作是否合法)then
20 游戲結(jié)束
21 end if
22 end if
23 else if action == 棄牌 or 聽牌 then
24 獲取可行動作玩家動作;
25 判定優(yōu)先級
26 Continue;
27 if 剩余牌數(shù)目大于0 then
28 摸一張(吃碰后不能摸);
29 else
30 游戲結(jié)束
31 end if
32 end if
33end if
在2080Ti服務(wù)器進(jìn)行實(shí)驗。實(shí)驗的軟件環(huán)境配置為:Windows 10,python 3.7,pytorch 1.4等,實(shí)驗超參數(shù)如表2所示。
表2 超參數(shù)設(shè)置
為了驗證本文方法的有效性,將提出的多重優(yōu)先經(jīng)驗回放大眾麻將程序 MPER-DDQN與基于隨機(jī)經(jīng)驗回放麻將程序ER-DDQN各自博弈8萬局,設(shè)置的對手麻將AI均為采用深度學(xué)習(xí)編寫的2020年亞軍程序[16]。由于麻將游戲?qū)殖跏际峙撇煌烤钟螒蚶塾嫽貓蟛町愝^大,故統(tǒng)計了每百輪平均獎勵作為AI對局中的表現(xiàn)。實(shí)驗過程中2個麻將AI程序?qū)种蝎@得的累計回報如圖4所示,橫坐標(biāo)為AI對局輪數(shù),縱坐標(biāo)為對局中獲得的累計獎勵。AI對局消耗的時間如圖5所示,其中橫坐標(biāo)表現(xiàn)對局時間,縱坐標(biāo)為對局所用時間。
圖4 2種方法AI對局中累計回報
圖5 2種方法AI對局中消耗的時間
從圖4中可以看出,采用本文多重優(yōu)先經(jīng)驗回放的方法AI在39 000輪對局可以達(dá)到收斂,而隨機(jī)經(jīng)驗回放則大約需要61 000局。從圖5可以看出,優(yōu)先經(jīng)驗回放方法在8萬個對局中總用時高于隨機(jī)經(jīng)驗回放,分析其原因為計算優(yōu)先級需要花費(fèi)額外的時間。從實(shí)驗數(shù)據(jù)得出,優(yōu)先經(jīng)驗回放對局39 000輪收斂大約需要615 min,而隨機(jī)經(jīng)驗回放則需要794 min。由此得出,本文所提出的方法將麻將AI的訓(xùn)練速度上提升了22.5%。
通過分析麻將游戲的特點(diǎn),提出了多重優(yōu)先經(jīng)驗回放機(jī)制,給出了麻將游戲局面復(fù)雜程度的定義,通過時序差分誤差、獎勵以及局面復(fù)雜程度3個標(biāo)準(zhǔn)對經(jīng)驗樣本優(yōu)先值進(jìn)行計算,并在筆者搭建的麻將自博弈平臺進(jìn)行對比實(shí)驗。與傳統(tǒng)的隨機(jī)經(jīng)驗回放算法相比,麻將AI訓(xùn)練速度與穩(wěn)定性大幅度提升。下一步,將在改進(jìn)模型訓(xùn)練速度的基礎(chǔ)上研究將麻將AI決策水平進(jìn)一步提高。