• 沒有找到結果。

AlphaZero演算法結合快贏策略或迫著空間實現於五子棋

N/A
N/A
Protected

Academic year: 2021

Share "AlphaZero演算法結合快贏策略或迫著空間實現於五子棋"

Copied!
68
0
0

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

全文

(1)國立臺灣師範大學理學院 資訊工程學系 碩士論文 指導教授:林順喜 博士 AlphaZero 演算法結合快贏策略或迫著空間實現 於五子棋 AlphaZero Algorithm Combined with Quick Win or Threat Space for Gomoku. 研究生: 劉浩萱. 撰. 中華民國 一百零九 年 八 月.

(2) 1.

(3) 摘要 AlphaZero 是一個通用的強化式學習之演算法,除了遊戲規則 外毫無人類知識,經過訓練後會有極佳的結果。為了要讓此架構 在訓練初期,就能夠成功學習到五子棋所需的獲勝資訊,本研究 展示了快贏策略(Quick Win)與迫著空間。 快贏策略旨在讓類神經網路學習到快贏的價值,並且在各走 步勝率相同時,能更傾向選擇可以快速獲得勝利的走步;迫著空 間則是針對盤面的迫著做搜索,讓能產生迫著走步的資訊被類神 經網路學習,以縮短訓練時間。 本研究以四種不同的實驗方式,包含線性距離權重、指數距 離權重、結合迫著搜尋於距離權重,以及結合迫著搜尋於蒙地卡 羅樹搜索法的方式,觀察 AlphaZero 為設計基礎的人工智慧模型, 在對弈時是否因為選擇了更快獲勝的棋局走步或學會形成迫著, 而有效增強棋力。. 關鍵詞:AlpahZero、類神經網路、快贏策略、迫著搜尋 i.

(4) Abstract AlphaZero is a generic reinforcement learning algorithm that achieved superior results after training, given no domain knowledge except the game rules. To get the similar results and let the neural network learn winning information of Gomoku in the beginning of the training, this thesis deals with Quick Win and Threats-space Search methods. Quick Win method aims to let the neural network learn how to win faster by choosing the fastest winning move when the walkable moves show the same winning possibilities. Threats-space Search method is to search for the threats for every move, letting the neural network learn how to create threats for shortening the training period. In this thesis, we demonstrate four kinds of experiments applied to Gomoku including linear distance weight, exponential distance weight, combining Threats-space Search with distance weight and combining Threats-space Search with Monte Carlo Tree Search. We observe whether the implementations based on AlphaZero algorithm effectively enhances the winning ability because of choosing a faster winning move or a threat move during the game. Keywords: AlpahZero, Neural Network, Quick Win, Threats-space Search. ii.

(5) 誌謝 感謝林順喜老師在研究上的嚴謹指導,每次上台報告對我而 言都是一次魔鬼訓練。林老師在生活中對學生也照顧有加,常常 抽獎分送美味的零食與水果,讓大家在研究之餘也充滿歡笑。 感謝博士班的陳志宏學長,一直以來都以溫柔的微笑面對每 位研究生,無論我們有任何研究或學校行政的困難,志宏學長都 在我們身邊全力協助、耐心講解,有您真好。 感謝知識淵博的彥吉、乃元、天宇、律濃、俊豪學長,學長 們對我的研究給予許多可貴的建議,讓我順利完成研究。 感謝我最可愛的同學們:名字拗口的球探、圍棋名師小羊、 佛系畢業的冠毅、隱形人唐豪,我的碩士生涯充滿著美好的回憶 與故事,都是因為有你們一同學習,感謝遇到你們,願友誼長存。 感謝唯一的學弟宗翰,讓我們實驗室後繼有人,宗翰好脾氣 又可靠,日文也一級棒,期望你能奮力一搏。 感謝 Intel 給我實習的機會,這一年多來受到許多人的照顧, 讓我不但有經濟能力可完成學業,也不斷在陌生領域挑戰自我。 感謝我人生至今遇到的諸多貴人,包含家人、孟嘉、PH、蕙 君老師、家教學生、同事們,感謝你們教會我如何去愛。. iii.

(6) 目錄 第一章 緒論 .............................................................................................1 1.1 研究背景....................................................................................1 1.2 研究目的....................................................................................5 1.3 研究的意義................................................................................7 第二章 文獻探討.....................................................................................8 2.1 類神經網路................................................................................8 2.2 AlphaZero ................................................................................10 2.3 五子棋......................................................................................14 2.4 Quick Win ................................................................................16 2.5 迫著搜尋..................................................................................19 第三章 方法與步驟...............................................................................22 3.1 Alpha-zero-general ...................................................................23 3.2 線性增加距離權重 .................................................................27 3.3 指數增加距離權重 .................................................................29 3.4 結合迫著搜尋於距離權重 .....................................................30 3.5 結合迫著搜尋於蒙地卡羅樹搜索法 .....................................33 第四章 實驗與結果...............................................................................35 4.1 線性增加距離權重實驗結果 .................................................35. iv.

(7) 4.2 指數增加距離權重 .................................................................37 4.3 結合迫著搜尋於距離權重 .....................................................39 4.4 結合迫著搜尋於蒙地卡羅樹搜索法 .....................................41 第五章 結論與未來工作.......................................................................43 參考文獻 ................................................................................................45 附錄一:Alpha-zero-general 類別與方法 ...........................................49. v.

(8) 圖目錄 圖 1 修改原 AlphaZero 論文中 Self-play 與 training 的示意圖 ............ 11 圖 2 殘差模塊示意圖 ..............................................................................13 圖 3 Breakthrough 中非最優勝利走步 ...................................................17 圖 4 五子棋迫著 ......................................................................................19 圖 5 (a)白棋必勝盤面 (b)黑棋擋四、白棋追四 (c)白棋獲勝...............20 圖 6 Alpha-zero-general 程式流程圖.......................................................24 圖 7 線性加權示意圖 ..............................................................................28 圖 8 線性加權示意圖 ..............................................................................29 圖 9 迫著加權示意圖 ..............................................................................30 圖 10 (a)迫著搜尋示意圖 (b)迫著搜尋範例 ..........................................31 圖 11 結合迫著搜尋於距離權重.............................................................32 圖 12 迫著搜尋示意圖 ............................................................................34. vi.

(9) 表目錄 表 1 指數增加距離權重與原始版本之比較 ..........................................37 表 2 結合迫著搜尋於距離權重與原始版本之比較 ..............................40 表 3 結合迫著搜尋於蒙地卡羅樹搜索法與原始版本之比較 ..............42. vii.

(10) 第一章 緒論 1.1 研究背景 在人工智慧的範疇中,電腦對局遊戲(Computer games)一直都 佔有不可或缺的一席。1997年,IBM 研發的深藍打敗了世界西洋 棋棋王,引起世界關注人工智慧的發展,後續的研究人員也致力 於提升電腦對局程式的實力。以往使用的方法多是來自人類的知 識累積與慎密的思考而決定,如開局庫、搜尋樹、殘局庫等,使 得對局因為配備好的專家知識而運算準確。 傳統搜尋樹技術如 Alpha-Beta 剪枝(Alpha-Beta Search) [1]、蒙 地卡羅樹搜索法(Monte-Carlo Tree Search) [2],以及擷取棋盤特徵、 以專業判斷設計出的審局函數等,都能搜尋到較佳的走步。另外, 收集以及創造大量的開局庫、殘局庫,也使得人工智慧在初始與 終盤時,能夠做出快速良好的反應,有更多的機會持續保持優勢。 然而運用精心設計的搜尋樹,或收集良好的開局庫等這些專 家知識的導入,雖然能有效提升對局程式實力,也已在電腦科學 的研究領域中擁有長久歷史,但長期以來,任一優異的方法仍然 只能個別使用在單一棋類上,且不同棋類的作法迥異、成效不一, 不易互享研究成果。在2016年 AlphaGo 問世之前,電腦對局遊戲 的研究中尚未發現任何一種技術組合,可以有效應用於所有的棋 1.

