420 likes | 637 Views
蒙地卡羅演算法在遊戲的應用. 國立東華大學 資訊工程系 副教授 顏士淨. Monte Carlo Algorithm. 判斷 n 是否為質數 For ( i = 1; i<=t; i++){ m=n 0.5 j = random(m) + 2 If (!(n%j)) return (0); } return 1;. Table Games. Perfect information, no chance 圍棋,象棋,西洋棋 Perfect information, with chance 西洋雙陸棋,大富翁
E N D
蒙地卡羅演算法在遊戲的應用 國立東華大學 資訊工程系 副教授 顏士淨
Monte Carlo Algorithm 判斷 n 是否為質數 For ( i = 1; i<=t; i++){ m=n0.5 j = random(m) + 2 If (!(n%j)) return (0); } return 1;
Table Games • Perfect information, no chance • 圍棋,象棋,西洋棋 • Perfect information, with chance • 西洋雙陸棋,大富翁 • imperfect information, with chance • 麻將,橋牌,十三張,接龍
1 2 3 4 5 6 段 弱 強 12 9 5 4 3 2 1 Kyu 1 9 Dan 初學者 業餘 職業棋士 棋力分級
百萬美金的懸賞 • 應昌期先生曾提供一百萬美金給能夠寫出擊敗職業棋士的圍棋程式的人
電腦棋類的設計方式 • 西洋棋,象棋 • game tree, α-βcut off • 成功原因 • 合法步不多(30~40) • 有一個簡單而合理的審局函數 • 此方式不適用於圍棋 • 合法步太多(>200) • 目前沒有好的審局函數
電腦圍棋設計方法 • 電腦圍棋的傳統設計法 • 模擬人類思維;經驗法則 • JIMMY程式(since 1994) • 2007年UCT出現,奪得奧林匹亞19路圍棋的金牌 • UCT:運用蒙地卡羅法為基礎的樹狀搜尋演算法
UCT樹狀搜尋演算法 • UCT:一個樹狀搜尋演算法 • 特性:往較有可能為好點的分支,展開較深,最後會長成一棵不平衡樹 • 如何決定一個點是否為好點? • 蒙地卡羅法 • 統計許多模擬棋局之結果,進行局面之判斷
Scheme of a Monte-Carlo Tree Search(2007, Herik) 教育部「大專校院研究人才延攬方案」
UCT搜尋方法 • 進行多次搜尋,每次均由上而下拓展UCT Tree • 每次如何決定往哪個分支深入拓展?UCB • UCT : UCB for Tree search • UCB : Upper Confidence Bound • UCB原本用來解決吃角子老虎問題
吃角子老虎問題 • 開發:依照目前經驗決定下一次要選擇的機器 • 探險:嘗試其他機器
UCT搜尋方法 • 最佳路徑:每次搜尋,均藉由UCB公式找一條由根節點到葉節點的最佳路徑 • 更新UCT樹:找到最佳路徑後,對葉節點代表之盤面執行模擬棋局,所得的勝負結果更新路徑上所有節點
搜尋樹的裁剪方法 • 多算勝,少算不勝 • 分支度的多寡直接影響搜尋樹的深度 • 如何減少無用子點為一改良重點 • 三種裁剪法:JIMMY裁剪、一線裁剪、棋塊裁剪
JIMMY裁剪 • JIMMY對目前盤面作判斷,給定著手分數 • UCT Tree創子點時,排除沒分數之點
JIMMY裁剪效果 • 未裁剪:第一層子點數量為40~80個 • 裁剪後第一層子點之數量控制在1~15個左右 • 大幅排除無用之點,並加深搜尋深度
JIMMY裁剪實驗結果 • 結果分析 • JIMMY裁剪可行
模擬棋局方法 • 工作:給定盤面,將此局下到終局,計算勝負 • 意義:作為UCT樹的節點的收益值之來源 • 影響UCT判斷、選擇最佳路徑之正確性 • 重點在於選擇下一步的函式 • 目標:1.快速 2.準確
最簡單的方法:隨機落子 • 優點:簡單、速度快 • 缺點:準確性較低,需統計較多棋局 • 若棋步越有意義,則越準確,但花較多時間 • 目標:讓電腦所選的著手更具有圍棋上的意義
經驗法則與棋形比對 • 選擇下一步:根據此盤面下合法著手 的著手機率決定 • 著手機率:根據經驗法則判斷與棋形比對所的的分數決定,分數越高,機率越高
經驗法則 • 利用已有的知識,快速判斷著點價值 • 目前使用的經驗法則:「長」與「提」
棋形比對 • 棋形:棋子在棋盤上的分布狀況 • 可幫助人類棋手在對奕時快速排除無用著手 • 棋形表達:要下之點置中,周圍是棋子分佈狀態
棋形比對做法 • 棋形資料庫 • 來源:約1600個職業與業餘高段棋士之九路棋譜 • 擷取每一手所產生的棋形,統計出現次數 • 依照出現次數排序
實驗結果 • 棋形比對 • 取棋形資料庫中排名較前的棋形以比對 • 比對前一手周圍的八個點 • 棋力增益
電腦圍棋方法結論 • UCT嵌在JIMMY決定著手之處 • 利用JIMMY的開局與佈局資料庫強化UCT • 使用JIMMY著手資訊對UCT做裁剪 • 以從棋譜中擷取的棋形資料庫作為棋形比對之基礎 • 結合經驗法則與UCT的想法確實可行 • 2008/10於北京擊敗去年世界冠軍
Games • 象棋(Chinese Chess) • 六子棋(Connect6) • 排七(Fantan) • 暗棋(Dark Chess) • 十三張(Card13)
線上遊戲排行榜 • 麻將(MahJong) • 牌七(Fantan) • 大老二(Big Two) • 十三張(Card13) • 梭哈(Showhand) • 暗棋(Dark Chess) • 象棋,圍棋(Chinese chess, Go)
結論:是否使用UCT? • 行棋方式? • 落子 vs 移動 • 將軍棋步? • 需檢查迫著 • 複雜度? • 下棋資訊是否透明? • 大部分商業遊戲都適用