李霞麗,陳彥東,楊子熠,張焱垠,吳立成
(中央民族大學 信息工程學院, 北京 100081)
藏族久棋是規則復雜且獨特的民間棋類運動,是在西北地區“方棋”的基礎上,融合漢、藏、蒙古、回族等多民族文化創新發展而形成,兼具競技性與趣味性[1]。計算機博弈研究的大多數棋盤類游戲具有全局統一的規則,勝負判定規則單一(比如圍棋、國際象棋等),藏族久棋明顯不同于上述棋盤類游戲。首先,藏族久棋對弈包括布局和戰斗2個階段,每個階段具有獨特的規則;其次,藏族久棋的勝負判定有若干種不同的情況。因此,藏族久棋特別適合作為計算機博弈研究的載體,其博弈研究是一個嶄新而富有挑戰的領域。不同于麻將[2]、德州撲克[3]等非完備信息博弈類游戲,藏族久棋與圍棋[4]、國際象棋[5]等屬于完備信息博弈類游戲。圍棋、國際象棋等學術研究成果較多,而藏族久棋的博弈研究尚處于起步階段,可供參考的文獻較少。
當前見諸文獻的藏族久棋博弈算法包括基于專家知識的方法[6]、小樣本機器學習方法[7]、時間差分強化學習算法(time-difference,TD)[8]、不依賴人類專家知識的深度強化學習算法[9]、基于分段評估方法[10]等。藏族久棋博弈研究雖然具有一定的進展,但是存在以下問題:棋譜數據和專家知識匱乏;從零開始學習的深度強化學習算法自對弈速度慢、訓練效率低;博弈智能體的棋力水平不高,落后于人類高級選手。
針對上述問題,論文提出了藏族久棋的兩階段計算機博弈算法,為布局階段設計基于卷積神經網絡和蒙特卡洛樹搜索的自對弈算法,為戰斗階段設計基于領域知識的Alpha-Beta剪枝算法。實驗表明,論文提出的兩階段算法具有較強的自學習能力,勝率明顯高于全局使用Alpha-Beta剪枝算法,使用該算法的博弈智能體能夠戰勝人類一段棋手。
論文的第一部分對藏族久棋規則進行介紹,第二部分對藏族久棋博弈及相關研究進行分析,第三部分介紹用于布局階段的基于卷積神經網絡和蒙特卡洛樹搜索的自對弈算法,第四部分介紹用于戰斗階段的基于領域知識的Alpha-Beta剪枝算法,第五部分是實驗設計及結果分析,最后是工作總結與展望。
久棋分為布局和戰斗2個階段,參考西藏藏棋協會使用的全國藏棋比賽規則,藏族久棋的具體規則如下。
棋盤由縱橫14條等距離且垂直交叉的平行線構成,所形成的196個交叉點是落子的位置。棋盤中央對角線的兩端是布局階段雙方落下第一顆子的地方。久棋棋盤如圖1所示。棋子分為黑白2種顏色,各98枚。空枰開局,對弈雙方各執一色棋子,輪流交替行棋。在布局階段,白棋先行,對弈雙方可以用己方棋子做成久棋陣型,或者破壞對方的陣型。當棋盤布滿棋子后,雙方按禮儀交換行棋順序(黑先白后),同時去掉棋盤中央對角線兩端的棋子,進入戰斗階段。

