• 沒有找到結果。

第二章 相關研究

2.2 開局庫

開局庫是下棋程式所使用的開局資料庫,開局庫中儲存了局面、棋步,以及 開局相關資訊,如圖二。當對局中的局面可以在開局庫中搜尋到時,下棋程式就 直接取用開局庫中的棋步來走棋,不必計算棋步。下棋程式使用開局庫可省去計 算棋步的時間,並且透由專家建立或由棋手棋譜自動建立的開局庫,讓下棋程式 借助棋手的經驗下棋,提升在開局階段的下棋強度。在開局階段,由於可能性的 走法太多,下棋程式要從所有可行性走法中計算出最佳棋步的方法,在有限的時 間下,無法計算完全部的棋步。另外,因為在開局階段存在很多不同的佈局理論,

所以無法用統一的規則描述成為演算法。由於上述兩個原因,導致下棋程式只依 靠計算棋步的方式,在開局階段的下棋表現很差。

Move # % Av

5. c3 296 56.3 2636 5. b4 50 48.0 2640 5. d3 35 45.7 2613 5.0-0 20 47.5 2633 5. Nc3 13 65.4 2619

圖 二、西洋棋軟體 Fritz 的開局庫資訊

左側為當前局面,右側為棋步與開局相關資訊。Move 表示當前局面的下一步棋 步;#為走過該棋步的盤數;%表示勝率;Av 表示走過該棋步的棋手們的平均棋 力分數。

5

開局庫對下棋程式的表現有很重要的影響,著名的例子是在 1995 年西洋棋 程式 Fritz 打敗了戰勝西洋棋世界冠軍的 IBM 公司的深藍(Deep Blue)西洋棋程式,

在兩個西洋棋程式的對戰中,由於 Deep blue 比 Fritz 提早結束開局庫的使用,導 致 Deep blue 在停止開局庫的使用後,接續走了一步造成在長期佈局上的失誤棋 步,讓 Fritz 輕鬆地獲勝了[7]。

對於開局庫的建置,有人工建置與自動建置兩種[38]。人工建置透由專家選 擇喜好的開局棋路存入開局庫;自動建置的方式由棋手的對局紀錄,以電腦取固 定深度的步數,將對局記錄中,固定深度內所有的棋步與局面資訊儲存至開局庫 中。在自動建置的開局庫上,Donninger 等人[7]在開局庫中,除了儲存棋步、局 面,以及棋局基本統計資訊,例如棋步的勝率、使用次數,另外還增加了西洋棋 相關資訊,例如此棋步被侵略型棋手下過的次數、此棋步被頂尖的棋手走過的次 數、此棋步在近期的比賽中被下過的次數。Donninger 提出的方法結合西洋棋專 業知識與棋局統計資訊,提升了開局庫的品質,也增強當時最強的西洋棋程式 Hydra 之棋力。

在開局庫的自動更新上,使用 Book learning 方法,Book learning 可以避免 下棋程式重複使用開局庫中導致輸棋的相同開局棋步,引導下棋程式在開局階段 走 至 有 利 的 局 面 。 Book learning[16] 是 一 種 增 強 式 學 習 (Reinforcement learning)[32]的技術,它的特色是回饋增強式訊息,以回饋的訊息幫助下棋程式 避免重複犯相同的棋步錯誤[8]、學習選擇開局棋步[15],以及擴增開局庫的棋步 [5]。

Buro[5]用 Book learning 擴增開局庫的方法,以 Negamax 演算法[11]為基礎 來選擇開局棋步並且增加新的棋步。Negamax 演算法搭配審局函數(Evaluation function),對於以樹狀結構表示對弈棋步的遊戲樹(Game tree),搜尋出遊戲樹中 的最佳棋步路徑。遊戲樹的每個節點都是走了某個棋步的局面狀態,根結點為當

6

下局面狀態,圖三中 P0節點局面往下有兩個可能的棋步,選擇走了 e5 棋步後,

則會到達 P1節點局面。Negamax 演算法(圖三)是一種搜尋演算法,運作的步驟 如下。首先,對於遊戲樹的葉節點,由評估局面好壞程度的審局函數(Evaluation function)計算出代表葉節點局面優劣程度的審局分數,正值為局面對白方好,負 值為局面對黑方好,由於西洋棋是屬於零和的棋類博弈,在遊戲的任意時刻,一 方獲得的利益等於對方的損失,雙方的利益所得加總為零。接著,以深度優先搜 尋走訪整個樹的每個節點,每個父節點的分數為其所有子節點分數取負值後的最 大值,以此方式疊代至根結點。最後,由葉節點分數一直疊代往上到達根結點的 路徑,成為根結點往下的最佳路徑。

圖 三、Negamax 演算法

開局庫的遊戲樹自動擴展,以開局庫中的開局棋步所建立之遊戲樹為基礎,

來進行擴展,根節點為初始局面,如圖三。自動擴展從 Negamax 演算法選擇的 最佳開局棋路的葉節點來擴展。在每個擴展階段,對最佳路徑的葉節點,往下計 算所有可能的棋步,並使用 Negamax 演算法找出,往下最佳棋步節點(審局分數 最高的棋步)與次好棋步節點(審局分數次高的棋步),將這兩個節點與其審局分數,

加入遊戲樹成為此葉節點的子節點。進一步,假如擴展的次好棋步節點達到樹的 高度(設定的步數深度),則將與其父節點同一層的次好棋步節點,將其加入遊戲

7

樹。如此一來,在完成每一次的擴展後,都可以保持最佳棋路上的每個內部節點 都有次好棋步節點(最佳替代節點)存在。

圖 四、Opening book tree

圖四中,假設初始最佳開局棋路為(V1,V2,V3),設定的棋度深度為 4。擴展從最佳 開局棋路的葉節點 V3開始,計算出往下的最佳棋步節點 V4與次好棋步節點 V5, 將此加入遊戲樹中。進一步,由於擴展的次好棋步節點 V5達到設定的步數深度,

將與 V3同一層的次好棋步節點 V6加入遊戲樹,完成一次擴展。擴展後新的遊戲 樹 T1的由 Negamax 演算法找出的最佳棋路變成(V1,V2,V6),下一次的擴展從葉 節點 V6開始,擴展成為遊戲樹 T2

相關文件