(11) 局或遊戲,並能夠取代或領先其餘方法成為研究主流。 2016 年 ,由 Google DeepMind 團隊所研發的 AlphaGo 程式, 在複雜度最高的棋類項目圍棋中,打敗了職業棋士李世乭[3]。此 次受世界矚目的人機對戰當中,AlphaGo 用大量圍棋專家的棋譜 進行監督式學習 (Supervised Learning),證實了在電腦對局遊戲中, 類神經網路與蒙地卡羅樹搜索法結合的方式,能夠有效提升人工 智慧的能力,且其效果遠大於任何傳統技術可以達到的境界。 2017 年, DeepMind 研發團隊的新版本 AlphaGo Zero 問世 [4], 跳脫前次導入人類圍棋知識的設計思維,AlphaGo Zero 捨棄了圍 棋數百年來的棋譜與知識,以自我學習的方式,成功在電腦對局 領域中設立了新的里程碑。此次的版本 AlphaGo Zero 沒有預先寫 入任何專家知識,程式在只掌握棋局勝敗條件的基本規則下,從 零開始自我對弈,進行強化式學習(Reinforcement Learning),在非 監督式的架構下從隨機走步開始嘗試,並且有別於上一個版本 AlphaGo 區別開價值網路與策略網路,AlphaGo Zero 合併成單一 類神經網路一起訓練。在成績上,AlphaGo Zero 以100:0全贏的紀 錄擊敗了上一個版本,可見強化式學習架構簡潔卻強大。 AlphaGo Zero 對電腦對局的價值在於,它不僅解決了訓練資 料難以取得,或是取得成本過高的問題,也證明了在電腦對局領. 2.

(12) 域中,傳統依賴人類知識來控制人工智慧思考的方法效果有限, 而使用強化式學習來引導人工智慧自行學習賽局技巧,是目前更 有效的方法。 2017年同年末,DeepMind 再提出 AlphaZero [5],以 AlphaGo Zero 中強化式學習的技術修改成通用型的架構,應用於日本將棋 與西洋棋上,使得強化式學習的方法成為電腦對局程式的一種通 用型架構。雖然各項賽局遊戲規則有所不一,但在開發程式時, 有許多步驟是重複的,比如設定初始參數、建立搜尋樹、規劃盤 面資料結構、建構類神經網路,以及設計模型的對戰形式等。 為了減少許多重複的前置開發成本,使用一個通用型的 AlphaZero 架構程式,以因應不同棋類的遊戲規則是很重要的。目 前在 GitHub 開源碼中,由 Surag Nair 先生所開發的 Alpha-zerogeneral 程式大受歡迎,讚賞的星星數也多達1900多個 [6]。其利用 高階程式語言 Python 撰寫,具有高擴充性與高可讀性的特性,明 確地劃分出運行 AlphaZero 訓練時各個模組的功能,以及各模組 之間之間的分工。而最重要的是,一般人沒有 Google 使用的張量 處理器(Tensor Processing Unit),或是購買數個昂貴的圖形處理器 (Graphics Processing Unit)來進行類神經網路的訓練,Alpha-zerogeneral 依據此痛點簡化了類神經網路的盤面輸入數量、網路深度. 3.

(13) 以及棋盤大小,讓一般消費級電腦也能僅花數天,就能訓練出棋 力還不錯的人工智慧模型。相比之下,若完全使用原先 Google 提 出的 AlphaZero 架構,則自行開發程式將曠日費時。因為 Alphazero-general 復現了簡易版的 AlphaZero 架構,一般使用者能夠僅 僅只修改對局遊戲規則、盤面輸入與輸出規格,就可以開始進行 訓練與對局,對於減少開發成本而言助益頗大。. 4.

(14) 1.2 研究目的 當開發者欲使用 Alpha-zero-general 專案更進一步提升對局能 力時,會增加對局過程中每一步 MCTS 搜尋次數,或是增加類神 經網路模型訓練時自我對下的次數。然而,因為強化式學習的架 構將人為干預降至最低,只關注結果的輸贏,所以人工智慧會忽 略現實人類在對弈時,還包含快贏這個重要的因素,而不會刻意 去追求險勝。此外,在硬體資源與時間都有限的情況下,若想要 更快的讓人工智慧學習到五子棋遊戲技巧,在搜索中加入迫著資 訊是有其必要性的。 為了精準獲勝,人工智慧在下棋時不能只注重贏而已,還應 該在乎是否能以最快的速度獲得勝利,才能贏得漂亮又穩當。一 個只追求輸贏的人工智慧,很有可能在佔有優勢、並且有多重選 擇時,不小心錯誤的選擇到需要花費較多步數的走步,使得即使 在殘局時勝率看起來沒有變化,卻離勝利之途更為遙遠,或是因 此輸掉棋局。 要讓人工智慧學習到對弈時所需要的快速獲勝資訊,本研究 導入快贏策略(Quick Win) [7] ,嘗試針對類神經網路的價值做標 記,或是增加迫著資訊,意圖在訓練時讓類神經網路學習到快贏 的價值,使人工智慧在勝率相同時,能更傾向選擇未來能夠快速. 5.

(15) 贏的走步,並實驗以 AlphaZero 為設計精神的人工智慧,對弈時 是否因為選擇了更快獲勝的棋局走向,而有效增強棋力。 在高水準的五子棋對弈當中,獲勝的一方通常更能掌握迫著 的運用。在精心設計的走步中,埋藏致勝的目的,控制對手的走 步,在必要時也懂得防守以預防後患。為了有效在有限的資源中, 達到上述的訓練效果,就需要增加必要的迫著資訊,讓類神經網 路減少摸索的時間。 因此為了要讓人工智慧縮短變強所需的漫長訓練時間,本研 究亦導入了迫著空間,實驗讓人工智慧在初期訓練時,就加入迫 著空間資訊,並觀察人工智慧是否能透過這些資訊,學會如何運 用迫著來攻擊與防守,在較短時間內就能以設計迫著的手段,在 五子棋遊戲中取得勝利。. 6.

(16) 1.3 研究意義 本 研 究 將 在 五 子 棋 遊 戲 上 進 行 實 驗 , 將 使 用 Alpha-zerogeneral 框架的開源設計為框架來實現 AlphaZero 演算法。 研究將主要聚焦於如何讓電腦在對局時,除了將贏的結果作 為目標訓練外,也能注重贏的速度和品質,並且在資源有限的情 況下,縮短訓練所需時間,讓人工智慧的對弈能力更強韌,也更 貼近真正對弈時應具有的戰略心理。 Quick Win 的精神就在於選擇了維持勝率下最快贏的走步,來 減低對手可能翻盤或努力打平的機會;迫著搜尋則在於縮短訓練 的時間,讓 AI 在相同訓練時間內變得更強。. 7.

(17) 第二章 文獻探討 2.1 類神經網路 類神經網路的出現最早是在1943年,McCulloch 與 Pitts 因試 圖以電子迴路來模擬人類腦神經的運作模式,而發展出來腦神經 知 識 與 電 路 結 合 的 研 究 [8]。1949年 , Hebb 在 其 著 作 The Organization of Behavior 中提出著名的赫布型學習理論,說明兩個 神經元突觸若對彼此激發越多次,則兩者之間的連結就會增強得 更緊密,讓研究人員對大腦神經元的理解更進一步 [9]。到了1954 年,Farley 與 Clark 兩人第一次使用電腦,成功地模擬出基於赫布 型學習理論的赫布網路 [10]。1958年 ,Rosenblatt 發明了感知器 演算法,類神經網路自此能夠對數據進行基本的分類 [11]。隔年 1959年, Widrow 與 Hoff 依據 McCulloch 與 Pitts 提出的神經元, 發 展 出 ADALINE (ADAptive LINear Element) 與 MADALINE (Multiple ADAptive LINear Elements) 的線性類神經網路模型,此 模型不但能夠接收多個輸入以及誤差,並且能成功應用在噪音的 過濾上 [12]。然而1969年時,由 Minsky 與 Papert 提出疑慮,指出 類神經網路因為是線性分類的緣故,所以無法進行 XOR 問題的分 類 [13]。直到1975年,Werbos 發明的反向傳播演算法,終於有效 地解決了 XOR 的問題,也因此使得訓練多層類神經網路變得更加 8.

