• 沒有找到結果。

六貫棋遊戲實作與強化學習應用

N/A
N/A
Protected

Academic year: 2021

Share "六貫棋遊戲實作與強化學習應用"

Copied!
60
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學 資訊工程研究所碩士論文. 指導教授: 林順喜. 博士. 六貫棋遊戲實作與強化學習應用 Hex Game Implement and Reinforcement Learning. 研究生:王鈞平. 撰. 中華民國一百零八年六月.

(2) 摘要 六貫棋,又被稱作納許棋,是一個雙人對局遊戲,最初是在1942年12 月26日在丹麥報紙 Politiken 發表的一篇文章中出現,被稱作 Polygon。於 1948年時,由數學家約翰·福布斯·納許重新獨立發明出來,在最初被稱作 納許棋(Nash)。後來於1952年遊戲玩具製造商 Parker Brothers 將其作為遊戲 發行,將此遊戲命名為 Hex。 在六貫棋的棋盤上由雙方輪流落子,雙方各擁有一組對邊,藉由佔領 格子的方式將自己方的兩條邊連接起來以獲得勝利。在六貫棋當中已被約 翰·福布斯·納許使用策略偷取的方式證明出六貫棋在先手方擁有必勝策略, 而在路數小於8的盤面已經被完全破解出所有的必勝策略。 本研究試圖利用 AlphaZero 論文當中所提到的訓練方式,利用蒙地卡羅 樹搜尋演算法搭配類神經網路訓練,嘗試藉由強化學習,從零人類知識開 始只提供遊戲規則的方式,並針對3至4路的六貫棋棋盤,來訓練出能夠自 我學習出完全破解3至4路的六貫棋的程式。依循此模式,在計算資源更為 豐沛時,未來可以往更高路數的六貫棋實驗其破解的可能性。. 關鍵詞:六貫棋、強化學習、深度學習。. ii.

(3) Abstract Hex, also called Nash, is a game with two players. At first, it appeared and was called Polygon on a Denmark newspaper Politiken in 1942. In 1948, John Nash, who was a Mathematician, invented it and called it Nash. In 1952, Parker Brothers, which was a toy manufacturer, published it and called it Hex. On the board of Hex, two players take turns placing a stone of their color on a single cell within the overall playing board. The goal for each player is to form a connected path of their own stones linking the opposing sides of the board marked by their colors, before their opponent connects his or her sides in a similar fashion. The first player to complete his or her connection wins the game. Hex has been proved by John Nash by the strategy stealing argument so that the first player has a winning policy, and the boards with a size smaller than 8 have been solved by the program. In this research, we try to use the AlphaZero training method, which uses Monte Carlo Tree Search Algorithm with Deep Learning, and try to use Reinforcement Learning to train a model without human knowledge to solve Hex with a board size of 3 and 4. According to this approach, we hope that the boards with larger sizes can also be solved using more computation resources in the future.. Key words: Hex, AlphaZero, Reinforcement Learning, Deep Learning. iii.

(4) 致謝 在兩年的碩士求學路程中,首先我要感謝林順喜教授給予我適時的激 勵與鞭策,在教授的耐心指導下帶領我們探索人工智慧的領域,並引領我 研究的方向,對於作研究有了更深入的了解,令我在這兩年中所獲甚多。 對於同個實驗室的夥伴們,首先要感謝志宏學長,待在師大這兩年中, 很多方面都受到志宏學長的關懷與幫助,讓我能漸漸地融入師大資工的環 境中,而平時與同實驗室的彥吉、律濃、毅泰、天宇、沅亨以及俊豪學長 的討論當中,得到了相當多學習上的幫助以及研究上的想法啟發。 最後我要感謝我的父母,能讓我專心在學業上努力,不必太操心其他 的問題,順利完成學業。. iv.

(5) 目錄 圖目錄 ....................................................................................................................... vii 表目錄 ........................................................................................................................ ix 第一章 緒論 ............................................................................................................... 1 1.1 研究背景 .............................................................................................................. 1 1.2 研究目的 .............................................................................................................. 4 第二章 文獻探討 ....................................................................................................... 6 2.1 六貫棋連接策略 ................................................................................................... 6 2.2 蒙地卡羅樹搜索演算法 ....................................................................................... 7 2.3 Solver .................................................................................................................. 10 2.4 殘差網路(ResNet) .............................................................................................. 12 2.4 TensorFlow+Keras 深度學習人工智慧實務應用 ............................................. 13 2.5 AlphaGo Zero ...................................................................................................... 15 2.6 alpha-zero-general ............................................................................................... 17 第三章 程式實作 ..................................................................................................... 18 3.1 六貫棋規則實作 ................................................................................................. 18 3.2 基礎類神經網路架構 ......................................................................................... 21 3.3 模型訓練流程 ..................................................................................................... 22 3.4 蒙地卡羅樹搜索(MCTS) ................................................................................... 24 3.5 鏡像盤面 ............................................................................................................. 25 3.6 快贏策略 ............................................................................................................. 26 3.7 深度函數 ............................................................................................................. 28 3.8 自我對下產生亂度 ............................................................................................. 30 3.9 圖形介面設計 ..................................................................................................... 31 3.10 模型訓練與驗證 ............................................................................................... 32 第四章 實驗結果 ..................................................................................................... 36 4.1 實驗環境 ............................................................................................................. 36 4.2 驗證方法比較 ..................................................................................................... 36 4.3 六貫棋 3 路盤面驗證 ......................................................................................... 37 4.4 六貫棋 4 路盤面驗證 ......................................................................................... 44 v.

(6) 4.4 快贏策略驗證 ..................................................................................................... 46 第五章 結論與未來方向 ......................................................................................... 48 參考文獻 ................................................................................................................... 50. vi.

(7) 圖目錄 圖 1 六貫棋棋盤(11 路)[14] ....................................................................................... 3 圖 2 由藍方獲勝[15] .................................................................................................. 3 圖 3 紅棋形成 Virtual Connection ............................................................................. 6 圖 4 MCTS 示意圖 ..................................................................................................... 8 圖 5 上述盤面的空格中對於黑白雙方都是即使下了也不會對局勢有太大影響 [4] ................................................................................................................................ 8 圖 6 圖中空格便是需要在搜索時被剪枝的節點,下在有標記點的位置是較好的 [4] ................................................................................................................................ 9 圖 7 DFPN 示意圖 .................................................................................................... 11 圖 8.Residual Block 示意圖[18] ............................................................................... 12 圖 9.卷積層運算示意圖[13] .................................................................................... 14 圖 10.AlphaGo 訓練示意圖[2]................................................................................. 16 圖 11.AlphaGo 的 MCTS 示意圖[2] ........................................................................ 16 圖 12 棋盤格式,6 × 6的棋盤表示,因為加上邊框的關係會變成8 × 8的二維陣 列 ............................................................................................................................... 18 圖 13 走步遮罩示意圖,下方的一維陣列為上方盤面的走步遮罩 ..................... 20 圖 14 類神經網路架構 ............................................................................................. 21 圖 15 Residual Block 內部結構 ............................................................................... 21 圖 16 訓練流程圖 ..................................................................................................... 23 圖 17 上下兩種盤面為狀態相同的鏡像盤面 ......................................................... 25 圖 18 (a)為原始的 MCTS,(b)為採用快贏策略的 MCTS,在子節點在往上回傳 的過程中,由於會有深度不一致的問題,因此在對父節點的 Q 值進行更新時 需要經由深度函數的反函數運算並加一再進行深度函數運算,才會變成在父節 點位置的原本應該的分數 ....................................................................................... 27 圖 19 當該局遊戲獲勝的分數時的深度函數示意圖(λ = 0.2) .............................. 29 圖 20 當該局遊戲失敗的分數時的深度函數示意圖(λ = 0.2) ............................. 29 圖 21 六貫棋的圖形介面 ......................................................................................... 31 圖 22 與 Mohex 程式的溝通架構 ............................................................................ 32 圖 23 DFS 驗證虛擬碼,error_count 為驗證中的失誤數 ..................................... 33 圖 24 不同的走步順序,盤面卻相同 ..................................................................... 33 vii.