圖1 久棋棋盤
行棋方法一:移動棋子,把棋子從一個交叉點移動到相鄰的另一個空位交叉點。每次只能在水平或豎直方向上移動一格。
行棋方法二:跳躍吃子。移動己方棋子,跳過對方的一枚棋子(不能一次跳過兩枚或兩枚以上對方的棋子),并且吃掉所跳過的對方的棋子。跳躍吃子又可分為單步跳吃和多步跳吃(兩步及兩步以上跳吃)。多步跳吃可以隨時停止,從而使棋子停在對己方最有利的位置。
行棋方法三:成陣型吃子,移動或跳躍吃子后,己方形成不同類型的久棋陣型。按規則吃掉對方相應數量的棋子后,交換行棋順序,輪到對方行棋。例:己方形成一個方陣可以吃掉對方任意一枚棋子。形成幾個方陣就可以一次性吃掉對方幾枚棋子。己方形成一個槍陣可以吃掉對方任意兩枚棋子。
行棋方法四:當對弈雙方中的某一方的棋子數小于或等于棋盤路數時,此方的棋子變成飛子。變成飛子的一方,棋子的移動將不受移動步數(一步一格)的限制,而沒有成為飛子的一方則仍然受到移動步數的限制。處于飛子的一方若選擇跳躍吃子,只能進行多步跳吃,不允許單步跳吃。
1) 當對弈雙方中的某一方形成2個或2個以上褡褳陣型且對方無方陣時,判對方負。
2) 當對弈雙方中的某一方的棋子數量小于4時,判對方勝。
3) 對弈雙方中的某一方的棋子雖然較多,但不能進行有效的移動,則判對方勝。
4) 超過比賽所規定的時間,超時的一方判負。
基于專家知識的方法[6]從300局藏族久棋比賽數據中提取棋型,使用基于矩陣的匹配方法進行模式識別,根據專家知識設計不同棋型的進攻和防御策略。但由于數據樣本少以及專家知識匱乏,所開發的軟件棋力僅略高于人類初學者的水平。
小樣本機器學習方法[7]采用小樣本數據推理能力強的貝葉斯網絡提取棋型,但由于基礎棋陣的數量較少,且棋型之間的拓撲結構依賴專家知識、網絡節點間的轉換概率缺少行棋間的線性關系,棋力提升受到了限制。
時間差分算法[8]優化了上限置信區間算法(upper confidence bound apply to tree,UCT),并引用時間差分算法進行策略更新,解決了依賴專家知識設計狀態轉移策略帶來的局限性。但因為模型的算法效率較低以及計算資源不足,藏族久棋博弈程序的棋力提升依然不明顯。
混合深度強化學習模型[9]采用混合時間差分算法結合深度神經網絡,不依賴人類知識進行了藏族久棋的自對弈訓練。該算法減少了搜索次數,提高了學習效率。但由于自對弈訓練的效率很低,訓練網絡所需要的硬件資源嚴重不足,久棋程序棋力的提升不明顯。
基于分段評估方法的博弈智能體[10]針對久棋規則的特點,提出了分段評估思路,構造了不同階段的局面評估方法。該方法依賴于人類構造的知識庫,缺少程序“學習”的過程。
針對上述問題,本文設計的博弈智能體程序通過自對弈生成棋局數據,盡量避免花費大量的人力物力采集棋局數據,試圖解決棋局數據樣本少的難題。采用深度強化學習方法對久棋的布局階段進行訓練,簡化網絡模型,實現了在普通的筆記本電腦配置條件下快速訓練模型,提升了模型的訓練效率。對久棋戰斗階段的棋型評估進行優化,使評估值的設置更加合理。本文提出的分階段藏族久棋博弈算法將深度強化學習與領域知識相結合,在一定程度上實現了藏族久棋博弈智能體程序“學習”和“思考”,提升了藏族久棋博弈智能體的棋力。
自對弈方法和蒙特卡洛樹搜索算法已經成為計算機博弈研究中使用的主流且有效的方法。2013年,自對弈方法由DeepMind公司應用在Atari游戲中[11]。2015年,采用自對弈算法的Atari游戲智能體達到了人類玩家的水平[12]。圍棋智能系統 AlphaGo[13]、AlphaGoZero[14]使用蒙特卡洛樹搜索算法和深度強化學習進行自對弈訓練,分別在2016年、2017年獲得巨大成功。與AlphaGo相比,AlphaGoZero極大地縮短了訓練時間、降低了計算資源消耗并且提升了模型的學習效果,但仍使用了4個張量處理器(tensor processing unit,TPU)來支持其進行模型訓練。2018年,AlphaZero[15]采用深度神經網絡與強化學習相結合的方式替代了傳統的手工編碼和領域知識,使用了數千張TPU進行自對弈訓練,在與同時期最強的幾個專業棋類智能模型對戰中均取得了非常高的勝率。Li等[16]提出具有最大平均輸出層(maxmiun-average-output,MAO)的卷積神經網絡自對弈方法,并將其應用于圍棋中,在同等條件下,所開發的圍棋智能系統優于使用殘差網絡(采用的是ResNet18)開發的圍棋系統。混合更新深度強化學習自對弈模型[17]將Sarsa(λ)算法以及Q-Learning算法與深度神經網絡相結合,提高了模型自對弈訓練的效率,應用在藏族久棋對弈中取得了較好的效果。
星際爭霸[18]、德州撲克[19]、麻將[20]、刀塔[21]等游戲基于深度強化學習進行自對弈訓練,均取得了令人矚目的成績。Zha等[22]將自對弈深度強化學習用于單人紙牌游戲,證明了自對弈方法對于單人紙牌類游戲也能取得良好的效果。
上述成功的應用先例表明,深度強化學習和蒙特卡洛樹搜索應用于藏族久棋博弈研究是可行的。
藏族久棋對弈分為布局和戰斗2個階段,每個階段具有不同的規則。本文充分考慮不同階段的特點,分別為布局以及戰斗階段設計不同的算法,提出了兩階段博弈算法以提高藏族久棋博弈智能體程序的性能。本部分內容介紹布局階段設計的基于蒙特卡洛樹搜索和卷積神經網絡的自對弈算法。
卷積神經網絡(convolutional neural network,CNN)是一種帶有卷積結構的深度神經網絡[23-24],能夠用來學習并提取圖像中的特征信息。在AlphaGo Zero中,卷積神經網絡被用來學習圍棋棋盤中的特征信息。藏族久棋和圍棋具有相似性,棋盤盤面均由黑棋、白棋、空位組成,區別是棋盤尺寸以及下棋規則不同。本文對AlphaGo Zero所使用的深度神經網絡結構進行簡化調整,構建適用于藏族久棋的卷積神經網絡模型。
所構建的藏族久棋卷積神經網絡模型中的策略價值網絡,在給定的局面信息下,返回每一個可行動作的概率以及當前局面評分。卷積神經網絡的局面信息s使用4個14×14的二值特征平面表示,前2個平面分別表示當前執子方的棋子位置和對手的棋子位置。有棋子的位置用1表示,無棋子的位置用0表示。第三個平面表示對手最近一步的落子位置,也就是整個平面只有一個位置是1,其余全部是0。第四個平面表示的是當前執子方是否先手,如果是先手則整個平面全部為1,否則全部為0。在藏族久棋對弈過程中,先后手影響久棋布局的質量,布局的好壞又對勝負影響較大。在雙方局面估分相似的情況下,當前局面的優劣和先后手有較大的關系。
AlphaGo Zero使用的深度神經網絡多至80層,這種大規模網絡模型無法在普通筆記本上訓練。因此,論文對網絡結構進行簡化,如圖2所示。