(18) 容易[14]。至1986年,Rumelhart 發明了多層感知器的反向傳播演 算法,使得類神經網路能夠建構得較深層,並用來處理更加複雜 的分類問題 [15],接著 LeCun 在 1989 年將反向傳播演算法應用於 手寫辨識,獲得極大的成功 [16]。然而,當時硬體尚未發展成熟, 類神經網路的發展受到限制,自此開始消聲匿跡。直至近十年, 隨著硬體運算能力的提高,圖形處理器的問世,類神經網路有了 硬體的加速,以及圖形識別上的巨大成就,而再次備受世界重視。. 9.

(19) 2.2 AlphaZero 2017年 AlphaGo Zero 的強化式學習框架以圍棋證明,過往監 督式學習系統中,人工智慧模仿人類專家做決策的方式,已不再 獨佔優勢[5]。同一年,AlphaZero 以通用型演算法,適用在日本 將棋與西洋棋上,皆以優異的成績,成功證明自我對下的強化式 學習模式能擴充到其他遊戲中。 AlphaZero 的強化式學習演算法中,有兩件最重要的事—自我 對下與走步預測,分別由蒙地卡羅樹搜索法與類神經網路來完成, 以下詳述之。 在自我對下的每一個盤面中,蒙地卡羅樹搜索法都會被執行, 並且被類神經網路指引。類神經網路會先預測一組策略值(P, V)給 蒙地卡羅樹搜索法,其中,P 值表示每個可走步的機率分布(Move Probabilities),而 V 值表示當前玩家在該盤面下的贏率(Value)。因 為有來自類神經網路的 P 值與 V 值,而使蒙地卡羅樹搜索法在搜 尋時減少了節點展開數,可以更省時的從機率高的子節點中搜尋 到好的走步。蒙地卡羅樹搜索法在搜尋完後,也會模擬出可走步 的機率π,與自我對下後的贏家 Z,這組更為精準的策略值(π, Z), 遂成為類神經網路輸出(P, V)的改進參考,如圖1所示(修改自原始 論文中的圖)。. 10.

(20) 圖 1 修改原 AlphaZero 論文中 Self-play 與 training 的示意圖 蒙地卡羅樹搜索法自我對下後的盤面,會被標記出走步與勝. 11.

(21) 負,成為類神經網路訓練時的資料。類神經網路以巨量資料進行 迭代訓練時,以反向傳播演算法不斷調整權重、修正誤差,除了 讓輸出機率的準確性提高外,也能使蒙地卡羅樹搜索法在自我對 下時選到更好的走步。 強化式學習演算法最主要的精神,就是在策略迭代程序中, 以蒙地卡羅樹搜索法搜尋出的策略值作為標準,讓類神經網路的 參數不斷更新調整,直至能夠訓練出一個網路模型,其輸出一組 走步機率和價值(P, V),是與蒙地卡羅樹搜索法的搜尋機率和自我 對下的贏家(π, Z)更為接近。 類神經網路的結構方面,AlphaZero 所使用的類神經網路是基 於卷積類神經網路(Convolutional Neural Networks)的殘差類神經網 路(Residual Neural Network)建構而成 [17]。將輸入的盤面視為二 維平面圖,卷積類神經網路會於此二維平面中的向量之間找尋特 徵,並結合標記勝負的資訊,來學習並歸納出這些特徵的意義。 然而卷積類神經網路的架構所需的神經元較多,因此需要的參數 量也增加不少,造成每次類神經網路在調整網路參數時,都需要 經過大量的運算。更糟的是,若欲增加預測的目標值,則需要加 深網路層數,如此一來參數量又更大幅度的增加,所花費的計算 時間會以指數成長。. 12.

(22) 殘差類神經網路改良自卷積類神經網路,目的是為了解決卷 積類神經網路中神經元過多而導致效率不彰,以及層數加深時梯 度消失、難以計算的問題。殘差類神經網路由多個殘差模塊組成, 如下圖2所示,每個殘差模塊中含有兩層卷積層,並在輸入處連 接一條捷徑到輸出處,且輸入與輸出的資料皆是保持同一個維度, 不致使參數暴漲。殘差類神經網路因為在架構上有捷徑的關係, 讓參數可以直接從輸入處傳遞到輸出處,所以不會有梯度消失的 問題,並能將參數繼續傳輸到下一層網路。. 圖 2 殘差模塊示意圖. 13.

(23) 2.3 五子棋 五子棋,在日本經改良後稱連珠,因歷史悠久且規則簡單而 廣為人知。起源於中國,後經由韓國傳至日本後,因發現先手的 黑棋有優勢,故對黑棋設下許多限制,並將棋盤縮小至15 × 15的 大小[18]。Allis 已證明五子棋的先手必勝 [19],因為先手在盤面 上總是多對方一步棋,讓後手容易居於劣勢、難以翻轉局勢而位 居下風,可知五子棋偏好執黑的先手玩家。所以五子棋被認為是 對後手不公平的棋類,目前在國際上正式的五子棋競賽中,也會 針對先手的黑子給予禁手。 經過日本修訂的五子棋規則為: 1. 對局者是兩位,使用15路棋盤。 2. 黑棋為先手,白棋為後手,第一手下於中央。 3. 不論縱向、橫向或斜向,先做出連五的一方獲勝。 4. 三三、四四與長連都是黑棋的禁手,不管主動或被動 都裁定失敗。 5. 白棋沒有禁手。 6. 雙方都做不出連五則為和棋。 經 過 林 順 喜 老 師 改 良 過 的 外 圍 開 局 五 子 棋(Outer-Open Gomoku) [20],則有以下規定:. 14.

(24) 1. 對局者是兩位,使用15路棋盤,每局遊戲時間為雙方 各20分鐘。 2. 黑棋為先手,白棋為後手,黑方第一手只能下在棋 盤外環2路,除此之外沒有禁手。 3. 不論縱向、橫向或斜向,先做出連五的一方獲勝。 4. 雙方都做不出連五則為和棋。 本研究以外圍開局五子棋之規則為主。. 15.

(25) 2.4 Quick Win AlphaZero 的核心技術,是由蒙地卡羅樹搜索法以及類神經網 路交互協作而成的,然而當蒙地卡羅樹搜索法執行搜尋時,會把 展開後的所有子節點之 V 值做平均,故在評估節點優劣時容易誤 判及錯失機會。Quick Win 最早由 Chih-Hung Chen 與 Wei-Lin Wu 等人提出 [21],以此來改善驟死賽(Sudden Death Games)中,傳統 蒙地卡羅樹搜索法的平均獎賞機制下,所造成的降低決定性走步 機率的問題。 2019年,吳天宇利用 Quick Win 於 Breakthrough 遊戲中,也 同樣試圖要解決人工智慧在遊戲明顯可贏時,卻選擇了平均勝率 最高之走步的問題,而這會導致遊戲後期走步拖延太久、獲勝不 穩定的情況 [22]。 如下圖3所示,下方藍框中的黑棋如果連走1、2步,則到達 白方領地,黑方即刻獲勝。但由於上方黃框中黑子有機會吃子, 勝率比下方更高,故黑方會先選擇走黃框的走步,雖然最後仍會 勝利,卻延後了獲勝的時間,也違背一般下棋時以盡快獲勝為優 先的思維。. 16.

(26) 圖 3 Breakthrough 中非最優勝利走步. 此實驗同樣也在 AlphaZero 的架構中實作,分別針對類神經 網路與蒙地卡羅樹搜索法作修改,測試 AlphaZero 經修改後是否 有更好的成效。其中,針對類神經網路導入 Quick Win 思維時, 類神經網路除了輸出一組(P, V)策略值外,另增加輸出一個 D 值, 用來預測距離遊戲結束尚餘多少步,並與 V 值結合增加權重成為 V’值,最終輸出給自我對下時的蒙地卡羅樹搜索法,使策略值變 成(P, V’),期望類神經網路因融合了 Quick Win,便可以訓練出更 精確的策略值,達到快贏目的。 為了取得 D 值,在遊戲結束時,需要對盤面標記距離勝利的 剩餘走步(StepToEnd),使 D 值在越接近獲勝盤面時值越大,以線 17.

