本發(fā)明涉及計(jì)算機(jī)機(jī)器博弈領(lǐng)域,主要涉及非完備信息機(jī)器博弈,估值函數(shù),非完備信息機(jī)器博弈模型到部分可觀測(cè)馬爾科夫決策模型的轉(zhuǎn)換等。
背景技術(shù):
非完備信息機(jī)器博弈的特點(diǎn)是博弈者在博弈過(guò)程中無(wú)法獲得全部以及可信的局面信息,這使得研究起來(lái)更復(fù)雜,更具挑戰(zhàn)性。因此,吸引了大批國(guó)內(nèi)外學(xué)者關(guān)注。機(jī)器博弈系統(tǒng)由數(shù)據(jù)表示、規(guī)則產(chǎn)生器、博弈樹(shù)搜索和估值函數(shù)四部分組成,估值函數(shù)是其中最核心的部分。估值函數(shù)類(lèi)似人類(lèi)的大腦,它有著判斷當(dāng)前局勢(shì)的優(yōu)劣,指導(dǎo)智能體選擇策略的重要作用。估值函數(shù)的好壞,直接反映了計(jì)算機(jī)博弈智能體的水平高低。因此,對(duì)非完備信息機(jī)器博弈估值函數(shù)進(jìn)行優(yōu)化具有重要的意義。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中問(wèn)題,本發(fā)明提供了一種非完備信息下的神經(jīng)網(wǎng)絡(luò)與q學(xué)習(xí)結(jié)合的估值方法,
步驟1:將非完備信息轉(zhuǎn)換成部分可觀測(cè)馬爾科夫決策模型(partiallyobservablemarkovdecisionprocesses,pomdp):
pomdp和非完備信息博弈都屬于在時(shí)間序列上做決策的模型,在該模型中,環(huán)境的狀態(tài)是不能完全識(shí)別,動(dòng)作的回報(bào)也不能立即獲得。非完備信息博弈實(shí)際上可以當(dāng)作在一顆博弈樹(shù)上進(jìn)行狀態(tài)轉(zhuǎn)移,把每一局轉(zhuǎn)移合在一起可以抽象成pomdp模型的轉(zhuǎn)移。
步驟2:通過(guò)蒙特卡洛抽樣技術(shù)把非完備信息博弈轉(zhuǎn)換為完備信息博弈:
對(duì)于一個(gè)非完備信息博弈,可以定義e表示整個(gè)真實(shí)的博弈的環(huán)境,定義集合w=(w1,w2,...,wn)表示非完備信息博弈在真實(shí)環(huán)境e中的所有可能的狀態(tài)集合。可以把w的每個(gè)元素wi表示真實(shí)環(huán)境e的一個(gè)實(shí)際狀態(tài)。定義q=(q1,q2,...,qn)是w的抽樣集合,通過(guò)隨機(jī)的方法在w中抽樣出子集q。對(duì)每一個(gè)子集qi都是一個(gè)完備信息博弈。
步驟3:采用基于前n步的q學(xué)習(xí)算法(previousn-stepqlearning,pn-stepq)、神經(jīng)網(wǎng)絡(luò)與q學(xué)習(xí)結(jié)合(neuralfittedq,nfq)的算法以及基于上限置信區(qū)間算法uct(upperconfidenceboundapplytotree)計(jì)算q學(xué)習(xí)延遲回報(bào)的值:
步驟3.1:基于前n步的q學(xué)習(xí)算法(previousn-stepqlearning,pn-stepq):
采用基于前n步的q學(xué)習(xí)算法(previousn-stepqlearning,pn-stepq)來(lái)消除狀態(tài)混淆現(xiàn)象。在pn-stepq算法中,時(shí)刻t狀態(tài)定義見(jiàn)式(1):
st=(zn,zn-1,......,z1,z)(1)
式中z是智能體在t時(shí)刻的觀測(cè)值,zn是智能體在t時(shí)刻之前的第n步的觀測(cè)值,當(dāng)機(jī)器人做出動(dòng)作a后,時(shí)刻t+1狀態(tài)定義見(jiàn)式(2):
st+1=(zn-1,zn-2,......,z1,z,z^)(2)
式中z0是智能體在t+1時(shí)刻的觀測(cè)值,無(wú)論在t時(shí)刻還是t+1時(shí)刻,機(jī)器人始終由當(dāng)前觀測(cè)值和前n-1步觀測(cè)值組成的觀測(cè)值序列確定。
執(zhí)行策略π行為值函數(shù)見(jiàn)式(3):
上述公式表示智能體在前n步觀測(cè)狀態(tài)為st=(zn,zn-1,......,z1,z)時(shí),采取行為為a,在策略π得到的回報(bào)的期望值,其中,0≤γ≤1為折扣因子,rt為智能體在時(shí)刻t獲得的回報(bào)。如果能求得最優(yōu)的行為值函數(shù),那么再求最優(yōu)的行為策略就相對(duì)容易很多。根據(jù)上面三個(gè)定義,利用q學(xué)習(xí)算法中的迭代方法逼近最優(yōu)行為值函數(shù)公式見(jiàn)式(4)和(5):
qt+1(zn,zn-1,......,z1,a)=qt(zn,zn-1,......,z1,z,a)+αδtet(zn,zn-1,......,z1,z,a)(4)
其中α是學(xué)習(xí)因子,rt+1是智能體在t+1時(shí)刻所得回報(bào),φt為資格跡更新函數(shù)。
資格跡的實(shí)質(zhì)是智能體經(jīng)過(guò)某個(gè)狀態(tài)時(shí),除了初始狀態(tài)外的當(dāng)前狀態(tài)都是從前面的狀態(tài)轉(zhuǎn)移過(guò)來(lái),需要對(duì)整個(gè)狀態(tài)轉(zhuǎn)移序列進(jìn)行短暫的記憶,需要考慮之前狀態(tài)的信度評(píng)估,不能把所有的狀態(tài)對(duì)當(dāng)前狀態(tài)的信度視為一致。資格跡會(huì)隨著時(shí)間推移逐步衰減之前狀態(tài)的貢獻(xiàn)度。例如在德州撲克中,第一輪每位玩家都只有手中的兩張牌,玩家會(huì)根據(jù)自己的牌值選擇某些策略。隨著游戲的進(jìn)行,假設(shè)游戲已經(jīng)進(jìn)入到了第四輪,第一輪所采取的策略對(duì)第二輪的影響比較大,對(duì)第四輪的影響沒(méi)有第二輪和第三輪所采取的策略影響大,這就是一個(gè)貢獻(xiàn)度的衰減。資格跡的更新見(jiàn)式(6):
式中γ為折扣因子需要滿足條件0<γ<1,λ為常數(shù)并且滿足。上述迭代公式會(huì)在智能體每轉(zhuǎn)移一步時(shí)對(duì)于所有的狀態(tài)(zn,zn-1,......,z1,z,a)同時(shí)進(jìn)行更新,并且更新資格跡,只有對(duì)當(dāng)前狀態(tài)動(dòng)作對(duì)應(yīng)的et-1(zn,zn-1,......,z,a)時(shí)結(jié)果加1,其余狀態(tài)動(dòng)作對(duì)應(yīng)的資格跡會(huì)逐步衰減。
下面給出pn-stepq算法描述:
pn-stepq算法
初始化:對(duì)每個(gè)狀態(tài)st=(zn,zn-1,......,z1,z),策略行為a;
初始化q值,資格跡e;
循環(huán):執(zhí)行下面操作,直到st是終止?fàn)顟B(tài)
(1)觀察當(dāng)前狀態(tài)st,選擇動(dòng)作at,并執(zhí)行此動(dòng)作,到達(dá)新的狀態(tài)st+1;
(2)觀察新的觀測(cè)值z(mì)^,并且接到立即回報(bào)rt+1;
(3)更新q值:
qt+1(zn,zn-1,......,z1,z,a)=qt(zn,zn-1,......,z1,a)+αδtet(zn,zn-1,......,z1,z,a);
(4)按照以下公式更新資格跡:
(5)更新?tīng)顟B(tài):st=st+1,即(zn,zn-1,......,z1,z)=(zn-1,zn-2,......,z1,z,z^)
步驟3.2:神經(jīng)網(wǎng)絡(luò)與q學(xué)習(xí)結(jié)合(neuralfittedq,nfq)的算法:
步驟3.2.1:傳統(tǒng)的q值表示:
傳統(tǒng)的q值表示是通過(guò)維護(hù)一張多維表格(簡(jiǎn)稱q值表)來(lái)實(shí)現(xiàn),通過(guò)查詢表格里面對(duì)應(yīng)的q值來(lái)獲得。假設(shè)q(s,a)(s∈s,a∈a)為一張多維的表格,s表示所有狀態(tài)的集合,總的狀態(tài)數(shù)為|s|,a表示所有的動(dòng)作集合,總的動(dòng)作數(shù)為|a|,q(s,a)的意思是狀態(tài)s下采取動(dòng)作a的q值,那么表的總大小為|s|×|a|的笛卡爾乘積的個(gè)數(shù)
步驟3.2.2:fuzzy-q學(xué)習(xí):
fuzzy-q學(xué)習(xí)算法是把q學(xué)習(xí)算法和模糊推理系統(tǒng)相結(jié)合。一個(gè)模糊推理系統(tǒng)包括如下部分。
(1)規(guī)則庫(kù):是由if-then組合的模糊規(guī)則集合;
(2)數(shù)據(jù)庫(kù):模糊規(guī)則中的隸屬函數(shù);
(3)推理機(jī)制:根據(jù)模糊規(guī)則進(jìn)行推理運(yùn)算;
(4)模糊化輸入:把輸入轉(zhuǎn)換為模糊化;
(5)去模糊化:把模糊計(jì)算的結(jié)果轉(zhuǎn)換為輸出。
模糊推理系統(tǒng)圖首先對(duì)輸入進(jìn)行模糊化,通過(guò)數(shù)據(jù)庫(kù)和規(guī)則庫(kù)來(lái)進(jìn)行推理,最后通過(guò)去模糊化得到相應(yīng)的結(jié)果。
首先對(duì)狀態(tài)抽象出n個(gè)狀態(tài)變量(也可稱為n個(gè)狀態(tài)因素),用來(lái)表示智能體所處的環(huán)境狀態(tài)信息,這些狀態(tài)變量的組合應(yīng)該能夠明確描述當(dāng)前環(huán)境的狀態(tài)信息。通過(guò)狀態(tài)變量的組合來(lái)建立一個(gè)規(guī)則庫(kù)。假設(shè)規(guī)則庫(kù)有n個(gè)規(guī)則,表示成輸入向量為x=(x1,x2,......,xn),輸出向量為w=(w1,w2,......,wn),表示形式如下:
上述的w1表示第j條規(guī)則,aj1(1≤i≤n)表示第j條規(guī)則輸入的模糊集變量。wjm(1≤i≤n)表示第j條規(guī)則輸出的變量結(jié)果。
建立了上述的規(guī)則庫(kù)后,智能體輸出規(guī)則,經(jīng)過(guò)計(jì)算就能得到結(jié)果。假設(shè)上述規(guī)則庫(kù)的輸出向量為w=(w1,w2,......,wn),對(duì)應(yīng)的權(quán)值為(wj1,wj2,......,wjm),在輸入向量x=(x1,x2,......,xn)時(shí),經(jīng)過(guò)模糊推理,每一個(gè)特征點(diǎn)的總權(quán)值計(jì)算見(jiàn)式(7):
式中uj(x)=uj1(x1)×uj2(x2)×...×ujn(xn)表示相應(yīng)模糊集的隸屬函數(shù)值。
模糊推理系統(tǒng)的重心法解模糊的輸出見(jiàn)式(8)。式中a=(a1,a2,......,an)表示空間的特征點(diǎn)向量。根據(jù)輸出值進(jìn)行動(dòng)作選擇,進(jìn)入到下一個(gè)狀態(tài),獲得回報(bào)值。
接著更新知識(shí)庫(kù)向量的權(quán)值,權(quán)值更新見(jiàn)式(9),式中α是學(xué)習(xí)率,r是回報(bào)值,γ是折扣因子,wmax為wk,(1≤k≤m)中的最大值,上述更新類(lèi)似q值表的更新。
wjk=wjk+α·(r+γwmax),1≤k≤m(9)
在非完備信息博弈中,上述方法理論上可以實(shí)現(xiàn)的,但是,需要把每一條撲克的出牌規(guī)則全部總結(jié)出來(lái)是一件非常困難的事,即使是世界頂尖的大師也做不到這一點(diǎn)。
步驟3.2.3:基于nf改進(jìn)的q學(xué)習(xí)估值函數(shù)模型:
人工神經(jīng)網(wǎng)絡(luò)(artificialneuralnetwork)是一種網(wǎng)絡(luò)結(jié)構(gòu),它是模擬生物的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),正如人類(lèi)的腦神經(jīng)元,神經(jīng)元由大量的互相連接的節(jié)點(diǎn)組成,用權(quán)值來(lái)表示連接的強(qiáng)度,連接更緊密,神經(jīng)元之間的關(guān)系也越密切。根據(jù)此原理,應(yīng)用到人工神經(jīng)網(wǎng)絡(luò)上,節(jié)點(diǎn)之間的權(quán)值越大,說(shuō)明它貢獻(xiàn)度越大,對(duì)輸出起的影響也越大。人工神經(jīng)網(wǎng)絡(luò)是一種能隨環(huán)境的變化自動(dòng)做出調(diào)節(jié)的自適應(yīng)方法。在此結(jié)構(gòu)上結(jié)合復(fù)雜的數(shù)學(xué)理論基礎(chǔ),可以用來(lái)分析輸入和輸出之間的復(fù)雜關(guān)系。人工神經(jīng)網(wǎng)絡(luò)是一個(gè)包含層次結(jié)構(gòu)的網(wǎng)絡(luò)結(jié)構(gòu),每一層都是由輸入節(jié)點(diǎn)和輸出節(jié)點(diǎn)組成,第i層的輸出是第i+1層的輸入。
在非完備信息博弈中,離散的q值存儲(chǔ)表需要巨大的存儲(chǔ)空間,以及在查找速度也非常慢,整個(gè)效率都不高,也不能完整表示連續(xù)的環(huán)境狀態(tài)。本研究引入一種神經(jīng)網(wǎng)絡(luò)與q學(xué)習(xí)結(jié)合(neuralfittedq,nfq)的算法來(lái)表示q值。nfq神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如下所述:
主要包括輸入層、隱含層和輸出層,下面分別對(duì)這3層進(jìn)行介紹。
輸入層:輸入為一串非線性的連續(xù)狀態(tài)向量(x1,x2,...,xn),也就是非完備信息博弈中的狀態(tài)向量。在德州撲克游戲中,每個(gè)過(guò)程都會(huì)有大量的信息,這些信息對(duì)于智能體的決策都有一定的價(jià)值,例如博弈的階段、總下注金額、己方牌力大小等。加拿大的阿爾伯特大學(xué)的研究者曾經(jīng)提出了一個(gè)具有19個(gè)輸入節(jié)點(diǎn)的輸入節(jié)點(diǎn),但是阿爾伯特大學(xué)的研究者沒(méi)有考慮到時(shí)間的序列,玩家加注和跟注的次數(shù)等問(wèn)題。
隱藏層:把輸入層和輸出層鏈接起來(lái),wij是第i個(gè)輸入節(jié)點(diǎn)到第j個(gè)隱含層權(quán)值,θj為第j個(gè)隱含層的節(jié)點(diǎn)閾值,hj和bj分別是是第i個(gè)隱藏層節(jié)點(diǎn)輸入節(jié)點(diǎn)和輸出節(jié)點(diǎn)。
輸出層:輸入層的向量經(jīng)過(guò)人工神經(jīng)網(wǎng)絡(luò)計(jì)算后產(chǎn)生的輸出結(jié)果。θk為第k個(gè)輸出節(jié)點(diǎn)的閾值,yk為第k個(gè)輸出節(jié)點(diǎn)的輸入,q(st,ak)是輸出的q函數(shù)值。
在反向傳播(backpropagation,bp)神經(jīng)網(wǎng)絡(luò)中,輸出節(jié)點(diǎn)的期望輸出值和實(shí)際輸出的差值反傳到網(wǎng)絡(luò)中,修改網(wǎng)絡(luò)中的權(quán)值和閾值,保存學(xué)習(xí)到的經(jīng)驗(yàn),得到學(xué)習(xí)后的值更新差值見(jiàn)式(10):
公式中wt=(wij,θj,vjk,θk)t為bp神經(jīng)網(wǎng)絡(luò)中的權(quán)值和閾值矩陣。
在德州撲克中,游戲中的中間狀態(tài)都是從之前狀態(tài)擴(kuò)展來(lái)的,這是連續(xù)的狀態(tài)向量作用的結(jié)果,之前的游戲狀態(tài)或多或少都會(huì)影響到目前的游戲狀態(tài)。pn-stepq學(xué)習(xí)算法需要使用資格跡對(duì)之前的狀態(tài)分配一定的信度,這有會(huì)減少狀態(tài)混淆,對(duì)當(dāng)前狀態(tài)表示更準(zhǔn)確。應(yīng)用到bp神經(jīng)網(wǎng)絡(luò)對(duì)更新差值e的均方差求導(dǎo)數(shù),再乘上學(xué)習(xí)率α得到權(quán)值增量為
公式中,λ是資格跡的折扣率δφ(a)為資格跡增量,
輸出層和隱藏層激勵(lì)函數(shù)f(x)、g(x)都是tansigmoid函數(shù),隱藏層和輸出層的梯度
權(quán)值增量δvjk的計(jì)算公式見(jiàn)式(13):
輸出層閾值δθk迭代的計(jì)算公式見(jiàn)式(14):
輸入層和隱藏層間梯度
權(quán)值增量δwij的計(jì)算公式見(jiàn)式(16):
隱含層閾值δθj的迭代計(jì)算公式見(jiàn)式(17):
下面給出nfq算法:
nfq算法
初始化:θk、vjk、wij、θj,
δ'vjk、δ'θk、δ'wij、δ'θj←0,st=s0,
q(st,a,wt)←神經(jīng)網(wǎng)絡(luò)輸出q(s0,a,w0);
循環(huán):執(zhí)行下面操作,直到終止?fàn)顟B(tài)
(1)根據(jù)神經(jīng)網(wǎng)絡(luò)的輸出選擇動(dòng)作a,到達(dá)新的狀態(tài)st+1;
(2)獲得立即回報(bào)r←rt;
(3)更新q值:q(st,a,wt)←q(st+1,a,wt+1);
(4)根據(jù)公式(12)~(17)更新神經(jīng)網(wǎng)絡(luò)權(quán)值:
wt=(wij,θj,vj,θ)t←wt+1;
(5)st←st+1
步驟3.3:基于上限置信區(qū)間算法uct(upperconfidenceboundapplytotree):
步驟3.3.1:ucb1策略:
在博弈決策問(wèn)題中,可以簡(jiǎn)化為一個(gè)具有多重選擇的策略問(wèn)題,即如何在所有的選擇中進(jìn)行權(quán)衡進(jìn)行最終決策。k臂強(qiáng)盜問(wèn)題就是對(duì)該問(wèn)題的一個(gè)很好的描述。k臂強(qiáng)盜問(wèn)題簡(jiǎn)單描述如下:假設(shè)一個(gè)參與賭博的強(qiáng)盜他有k只手臂,他可以拉動(dòng)自己的每一只手臂,當(dāng)拉動(dòng)他的每一只手臂都會(huì)有一個(gè)或好或壞的收益,每只手臂產(chǎn)生的回報(bào)都不相關(guān),也就是說(shuō)拉動(dòng)每個(gè)手臂的回報(bào)所遵循的分布是不相同的,不過(guò)拉動(dòng)同一個(gè)手臂所獲得的回報(bào)收益滿足特定的分布。強(qiáng)盜在特定的時(shí)間內(nèi),只能拉動(dòng)有限次數(shù)手臂,強(qiáng)盜想要在這有限的拉動(dòng)次數(shù)中找到一個(gè)合理策略方法強(qiáng)盜的目的都是為了獲得更多的回報(bào)收益,如果能找到一個(gè)合理策略方法,根據(jù)這個(gè)策略可以知道拉動(dòng)哪個(gè)手臂能獲得最大的收益,那么這個(gè)問(wèn)題就解決了。
但是,當(dāng)一個(gè)強(qiáng)盜想要拉動(dòng)手臂的時(shí)候,他是不知道拉動(dòng)自己的哪只手臂會(huì)產(chǎn)生更大的收益,對(duì)強(qiáng)盜來(lái)說(shuō),他拉動(dòng)自己的每一只手臂都是同等概率,他無(wú)法立刻知道拉動(dòng)后產(chǎn)生的未知信息。正如在非完備信息博弈中的德州撲克游戲,每一個(gè)階段ai智能體可以采取棄牌、跟牌、加注三個(gè)行為。德州撲克的輸贏是有固定的規(guī)則,雙方牌力的大小也相對(duì)的,ai智能體不知道對(duì)手的牌是什么,采取任何的行為所獲得的回報(bào)在游戲沒(méi)有結(jié)束前也是不確定的。一般來(lái)說(shuō),玩家會(huì)根據(jù)自己所積累的先驗(yàn)知識(shí)來(lái)決定,通過(guò)自己所了解的選擇自己認(rèn)為最好的決策,如果一直通過(guò)這種策略不嘗試其他的方法,會(huì)錯(cuò)過(guò)收益最好的決策。玩家需要不斷的探索,找到自己還不知道的更好方法。這就是一個(gè)開(kāi)發(fā)和探索問(wèn)題,需要在這兩者之間找到平衡點(diǎn)。
可以把上述k臂強(qiáng)盜問(wèn)題抽象為數(shù)學(xué)模型:定義變量ti(n)表示手臂第i個(gè)手臂在n次選擇中被選擇的次數(shù)。變量xi,n(1≤i≤k,1≤n),這里的i代表強(qiáng)盜的第i個(gè)手臂的編號(hào)。如果連續(xù)拉動(dòng)n次手臂i,會(huì)得到n個(gè)不同的回報(bào)xi,1,xi,2.......xi,n,這些回報(bào)按照數(shù)學(xué)期望獨(dú)立分布,不同手臂的回報(bào)分布沒(méi)有影響。
auer提出了一種“開(kāi)發(fā)”和“探索”均衡的在線學(xué)習(xí)策略解決方法,稱為ucb1(upperconfidencebound)算法。ucb1算法中,每次都選擇具有最大的ucb值手臂,選擇手臂根據(jù)公式見(jiàn)式(18)。
上述公式中包含了兩部分,第一部分是
步驟3.3.2:基于uct策略改進(jìn)的q學(xué)習(xí)回報(bào)函數(shù):
在德州撲克中,智能體在每次選擇策略的時(shí)候有加注、跟注和棄牌3中行為。如果智能體知道選擇每個(gè)策略的真實(shí)回報(bào),僅僅通過(guò)貪心算法的策略,智能體就可以做出最優(yōu)的選擇贏得比賽,或者提前棄牌降低自己的損失。但是,對(duì)于一個(gè)智能體,它對(duì)對(duì)手的情況什么都不了解,不知道自己和對(duì)手誰(shuí)的牌大誰(shuí)的牌小,這時(shí)候它也不知道采取哪個(gè)策略好。這就如同一個(gè)具有3個(gè)手臂的強(qiáng)盜可以拉下自己的任何一個(gè)手臂,與k臂強(qiáng)盜問(wèn)題所描述的內(nèi)容與德州撲克中棉鈴的問(wèn)題非常相似。在智能體采取策略后,都會(huì)把這些選擇后所獲得的附加收益累計(jì)到智能體中,智能體通過(guò)不斷的“開(kāi)發(fā)”和“探索”獲得知識(shí)后,就可以知道怎么選擇策略更好了。
把ucb1應(yīng)用到非完備信息博弈中,獲得最好分支的回報(bào)值,具體步驟如下。
(1)ucb1結(jié)合博弈樹(shù)搜索轉(zhuǎn)換成uct算法。
uct算法的實(shí)質(zhì)是將博弈搜索樹(shù)的每一個(gè)節(jié)點(diǎn)都當(dāng)成是一個(gè)具有k個(gè)手臂的強(qiáng)盜,即k臂強(qiáng)盜問(wèn)題。強(qiáng)盜通過(guò)選擇自己的手臂到達(dá)的子節(jié)點(diǎn),子節(jié)點(diǎn)也是一個(gè)具有k個(gè)手臂的強(qiáng)盜。類(lèi)似德州撲克的游戲過(guò)程,智能體在每個(gè)過(guò)程的選擇有3種,需要“開(kāi)發(fā)”和“探索”選取最大的ucb值進(jìn)入到下一個(gè)狀態(tài),這時(shí)候智能體又有3種選擇,又通過(guò)“開(kāi)發(fā)”和“探索”選取最大的ucb值進(jìn)入到下一個(gè)狀態(tài),一直這樣下去直到游戲結(jié)束,最后產(chǎn)生回報(bào),上述過(guò)程實(shí)際上就是一顆博弈樹(shù)的搜索過(guò)程。
(2)uct算法與蒙特卡洛方法結(jié)合的蒙特卡洛樹(shù)搜索(mcts),主要包括選擇、擴(kuò)展、更新、回朔四個(gè)過(guò)程擴(kuò)展蒙特卡洛樹(shù)。
基于uct的蒙特卡洛樹(shù)搜索方法是一種可以用于非完備信息博弈環(huán)境抽樣的搜索算法,利用uct算法中對(duì)節(jié)點(diǎn)的擴(kuò)展博弈樹(shù)和節(jié)點(diǎn)回報(bào)值的回溯運(yùn)算。在復(fù)雜的擴(kuò)展式博弈狀態(tài)環(huán)境下,通過(guò)對(duì)復(fù)雜環(huán)境進(jìn)行抽樣劃分成許多的幕。在抽樣的選擇中,通過(guò)行為的選擇和探索最有可能的環(huán)境空間。這樣抽樣出來(lái)的蒙特卡洛搜索樹(shù)是一顆有效性高但是不對(duì)稱的樹(shù),跟普通的博弈樹(shù)搜索相比,它可以隨時(shí)停止搜索,不用遍歷所有的局面就可以有一個(gè)有效的策略選擇。
基于uct的蒙特卡洛樹(shù)搜索方法包含以下幾部分,定義n(s)為通過(guò)蒙特卡洛樹(shù)搜索訪問(wèn)狀態(tài)s的次數(shù),n(s,a)為在狀態(tài)為s時(shí)采取動(dòng)作a的次數(shù),v(s,a)是對(duì)在狀態(tài)為s時(shí)采取動(dòng)作a的評(píng)估函數(shù),計(jì)算公式見(jiàn)式(19):
上述公式中的rs(i)在每次訪問(wèn)狀態(tài)s的累計(jì)的回報(bào)值。
蒙特卡洛樹(shù)搜索是一個(gè)循環(huán)計(jì)算的過(guò)程,每次需要選擇已經(jīng)開(kāi)發(fā)的多次策略,獲勝具有較大可信的估值的策略,這種狀態(tài)s下選擇策略的計(jì)算公式見(jiàn)式(20):
公式中的πtree(s)是在s狀態(tài)下選擇的策略,c是調(diào)解開(kāi)發(fā)和利用平衡的參數(shù)。當(dāng)c=0時(shí)候,該算法就純粹是一個(gè)貪心算法,得到的最終結(jié)果剛開(kāi)始可能是最好的,全局來(lái)看往往不是最好的。
(3)通過(guò)計(jì)算每個(gè)抽樣真實(shí)世界的回報(bào)作為q學(xué)習(xí)值函數(shù)的回報(bào)值。
把非完備信息博弈抽樣為完備信息博弈w=(w1,w2,...,wn),再對(duì)這個(gè)完備信息博弈wi通過(guò)uct蒙特卡洛樹(shù)搜索后,通過(guò)回朔到都會(huì)得到采取每個(gè)動(dòng)作的回報(bào)值。在德州普通中,跟牌、加注、棄牌的回報(bào)值計(jì)算公式見(jiàn)式(21):
式中vj表示所有抽樣世界采取某一動(dòng)作的回報(bào)和,在德州撲克中j可取值有3種。vj表示在wi世界中采取動(dòng)作j的回報(bào)。
通過(guò)上述3個(gè)步驟,可以計(jì)算出q學(xué)習(xí)在非完備信息博弈中的回報(bào)延遲,該回報(bào)延遲跟抽樣的次數(shù)有關(guān),抽樣的次數(shù)越多,回報(bào)就越準(zhǔn)確。
德州撲克中基于uct計(jì)算q學(xué)習(xí)延遲回報(bào)的算法如下:
德州撲克中基于uct計(jì)算q學(xué)習(xí)延遲回報(bào)算法
初始化:非完備信息博弈抽樣完備信息博弈的次數(shù)n,德州撲克中采取bucketting手牌抽樣策略。
蒙特卡洛搜索樹(shù)tree,
根節(jié)點(diǎn)狀態(tài)s0,令st=s0。行為a=(a1,a2,a3)。
循環(huán):非完備信息博弈抽樣1~n次完備信息博弈
循環(huán):直到狀態(tài)st是德州撲克游戲結(jié)束狀態(tài)
(1)根據(jù)公式(21)選擇策略ai,達(dá)到新的狀態(tài)st+1;
(2)如果st+1不是tree中的節(jié)點(diǎn),tree擴(kuò)展st+1;
(3)n(st+1,a)=n(st+1,a1)+1,n(s)=n(s)+1;
(4)如果st+1是游戲結(jié)束狀態(tài),從葉節(jié)點(diǎn)到跟節(jié)點(diǎn)回朔更新回報(bào)值。
步驟4:將前一步驟得到的q值融合,得到最終結(jié)果。
本發(fā)明的有益效果是:
本發(fā)明將改進(jìn)的q學(xué)習(xí)算法應(yīng)用在非完備信息機(jī)器博弈的估值函數(shù)上,分別實(shí)現(xiàn)了德州撲克和斗地主兩款計(jì)算機(jī)智能體系統(tǒng)。這兩個(gè)計(jì)算機(jī)智能體系統(tǒng)不僅考慮了當(dāng)前狀態(tài)之前的狀態(tài)信息,同時(shí)預(yù)測(cè)了當(dāng)前狀態(tài)之后可能會(huì)發(fā)生的情況。這兩個(gè)計(jì)算機(jī)智能體的思維更接近人類(lèi),與傳統(tǒng)的估值函數(shù)相比,可以選擇更合理的策略。本發(fā)明提出的技術(shù)方案可以應(yīng)用到多種非完備信息博弈中,比如“斗地主”,德州撲克等,并提高了智能體的博弈水平。本發(fā)明與現(xiàn)有的相關(guān)研究相比,在精度上有了較大的提升。
附圖說(shuō)明
圖1是本發(fā)明nfq神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu);
圖2是本發(fā)明博弈樹(shù)搜索中的uct算法;
圖3是本發(fā)明二人德州撲克下的pomdp決策過(guò)程;
圖4是本發(fā)明q學(xué)習(xí)應(yīng)用在非完備信息博弈的總體設(shè)計(jì)方案。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
本發(fā)明將改進(jìn)的q學(xué)習(xí)算法應(yīng)用在非完備信息機(jī)器博弈的估值函數(shù)上,分別實(shí)現(xiàn)了德州撲克和斗地主兩款計(jì)算機(jī)智能體系統(tǒng)。這兩個(gè)計(jì)算機(jī)智能體系統(tǒng)不僅考慮了當(dāng)前狀態(tài)之前的狀態(tài)信息,同時(shí)預(yù)測(cè)了當(dāng)前狀態(tài)之后可能會(huì)發(fā)生的情況。這兩個(gè)計(jì)算機(jī)智能體的思維更接近人類(lèi),與傳統(tǒng)的估值函數(shù)相比,可以選擇更合理的策略。
針對(duì)非完備信息機(jī)器博弈中會(huì)出現(xiàn)兩次觀測(cè)到的牌局狀態(tài)信息一樣,而實(shí)際的牌局狀態(tài)信息卻不一樣的狀態(tài)混淆問(wèn)題,采用連續(xù)的部分觀測(cè)狀態(tài)序列與資格跡(eligibilitytrace)結(jié)合的方法來(lái)解決。針對(duì)非完備信息機(jī)器博弈中狀態(tài)空間信息龐大,在兩人限制型德州撲克狀態(tài)就包括3.19×1014個(gè)信息集,存在無(wú)法通過(guò)傳統(tǒng)的q值表示估值函數(shù)的問(wèn)題,采用q學(xué)習(xí)與人工神經(jīng)網(wǎng)絡(luò)結(jié)合的方法來(lái)解決。針對(duì)在非完備信息機(jī)器博弈中,游戲沒(méi)有結(jié)束,無(wú)法獲知采取當(dāng)前策略的回報(bào),即回報(bào)延遲問(wèn)題,提出采用基于上限置信區(qū)間博弈樹(shù)搜索(upperconfidenceboundappliedtotree,uct)算法來(lái)求取當(dāng)前策略的回報(bào)值。
非完備信息博弈與pomdp模型
非完備信息博弈在德州撲克中,假設(shè)有玩家結(jié)點(diǎn)、對(duì)手結(jié)點(diǎn)、隨機(jī)結(jié)點(diǎn)和葉子結(jié)點(diǎn)。其中,玩家結(jié)點(diǎn)和對(duì)手結(jié)點(diǎn)代表的玩家雙方的博弈,他們都可以采取棄牌、跟注、加注三個(gè)動(dòng)作行為。隨機(jī)結(jié)點(diǎn)代表了每一輪的發(fā)牌,包括第一輪發(fā)給每位玩家的兩張手牌(pre-flop)、第二輪發(fā)的三張公共牌(flop)、第三輪發(fā)的第四張公共牌(ture)和第四輪發(fā)第五張公共牌(river)。葉子結(jié)點(diǎn)表示的是玩家棄牌導(dǎo)致本局游戲結(jié)束,或者是最后的亮牌導(dǎo)致游戲結(jié)束。對(duì)于每局比賽,ai智能體都可以通過(guò)上述四個(gè)結(jié)點(diǎn)描述在博弈樹(shù)間進(jìn)行擴(kuò)展。實(shí)際上可以當(dāng)作在一顆博弈樹(shù)上進(jìn)行狀態(tài)轉(zhuǎn)移。
如果把每一局轉(zhuǎn)移合在一起可以抽象成pomdp模型的轉(zhuǎn)移。二人德州撲克的博弈樹(shù)的pomdp模型如圖3所示。
q學(xué)習(xí)的狀態(tài)改進(jìn)模型
在pomdp模型中,很可能不同的實(shí)際狀態(tài)卻會(huì)出現(xiàn)相同的觀測(cè)狀態(tài),大部分智能體的學(xué)習(xí)能力有限,無(wú)法準(zhǔn)確區(qū)分它們,這樣會(huì)導(dǎo)致感知混淆現(xiàn)象。本發(fā)明采用基于前n步的q學(xué)習(xí)算法(previousn-stepqlearning,pn-stepq)來(lái)消除狀態(tài)混淆現(xiàn)象。在pn-stepq算法中,時(shí)刻t狀態(tài)定義見(jiàn)式(1):
st=(zn,zn-1,......,z1,z)(1)
式中z是智能體在t時(shí)刻的觀測(cè)值,zn是智能體在t時(shí)刻之前的第n步的觀測(cè)值,當(dāng)機(jī)器人做出動(dòng)作a后,時(shí)刻t+1狀態(tài)定義見(jiàn)式(2):
st+1=(zn-1,zn-2,......,z1,z,z^)(2)
式中z0是智能體在t+1時(shí)刻的觀測(cè)值,無(wú)論在t時(shí)刻還是t+1時(shí)刻,機(jī)器人始終由當(dāng)前觀測(cè)值和前n-1步觀測(cè)值組成的觀測(cè)值序列確定。
執(zhí)行策略π行為值函數(shù)見(jiàn)式(3):
上述公式表示智能體在前n步觀測(cè)狀態(tài)為st=(zn,zn-1,......,z1,z)時(shí),采取行為為a,在策略π得到的回報(bào)的期望值,其中,0≤γ≤1為折扣因子,rt為智能體在時(shí)刻t獲得的回報(bào)。如果能求得最優(yōu)的行為值函數(shù),那么再求最優(yōu)的行為策略就相對(duì)容易很多。根據(jù)上面三個(gè)定義,利用q學(xué)習(xí)算法中的迭代方法逼近最優(yōu)行為值函數(shù)公式見(jiàn)式(4)和(5):
qt+1(zn,zn-1,......,z1,a)=qt(zn,zn-1,......,z1,z,a)+αδtet(zn,zn-1,......,z1,z,a)(4)
其中α是學(xué)習(xí)因子,rt+1是智能體在t+1時(shí)刻所得回報(bào),φt為資格跡更新函數(shù)。
資格跡的實(shí)質(zhì)是智能體經(jīng)過(guò)某個(gè)狀態(tài)時(shí),除了初始狀態(tài)外的當(dāng)前狀態(tài)都是從前面的狀態(tài)轉(zhuǎn)移過(guò)來(lái),需要對(duì)整個(gè)狀態(tài)轉(zhuǎn)移序列進(jìn)行短暫的記憶,需要考慮之前狀態(tài)的信度評(píng)估,不能把所有的狀態(tài)對(duì)當(dāng)前狀態(tài)的信度視為一致。資格跡會(huì)隨著時(shí)間推移逐步衰減之前狀態(tài)的貢獻(xiàn)度。例如在德州撲克中,第一輪每位玩家都只有手中的兩張牌,玩家會(huì)根據(jù)自己的牌值選擇某些策略。隨著游戲的進(jìn)行,假設(shè)游戲已經(jīng)進(jìn)入到了第四輪,第一輪所采取的策略對(duì)第二輪的影響比較大,對(duì)第四輪的影響沒(méi)有第二輪和第三輪所采取的策略影響大,這就是一個(gè)貢獻(xiàn)度的衰減。資格跡的更新見(jiàn)式(6):
式中γ為折扣因子需要滿足條件0<γ<1,λ為常數(shù)并且滿足。上述迭代公式會(huì)在智能體每轉(zhuǎn)移一步時(shí)對(duì)于所有的狀態(tài)(zn,zn-1,......,z1,z,a)同時(shí)進(jìn)行更新,并且更新資格跡,只有對(duì)當(dāng)前狀態(tài)動(dòng)作對(duì)應(yīng)的et-1(zn,zn-1,......,z,a)時(shí)結(jié)果加1,其余狀態(tài)動(dòng)作對(duì)應(yīng)的資格跡會(huì)逐步衰減。
q學(xué)習(xí)的估值函數(shù)改進(jìn)模型
在德州撲克中,游戲中的中間狀態(tài)都是從之前狀態(tài)擴(kuò)展來(lái)的,這是連續(xù)的狀態(tài)向量作用的結(jié)果,之前的游戲狀態(tài)或多或少都會(huì)影響到目前的游戲狀態(tài)。pn-stepq學(xué)習(xí)算法需要使用資格跡對(duì)之前的狀態(tài)分配一定的信度,這有會(huì)減少狀態(tài)混淆,對(duì)當(dāng)前狀態(tài)表示更準(zhǔn)確。應(yīng)用到bp神經(jīng)網(wǎng)絡(luò)對(duì)更新差值e的均方差求導(dǎo)數(shù),再乘上學(xué)習(xí)率α得到權(quán)值增量為
公式中,λ是資格跡的折扣率δφ(a)為資格跡增量,
輸出層和隱藏層激勵(lì)函數(shù)f(x)、g(x)都是tansigmoid函數(shù),隱藏層和輸出層的梯度
權(quán)值增量δvjk的計(jì)算公式見(jiàn)式(9):
輸出層閾值δθk迭代的計(jì)算公式見(jiàn)式(10):
輸入層和隱藏層間梯度
權(quán)值增量δwij的計(jì)算公式見(jiàn)式(12):
隱含層閾值δθj的迭代計(jì)算公式見(jiàn)式(13):
q學(xué)習(xí)改進(jìn)的回報(bào)函數(shù)設(shè)計(jì)
本發(fā)明把ucb1(upperconfidencebound)應(yīng)用到非完備信息博弈中,獲得最好分支的回報(bào)值,具體步驟如下。
(1)ucb1結(jié)合博弈樹(shù)搜索轉(zhuǎn)換成uct算法。
uct算法的實(shí)質(zhì)是將博弈搜索樹(shù)的每一個(gè)節(jié)點(diǎn)都當(dāng)成是一個(gè)具有k個(gè)手臂的強(qiáng)盜,即k臂強(qiáng)盜問(wèn)題。強(qiáng)盜通過(guò)選擇自己的手臂到達(dá)的子節(jié)點(diǎn),子節(jié)點(diǎn)也是一個(gè)具有k個(gè)手臂的強(qiáng)盜。類(lèi)似德州撲克的游戲過(guò)程,智能體在每個(gè)過(guò)程的選擇有3種,需要“開(kāi)發(fā)”和“探索”選取最大的ucb值進(jìn)入到下一個(gè)狀態(tài),這時(shí)候智能體又有3種選擇,又通過(guò)“開(kāi)發(fā)”和“探索”選取最大的ucb值進(jìn)入到下一個(gè)狀態(tài),一直這樣下去直到游戲結(jié)束,最后產(chǎn)生回報(bào),上述過(guò)程實(shí)際上就是一顆博弈樹(shù)的搜索過(guò)程,博弈樹(shù)搜索中的uct算法如圖2所示。
(2)uct算法與蒙特卡洛方法結(jié)合的蒙特卡洛樹(shù)搜索(mcts),主要包括選擇、擴(kuò)展、更新、回朔四個(gè)過(guò)程擴(kuò)展蒙特卡洛樹(shù)。
基于uct的蒙特卡洛樹(shù)搜索方法是一種可以用于非完備信息博弈環(huán)境抽樣的搜索算法,利用uct算法中對(duì)節(jié)點(diǎn)的擴(kuò)展博弈樹(shù)和節(jié)點(diǎn)回報(bào)值的回溯運(yùn)算。在復(fù)雜的擴(kuò)展式博弈狀態(tài)環(huán)境下,通過(guò)對(duì)復(fù)雜環(huán)境進(jìn)行抽樣劃分成許多的幕。在抽樣的選擇中,通過(guò)行為的選擇和探索最有可能的環(huán)境空間。這樣抽樣出來(lái)的蒙特卡洛搜索樹(shù)是一顆有效性高但是不對(duì)稱的樹(shù),跟普通的博弈樹(shù)搜索相比,它可以隨時(shí)停止搜索,不用遍歷所有的局面就可以有一個(gè)有效的策略選擇。
基于uct的蒙特卡洛樹(shù)搜索方法包含以下幾部分,定義n(s)為通過(guò)蒙特卡洛樹(shù)搜索訪問(wèn)狀態(tài)s的次數(shù),n(s,a)為在狀態(tài)為s時(shí)采取動(dòng)作a的次數(shù),v(s,a)是對(duì)在狀態(tài)為s時(shí)采取動(dòng)作a的評(píng)估函數(shù),計(jì)算公式見(jiàn)式(14):
上述公式中的rs(i)在每次訪問(wèn)狀態(tài)s的累計(jì)的回報(bào)值。
蒙特卡洛樹(shù)搜索是一個(gè)循環(huán)計(jì)算的過(guò)程,每次需要選擇已經(jīng)開(kāi)發(fā)的多次策略,獲勝具有較大可信的估值的策略,這種狀態(tài)s下選擇策略的計(jì)算公式見(jiàn)式(15):
公式中的πtree(s)是在s狀態(tài)下選擇的策略,c是調(diào)解開(kāi)發(fā)和利用平衡的參數(shù)。當(dāng)c=0時(shí)候,該算法就純粹是一個(gè)貪心算法,得到的最終結(jié)果剛開(kāi)始可能是最好的,全局來(lái)看往往不是最好的。
(3)通過(guò)計(jì)算每個(gè)抽樣真實(shí)世界的回報(bào)作為q學(xué)習(xí)值函數(shù)的回報(bào)值。
把非完備信息博弈抽樣為完備信息博弈w=(w1,w2,...,wn),再對(duì)這個(gè)完備信息博弈wi通過(guò)uct蒙特卡洛樹(shù)搜索后,通過(guò)回朔到都會(huì)得到采取每個(gè)動(dòng)作的回報(bào)值。在德州普通中,跟牌、加注、棄牌的回報(bào)值計(jì)算公式見(jiàn)式(16):
式中vj表示所有抽樣世界采取某一動(dòng)作的回報(bào)和,在德州撲克中j可取值有3種。vj表示在wi世界中采取動(dòng)作j的回報(bào)。
通過(guò)上述4個(gè)步驟,可以計(jì)算出q學(xué)習(xí)在非完備信息博弈中的回報(bào)延遲,該回報(bào)延遲跟抽樣的次數(shù)有關(guān),抽樣的次數(shù)越多,回報(bào)就越準(zhǔn)確。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說(shuō)明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說(shuō)明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。