(8) 圖 25 檢驗模型的驗證流程,其中黑棋為先手,白棋為後手 ............................. 35 圖 26 各個 Dirichlet noise 失誤數折線圖,y 軸為失誤數,x 軸為 iteration 數 ... 40 圖 27 不同Cpuct下的折線圖,x 軸為 iteration 數,y 軸為失誤數 ...................... 42 圖 28 4 路六貫棋中模型的失誤率,x 軸為 iteration 數,y 軸為失誤率 ............. 45. viii.

(9) 表目錄 表 1 不同棋類的遊戲複雜度[12] .............................................................................. 5 表 2 Mohex 於 2017 年的 ICGA 的 11 路 hex 的競賽成績[11] ............................... 7 表 3 實驗環境 ........................................................................................................... 36 表 4 深度優先搜尋與組合列舉驗證節點數比較 ................................................... 37 表 5 模型的訓練參數 ............................................................................................... 37 表 6 原始模型不同模擬次數的失誤數 ................................................................... 38 表 7 各個 Dirichlet noise 時的失誤數 ..................................................................... 40 表 8 在不同𝐶𝑝𝑢𝑐𝑡下在驗證上的表現 .................................................................... 41 表 9 模型在訓練至 200 代時,各代的表現 ........................................................... 43 表 10 第 200 代模型不同模擬次數下的失誤數比較 ............................................. 43 表 11 4 路六貫棋模型所使用的參數 ...................................................................... 44 表 12 4 路六貫棋中模型的表現 .............................................................................. 45 表 13 進行 100 個 iteration 所花時間的比較 .......................................................... 46 表 14 快贏策略的表現 ............................................................................................. 47. ix.

(10) 第一章 緒論 1.1 研究背景 在現今科技日新月異發展下,一開始只出現在科幻電影中的人工智慧, 漸漸地出現在人們的生活當中,並逐漸取代了部分繁瑣的工作。人工智慧 這領域起源於1956年時,在達特茅斯學院舉行的一次會議上,於人工智慧 領域研究的科學家們期待著能夠擁有與人類同樣智能水平的機器的出現, 而同時,有著大量的資金投入到人工智慧領域中。 電腦對局屬於人工智慧一個重要的分支,研究電腦如何下棋、解謎題, 由於此領域的研究課題相當多元並且具備挑戰性,且成效容易評定,因此 吸引了許多學者投入研究。在電腦對局研究中,其中相當有名且具歷史的 便是「深藍」(Deep Blue)[9],是由 IBM 所開發的一支程式,專門用來下西 洋棋。「深藍」於1996年第一次挑戰西洋棋世界冠軍卡斯巴羅夫,比賽歷時 一周,最後 「深藍」以2比4落敗,於隔年,研究小組把「深藍」進行改 良,取名為「深深藍」(Deeper Blue),再度挑戰卡斯巴羅夫,以3.5比2.5的 分數獲勝,成為第一個在遊戲上勝過人類的電腦程式;而在近年來,隨著 Big Data、類神經網路、機器學習的發展下,人工智慧領域的演算法越來越 多,在電腦對局上的研究也大有進展。於2014年,Google DeepMind 開始研 發 AlphaGo 圍棋程式,由於圍棋是一個複雜度遠高於其他棋類的遊戲,一 般認為電腦在圍棋對局上較難有所突破。而在2016年,AlphaGo 對戰南韓. 1.

(11) 棋王李世石並取得4比1的戰績,並於隔年以3比0全勝之姿擊敗世界棋王柯 潔,於此在電腦對局的研究中有了重大的突破。 六貫棋最初是由丹麥數學家海恩於1942年在丹麥報紙 Politiken 發表的 一篇文章裡出現,在當時被稱為 Polygon,並於1948年被美國數學家 John Forbes Nash Jr. 重新獨立發明出來,最初被稱為 Nash。後來於1952年由玩具 製造商 Parker Brothers 發行並命名為 Hex。 六貫棋遊戲的棋盤,如圖1所示,是一個雙人遊戲,雙方各持有一種顏 色,通常為紅、藍或黑、白,並於四個邊填上雙方各自的顏色。兩位玩家 輪流落子,每次落子佔領一格空格,在占領的空格上填上自己的顏色,最 先將棋盤上屬於自己的顏色的邊連結起來的一方獲勝,如圖2中,由藍方獲 得勝利。 由於先手方有著極大的優勢,因此後來有人發明了交換規則(Swap rule),後手方在先手方落子後可以選擇是否要跟先手方交換顏色。 在其中一方達到連通兩個邊的獲勝條件時,會由於六貫棋的性質導致 另一方必定無法連通兩個邊,而因此在做選擇走步時,如何挑出可以同時 增加我方的連通量以及封鎖對手的棋路,是在六貫棋棋局當中獲勝的關鍵。. 2.

(12) 圖 1 六貫棋棋盤(11路)[14]. 圖 2 由藍方獲勝[15]. 3.

(13) 1.2 研究目的 在六貫棋的研究中,8路以下的盤面已經可以被電腦破解出所有先手必 勝策略,而在更高路數的盤面時,由於遊戲複雜度隨棋盤路數的增加而提 升,致使電腦的無法藉由暴力破解出所有的可能走步,因此於更高路數的 盤面下,在研究上還有許多的進步空間,而在國際比賽上大多數是以11路 以及13路的對局為主。在表1中列出含六貫棋在內的一些遊戲的複雜度。 此研究的目的希望可以對六貫棋進行研究,嘗試藉由類神經網路的訓 練搭配演算法,訓練出一套可以應用在六貫棋的獲勝策略模型。並且由於 在 AlphaZero 的設計架構中,在模型的訓練上使用了遊戲的勝負作為給類神 經網路的資料,而其他對於獲勝目數以及遊戲深度等等,皆沒有考量,因 此在類神經網路的訓練上嘗試對 AlphaZero 的架構上進行一些修改,加入一 些原始 AlphaZero 沒有使用的策略,並嘗試應用於六貫棋的遊戲上,希望能 夠使在修改之後模型所訓練出來的棋力能夠超越 AlphaZero 的架構下訓練出 來的棋力。. 4.