(27) 性遞增,並能影響贏的速度。 最終得到產生 D 值的公式如公式(1)所示: 𝐷={. 𝑟∗. 𝑡−𝑆𝑡𝑒𝑝𝑠𝑇𝑜𝐸𝑛𝑑 𝑡. 0. , 𝑡 ≥ 𝑆𝑡𝑒𝑝𝑠𝑇𝑜𝐸𝑛𝑑 , 𝑡 < 𝑆𝑡𝑒𝑝𝑠𝑇𝑜𝐸𝑛𝑑. (1). 此公式中,r 為勝負結果(Result),在贏的時候為1,輸的時候 為0,故 D 值只會在贏的盤面下進行標記。t 為步數門檻值,如設 t=20,表示在最後20步開始紀錄 D 值資料,若尚未進入20步的臨 界值,則 D 值均標記為0,不會有負數產生。 吳天宇以此增加 D 值的方法訓練,希望在棋局將贏之時 AI 能 選擇較好的走步,但實驗結果並未明顯讓類神經網路有能力預測 遊戲即將結束。然而,其中 Quick Win 的精神仍有學習之處,固 本研究部分實驗亦將延續吳天宇的思路,進行實驗方法的改良, 嘗試增加改良過的 D 值資訊給 Z 值,觀察是否對 AI 訓練成果有 效。. 18.

(28) 2.5 迫著搜尋 迫著搜尋(Threat-space Search)最早由 Allis 提出[23],並實作 在五子棋上。所謂迫著,是指有利於完成己方勝利條件、並強迫 對手只能以防守來阻擋的走步,如圖4範例所示,黑子以連續3或 4子來產生迫著,單迫著表示只有一處可防守,雙迫著則表示有 兩處可防守。在五子棋中,連四的棋型造成的迫著通常具有高攻 擊性,脅迫對手必須立即採取防守行動。. 單迫著. 雙迫著. 圖 4 五子棋迫著. 迫著的重要性以五子棋為例,如下圖5(a),目前盤面上白棋 已三迫著,且輪黑棋落子,是一個對白方必勝的盤面,此時類神 經網路的 V 值預估都相當接近1,表示即將勝利。黑方若以圖5(b) 的方式擋住白棋的連四單迫著,則白棋會繼續追四。圖5(c)顯示. 19.

(29) 黑子在白方設計的多迫著棋局中,已經沒有招架之力,此局白方 因為迫著的攻擊而獲勝,可知迫著策略若運用得宜,可以有效幫 助快速獲得勝利。. (a). 3 1 2 4. (b). (c). 圖 5 (a)白棋必勝盤面 (b)黑棋擋四、白棋追四 (c)白棋獲勝. 迫著搜尋會找到一條以連續的迫著攻擊來達到勝利的路徑, 搜尋己方可形成迫著的走步之外,也要讓遊戲樹展開對方的防守 步,確保路徑經過幾輪攻防後依然獲得勝利。當迫著搜尋失敗時, 表示不存在依靠連續迫著攻擊得勝的路徑,此時比起攻擊,可能 20.

(30) 更迫切需要防守對方的攻擊。 過去有許多使用迫著搜尋結合其他演算法的成功例子,例如 在迫著搜尋結束後,交由審局函數做評估,選擇出最佳攻擊走步 [24]。甚至迫著搜尋也能應用在 k 子棋上,結合防禦性策略,達到 最佳防禦效果[25]。 迫著搜尋因為只針對雙方能造成迫著的走步進行搜尋,縮減 可走步的數目,不需要對所有可走步進行搜索,故能有效減少搜 尋的時間與空間,加速獲得勝利。. 21.

(31) 第三章 方法與步驟 本研究在重現 AlphaZero 演算法時,會以 Alpha-zero-general 為實作的程式原型,因為 Alpha-zero-general 架構分明的程式碼, 修改功能與後續維護都非常容易,詳細模組介紹會在本章第一節 中。 標準15 × 15大棋盤會因為多重的走步組合,訓練與實驗的時 間將會增加不少。為降低訓練複雜度而生的8× 8小棋盤的五子棋, 則因走步與布局位置限縮,所以可以加快實驗所需時間,卻又不 至於因盤面太小而容易和局。 在原版 AlphaZero 中,並沒有考慮到如何快速結束棋局,這 是由於蒙地卡羅樹搜索法會對其展開的所有子節點之 V 值做平均 計算,故 在評估節點優劣 時會有 不準確之 虞,所以才要使用 Quick Win 策略來改良此情況。並且,為了讓 AI 在訓練初期就能 學會運用迫著技巧,就需要在原版 AlphaZero 框架中結合迫著空 間,讓 AI 盡早在五子棋遊戲中學會使用迫著獲勝,以縮短訓練時 長。 此章節將依序對構想與實驗方法深入探討。主要有兩類作法, 一是藉由增加類神經網路對於剩餘步數的資訊,為 Z 值加權,來 調整面臨必勝走步時的選擇;二是導入迫著搜尋,期望使類神經 22.

(32) 網路短期內學會設計迫著,使可走步減少,以增加獲勝機率及減 少訓練時長。這兩個大方向都各別有不同的實驗方法,會在此章 節深入描述,並將實驗數據詳細紀錄於第四章。. 3.1 Alpha-zero-general Alpha-zero-general 是依據 AlphaZero 論文中所揭示的演算方 法所開發的開源碼,架構如圖6所示。. 23.

(33) 圖 6 Alpha-zero-general 程式流程圖 24.

(34) 此程式主要由 main、Coach、MCTS、NeuralNet 以及 Arena 五 個模組組成,以下分述之: 1. main:. 這是操作整個 AlphaZero 訓練流程的模組,包含呼. 叫蒙地卡羅樹搜索法自我對下並產生訓練資料、針對訓練 資料儲存與提取、訓練類神經網路等,並能針對訓練迭代 次數與盤面大小等資訊做調整。 2. Coach: 這個類別負責遊戲的規則與操作方式,以及確認遊 戲是否結束,和勝利方的確立等。如果替換遊戲,且輸入 輸出也符合類神經網路的規範的前提下,則遊戲規則可從 這個類別修改,就能套用 AlphaZero 架構進行訓練。 3. MCTS: 這個模組負責對每個盤面做蒙地卡羅樹搜索法的 展開、挑選、更新與回傳等,並由類神經網路來引導蒙地 卡羅樹搜索法的節點搜索與價值評估,在搜尋完後結合拜 訪次數回傳可走步與走步機率的資料,用於類神經網路的 訓練上。 4. NeuralNet: 此模組定義了類神經網路的架構、訓練步驟、 盤面預測,以及損失函數等資訊,也包含載入與儲存類神 經網路模型的功能。當蒙地卡羅樹搜索法展開節點時會被 呼叫進行盤面走步策略的預測,以及在蒙地卡羅樹搜索法. 25.

(35) 完成自我對下後,被呼叫進行模型訓練。 5. Arena:. 這個模組可輸入已訓練好的模型與人類玩家進行. 人機對戰,用來初步檢測模型的強弱與成效。此模組亦設 計 AI model 對戰的功能,故本研究將會做大量實驗,針對 不同 model 對弈的結果,觀察訓練的成效與優劣。. 26.

(36) 3.2 線性增加距離權重 AlphaZero 演算法中,類神經網路會傳遞一組策略預測值(P, V) 給蒙地卡羅樹搜索法,再由蒙地卡羅樹搜索法搜尋後得出可走步 的機率跟最終贏家(π, Z),資料經過標記後給類神經網路做訓練。 蒙地卡羅樹搜索法在自我對下後產生贏家 Z 值時,會將輸的一方 標記為-1,贏的一方標記為+1,再將資料交給類神經網路訓練 V 值,所以 V 值會介於[-1, 1]。 以離盤面結束的距離來加權 Z 值,似乎是 Quick Win 最直覺 的測量方式,也就是對於即將獲勝且更快結束的盤面而言,權重 會越大。 自我對下後的盤面標記完成之後,將 Z 值與距離權重做相加。 為了不要讓加權後的值超過±1,此處將贏的玩家之 Z 值設定為0.5 到1之間,輸的則是-0.5到-1之間。 距離加權的方式則依照遊戲結束後的走步分為六類權重,如 圖7所示,以獲勝盤面而言,最後幾個走步因為靠近結束的盤面 故權重漸大,反之以戰敗的盤面而言,越靠近結束權重越小。. 27.

(37) 圖 7 線性加權示意圖. 經過線性加權的 Z’值會被標記到訓練資料中,接著給類神經 網路做訓練,期望以此影響類神經網路模型更趨近於 Quick Win 精神。. 28.

(38) 3.3 指數增加距離權重 指數增加距離權重的基本概念與前一小節相同,目的在於依據 遊戲結束的距離,增加距離權重、改良 Z 值,以期訓練出學習力更 快、能力更強的 AI 模型。 以下圖8為例,指數方式增加距離權重時,與線性方式增加距 離權重相同,將盤面走步分成六類權重,距離盤面結束越近,權重 就越大。兩者不同之處在於,指數增加的權重使級距差距以曲線型 上升,並且以獲勝盤面而言,初始的盤面 Z’值為0.61,比線性權重 的0.5更高,目的是期望在訓練時能比較容易讓類神經網路學習勝 負與優劣。. 圖 8 指數加權示意圖. 29.

(39) 3.4 結合迫著搜尋於距離權重 以迫著取勝是五子棋遊戲的精髓所在,玩家一旦形成連四的雙 迫著,或是兩個連三雙迫著,幾乎可說是勝券在握。無論是將迫著 用來限制對方以防守走步取代攻擊,或是策略性的組織出多迫著來 獲勝,設計出迫著的走步是五子棋最重要的取勝手法,也是贏得勝 利的最短路徑。 因迫著對五子棋的重要性不言而喻,故本研究針對自我對下後 的盤面進行迫著搜尋,檢測每個走步是否產生迫著,並對於不同情 況之盤面給予三種權重標準,如圖9所示。. 圖 9 迫著加權示意圖. 結合迫著搜尋於距離權重的目標在於,對自我對下完的盤面資 料做搜尋與權重標記。一般的勝利盤面走步權重設定為0.85,原因 為過低的權重會讓類神經網路無法分辨此為勝利盤面。在勝利的盤 面中,若有連三、連四、跳三或跳四,便增加此走步權重為0.9, 另對於最終勝利盤面給予最高權重1.0。只設定三種權重標準的意. 30.

(40) 義在於,希望藉由減少權重類型,使類神經網路更容易判別迫著屬 於好的走步,理解迫著的產生與最終勝利息息相關,快速致勝的方 式就是需要掌握迫著技巧。 實際做法是以每個可走步為中心點,向外搜尋八個方向,每個 方向搜四步的距離,確認是否會因為下了此中心點的可走步後,有 連、連四、跳三或跳四的棋型出現,如下圖9 (a)所示。. (a). (b). 圖 10 (a)迫著搜尋示意圖 (b)迫著搜尋範例. 執行迫著搜尋時,同方向以及轉180∘方向中己方的棋子會被 記錄下來,例如以圖10(a)為例,水平 x 軸方向的白棋數目都會被計 算,若達連三以上則 break,換到其他方向做搜尋。 若迫著搜尋時出現空格,如圖10(b)標紅的白子左邊第二步,. 31.

(41) 搜尋還是會繼續,詳細實做方式見圖11。若是同方向出現第二個空 格,程式會 break 離開此方向的搜尋,原因是含兩個空格的跳三或 跳四距離過遠,選擇此可走步所產生的迫著傷害不大,可另尋其他 空間落子。若搜尋時出現敵方棋子阻擋,如圖10(b)標紅的白子右 邊第一步,程式也會 break 結束此方向的搜尋。. 圖 11 結合迫著搜尋於距離權重 32.

(42) 3.5 結合迫著搜尋於蒙地卡羅樹搜索法 當蒙地卡羅樹搜索法在對可走步做搜尋時,往往因為可選的走 步太多,而使搜尋沒有效率,也不容易在有限時間內找到最佳走步。 這樣的問題在遊戲初期時尤為嚴重,因為遊戲初期的可走步相當多, 局勢尚不明朗,拜訪沒必要考慮之節點的機率就會增加,除了浪費 時間在無意義的搜尋外,也在有限時間中錯過最佳走步,延後勝利 時間,甚至失去勝利的機會。 上一小節3.4節也使用迫著搜尋,使用的方式是在自我對下之 後,針對盤面資料做搜尋與標記。本節與上一節的實驗方法不同之 處在於,本節的迫著搜尋會在蒙地卡羅搜索法的每一個可走步當中, 也就是在遊戲自我對下的同時進行迫著搜尋,且在自我對下時縮小 可走步範圍,直接產生加入迫著搜尋的訓練資料。 此實驗中,將每個方向可走步的向外搜尋範圍縮小至兩步,如 圖12所示,原因在於不希望重複計算太遠的跳三與跳四,讓迫著搜 尋就近找到迫著即可。此舉可使連三、連四、跳三、跳四的搜尋結 果與上一節所示的向外搜尋四步的搜尋結果一致,也使蒙地卡羅樹 搜索法在遊戲自我對下時,在同樣的時間與模擬數量中,能夠加速 找出勝率最高的走步。. 33.

(43) 圖 12 迫著搜尋示意圖. 在進行迫著搜尋時,會針對盤面上己方的棋型搜尋是否能產生 迫著,若可以立刻勝利即攻擊;反過來而言,針對對手的棋型也會 判斷是否產生迫著,在必要時立即阻擋。 蒙地卡羅樹搜索法結合迫著搜尋後,產出的自我對下盤面,以 及盤面標記的可走步勝率資訊,都會成為類神經網路訓練的依據, 並以此實驗出是否因為迫著搜尋後可走步數量降低,而使類神經網 路更快速學習到產生迫著的訣竅。. 34.

(44) 第四章 實驗與結果 本實驗共分為四個部分,依第三章的第二小節到第五小節提 出的做法分別描述實驗結果,若無實驗數據則描述現象與造成之 原因。 本章所提及之所有方法都被實做在8 × 8的盤面上,所對照的 強度基準點則是 Alpha-zero-general 未被任何方法改良的五子棋 AI 模型,且每組實驗中,兩個模型訓練的迭代數與自我對下場數均 一致,來觀察每組實驗是否能有效改善 AlphaZero 在訓練類神經 網路的初期,無法快速獲勝的不穩定狀況,從而讓 AI 在有限的訓 練設備及訓練迭代數之下,也能有相較原版 Alpha-zero-general 更 優良的訓練成果。. 4.1 線性增加距離權重實驗結果 在線性增加距離權重的實驗中,本研究跑了50個迭代,每個 迭代自我對下100場,每場自我對下的 MCTS 模擬次數為300次, 每當最新的模型打敗當前最佳模型,且100場中勝率達到55%時進 行模型更新,新的模型便會成為當前最佳模型。 然而當迭代數結束時,模型並未更新,表示以線性方式增加 權重並未讓類神經網路變得更強,反而削弱了其學習能力。 猜測原因是由於線性權重的關係,使類神經網路在梯度下降 35.

(45) 時無法理解等量成長的線性權重。另一項原因則是如圖6所示, 一開始的 Z’值只設定為0.5,故類神經網路無法明確知曉哪些走步 是好的或是壞的,導致類神經網路錯亂,為了證實是否是這個因 素,才改變加權方式,進行了下一個實驗。. 36.

(46) 4.2 指數增加距離權重 在指數增加距離權重的實驗中,本研究跑了50個迭代,每個 迭代自我對下50場,每場自我對下的 MCTS模擬次數為300次,每 當最新的模型打敗當前最佳模型,且100場中勝率達到55%時進行 模型更新,新的模型便會成為當前最佳模型。 因為上一小節中,以線性權重形成的 Z’值無法被類神經網路 準確學習距離資訊,故在此小節中,將線性改為指數,實驗是否 會因為權重方式改變,而使類神經網路有效學習到 Quick Win 精 神。 本實驗以指數增加距離權重的方法(簡稱指數增加),與原版 Alpha-zero-general 對戰,實驗共計200場,結果如下表1所示。. 訓練50迭代. 指數增加. 原始版本. 和局. 指數增加. -. 6. 3%. 原始版本. 194. -. 97% 0. 和局. 勝率. 0%. 表 1 指數增加距離權重與原始版本之比較 實驗結果顯示,以指數增加距離權重的方法,跟原始版本相. 37.

(47) 比只有3%的勝率,比原始版本的棋力還要差非常多,此方法明顯 無法提升 AI 強度。 可能的原因是所加入的距離權重與距離本身無相關,故類神 經網路無法掌握到權重增加與距離有關。因此,下一節開始,實 驗會加入迫著的資訊,測試迫著搜尋是否能讓類神經網路學習效 果更好。. 38.

(48) 4.3 結合迫著搜尋於距離權重 在結合迫著搜尋於距離權重的實驗中,本研究跑了50個迭代, 每個迭代自我對下50場,每場自我對下的 MCTS模擬次數為300次, 每當最新的模型打敗當前最佳模型,且100場中勝率達到55%時進 行模型更新,新的模型便會成為當前最佳模型。 上述兩小節的實驗成效不彰,猜測原因為兩者皆是以盤面距 離作為加權之故,因此,本節以五子棋勝負之精髓–迫著,作為 標記權重的主要手法。迫著搜尋可以產生迫著與防禦迫著,以此 對自我對下後的盤面資料進行搜尋與權重標記,並觀察類神經網 路是否能學習到設計迫著的能力,進而快速獲得勝利。 本實驗以結合迫著搜尋於距離權重的方法(簡稱迫著權重), 與原版 Alpha-zero-general 對戰,實驗共計200場,結果如下表2所 示。. 39.

(49) 訓練50迭代. 迫著權重. 原始版本. 和局. 迫著權重. -. 12. 6%. 原始版本. 186. -. 93% 2. 和局. 勝率. 1%. 表 2 結合迫著搜尋於距離權重與原始版本之比較 實驗結果顯示,以結合迫著搜尋於距離權重的方法,跟原始 版本相比只有6%的勝率,比原始版本的棋力還要差非常多,此方 法明顯無法提升 AI 強度。實驗結果亦顯示,以不同 Z’值的加權方 式並無法增加 AI 學習能力,反而加權後使 AI 更學不會優劣的差 異,故下一節的實驗不再更動 Z 值,但是會繼續嘗試迫著搜尋是 否對類神經網路訓練有正面影響。. 40.

(50) 4.4 結合迫著搜尋於蒙地卡羅樹搜索法 在結合迫著搜尋於蒙地卡羅樹搜索法的實驗中,本研究跑了 50個迭代,每個迭代自我對下50場,每場自我對下的蒙地卡羅樹 搜索法模擬次數為300次,每當最新的模型打敗當前最佳模型, 且100場中勝率達到55%時進行模型更新,新的模型便會成為當前 最佳模型。 從上面三小節的實驗結果觀察到,無論是距離資訊或是迫著 搜尋的資訊,增加權重的方式對類神經網路的學習顯然是有負面 影響的。因此,本研究將摒棄多元權重的方式,並重新結合迫著 搜尋於蒙地卡羅樹搜索法中,在自我對下的每一個走步中進行迫 著搜尋。 本實驗以結合迫著搜尋於蒙地卡羅樹搜索法的方法(簡稱迫著 搜尋+MCTS),與原版 Alpha-zero-general 對戰,實驗共計200場, 結果如下表3所示。. 41.

(51) 訓練50迭代. 迫著搜尋 +MCTS. 原始版本. 迫著搜尋 +MCTS. -. 114. 57%. 原始版本. 84. -. 42%. 和局. 2. 和局. 勝率. 1%. 表 3 結合迫著搜尋於蒙地卡羅樹搜索法與原始版本之比較 實驗結果顯示,以結合迫著搜尋於蒙地卡羅樹搜索法的方法, 跟原始版本相比有57%的勝率,比原始版本的棋力還要強,此方 法明顯提升了 AI 強度,證實以迫著搜尋實做 Quick Win 對 AI 獲 勝能力有正面影響。. 42.

(52) 第五章 結論與未來工作 本研究一共做了四個實驗:線性增加距離權重、指數增加距 離權重、結合迫著搜尋於距離權重,以及結合迫著搜尋於蒙地卡 羅樹搜索法。 前三個以距離權重改變 Z 值的 Quick Win 實驗結果均顯示, AI 無法學習到 Z 值改變的原因,勝利盤面的走步與失敗盤面的走 步很有可能有相差不多的 Z’值,並且 AI 可能也無法理解權重的分 類與距離的關聯度,因此前三個實驗皆無明顯提高與原版 Alphazero-general 對戰的勝率。 最後一個實驗—結合迫著搜尋於蒙地卡羅樹搜索法,則有較 好的實驗結果,明顯提高了 AI 模型的勝率。推測原因為迫著搜尋 減少了蒙地卡羅樹搜索法的分支,所以可以在產生迫著與防禦迫 著的走步中,快速搜尋到勝率最高的一個走步,並使 AI 能有效學 習使用迫著策略的得勝法,最終在相同時間內有更高的勝率。 未來的研究人員可以依據此實驗成果,在蒙地卡羅樹搜索法 模擬中加入迫著搜尋,再將自我對下的盤面數據交給類神經網路 訓練。除此之外,若要實驗在15 × 15的盤面大小,則需要提升迫 著搜尋的速度,才不會在搜尋上太耗時,建議的做法是將盤面用 Bitboard 儲存,在迫著搜尋時可以較有效率的比對出有迫著的走 43.

(53) 步,加快整體自我對下的時間。. 44.

(54) 參考文獻 [1] J. Schaeffer, “The history heuristic and alpha-beta search enhancements in practice,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 11, no. 11, pp. 1203–1212, 1989. [2] L. Kocsis and C. Szepesvári, “Bandit Based Monte-Carlo Planning,” Lecture Notes in Computer Science Machine Learning: ECML 2006, pp. 282–293, 2006. [3] D. Silver, A. Huang, C. J. Maddison, A. Guez, L. Sifre, G. V. D. Driessche, J. Schrittwieser, I. Antonoglou, V. Panneershelvam, M. Lanctot, S. Dieleman, D. Grewe, J. Nham, N. Kalchbrenner, I. Sutskever, T. Lillicrap, M. Leach, K. Kavukcuoglu, T. Graepel, and D. Hassabis, “Mastering the game of Go with deep neural networks and tree search,” Nature, vol. 529, no. 7587, pp. 484–489, 2016. [4] D. Silver, J. Schrittwieser, K. Simonyan, I. Antonoglou, A. Huang, A. Guez, T. Hubert, L. Baker, M. Lai, A. Bolton, Y. Chen, T. Lillicrap, F. Hui, L. Sifre, G. V. D. Driessche, T. Graepel, and D. Hassabis, “Mastering the game of Go without human knowledge,” Nature, vol. 550, no. 7676, pp. 354–359, 2017. [5] “Mastering Chess and Shogi by Self-Play with a General Reinforcement. Learning. Algorithm”. [Online].. Available:. https://arxiv.org/pdf/1712.01815.pdf. [Accessed: 24-Feb-2020].. 45.

(55) [6] S. Nair, Alpha-zero-general. December, 2017. [Online]. Available: https://github.com/junxiaosong/Alpha-zero-general. [Accessed Feb. 24, 2020]. [7] C. H. Chen, W. L. Wu, Y. H. Chen, and S. S. Lin, “Some improvements in Monte Carlo tree search algorithms for sudden death games,” ICGA Journal, vol. 40, no. 4, pp. 460–470, 2019. [8] W. McCulloch and W. Pitts, “A logical calculus of the ideas immanent in nervous activity,” Bulletin of Mathematical Biology, vol. 52, no. 12, pp. 99–115, 1990. [9] D. O. Hebb, The organization of behavior: a neuropsychological theory. New York: John Wiley & Sons, 1949. [10] B. Farley and W. Clark, “Simulation of self-organizing systems by digital computer,” Transactions of the IRE Professional Group on Information Theory, vol. 4, no. 4, pp. 76–84, 1954. [11] F. Rosenblatt, “The perceptron: A probabilistic model for information storage and organization in the brain.,” Psychological Review, vol. 65, no. 6, pp. 386–408, 1958. [12] B. Widrow and M. A. Lehr, "30 years of adaptive neural networks: perceptron, madaline, and backpropagation". Proceedings of the IEEE. 78 (9): 1415–1442, 1990. [13] M. Minsky and S. Papert, A review of "Perceptrons: an introduction to computational geometry". New York: Academic Press, 1970. 46.

(56) [14] P. J. Werbos, Roots of backpropagation: from ordered derivatives to neural networks and political forecasting. New York: Wiley, 1994. [15] D. E. Rumelhart, G. E. Hinton, and R. J. Williams, “Learning representations by back-propagating errors,” Nature, vol. 323, no. 6088, pp. 533–536, 1986. [16] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel, “Backpropagation Applied to Handwritten Zip Code Recognition,” Neural Computation, vol. 1, no. 4, pp. 541– 551, 1989. [17] K. He, X. Zhang, S. Ren, and J. Sun, “Deep Residual Learning for Image Recognition,” 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016. [18] Renju International Federation, “The International Rules of Renju”. [Online].. Available:. http://www.renju.net/study/rifrules.php.. [Accessed Mar. 11, 2020]. [19] L. V. Allis, H. J. Herik, and M. P. H. Huntjens, “Go-Moku Solved By New Search Techniques,” Computational Intelligence, vol. 12, no. 1, pp. 7–23, 1996. [20] S. S. Lin, “Outer-Open Gomoku (Using Lin's Rule,proposed in 2011)”. [Online]. Available: http://www.csie.ntnu.edu.tw/~linss/LinRule-For-Five-in-a-row.htm. [Accessed Aug. 21, 2020]. [21] C. H. Chen, W. L. Wu, Y. H. Chen, and S. S. Lin, “Some 47.

(57) Improvements in Monte Carlo Tree Search Algorithms for Sudden Death Games”, ICGA Journal, vol. 40, no. 4, pp. 460-470, 2018. [22] 吳天宇,基於 AlphaZero General Framework 實現 Breakthrough 遊 戲。國立臺灣師範大學碩士論文, 2019。 [23] L. Allis, H. van den Herik, and M. Huntjens, “Go-moku solved by new search techniques,” Computation Intelligence, vol. 12, pp. 7-23, 1996. [24] 翁慈孝,電腦五子棋程式珠連設計與製作。國立東華大學碩士 論文,2004。 [25] 劉雲青,六子棋中一個結合迫著搜尋的防禦性策略。國立臺灣 師範大學碩士論文,2009。 [26] 張乃元,改進 AlphaZero 的大贏策略並應用於黑白棋。國立臺灣 師範大學碩士論文,2019。. 48.

(58) 附錄一:Alpha-zero-general 類別與方法 Alpha-zero-general 框架中各個模組定義之屬性與方法均引用 並修改自張乃元的碩士論文 [26],說明如下: 在 Game 類別中,定義此模組為儘管是不同的遊戲規則,但 只需確保符合預設輸出格式,即可在只更改 Game 類別後直接套 用 Alpha-zero-general 框架就能順利運作。而考量 DeepMind 的 AlphaZero 重現度與實作容易度,實作上有不同寫法,預設方法有 九項如下,方法說明以8 × 8五子棋為例: (1) getInitBoard():輸出遊戲初始盤面,資料結構上預設為 NumPy 之 Array,輸出為一個8 × 8盤面,元素皆為 0 之二 維陣列。尚未落子之空白位置設定為 0,未來若是黑子落 子後,則於該落子位置值為 1,白子落子位置值為-1。 (2) getBoardSize():輸出一個(x, y, z)的 tuple,分別代表棋盤的 長、寬與盤面個數。用以定義類神經網路輸入架構,須根 據本類別中 getIinitBoard()如何實作決定,例如 (8,8,1)。 (3) getActionSize():輸出一個正整數,代表棋盤上所有棋子 的合法走步數量。 (4) getNextState(board, player, action) : board 為 當 前 盤 面 的. 49.

(59) NumPy Array,player 代表當前玩家,為一整數,action 為 當前玩家採取的動作,是一個整數或字串。輸出為一個 (board, player)的 tuple,board 代表根據輸入之 board、 player 及 action,進行操作後產生的新盤面,player 為下一 個玩家。 (5) getValidMoves(board, player): board 代表當前盤面、player 代表當前玩家。輸出為一個長度與本類別中 getActionSize ()定義相同的 NumPy Array,代表根據當前盤面及玩家, 輸出該玩家之所有合法走步,若一走步合法,則設之為 1, 反之為 0。用以對類神經網路預測輸出的π進行遮罩,方 便後續蒙地卡羅樹搜索法展開該玩家的合法走步。 (6) getGameEnded(board, player): board 代表當前盤面、player 代表當前玩家。輸出為一浮點數,用以判別遊戲是否結束。 若是已經結束,則輸出 1 與-1,表示對當前玩家而言為勝 或負,分別回傳;和局為一極小正或負值,遊戲尚未結束 則回傳 0。 (7) getCannonicalForm(board, player):board 代表當前盤面、 player 代 表 當 前 玩 家 。 輸 出 為 一 長 度 與 board 一 樣 之 NumPy Array,用輸入盤面進行轉換,把盤面作上下倒置、 50.

(60) 鏡像處理後再行輸出,以符合後續盤面操作的方向。 (8) getSymmetries(board, pi): board 代表當前盤面、pi 代表經 過 MCTS 模擬後,所有合法走步的各個拜訪數量,長度為 與本類別中 getActionSize()定義的 NumPy Array 一致。輸 出為一 List,包含經由輸入之 board 與 pi 旋轉、對稱後得 出的八個 tuple (board, pi),用以此方式來增加訓練資料量。 (9) StringRePresentation(board):board 代表當前盤面。輸出為 一字串,代表以輸入 board 轉成之字串。當後續 MCTS 建 立搜尋樹時,可以此字串作為 dictionary 的盤面 Hash key 值。若搜尋樹的節點先前曾經拜訪過,之後從不同的節點 走到相同盤面時,仍有保存之前拜訪過的統計資料,不須 再從零重新計算。 1. 在 main 中的 Args 類別中定義此模組,預設屬性十六項如下: (1) numIters 屬性:為一正整數,Alpha-zero-general 框架中的 迭代次數。 (2) numEps 屬性:為一正整數,進行自我對下產生盤面時, 總共需要進行的遊戲局數。 (3) tempThreshold 屬性:為一正整數,自我對下產生盤面時,. 51.

(61) 為了產生多樣性的訓練資料,定義前幾步最後的落子採用 MCTS 拜訪次數除以 MCTS 總拜訪次數的機率。 (4) updateThreshold 屬性:為一浮點數,在更新類神經網路時, 可以與舊網路進行比較,若是新網路對戰舊網路對戰勝率 大於此值,即可更新。 (5) maxLenQueue 屬性:為一正整數,用以訂定最高儲存之盤 面訓練資料總量。 (6) numMCTSSims 屬 性 : 為 一 正 整 數 , 用 以 訂 定 每 一 步 MCTS 節點總共展開個數。 (7) arenaCompare 屬性:為一正整數,用以訂定新舊模型對戰 所需局數。 (8) Cpuct 屬性:為一浮點數,用以訂定 MCTS 裡,UCT 公式 平衡需求(exploitation)與探索需求(exploration)的參數。 (9) checkPoint 屬性:為一字串,用以建立儲存類神經網路模 型與訓練資料的資料夾路徑。 (10) loadMode 屬性:為一布林值,用以確認是否需要讀取類神 經網路模型。 (11) loadFolderFile 屬性:為一字串,用以讀取類神經網路模型 52.

(62) 的路徑與名稱。 (12) numsItersForTrainExamples 屬性:為一正整數,用以訂定 訓練資料要儲存多少個 numIters。 (13) lr 屬性:為一浮點數,用以訂定類神經網路訓練中所需 的 learning rate。 (14) epoch 屬性:為一正整數,用以訂定每個 numIters 以同樣 的訓練資料訓練時所需的次數。 (15) batchSize 屬性:為一正整數,用以訂定類神經網路訓練 中,每一批次輸入類神經網路進行訓練的資料數量。 (16) numChannels 屬性:為一正整數,用以訂定類神經網路 中,經過各個卷積層(Convolution Layer)時 filter 之個數。 2. 在 Coach 類別中,定義此模組,預設屬性六項與方法四項如下: (1) game 屬性:類別初始化時需要輸入的遊戲物件,此物件 的各種方法組合要能完成一次對局。 (2) args 屬性:類別初始化時需要輸入的參數物件,用於各項 參數設定。 (3) nnet 屬性:類別初始化時需要輸入的類神經網路物件,代 表最新版本的類神經網路模型,用於自我對戰產生盤面訓 53.

(63) 練資料,以及新舊模型對戰比較優劣時。 (4) pnet 屬性:類別初始化時輸入的類神經網路物件,代表上 一版本的類神經網路模型,用於新舊版本模型對戰比較優 劣時。 (5) mcts 屬性:類別初始化時輸入的 MCTS 搜尋方法物件,使 搜尋樹能夠進行盤面搜索並回傳動作。 (6) trainExamplesHistory 屬性:為一個 list,用於紀錄每一個 numIters 所產生的盤面訓練資料。 (7) excuteEpisode():輸出一個 list,包含多個(board, pi, z) tuple, 分別代表同一個類神經網路自我對戰中,每一步的盤面 board、該盤面經由 MCTS 模擬完成後各走步的機率分布 pi 值,以及這個盤面最後的勝負結果 Z值,作為類神經網路的 訓練資料, (8) saveTrainExamples(iteration):輸入 iteration 為一整數,代 表 當 前 訓 練 為 第 幾 個 numIters , 用 於 儲 存 本 類 別 中 trainExamplesHistory 屬性裡的盤面訓練資料。 (9) loadTrainExamples() : 用 於 讀 取 本 類 別 中 trainExamplesHistory 屬性裡的盤面訓練資料。. 54.

(64) (10) learn():藉由本類別中其他方法與屬性,完成同一類神經 網路的自我對戰、產生訓練資料並更新類神經網路。 3. 在 Arena 類別中,定義此模組以不同搜尋樹方法或神經模型進 行對戰,用於比較方法或類神經網路模型之優劣,預設屬性三 項與方法兩項如下: (1) player1 屬性:類別初始化時需要輸入搜尋樹物件,此物件 能夠輸入一個盤面,並產生輸出一個 action 進行對戰。 (2) player2 屬性:同 player1 屬性。 (3) game 屬性:類別初始化時需要輸入遊戲物件,此物件的 各種方法要能完成一次對局。 (4) playGame():輸出為一浮點數,代表 Player1 或 Player2 勝, 若 Player1 勝則回傳 1,Player2 勝則回傳-1,雙方平手回傳 1、-1 及 0 之以外的數。用以藉由呼叫 Game 物件的方法, 完成一次對局並回傳結果。 (5) playGames(arenaCompare):輸入 arenaCompare 為一整數, 代表進行遊戲對戰的局數;輸出一個 tuple(int, int, int)分別 代表 Player1 對戰 Player2 勝、負、和的統計資料。用以呼 叫本類別中的 PlayGame()方法完成遊戲、得出勝率。. 55.

(65) 4. 在 Network 類別中,建構出一個 tensorflow 的類神經網路實例, 並輸出 Policy 跟 Value,預設屬性六項與方法一項如下: (1) game 屬性:類別初始化時需要輸入的遊戲物件。 (2) args 屬性:類別初始化時需要輸入的參數物件。 (3) actionSize 屬性:為一個正整數,代表棋盤上所有棋子的 合法走步數量,用於決定類神經網路中 Policy 層有多少輸 出,可由呼叫 game 類別中的 getActionSize()方法取得。 (4) boardX 屬性:為一個正整數,代表輸入棋盤的 X 軸長度。 (5) boardY 屬性:為一個正整數,代表輸入棋盤的 Y 軸長度。 (6) boardChannels 屬性:為一個正整數,代表此網路中每個卷 積層有幾個特徵(fliter)層。 (7) build_net():根據自身的屬性,使用 tensorflow 套件建立起 一個類神經網路並返回。 5. 在 NetworkWrapper 類別中,定義一個區分類神經網路功能的類 別,例如訓練、預測、儲存權重以及讀取權重,以便讓其他程 式呼叫使用。預設屬性六項與方法四項如下: (1) game 屬性:類別初始化時需要輸入的遊戲物件。 (2) args 屬性:類別初始化時需要輸入的參數物件。 56.

(66) (3) actionSize 屬性:為一個正整數,代表棋盤上所有棋子的 合法走步數量。 (4) boardX 屬性:為一個正整數,代表輸入棋盤的 X 軸長度。 (5) boardY 屬性:為一個正整數,代表輸入棋盤的 Y 軸長度。 (6) boardChannels 屬性:為一個正整數,代表此網路中每個卷 積層有幾個特徵(fliter)層。 (7) net 屬性:類別初始化時需要輸入的類神經網路物件,用 於對類神經網路進行使用以及訓練。 (8) train(Examples):用於訓練類神經網路,輸入為訓練資料 所組成的 list,包含盤面(data)以及落子機率π和勝負 V 值 (label)。將 list 中的每筆 data 以及 label 取出後,使用反向 傳播演算法對類神經網路進行訓練並修正誤差。 (9) predit(board):用於使用類神經網路 net 對輸入的棋盤 array 預測π以及 V 值並且回傳。 (10) save_checkpoint (folder ,filename):將目前的類神經網路權 重以 filename 名字儲存至 folder 資料夾。 (11) load_checkpoint (folder ,filename):從 folder 資料夾中讀取 filename 的類神經網路權重檔案至目前的類神經網路 net。 57.

(67) 6. MCTS 類別藉由類神經網路預測來進行搜索,此類別用於負責 進行遊戲對下中的蒙地卡羅樹搜索法搜索,預設屬性九項與方 法兩項如下: (1) game 屬性:類別初始化時需要輸入的遊戲物件。 (2) nnet 屬性:類別初始化時需要輸入的參數物件。 (3) args 屬性:類別初始化時需要輸入的參數物件。 (4) Qsa 屬性:為一個字典,用於儲存某遊戲狀態(state)及採取 的動作(action)會得到的價值(value)。 (5) Nsa 屬性:為一個字典,用於儲存某遊戲狀態(state)及採取 的動作(action)的邊(edge)拜訪的次數。 (6) Ns 屬性:為一個字典,用於儲存遊戲狀態(state) 拜訪的次 數。 (7) Ps 屬性:為一個字典,用於儲存遊戲狀態(state)經由類神 經網路預測所得到的 policy。 (8) Es 屬性:為一個字典,用於儲存遊戲狀態(state)是否結束。 (9) Vs 屬性:為一個字典,用於儲存遊戲狀態(state)中的合法 走步。 58.

(68) (10) getActionProb(canonicalBoard,temp):用於輸入盤面搜索後 回傳走步結果。每次會呼叫若干次 search()進行蒙地卡羅 樹 搜 索 法 , 呼 叫 次 數 則 根 據 args 中 所 設 定 的 numMCTSSims 模擬次數決定,模擬完畢之後則根據溫度 temp 決定一個走步。如果 temp 設定為 0,則是強制選擇拜 訪次數最高的合法走步節點,最後回傳這一走步。 (11) search(canonicalBoard):用於進行一次蒙地卡羅樹搜索法, 每次進行搜索時用輸入的 canaonicalBoard,當作根(root)節 點開始進行搜索。. 59.

(69)

參考文獻

相關文件

• 實作工作坊可讓學員更深入學習成長,未 來還可以結合回饋會談,整併資深老師實 習輔導的建議,提供未來教育實習輔導修

透過自我的意志力 (Agency),再運用策略和方法 (pathway) 來達成目標。. 自我意志力

• 少年人自願或同意 與他人進行性活動 亦有可能 是有人利 用本身與少年人之間 權力差異 的特殊地位而對少年人在

工作紙 合作學習 同質分組 腦基礎 電子學習 自主學習 異質分組 翻轉教室 生活應用 提問技巧 探究式..

•接受學生的想法 (不糾正). •引導(不是提問)有目的的合作思考和探索

目標 策略 策略 策略 策略 成功準則 成功準則 成功準則 成功準則 評估方法 評估方法 評估方法 評估方法 時間表 時間表 時間表 時間表 負責人 負責人 負責人 負責人

 畢竟無眾生  諸法中無礙   無戒無忍辱  亦無有毀戒   無智亦無慧  亦無非智慧 

利用學習成果促進音樂科的學與教(新辦) 小學 有效的課堂器樂演奏學與教策略(新辦) 小學 小學音樂教師基礎教學知識課程(新辦)