圖2 卷積神經網絡結構
在輸入層之后的主網絡中使用3個3×3的濾波器以及Relu激活函數。在策略(Policy)網絡中,使用3個1×1的濾波器,連接一個全連接層,使用Softmax非線性函數直接輸出著法的概率;價值(Value)網絡使用4個1×1的濾波器,連接一個由64個神經元組成的全連接層,再接一個全連接層,使用tanh非線性函數輸出[-1,1]之間的局面評分。卷積神經網絡模型的損失函數將在3.3.2節介紹。
蒙特卡洛樹搜索(monte carlo tree search,MCTS)[25]將蒙特卡洛方法和博弈樹搜索算法相結合,通過快速走子模擬近似局面評估,可以有效減少搜索深度,既能降低問題的規模,又能獲得求解問題的近似最優性。
MCTS分為4個步驟:選擇、擴展、模擬和反向傳播,如圖3所示。

圖3 MCTS算法
借鑒AlphaGo Zero的思想,將卷積神經網絡融入到MCTS,使用卷積神經網絡引導MCTS搜索,減小了MCTS的規模,降低了計算資源和時間消耗,提高了搜索效率。
蒙特卡洛搜索樹中的每個節點S表示一個局面,且保存四元組信息{N,U,Q,P},如圖4所示,N表示當前節點被訪問次數,U用于記錄UCB上限,Q是經過一個分支所有訪問的期望值的平均值(未訪問過的分支值為0),P表示當前正在考慮的動作的先驗概率。