(14) 表 1 不同棋類的遊戲複雜度[12]. 5.

(15) 第二章 文獻探討 2.1 六貫棋連接策略 雖然六貫棋是一個需要連接的遊戲,但是在下棋策略上並非像五子棋 一樣需要棋子貼著棋子連接。由於在每個位置上都有六個可以連接的邊, 因此存在如圖2的棋型,不論藍方下在 a 點或 b 點,紅方皆可以下在另一邊 來進行連接而這種不論對手下在什麼地方想要阻斷連接,我方都有辦法接 起來的棋型便稱為虛擬連接(Virtual Connections),而在下棋時便可以根據 這種棋型來避開無用的走步。. 圖 3 紅棋形成 Virtual Connection. 而“Stronger Virtual Connections in Hex"[3]這篇論文設計了一套演算法 來搜尋六貫棋中存在虛擬連接的位置,利用 AND 和 OR 兩種運算來算出兩 點之間是否擁有 Virtual Connection。. 6.

(16) 2.2 蒙地卡羅樹搜索演算法 “Monte Carlo Tree Search in Hex”[4]這 篇 論 文 是 由 阿 爾 伯 塔 大 學 的 Computer Hex Research Group 所發表的一篇論文,採用蒙地卡羅樹搜索演 算法(Monte Carlo Tree Search)來作為六貫棋 AI 的核心架構。而該論文實作 出來的程式便是 Mohex,Mohex 是一支非常強的程式,在 ICGA 的電腦對 局比賽中,是常年的金牌得主。表2顯示 Mohex 在2017年的 ICGA 的11路 Hex 的競賽成績[11]。而這篇論文當中在進行蒙地卡羅樹搜索時進行了許多 的優化,會在選擇節點階段時,利用一些設計好的 mask,如圖5與圖6。在 圖5盤面中的空格對於黑白雙方都是即使下了也不會對局勢有太大影響,下 了也無法切斷對手的連結或是增加自己的連結。圖6中空格便是需要在搜索 時被剪枝的節點,而下在有標記點的位置是較好的走步,藉由 mask 來減少 劣勢走步的模擬,進行適當的剪枝,讓其他比較有優勢的走步可以有更多 的機會去進行模擬,來讓更好的節點生長。藉由此方法在搜索傾向於尋找 更加有效的走步,對於局勢的判斷也更加準確。 表 2 Mohex 於2017年的 ICGA 的11路 Hex 的競賽成績[11]. 在蒙地卡羅樹搜索中,分成四個步驟,如圖4,分別是選擇節點、展開 節點、模擬以及回傳,一開始先進行節點的挑選,在挑選好節點號將節點 展開其所有的子節點,並從展開的子節點挑選出一個節點進行模擬,藉由. 7.

(17) 模擬隨機下的方式下完整局遊戲,將模擬完得到的勝負結果向父節點回傳, 並依序向上更新,並在向上回傳的過程中將每個經過的節點的拜訪次數增 加一,便完成一次的模擬。. 圖 4 MCTS 示意圖[17]. 圖 5 mask 示意圖[4]. 8.

(18) 圖 6 mask 示意圖[4]. 9.

(19) 2.3 Solver “Solving Hex: Beyond Humans”[16]同 Mohex 一樣是由阿爾伯塔大學的 研究團隊所發表的一篇論文,在六貫棋中已被數學家約翰·納許用策略偷取 的方式證明出六貫棋的先手有必勝的策略。 利用 deep first proof number search 來進行搜索找出所有有獲勝路徑的節 點,根節點為當前節點,向下搜尋所有對方落子位置節點為 AND 節點,每 一個節點皆須有必勝路徑才能代表在根節點有必勝路徑。而在 AND 節點下 展開的節點為 OR 節點,如圖7,只要其中一個節點有著必勝路徑便可以代 表根節點有著必勝路徑,藉此逐層搜尋直到節點展開為止。相較於 Deep first search 做必勝路徑搜尋需展開所有可能節點,deep first proof number search 在搜尋時可以藉由 OR 節點的關係只有其中一個分支擁有必勝路徑時 便可回傳代表有必勝路徑,進而節省下其他節點的搜尋時間。 在進行破解時,只要將當前盤面的所有合法的落子點依序作為根節點 利用 deep first proof number search 作展開,便可以得知當前盤面所有的必勝 策略。 在六貫棋遊戲中已藉由此方法完全破解8路的盤面。在 solver 的程式當 中提供了解出當前盤面的最佳走步,以及可以算出當前盤面的勝利方的函 式。. 10.

(20) 圖 7 DFPN 示意圖[19]. 11.

(21) 2.4 殘差網路(ResNet) “Deep Residual Learning for Image Recognition"[5]是由微軟的研究團 隊發表在電腦視覺領域的一篇論文,在論文當中提出了 Residual Block 的深 度學習模型。主要是由於當我們的所建構的模型越來越深時,網路會越來 越難訓練,在做反向傳播時,會有梯度下降的問題。當模型的深度到一定 的程度時,模型在做學習時,在前面幾層的權重會因為微分的關係而幾乎 沒有發揮到學習的功用,因此這篇論文所提出的 ResNet 便是為了解決這種 問題而誕生的。 由於梯度下降是因為傳遞太多層所產生的,為了避免發生梯度下降的 問題 ResNet 設計了 Residual Block 將前一層的輸出往後傳並加上後一層的 輸出,如圖8,設計一條捷徑來讓淺層的網路也能得到較有效果的訓練,來 使得在深度較深的模型在做反向傳播時不會因為傳遞太多層而導致梯度嚴 重下降。. 圖 8.Residual Block 示意圖[18]. 12.

(22) 2.4 TensorFlow+Keras 深度學習人工智慧實務應用 “TensorFlow+Keras 深度學習人工智慧實務應用"[10]這本書中介紹深 度學習的 python 套件,Keras 以及 TensorFlow。由 Keras 做為新手入門教學, 並 有 簡 單 的 範 例 , 如 MNIST、 鐵 達 尼 號 等 數 據 集 來 說 明 Keras 以 及 TensorFlow 的使用方法,並介紹背後的原理。 書中第一個介紹的範例便是 MNIST 數據集,而 MNIST 數據集是許多 教學中的第一個數據集,數據的複雜度較低,對資料需要做的預處理也較 少。該資料集的圖片皆為28 × 28大小的黑白圖片,將圖片讀入轉成28 × 28的二維陣列,並將圖片中每一個像素值大於的0的轉換為1。而訓練所使 用 的 第 一 個 模 型 是 簡 單 的 類 神 經 網 路 , 採 用 兩 層 的 全 連 接 層(Fully Connected Layer) 並用 Relu 做為激活函數,此方法可以有92%的辨識率。 而在書的第二章中介紹了卷積神經網路,卷積層(Convolution Layer)用 影像辨識抽取特徵的方式,利用共享權重來學習特徵抽取的權重,如圖9, 在影像辨識上,比起普通的全連接層可以來得更加的有用。而卷積層搭配 上池化層(pooling layer)可以有效的將特徵明顯的表現出來。採用卷積神經 網路模型之後,預測的準確率能達到99%,可見效果之顯著。 此書利用循序漸進的方式來帶領讀者入門深度學習的領域當中,並藉 由一步步的實作來熟悉 TensorFlow 與 Keras 的使用以及背後所使用的原理。. 13.

