40
1 蒙蒙蒙蒙蒙蒙蒙蒙蒙蒙蒙蒙蒙 國國國國國國 國國國國國 國國國 國國國

蒙地卡羅演算法在遊戲的應用

Embed Size (px)

DESCRIPTION

蒙地卡羅演算法在遊戲的應用. 國立東華大學 資訊工程系 副教授 顏士淨. Monte Carlo Algorithm. 判斷 n 是否為質數 For ( i = 1; i

Citation preview

Page 1: 蒙地卡羅演算法在遊戲的應用

1

蒙地卡羅演算法在遊戲的應用

國立東華大學資訊工程系 副教授

顏士淨

Page 2: 蒙地卡羅演算法在遊戲的應用

2

Monte Carlo Algorithm

判斷 n 是否為質數 For ( i = 1; i<=t; i++){

m=n0.5

j = random(m) + 2If (!(n%j)) return (0);}

return 1;

Page 3: 蒙地卡羅演算法在遊戲的應用

3

Table Games

Perfect information, no chance 圍棋,象棋,西洋棋

Perfect information, with chance 西洋雙陸棋,大富翁

imperfect information, with chance 麻將,橋牌,十三張,接龍

Page 4: 蒙地卡羅演算法在遊戲的應用

4

棋類複雜度比較Games 複雜度 (logX) 與最強程式比較跳棋 32 Solved

黑白棋 58 Logistello>H九路圍棋 85 <H

西洋棋 123 Deep Blue>=H

象棋 160 ELP<H

圍棋 400 <<H

Page 5: 蒙地卡羅演算法在遊戲的應用

5

圍棋

Page 6: 蒙地卡羅演算法在遊戲的應用

6

棋子與棋盤

Page 7: 蒙地卡羅演算法在遊戲的應用

7

棋力分級弱 強

5 4 3 2 1 Kyu

1 2 3 4 5 6

1 9 Dan

912

業餘初學者 職業棋士

Page 8: 蒙地卡羅演算法在遊戲的應用

8

百萬美金的懸賞 應昌期先生曾提供一百萬美金給能夠寫出擊

敗職業棋士的圍棋程式的人

Page 9: 蒙地卡羅演算法在遊戲的應用

9

Rank of Computer Go

0

2

4

6

8

10

12

14

16

18

20

85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09

Page 10: 蒙地卡羅演算法在遊戲的應用

10

電腦棋類的設計方式 西洋棋,象棋

game tree, α-β cut off 成功原因

合法步不多 (30~40) 有一個簡單而合理的審局

函數 此方式不適用於圍棋

合法步太多 (>200) 目前沒有好的審局函數

Page 11: 蒙地卡羅演算法在遊戲的應用

11

圍棋與西洋棋之比較

圍棋 西洋棋勝負目標 地多為勝 吃掉對方國王棋子死活 有程度上差異 非生即死分支度 約 200 約 40

Page 12: 蒙地卡羅演算法在遊戲的應用

12

電腦圍棋設計方法 電腦圍棋的傳統設計法

模擬人類思維;經驗法則 JIMMY 程式 (since 1994)

2007 年 UCT 出現,奪得奧林匹亞 19 路圍棋的金牌

UCT: 運用蒙地卡羅法為基礎的樹狀搜尋演算法

Page 13: 蒙地卡羅演算法在遊戲的應用

13

UCT 樹狀搜尋演算法 UCT :一個樹狀搜尋演算法 特性:往較有可能為好點的分支,展開較深,最後會長成一棵不平衡樹

如何決定一個點是否為好點 ? 蒙地卡羅法

統計許多模擬棋局之結果,進行局面之判斷

Page 14: 蒙地卡羅演算法在遊戲的應用

14

Scheme of a Monte-Carlo Tree Search(2007, Herik)

教育部「大專校院研究人才延攬方案」

Page 15: 蒙地卡羅演算法在遊戲的應用

15

UCT- 不平衡的樹

Page 16: 蒙地卡羅演算法在遊戲的應用
Page 17: 蒙地卡羅演算法在遊戲的應用

17

UCT 搜尋方法 進行多次搜尋,每次均由上而下拓展 UCT

Tree 每次如何決定往哪個分支深入拓展 ?UCB UCT : UCB for Tree search UCB : Upper Confidence Bound UCB 原本用來解決吃角子老虎問題

Page 18: 蒙地卡羅演算法在遊戲的應用

18

吃角子老虎問題 開發:依照目前經驗決定下一次要選擇的機器

探險:嘗試其他機器

Page 19: 蒙地卡羅演算法在遊戲的應用

19

UCT 運用在圍棋

Page 20: 蒙地卡羅演算法在遊戲的應用
Page 21: 蒙地卡羅演算法在遊戲的應用

21

UCT 搜尋方法 最佳路徑:每次搜尋,均藉由 UCB 公式找一條由根節點到葉節點的最佳路徑

更新 UCT 樹:找到最佳路徑後,對葉節點代表之盤面執行模擬棋局,所得的勝負結果更新路徑上所有節點

Page 22: 蒙地卡羅演算法在遊戲的應用

22

UCT 例子

Page 23: 蒙地卡羅演算法在遊戲的應用

23

UCT 與傳統圍棋程式 JIMMY 結合

Page 24: 蒙地卡羅演算法在遊戲的應用

24

搜尋樹的裁剪方法 多算勝,少算不勝 分支度的多寡直接影響搜尋樹的深度 如何減少無用子點為一改良重點 三種裁剪法: JIMMY 裁剪、一線裁剪、棋塊裁剪

Page 25: 蒙地卡羅演算法在遊戲的應用

25

JIMMY 裁剪 JIMMY 對目前盤面作判斷,給定著手分數 UCT Tree 創子點時,排除沒分數之點

Page 26: 蒙地卡羅演算法在遊戲的應用

26

JIMMY 裁剪效果 未裁剪:第一層子點數量為 40~80 個 裁剪後第一層子點之數量控制在 1~15 個左右

大幅排除無用之點,並加深搜尋深度

Page 27: 蒙地卡羅演算法在遊戲的應用

27

JIMMY 裁剪實驗結果 結果分析 JIMMY 裁剪可行

Page 28: 蒙地卡羅演算法在遊戲的應用

28

模擬棋局方法 工作:給定盤面,將此局下到終局,計算勝負

意義:作為 UCT 樹的節點的收益值之來源

影響 UCT 判斷、選擇最佳路徑之正確性 重點在於選擇下一步的函式 目標: 1. 快速 2. 準確

Page 29: 蒙地卡羅演算法在遊戲的應用

29

最簡單的方法:隨機落子 優點:簡單、速度快 缺點:準確性較低,需統計較多棋局 若棋步越有意義,則越準確,但花較多時間 目標:讓電腦所選的著手更具有圍棋上的意義

Page 30: 蒙地卡羅演算法在遊戲的應用

30

經驗法則與棋形比對 選擇下一步:根據此盤面下合法著手 的著手機率決定 著手機率:根據經驗法則判斷與棋形比對所的的分數決定,分數越高,機率越高

Page 31: 蒙地卡羅演算法在遊戲的應用

31

著手機率分布範例

Page 32: 蒙地卡羅演算法在遊戲的應用

32

經驗法則 利用已有的知識,快速判斷著點價值 目前使用的經驗法則:「長」與「提」

Page 33: 蒙地卡羅演算法在遊戲的應用

33

長與提子的例子

Page 34: 蒙地卡羅演算法在遊戲的應用

34

棋形比對 棋形:棋子在棋盤上的分布狀況 可幫助人類棋手在對奕時快速排除無用著手 棋形表達:要下之點置中,周圍是棋子分佈狀態

Page 35: 蒙地卡羅演算法在遊戲的應用

35

棋形比對做法 棋形資料庫 來源:約 1600 個職業與業餘高段棋士之九路棋譜

擷取每一手所產生的棋形,統計出現次數 依照出現次數排序

Page 36: 蒙地卡羅演算法在遊戲的應用

36

實驗結果 棋形比對 取棋形資料庫中排名較前的棋形以比對 比對前一手周圍的八個點 棋力增益

Page 37: 蒙地卡羅演算法在遊戲的應用

37

電腦圍棋方法結論 UCT嵌在 JIMMY 決定著手之處 利用 JIMMY 的開局與佈局資料庫強化 U

CT 使用 JIMMY 著手資訊對 UCT做裁剪 以從棋譜中擷取的棋形資料庫作為棋形比對之基礎

結合經驗法則與 UCT 的想法確實可行 2008/10 於北京擊敗去年世界冠軍

Page 38: 蒙地卡羅演算法在遊戲的應用

38

Games

象棋 (Chinese Chess) 六子棋 (Connect6) 排七 (Fantan) 暗棋 (Dark Chess) 十三張 (Card13)

Page 39: 蒙地卡羅演算法在遊戲的應用

39

線上遊戲排行榜1. 麻將 (MahJong)2. 牌七 (Fantan)3. 大老二 (Big Two)4. 十三張 (Card13)5. 梭哈 (Showhand)6. 暗棋 (Dark Chess)7. 象棋,圍棋 (Chinese chess, Go)

Page 40: 蒙地卡羅演算法在遊戲的應用

40

結論:是否使用 UCT? 行棋方式 ?

落子 vs 移動 將軍棋步?

需檢查迫著 複雜度? 下棋資訊是否透明? 大部分商業遊戲都適用