圖4 原理圖示
1) 選擇(Selection):從根節點S0執行搜索,向下搜索L次,到達葉子節點SL,每次搜索時進行動作選擇。動作的選擇由式(1)確定:
argmax(U+Q)
(1)
式中,U由式(2)確定:
(2)
式中,cpuct是一個用來平衡深入挖掘與廣泛搜索的權重因子,取值為3.5。N′表示父節點被訪問的次數。
2) 擴展和評估(expansion and evaluation):通過策略、價值網絡計算上一步中選擇到的葉子節點SL的價值Q(SL)以及從SL節點擴展的新葉子節點的P值。
3) 回溯(Backup):將節點SL的價值Q(SL)進行回溯更新,更新的結果就是從根節點S0到節點SL的整個搜索路徑上搜索到的節點都被更新了一遍。
4) 真正落子(Play):路徑中所有節點統計數據得到更新后(搜索結束后),在根節點S0處選擇動作進行落子,根據最新的統計數據產生一個實際的行為π,與訪問次數成冪指數比例:
(3)
式中,τ表示控制探索的程度,τ越大,探索比例增大。反之,則更多選擇當前最優動作。
AlphaGo Zero使用的基于深度強化學習的博弈算法通過訓練神經網絡完成落子預測和著法選擇,極大地提高了樹搜索的能力,能夠完成更高質量的落子選擇,并且具有更強的自我對弈能力。藏族久棋布局階段的基于卷積神經網絡和蒙特卡洛樹搜索的自對弈算法借鑒AlphaGo Zero的思想進行自我學習,訓練藏族久棋自對弈智能體模型以獲得藏族久棋布局階段的更好表現。
3.3.1原理
對于每步棋的當前局面s,使用卷積神經網絡前一輪的輸出指導蒙特卡洛樹的結點擴展與選擇。蒙特卡洛搜索樹輸出著法的概率分布π,稱之為搜索概率。搜索概率與卷積神經網絡輸出的動作概率p相比,能夠選擇質量更高的著法。因此,MCTS可以看作是策略迭代的提升。在自對弈過程中,不斷使用提升過的,基于蒙特卡洛搜索樹的策略π進行走棋,最終決出勝負,將最終的自對弈結果z(勝為1,負為-1,平為0)看作當前棋局狀態下的局勢評估。
3.3.2自對弈訓練
借鑒AlphaGo Zero的思想,通過定期評估最新模型和歷史最優模型的優劣,決定是否更新歷史最優模型。自對弈數據始終由最優模型生成,并用于不斷更新訓練當前最新的卷積神經網絡模型。自對弈數據以(s,π,z)形式存儲,其中s表示局面,π是搜索概率,z是自對弈的結果。卷積神經網絡模型的損失函數定義如下:
(4)
式中,T表示轉置,c表示參數,θ表示卷積神經網絡的權重。第一項是為了優化價值網絡輸出的預測值v,第二項是為了優化落子概率的預測值p,第三項是為了防止模型過擬合。
3.3.3自對弈數據的擴充
整個訓練過程中,由于是從零開始生成自對弈棋局數據,且藏族久棋每局對弈時間是五子棋、六子棋的幾十倍,因此為了能夠在算力非常弱的情況下盡快地訓練模型,對棋局數據的擴充顯得十分必要。藏族久棋作為黑白棋的一種,其棋盤局面具有對稱性,因此通過將存有棋局數據的數組先進行逆時針旋轉90°,再水平翻轉,保存新生成的棋局數據,并將其用于訓練卷積神經網絡模型。通過數據擴充在一定程度上能夠提高神經網絡模型訓練數據的多樣性和均衡性。
3.3.4自對弈算法的偽代碼
布局階段基于卷積神經網絡和蒙特卡洛樹搜索的自對弈算法的偽代碼如下:
//輸入:空模型、棋盤局面信息等
Input:empty model, board’s information
//隨機初始化神經網絡參數
Initialize neural network weights randomly
for each iteration i do //每一次迭代
Initialize state s0 //初始化狀態s0
for each step do
while computational resource remains do
MCTS_search( )//蒙特卡洛樹搜索
end
end
for each step do
calculate_the_winner()
//通過成方計算相對勝負
store_the_data() //存儲數據
end
sample_data() //數據采樣
optimize_network_weights()
//優化神經網絡參數
MCTS_search( )
v0,s0 <- create_root()
//創建搜索樹的根節點
//指定的迭代次數和時間范圍內
while within computational budget do
vl <- TreePolicy(v0)
//樹節點的擴展
Δ <- DefaultPolicy(s(vl))
//按默認策略進行模擬
BackUp(vl,Δ) //反向傳播
return a(BestChild(v0))
//返回最佳子節點
calculate_the_winner()
//若達到終局判斷情況
if(len(states) == width * height) then
//統計成方個數的變量
counts_1 <- 0
counts_2 <- 0
if(Player1 has a square) then
counts_1 += 1//對變量進行賦值
if(Player2 has a square) then
counts_2 += 1
winner <- Player1 if counts_1 > counts_2 else Player2
optimize_networks_weight()
mini_batch <- random.sample()
//隨機化參數
state_batch <- get_board_state()
//獲取棋盤的狀態
//獲取MCTS返回的搜索概率π
mcts_probs_batch = get_mcts_probs()
winner_batch = get_winner_states()
probs,v <- policy_value(state_batch)
//對卷積神經網絡進行訓練
for i <- 0 to epochs do
loss,entropy<-train_step(state_batch,mcts_probs_batch,winner_batch)
//卷積神經網絡輸出的動作概率p和狀態評分預測值v
new_probs,new_v = policy_value(state_batch)
如果全程采用單一的算法,藏族久棋博弈樹的搜索路徑會很長,且不同階段的博弈樹信息處理非常繁雜低效,巨大的狀態空間和動作空間導致搜索效率很低。因此,專門為戰斗階段設計基于領域知識的Alpha-Beta剪枝算法,以提高博弈算法的效率。
藏族久棋規則特殊且搜索樹動作空間和狀態空間巨大,在有限的時間內遍歷久棋搜索樹的所有分枝是不現實的。極大極小值算法[26]是計算機博弈搜索算法的基礎,但因其搜索效率低不適合直接應用于藏族久棋的博弈樹搜索。Alpha-Beta剪枝算法[27]是對極大極小值算法的改進優化,不需要像極大極小值算法一樣遍歷整棵博弈樹,它通過Alpha-Beta剪枝操作裁剪掉多余的分支提高樹的搜索效率。
Alpha-Beta剪枝算法按照從下至上,從左至右的順序遍歷博弈樹。本文實驗中使用的普通筆記本電腦的算力有限,為了在減輕計算量的同時盡可能搜索更優的落子方案,將Alpha-Beta剪枝算法的搜索深度設置為4層。Alpha和Beta的初始值分別設置為-1 000 000、1 000 000。
Alpha-Beta剪枝算法剪掉了多余的分支,計算效率得到了很大提升。但是,剪枝效率與著法的遍歷順序密切相關,因此本文采用領域知識結合Alpha-Beta剪枝提高效率。
剪枝算法的偽代碼如下。
function alpha_beta(depth,alpha,beta)
//參數初始化
alpha<-1 000 000,beta<-1 000 000
//獲取哈希值,用于置換表
score<-getHashItemScore(depth,alpha,beta)
//判斷是否達到搜索終止條件
if(score !=UNKOWN_SCORE and depth !=DEPTH)
then return score
if(depth == 0)
//記錄哈希值
then recordHashItem(depth,score)
//生成所有可行的解
List <- generateEmptyPosition()
//對于每一步,遍歷它的所有可行解
for(From <- List[0]to List[len(List)]) do
//移動至相鄰格
list_2 <- generateDirectMoves()
//跳吃
list_3 <- generateTiaoChiMoves()
//若已無可行解,跳出循環
if(len(list_3 + list_2) == 0)
then continue
//有可行解
list_4 = list_2 + list_3
//行棋
MakeMove()
//遍歷可行解
for(To - //評估這步行棋 evaluateOneDirectMove() //若形成陣型吃子 if(having_eating_numbers()) //進行評估 then evaluate_on_eating() //迭代搜索 val = -alpha_beta(depth - 1,beta,alpha) //多次模擬后獲得最優val值,撤回到模擬前的狀態 UnMakeMove() if(val >= beta) //按照α-β剪枝算法,如果v>β,則直接返回v then return val else if(val > alpha) //按照α-β剪枝算法,這里還需要更新α的值 then alpha <- value end 采用領域知識進行棋型評估一般是通過局部的棋型進行評估。但是藏族久棋與五子棋[28]或六子棋[29]不同,后兩者的棋型評分已有較為準確的評估函數,藏族久棋需要借助領域知識,對電腦的走法進行評估,然后不斷地根據實際效果調整相應的棋型評估值。 經過實驗測試和調整后,布局階段及戰斗階段各個棋型的評估值設置分別如表1和表2所示。 表1 布局階段各棋型的評估值 表2 戰斗階段各棋型的評估值 在布局階段,由于雙棋門是由2個單棋門構成,單棋門是由三角構成,因此的雙棋門、單棋門、三角評估值的初始比例設置為8∶2∶1。后續經過不斷地調整棋型評估值間的比例,并通過實驗進一步驗證,確定當雙棋門、單棋門、三角的評估值分別為800、100、50時為棋型評估值方案。 在戰斗階段,綜合考慮棋子數、棋型復雜度、陣型吃子數三方面價值進行評估。單個棋子作為對弈中最基本的單位,具有一定的基礎價值,一個棋型所需的棋子數越多,其基礎評估值就越高,其復雜度也會隨著棋子數目的增加而增加。形成褡褳、棋門陣型不僅有利于形成最終的勝利陣型,同時還可以通過吃子以達到破壞對方陣型的作用。因此形成的陣型所能吃掉對方棋子的數目越多,其評估值相對就越高。 模式匹配與Alpha-Beta剪枝算法結合,在對著法進行評估時,與提前預輸入的模型進行匹配,由于模型被預先賦予了不同的評估值,因此不同的著法之間便產生了優劣之分。模式匹配和位棋盤緊密相連,在位棋盤上存儲數據會簡化模式匹配的過程。但在藏族久棋中,由于棋盤大小為 14×14,通過位棋盤來存儲棋盤信息反而會成為一種負擔,原因是當棋盤過大時,為了避免位與位之間發生哈希沖突,則會對位進行擴展。當二進制串的長度過大時,其性能反而下降。因此在存儲久棋棋盤的相關信息時,并未采用位棋盤法,而是使用二維數組,并且將空位記為0,黑棋、白棋分別記為1、2來進行存儲。 為了測試和驗證論文中提出的藏族久棋分段算法的性能,在普通筆記本硬件配置條件下,采用Python語言開發了兩款藏族久棋博弈程序,程序開發及運行的環境配置如表3所示,兩款藏族久棋博弈程序采用的算法如表4所示。對弈實驗中,人類棋手具有一段水平,記作Player A。 表3 開發和運行程序的筆記本硬件配置 表4 兩款博弈程序所采用的算法 在Player A和Player B的對弈中,采用5局3勝制,總分為20分,勝利方計1分。采用5局3勝制可以有效地降低偶然性事件對統計結果的影響,保證實驗結果數據的準確性。人類棋手的棋力水平為業余一段,比賽勝負情況如圖5所示。 圖5 不同訓練次數下的勝率 由圖5可知,在訓練次數較少時,人類棋手占有明顯優勢。隨著自對弈智能體模型訓練的迭代次數逐漸增加,模型逐漸地“學會”了下棋的思路和方法,由于自對弈學習的最終目標是勝利,自對弈智能體模型也逐漸“學會”了如何獲得博弈比賽的勝利。當訓練次數為300時,模型的棋力已經得到提升,在與人類棋手的對弈當中逐漸取得上風。當訓練次數達到500時,模型已經占據了較大的優勢。 考慮到藏族久棋每局比賽耗時較長,對人類棋手的精力和體力消耗較大,長時間的對弈過程可能會導致人類棋手在對弈中的表現有失水準,因此進行了不同博弈程序間的對比實驗,如圖6所示。 對弈的一方是采用論文中提出的分段算法的智能體程序Player B,另一方則是全程使用基于Alpha-Beta剪枝算法的博弈程序Player C。Player C在布局和戰斗階段均采用Alpha-Beta剪枝算法,并且在布局和戰斗階段分別對不同的棋型賦予不同的評估值。博弈程序Player C參加了2021年中國計算機博弈錦標賽大賽,獲得全國二等獎,證明了其博弈算法的有效性和可行性。 圖6 分段算法與全局使用Alpha-Beta算法對比 由圖6可知,當訓練次數為100時,博弈程序Player C在與運用了蒙特卡洛樹搜索算法和卷積神經網絡的博弈智能體程序Player B的對弈中保持著較大的優勢,此時的Player B因自對弈智能體模型的訓練次數不足,棋力較差。當訓練次數為300時,此時的Player B已經能與Player C戰平,自對弈智能體模型的棋力相對訓練初期得到了較大提升,逐漸地“學會”了如何獲得博弈比賽的勝利。隨著訓練次數的不斷增加,當訓練次數達到500時,Player B在與Player C的對弈中取得較大的優勢,Player B可以“猜”到一些比較刁鉆的下法,從而建立贏棋的優勢。 藏族久棋棋譜數據極少,領域知識匱乏,訓練一個自對弈藏族久棋博弈智能體程序的意義重大。實驗表明,采用論文中所提出的分段算法開發的藏族久棋自對弈智能體與人類一段棋手、Alpha-Beta智能體進行對弈時,均表現不錯,具備較快的學習能力,并且能夠走出不同于人類選手的優勢走法,能夠為藏族久棋的布局和戰斗階段提供重要指導。但是該算法仍有巨大的改進空間,后續將考慮在神經網絡模型方面繼續優化算法,選擇更高效的網絡結構以縮短模型的訓練時長,提升算法的執行效率。4.3 領域知識


4.4 模式匹配方法
5 實驗設計及結果分析


5.1 與人類棋手的博弈實驗

5.2 不同博弈程序間的對比實驗

6 結論