(23) 圖 9.卷積層運算示意圖[13]. 14.

(24) 2.5 AlphaGo Zero “Mastering the game of Go without human knowledge"[2]是 由 Google DeepMind 團隊在 Nature 上發表的一篇論文,在 AlphaGo 的 Master 版本以3比0打敗棋王柯潔之後,Deep Mind 將原本在做訓練時加入人類對於 圍棋的知識拿掉只給予他圍棋的規則,進行足夠的訓練之後也能打敗 Master 版本的 AlphaGo,進一步證明了機器不需要任何的人類知識也能夠 學習並打敗人類。 在傳統的 MCTS 中,遇到遊戲複雜度較高的遊戲,樹的寬度較廣且深 度也較深時,在做模擬時,經常會有準確率不高的情形。而為了解決這樣 的情形,AlphaGo 採用了類神經網路與 MCTS 相互搭配,把隨機模擬的步 驟 改 由 類 神 經 網 路 取 代 。 並 且 在 篩 選 的 時 候 搭 配 UCT(s, a) = Q(s, a) + 𝑐𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎). √∑𝑏 𝑁(𝑠,𝑏) 1+𝑁(𝑠,𝑎). 公式來進行節點挑選,其中 s 為當前盤面,a 為 s 的其. 中一個子節點。搜索過程變為三個步驟如圖11,參考由類神經網路所得到 的策略 P 與勝率 V,搭配 UCT 公式進行挑選依序拜訪節點直到遇到沒被訪 問的節點時將該盤面詢問類神經網路取得策略 P 與勝率 V 之後將 V 值依序 向父節點更新並更新拜訪次數。而類神經網路的訓練的過程如圖10,利用 類神經網路與 MCTS 讓其自我對下進行訓練,讓初始的類神經網路模型經 由蒙地卡羅樹搜索進行隨機對下,並蒐集對下完的棋譜,再將這些棋譜得 到的勝負以及每一個走步當中由蒙地卡羅樹搜索得到每個節點的模擬次數 來進行訓練。將盤面作為輸入資料,這局棋得到的勝負(z)以及該盤面各個 節點的模擬機率(π)作為對應的輸出來進行訓練。藉由此方法來讓類神經網 路的預測比起使用隨機模擬來得更加準確。 15.

(25) 圖 10.AlphaGo 訓練示意圖[2]. 圖 11.AlphaGo 的 MCTS 示意圖[2]. 16.

(26) 2.6 alpha-zero-general alpha-zero-general[1]是由美國史丹佛大學 的 研究生 Surag Nair 參 考 AlphaGo Zero 的論文利用 python 開發並發佈到 github 的一套開源框架。由 於程式內部大部分功能皆已經模組化,在進行修改與除錯上相當方便,並 可以藉由實作自己的棋類規則以及神類經網路來進行自己的棋類 AI 訓練。 目前在此專案在 github 上已有五子棋、連四棋、黑白棋等諸多已實作的遊 戲項目。由於程式內容皆是以 python 撰寫,在執行效率上會較其他的 AlphaZero 的實作方法來的慢許多,但在了解 AlphaZero 整體架構來說,是 一個很好的研究項目。. 17.

(27) 第三章 程式實作 3.1 六貫棋規則實作 3.1.1 棋盤格式設計 在訓練的架構上採用 alpha-zero-general 的開源碼架構開發,六貫棋棋 盤由於在設計上會有玩家方向性的問題。而在 general 的架構中在搜尋過程 中是沒辦法單看盤面認出現在是哪一方的玩家的節點而導致勝負無法判斷。 為了解決這個問題,因此在盤面的設計上增加了邊框,利用邊框的設計將 原為N × N大小的棋盤,在棋盤的四個邊各增加一個邊擴增為(N + 2) × (N + 2)的大小,其中元素值0代表空格,1代表我方的棋子,-1代表敵方的 棋子,如圖12。. 圖 12 6 × 6棋盤格式示意圖 3.1.2 棋盤勝負判斷 在六貫棋判斷勝負時需要考量是否棋盤上的兩組對邊是否有達成連線 的條件,判斷是否達成勝負條件的部分採用深度優先搜尋。首先設定左右 方的邊為後手方,上下方的邊為先手方,從左方的邊對後手方已占領的相 鄰位置進行搜索,以及從上方的邊對先手方已占領的位置是為可走的邊進 行搜索,若後手方的搜索可以達到右方的邊便回傳後手方獲勝,若先手方 18.

(28) 的搜索可以達到下方的邊則回傳先手方獲勝,否則遊戲視為尚未結束,繼 續進行。. 3.1.3 走步設計 根據盤面大小的不同所需要的走步陣列大小(Action size)來對應所有情 況下的走步,而在類神經網路的輸出的策略(policy)的向量長度也是和走步 大小一樣,在N × N的盤面下的走步陣列為N2 的一維陣列,即為所有盤面 的落點,以6 × 6的棋盤為例,共有36個空位,因此在6 × 6的棋盤下,我們 的走步陣列會是一個 index 有36個的一維陣列,前36個位置依照 row-major ordering 對應棋盤上的36個位置。 在搜尋的過程中為避免無效的走步,須建構一個將無效走步遮掉的遮 罩。設置一個36位置的一維陣列,對應當前盤面有空格的位置設為1,而已 有玩家佔據的格子設為0,來進行有效走步的篩選,如圖13,下方的數字表 示上方盤面遮罩的一維矩陣。. 19.

(29) 圖 13 走步遮罩示意圖. 20.

(30) 3.2 基礎類神經網路架構 採用 TensorFlow 這個套件做為類神經網路的核心,類神經網路架構的 大部分採用 ResNet 構成,而 ResNet 的內是由兩層的卷積層所構成,如圖 15。第一層為輸入層,輸入遊戲盤面,其後接上由多個 Residual Block 組成 的卷積網路進行特徵的抽取。接著分成兩個個別的網路,分別是策略 (Policy)網路與價值(Value)網路,策略網路採用 Softmax 作為激發函數,輸 出的向量 P 的維度與走步陣列相同,為N2 的一維陣列,代表著各走步的機 率,而價值網路使用 tanh,輸出一個介於-1~1的純量 V,代表輸入盤面的 價值,如圖14,並以(Z − V)2 − πT logP作為損失函數,並加入 L2 loss 以避 免權重過度成長導致有過擬合(overfitting)的問題。. 圖 14 類神經網路架構. 圖 15 Residual Block 內部結構 21.

(31) 3.3 模型訓練流程 先隨機初始化類神經網路的權重,並以這個初始化的權重搭配蒙地卡 羅樹搜索選擇每一步的走步來進行自我對下。在累積一定數量的棋譜之後, 將蒐集下來的每一個棋譜的盤面,以及對應的各個走步藉由蒙地卡羅樹搜 索得到的各個走步的模擬次數,將其轉換為總和為1的機率分布和遊戲最終 的勝負作為輸出的標記來進行自我學習。 在得到自我對下所收集的棋譜之後,將盤面作為輸入的資料,而走步 的機率分布與遊戲最終的勝負作為輸出資料,將這些資料餵給類神經網路 進行訓練。在每十次的訓練結束之後便進行一次模型保存。整個訓練流程 如圖16。. 22.

(32) 圖 16 訓練流程圖. 23.

(33) 3.4 蒙地卡羅樹搜索(MCTS) 在進行蒙地卡羅樹搜索時,以當前盤面做為根節點,從根節點出 發,將當前盤面作為輸入餵給類神經網路得到分數(V)與策略(P)。藉由 UCT 公式挑選最好的節點,並往下搜尋節點。若下一個搜尋到的節點已被 拜訪過,則依照該節點的策略搭配 UCT 公式繼續向下搜尋,並將拜訪次數 (N)加一,直到遇到未被訪過的節點。而未拜訪過的節點被搜尋到時,便會 將該節點的盤面餵給類神經網路取得該節點的分數 V 與策略 P,將得到的 V 值記為該節點的 Q 值,拜訪次數加一,並把 V 值向上回傳一路回傳至根 節點。回傳途中經過的各個節點也對回傳回來的 V 值進行更新,將 Q 值加 入 V 之後重新計算平均值。. 24.

(34) 3.5 鏡像盤面 在六貫棋中,每個盤面可以藉由翻轉對應一個鏡像盤面,由於鏡像盤 面與原始盤面的狀態是等價的,如圖17。將盤面進行訓練時可以藉由盤面 翻轉後狀態等價的性質來進行資料增量。. 圖 17 上下兩種盤面為狀態相同的鏡像盤面. 25.

(35) 3.6 快贏策略 由於在 AlphaGo 當中,在進行蒙地卡羅樹搜尋與訓練時只考慮了該盤 面下的勝率,但實際人類在玩遊戲時應另外考量遊戲是否可以更早結束並 獲勝,在深度設計實作上,在一個批次的對局結束時,會將原始的對局的 每一部盤面作為輸入資料,而對應的模擬結果的機率分布與深度作為輸出。 而在搜索方面時,由於原本藉由類神經網路所得到的盤面價值,已變 成帶有深度意義的分數,因此在搜索時需要作一些調整,在子節點得到結 果要將得分回傳給父節點時,由於相對於預想結束盤面的距離增加了1,因 此在這邊需要作深度函數的反函數運算加上1之後,在重新轉換為深度分的 形式,藉此來將深度一致化,如圖18所示,在子節點在往上回傳的過程中, 由於會有深度不一致的問題,因此在對父節點的 Q 值進行更新時需要經由 深度函數的反函數運算並將深度加一再進行深度函數運算,才會變成在父 節點位置的原本應該的分數。. 26.

(36) 圖 18 (a)為原始的 MCTS,(b)為採用快贏策略的 MCTS. 27.

(37) 3.7 深度函數 在實現快贏策略當中,為了將原本類神經網路輸出標記勝負的部分, 修改為深度分數。而這個深度分數會因盤面越接近遊戲終了而升高。當遊 戲離一步就能獲勝並結束時,分數會最高。而在遊戲一開始時,分數會最 低。由於在類神經網路的訓練當中,輸出的範圍要較小,類神經網路才能 較好的訓練起來。在不動到原有架構的情況下,為了能夠將原本的深度分 數壓縮到-1到1之間,作了深度函數的設計。深度分數等於1代表在走一步 就會贏,0代表和局。因此這個函數 f(x)必須可以將自然數映射到(0,1]上, 其中 x 為距離遊戲結束的距離,並且須具備現出 x 靠近0的地方分數較大, 離0越遠分數越小的性質。而其中指數函數正好符合這樣的性質在 x=0的位 置 f(x)=1,在 x 越來越大時,x 會趨近於0,如圖7。而因為我們還需要考慮 遊戲輸掉的情形,因此在指數函數外面需另外乘上這局遊戲的勝敗,總結 上面的分析之後深度函數: f(x) = e−λx × 該局遊戲的勝敗 λ 為可控參數,在不同的遊戲之下可以調控不同深度的下降趨勢 x = 該局遊戲總步數 − 當前盤面的步數. 28.

(38) 圖 19 當該局遊戲獲勝的分數時的深度函數示意圖(λ = 0.2). 圖 20 當該局遊戲失敗的分數時的深度函數示意圖(λ = 0.2). 29.

(39) 3.8 自我對下產生亂度 在模型的訓練過程中,由於蒙地卡羅樹搜索的過程中經由加入類神經 網路的策略,在進行搜索的過程中往往會因為有著初始的策略而有著較純 蒙地卡羅樹搜索高機率展開相同的分支。因此在蒙地卡羅樹根節點的搜索 策略加入了 Dirichlet noise,藉由加入這樣的一個隨機變數可以讓樹的搜尋 在展開時可以有較高的變化性,而不會被類神經網路所提供的策略給綁住。 假設當前有個節點有三個分支,根據策略網路會給予三個分支,個別 的模擬機率分別為[0.4,0.5,0.1],則在沒有 Dirichlet noise 的情況下蒙地卡羅 樹搜索便會依照著這個模擬機率下去進行搜索。但若在自我對下時,蒙地 卡羅樹總是用這個策略下去搜索,所得到的結果很有可能會是相近的,而 導致每一盤的自我對下結果很多都是重複的。因此加入 Dirichlet noise 可以 使得我們的搜索的策略有一個亂數的調整 使得策略變為 [0.4+α×random1 ,0.5+α×random2 ,0.1+α×random3 ] 𝑠𝑢𝑚([0.4+α×random1 ,0.5+α×random2 ,0.1+α×random3 ]). ,其中random𝑖 為一個隨機生. 成介於(0,1)的亂數,而α是 Dirichlet noise 調控隨機比重的一個參數。藉由此 方法可以將根節點的初始模擬策略加入隨機的性質,使得每次自我對下在 進行蒙地卡羅樹搜索時展開的方式可以較為多樣化,避免每局的自我對下 中都持續展開相同盤面。. 30.

(40) 3.9 圖形介面設計 六貫棋的圖形介面,如圖21,使用 pyQt 進行開發,可以在各個平 台,諸如:Windows、Linux 等平台上運行。在後台接上已訓練好的類神經 網路權重,可以自行擺盤出想要測試的盤面來看訓練出來模型的結果。另 外可以藉由 log 檔來分析 AI 對盤面的分析結果,以此來觀察勝率。並具有 悔棋功能在進行對局時,若下錯可以返回上一手來進行修正。 由於盤面的格子位置是藉由公式進行生成,因此可以依需求彈性調整 為任意大小的遊戲盤面。. 圖 21 六貫棋的圖形介面. 31.

(41) 3.10 模型訓練與驗證 將 Mohex 的執行程序作為子程序導入 AI 的主程式當中,利用 PIPE 將 標準輸入輸出重定向的方式,讓兩者進行溝通,程式主架構如圖22。由於 Mohex 的程式當中含有 Solver 的函式可以使用,可以藉由呼叫 Solver 來得 到當前盤面所有的必勝策略以及當前盤面擁有必勝策略是在哪一方的資訊, 並根據 AI 所得到的結果進行比對來驗證訓練出來的 AI 是否有達到原本所 預期的完全破解。. 圖 22 與 Mohex 程式的溝通架構. 3.10.1 深度優先搜尋驗證法 一開始在進行盤面列舉時便是利用深度優先搜尋法展開,藉由逐步展 開便可以將所有合法的盤面都進行驗證,演算法如圖23,error_count 為驗 證中的失誤數。但在搜尋節點的途中會由於不同的父節點有可能會產生相 同的節點的問題,如圖24,兩個盤面的走步順序不同卻是代表相同的盤面, 同一個盤面可能是由不同的棋步的延伸,而在進行盤面列舉驗證時,所要 驗證的盤面和這個盤面是由怎樣的棋步所延伸而來的並不重要,因此在這 邊提出了第二種的驗證方法。 32.

(42) 圖 23 DFS 驗證虛擬碼. 圖 24 不同的走步順序示意圖. 3.10.2 組合列舉 由於要驗證的盤面前面的步驟是我們不需要的,因此由深度優先搜尋 找出棋步的步驟便不需要,可以進而利用組合的方式將重複的盤面消除。 藉由從空盤面到盤面佈滿依序產生雙方棋子的組合,若令黑方為先手,白 33.

(43) 方為後手,便可以依序從空盤面產生在不同落子數的情形的所有組合的盤 面。藉由此方法可以保證不會展開相同盤面,消除深度優先搜索時因為排 列順序的不同會有重複節點驗證的問題,組合列舉驗證的流程如圖24。 ⌈𝑁/2⌉. 𝑁−𝑖 於 N 路盤面下需驗證的盤面數為∑𝑖=1 𝐶𝑖𝑁 𝐶𝑖−1 + 𝐶𝑖𝑁 𝐶𝑖𝑁−𝑖 + 1。. 34.

(44) 圖 25 檢驗模型的驗證流程(黑棋為先手,白棋為後手). 35.

(45) 第四章 實驗結果 4.1 實驗環境 本研究所使用的實驗環境如表3所示。 表 3 實驗環境 CPU. Intel i7-6700. 主記憶體. 16GB. GPU. GTX 1070. Python. 3.6. TensorFlow. 1.13. 4.2 驗證方法比較 在做驗證時,提出兩種方法來進行驗證。從表4中明顯可以看出,採用 組合驗證的方法所需驗證的節點數比採用深度優先(DFS)搜尋法減少了許多。 由於盤面全填滿的狀況下是不需要驗證的,因此在進行驗證時只展開到盤 面剩一個的情況。由表4可以看出當盤面的路數越高時組合列舉所擁有的優 勢越明顯,在4路的盤面下已有百萬級的差距,可見採用深度優先(DFS)搜 尋法時節點重複的數量相當的多。. 36.

(46) 表 4 深度優先搜尋與組合列舉驗證節點數比較 3路. 4路. 5路. DFS. 332043. 約2.092279e+13. 約1.551121e+25. 組合列舉. 5919. 10152908. 161989830925. 比例. 56.09. 2060768.19. 9.5754221e+13. 4.3 六貫棋3路盤面驗證 在3路棋盤中經由計算所有組合數,總共所有的合法盤面為5919種不重 複的盤面,當中另有3053盤的盤面所有的走步均屬於必勝或是必敗的盤面 不進行驗證,最後留下共2866種盤面作為驗證模型的盤面資料。 在3路 的 模 型 中 , 共 使 用 了5個 Residual block。 總 共 訓 練 了100個 iteration,每個 iteration 都會進行自我對下共50盤。每一次自我對下的走步 中 總 共 會 進 行 蒙 地 卡 羅 樹 搜 索50次 , 在 搜 索 的 過 程 中 在 根 節 點 加 入 Dirichlet noise,隨機比重 α 為0.3,如表5所示。 表 5 模型的訓練參數 iteration. 100. episodes. 100. 模擬次數. 50. Dirichlet noise. 0.3. 𝐶𝑝𝑢𝑐𝑡. 1. 在驗證原始的模型過程中可以發現,在某些盤面下的表現相當不好, 甚至越訓練表現越差,即使增加搜尋時的模擬次數對於表現的提升也有限。 37.

(47) 在這些選出錯誤走步的盤面,當中必有其中一手是落在非必勝路徑上的棋 路的盤面所延伸的。推測可能是因為在多次迭代之後,模型在自我對下時 所產生的盤面皆會是落在 AI 所認為會獲勝的路徑上。而對於其他模型認為 會輸的盤面的資料會隨著多次迭代後漸漸消失而類神經網路的權重便漸漸 的偏向取勝方向的走步,當對手的走步是 AI 所不能理解的走步時,導致 AI 的判斷失誤。 表 6 原始模型不同模擬次數的失誤數 25. 50. 75. 100. 10. 35. 14. 5. 4. 20. 42. 21. 12. 5. 30. 239. 169. 123. 100. 40. 304. 215. 183. 168. 252. 171. 148. 129. 60. 313. 222. 192. 159. 70. 329. 245. 208. 178. 80. 310. 251. 223. 198. 90. 275. 198. 153. 141. 100. 325. 235. 203. 187. 模擬次數 Iteration. 50. Random Player. 1528. 由表6中可以發現當迭代次數越多時,偏離必勝策略的盤面越來越多。 從觀察錯誤的盤面當中可以發現盤面大多都是從在擁有必勝策略卻走出非 必勝策略下走步的那一方的子節點,推測當迭代次數越增加時,由於 AI 的 模型產生的偏見,並且在往後的迭代中因為有偏見的關係,致使情形會越 來越嚴重,偏見越來越深,經由自我對下過程中產生盤面越來越偏向某一. 38.

(48) 種模式。也因為對於遊戲的認知有所偏差導致即使用了100次的模擬產生出 的節點也有一定程度的偏差,無法對遊戲的每一個盤面都得出正確的走步。 經由觀察發現在失誤盤面中盤面對於當這盤棋有一方在處於勝利的一 方卻下出了一步令對手反敗的棋時,輪到原始的模型落子時,卻也選擇了 一手沒辦法獲勝的棋。在蒐集下來失誤的盤面當中,可發現都會是有其中 一方的某幾手為非必勝策略下的走步的其中一條分支,由於 AI 可能只能夠 認得必勝策略下的走步,而因此造成 AI 的誤判。可以進一步推測,對於 AI 來說,這樣的盤面可能在經過大量的訓練後,對這種沒下在必勝策略上的 下法所產生的盤面,會有因為 AI 認為不該這樣下,而在自我對下的過程中 不會產生這樣的盤面。而導致訓練後期會有判斷失誤的情形。 因此在下面做了一些模型參數上的調整,希望可以增進模型在3路六貫 棋上的表現。 4.2.2 Dirichlet noise 由於可能是因為在 AI 選擇走步時,於根節點的亂度不夠,因此希望藉 由提升 Dirichlet noise 的比例來增加訓練時的亂度,希望可以藉此來引導 AI 自我對下時能夠走出平時不會出現的盤面。表7為使用模擬次數50次來進行 驗證的結果。 在表中可以看到在 Dirichlet noise 增加,對於盤面的驗證似乎影響不太 大,甚至在原始的 α=0.3時表現較 α=1和 α=2,還來得較佳。在 α=0.7時有比 較好的效果,但效果仍舊有限,如表7與圖26所示。. 39.

(49) 表 7 各個 Dirichlet noise 時的失誤數 Dirichlet noise. Origin(0.3). 0.7. 1. 2. 10. 14. 12. 17. 13. 20. 21. 43. 32. 52. 30. 169. 227. 195. 366. 40. 215. 174. 252. 352. 50. 171. 149. 301. 435. 60. 222. 133. 297. 313. 70. 245. 96. 279. 271. 80. 251. 96. 383. 289. 90. 198. 110. 301. 298. 100. 235. 146. 146. 295. iteration. Dirichlet noise 比較 500 450 400 350 300 250 200 150 100 50 0 0. 20. 40. 60 0.3. 0.7. 80 1. 100. 120. 2. 圖 26 各個 Dirichlet noise 失誤數折線圖(y 軸為失誤數,x 軸為 iteration 數). 40.

(50) 4.2.3 增加𝐶𝑝𝑢𝑐𝑡 由於在4.2.2當中發現增加 Dirichlet noise 下效果並不顯著,在訓練上還 是會有越訓練越差的情形,考慮到可能是因為𝐶𝑝𝑢𝑐𝑡 的值不夠大,而導致 UCT 公式中,UCB 對於整體的挑選影響不夠大,導致 Dirichlet noise 的影響 相對較小。因此藉由加大𝐶𝑝𝑢𝑐𝑡 的權重來讓 UCT 的搜索策略中仰賴 Q 值來挑 選的因素下降,增加 UCB 影響力,使得自我對下時,根節點在挑選模擬的 節點時可以有帶多一點隨機成分,增加盤面的多樣性。 表 8 在不同𝐶𝑝𝑢𝑐𝑡 下在驗證上的表現 1. 3. 5. 7. 10. 35. 22. 18. 142. 20. 42. 8. 0. 79. 30. 239. 28. 7. 65. 40. 304. 24. 6. 32. 50. 252. 20. 5. 21. 60. 313. 13. 4. 31. 70. 329. 20. 2. 31. 80. 310. 18. 4. 19. 90. 275. 14. 3. 33. 100. 325. 15. 4. 24. 𝐶𝑝𝑢𝑐𝑡 iteration. 41.

(51) 350 300 250 200 150 100 50 0 0. 20. 40. 60 1. 3. 80 5. 100. 120. 7. 圖 27 不同𝐶𝑝𝑢𝑐𝑡 下的折線圖(x 軸為 iteration 數,y 軸為失誤數). 從表8與圖27可以看出在增加𝐶𝑝𝑢𝑐𝑡 之後,驗證失誤的情形隨著迭代減 少,可以看出𝐶𝑝𝑢𝑐𝑡 在5時的表現較好,因此採用了𝐶𝑝𝑢𝑐𝑡 為5的模型,並往下 訓練。 在訓練約至第180代時模型參數趨於穩定,如表9,可以達到零失誤的 程度。. 42.

(52) 表 9 模型在訓練至200代時,各代的表現 iteration. 失誤數. 20. 0. 40. 7. 60. 5. 80. 2. 100. 3. 120. 3. 140. 1. 160. 2. 180. 0. 200. 0. 在第200代的模型中,至少需進行50次的模擬才能對於3路六貫棋達到完美 破解,如表10。 表 10 第200代模型不同模擬次數下的失誤數比較 模擬次數. 30. 40. 50. 失誤率. 2. 2. 0. 43.

(53) 4.4 六貫棋4路盤面驗證 由於在進行4路的驗證時,所需要驗證的盤面數較3路高出許多,若要 全部完整驗證,需要花上一天的時間,所需花的時間成本太高,因此在驗 證盤面時用隨機挑選盤面的方式來驗證模型,使用的參數見表11。 表 11 4路六貫棋模型所使用的參數 iteration. 400. episodes. 100. 模擬次數. 100. Dirichlet noise. 0.3. 𝐶𝑝𝑢𝑐𝑡. 5. 在有了3路實驗的經驗後採用了𝐶𝑝𝑢𝑐𝑡 為5的模型來進行訓練,驗證採用 隨機抽取5000盤來進行驗證,可能是由於4路的遊戲較3路複雜上許多,而 訓練時間不足模型尚未收斂的關係,使得相較於3路的表現上,略為遜色, 在第50代之後的模型表現上失誤率上約在1%左右,如表12與圖28所示。. 44.

(54) 表 12 4路六貫棋中模型的表現 iteration. 有效盤面數. 失誤數. 失誤率. 10. 2191. 211. 9.63%. 20. 2231. 71. 3.18%. 30. 2184. 24. 1.1%. 40. 2238. 37. 1.65%. 50. 2217. 33. 1.49%. 60. 2214. 16. 0.72%. 70. 2186. 19. 0.86%. 80. 2215. 20. 0.9%. 90. 2216. 23. 1.04%. 100. 2203. 26. 1.18%. 失誤率 12.00% 10.00% 8.00% 6.00% 4.00% 2.00% 0.00% 0. 20. 40. 60. 80. 100. 120. 圖 28 4路六貫棋中模型的失誤率( y 軸為失誤率,x 軸為 iteration 數). 45.

(55) 4.4 快贏策略驗證 4.4.1 訓練時間比較 由於在快贏策略中,在搜尋時使用到了指數函數以及對數函數,在訓 練的過程中,在每次進行蒙地卡羅樹搜索時每次的模擬時,每次向上回傳 皆會使用到對數函數,且在進行資料標記時每筆資料都需要進行一次的指 數運算,因此時間上會較沒有使用的來得慢上許多。而使用快贏策略訓練 的時間成本約為沒使用的1.5倍,如表13所示。 表 13 進行100個 iteration 所花時間的比較 訓練時間(s) 沒使用快贏策略. 2287. 使用快贏策略. 3148. 4.4.2 3路六貫棋驗證 在同樣參數下𝐶𝑝𝑢𝑐𝑡 設為5來進行快贏策略的實驗,而實驗結果如下表 所示。 在原先版本的模型上不論是下三步之後獲勝或是下一步便獲勝都是得 到同樣的分數,而在快贏策略上希望可以保有快贏策略在搜索上的優點又 不會使原本盤面的勝負判斷失準。. 46.

(56) 表 14 快贏策略的表現 25. 50. 75. 10. 13. 4. 3. 20. 0. 4. 0. 30. 1. 1. 0. 40. 5. 2. 1. 50. 11. 1. 1. 60. 11. 2. 2. 70. 14. 6. 6. 80. 11. 5. 2. 90. 23. 5. 5. 100. 22. 5. 3. 模擬次數 iteration. 47.

(57) 第五章 結論與未來方向 從實驗結果可以知道,讓 AI 從零知識利用隨機初始權重開始學習,是 有辦法破解一個遊戲的。但在隨著訓練迭代增加 AI 的實力越來越強,對於 脫離 AI 認知的走步可能會使它判斷失誤進而下錯棋。而增加自我對下過程 中的亂度可以讓 AI 對於遊戲的認識不會受限於 AI 當前認知的情況,也許 實際對局中較感受不到 AI 在盤面上的認知有所偏差,而可以藉由亂度走出 平常不會走出的路增廣眼界。 而在自我對下給予亂度時,𝐶𝑝𝑢𝑐𝑡 的值相當重要,需要一個適當的𝐶𝑝𝑢𝑐𝑡 權重來調整 UCT 公式中勝率的分數和搜索策略的分數間的平衡。當𝐶𝑝𝑢𝑐𝑡 過 小時會導致搜索時過度看重經由類神經網路回傳的勝率,使得在自我對下 過程中加入的 Dirichlet noise 沒有產生作用;而在𝐶𝑝𝑢𝑐𝑡 過大時,又會造成勝 率的影響不明顯,在搜索時藉由模型的勝率分數來引導蒙地卡羅樹搜索勝 率高的節點難度上升,無法讓勝率好的節點有足夠好的模擬次數,進而下 錯棋。 而在快贏策略的實驗中,發現雖然加入的快贏的調分機制來讓蒙地卡 羅樹搜索時可以有遊戲深度的認知,但由於快贏對於勝率的認知以及遊戲 深度的判斷需要更加準確,因此在收斂上可能較為困難。也因此在訓練上 需要更多細膩的調整來讓模型較容易收斂,在訓練上較花時間。另外在目 前的快贏策略當中的深度函數以及其反函數中,由於使用了指數函數以及 對數函數,在計算上會較原本的模型所花費的時間來的多,不僅在訓練上 需要多耗費時間,且在對局進行搜索時也需要額外的時間成本。 48.

(58) 由於時間不足的因素,目前只有對於3路的盤面進行驗證。而4路的實 驗中模型尚未能夠對於所有的盤面完美破解,在參數上可能還需要進行調 整。而對於更高路數的盤面的驗證以及各個參數如 Dirichlet noise 與𝐶𝑝𝑢𝑐𝑡 的 調整,則期望在未來有更多計算資源及時間再來實現。 而在快贏策略的部分對於深度函數的設計上可能還有其他可能性,還 有許多其他函數擁有類似指數函數可以向0收斂的特性,也可以再加以嘗試。. 49.

(59) 參考文獻 [1]. suragnair/alpha-zero-general,. https://github.com/suragnair/alpha-zero-. general。 [2]. David Silver, Julian Schrittwieser, Karen Simonyan, Ioannis Antonoglou, Aja Huang, Arthur Guez, Thomas Hubert, Lucas Baker, Matthew Lai, Adrian Bolton, Yutian Chen, Timothy Lillicrap, Fan Hui, Laurent Sifre, George van den Driessche, Thore Graepe & Demis Hassabis, “Mastering the game of Go without human knowledge”,Nature volume 550, pages 354–359 (19 October 2017). [3]. Jakub Pawlewicz, Ryan Hayward, Philip Henderson, and Broderick Arneson, “Stronger Virtual Connections in Hex”. [4]. Broderick Arneson, Ryan B. Hayward, Philip Henderson, “Monte Carlo Tree Search in Hex”. [5]. Kaiming He Xiangyu Zhang Shaoqing Ren Jian Sun, “Deep Residual Learning for Image Recognition”. [6]. 徐讚昇, 許舜欽, 陳志昌, 蔣益庭, 陳柏年, 劉雲青, 張紘睿, 蔡數真, 林庭羽, 范 綱宇,電腦對局概論。2017,國立臺灣大學出版中心。 [7]. 維基百科:六貫棋介紹, https://en.wikipedia.org/wiki/ Hex_(board_game)。 [8]. TensorFlow, https://www.tensorflow.org/。 [9]. 維基百科:深藍, https://zh.wikipedia.org/zhtw/%E6%B7%B1%E8%97%8D_(%E8%B6%85%E7%B4%9A%E9%9B%BB%E8%85%A6)。 50.

(60) [10]. 林大貴,TensorFlow+Keras 深度學習人工智慧實務應用,博碩出版社。 [11]. Ryan B. Hayward, Noah Weninger, “Hex 2017: MoHex wins the 11x11 and 13x13 tournaments”. [12]. H. J. van den Herik, J.W.H.M. Uiterwijk, and J.V. Rijswijck, “Games solved: Now and in the future,” Artificial Intelligence, Vol. 134, 2002, pp. 277–311. [13]. 小 狐 狸 事 務 所-使 用 Keras 卷 積 神 經 網 路 (CNN) 辨 識 手 寫 數 字 , http://yhhuang1966.blogspot.com/2018/04/keras-cnn.html。 [14]. Hexy plays Hex,http://vanshel.com/Hexy/。 [15]. 昌爸工作坊,http://www.mathland.idv.tw/fun/nashgame.htm。 [16]. Broderick Arneson, Ryan B. Hayward, Philip Henderson, “Solving Hex: Beyond Humans”. [17]. Jacek Ma´ndziuk, “MCTS/UCT in solving real-life problems”. [18]. Sabyasachi Sahoo, “Residual blocks - Building blocks of ResNet”. [19]. Kazuki Yoshizoe, Akihiro Kishimoto, Martin Muller, “Lambda Depth-first Proof Number Search and its Application to Go”.. 51.

(61)

參考文獻

相關文件

文學 文學 文學 文學 中華文化 中華文化 中華文化 中華文化 品德情意 品德情意 品德情意 品德情意 學習 學習 學習.. 學習 過程 過程

透過適切的活動提升閱讀深度及加強學習連 貫性 —— 優化中一單元中華文化及品德情意 範疇的學習內容

學生在專注理解遊戲時, 不自覺的要理 解文字提供的線索, 閱讀的目的明確而 有意義, 有助練習認字讀句。..

密碼系統中,通常將想要保護的密碼訊息稱為 plain text。而將經過加密後產生的加密訊息稱為 cipher text。在這 中間的過程,會用到可以對外供應的 Public Key 以及私人保

全方位學習指學生在真實情境中的學習,以達至在課堂

我們衷心感謝各協作學校的參與,並在實施的過程中與我們進行專業交流,發展

如何 如何在小學語文課程中加強中華文化的學習 在小學語文課程中加強中華文化的學習 在小學語文課程中加強中華文化的學習

運用學校的區角圖片,讓 兒童從「找不同」的遊戲