正在加載......


象棋專欄:象棋知識與電腦對弈程式的結合    首頁 > 象棋專欄

一、前言:
  1.現況:現代社會多元,許多傳統文化或技藝,受到各種大環境的衝擊,若沒有求新求進步,很容易就因此而式微。
古老的象棋除了以競賽模式進行之外,結合了電腦資訊科技,就可以讓人有耳目ㄧ新之感,因而便於推廣。
目前電腦對弈程式以西洋棋發展最為完善,已有多次打敗世界棋王的紀錄。而近來象棋程式也曾有打敗特級
大師的壯舉,目前預估電腦的棋力已經可至六、七段左右,以中國大陸(佼佼者如『象棋奇兵』)、台灣(
如『象棋世家』)發展較好。
  2.電腦象棋的功能:
   (1)訓練棋手:電腦不會失誤的特性,人類棋手與其對弈,更可訓練縝密的思考,以增加臨場穩定性。
   (2)資料整理與分析:電腦具有強大的記憶與運算功能,將棋譜資料輸入後,方便人類棋手查詢;且在寫入特殊的分
析程式後,便可運用其強大的運算力找出棋譜中尚未出現的實用新變。
  (3)推廣與行銷:電腦互動性強,並可製作高品質的聲光效果,而資訊業為當前主流,利用電腦與象棋的結合,推廣
上可以事半功倍。
   (4)學術性:有些原本尚未定論的殘局,經過電腦長期窮舉累積資料庫後,已經得到了結論。然而那些艱深的殘局在
實戰中因為限著影響,雖致使實用性較低,然而如能統整成學術論文,價值則極高。
   (5)輔助競賽棋規的判定:依據明確的定義邏輯,電腦已經能把所有相關的條件列出,使棋規程式能得到非常有參考
價值的判定。將來也許可以應用於競賽場所,輔助殘判裁決有爭議的棋局。

二、對弈程式的特點:
  1.計算力:具有電腦的速度、準度,並以窮舉為主,輔以具有的象棋知識來除錯之。
   2.棋力之客觀性:棋力不受其他條件影響,如體力、情緒。因而可以保持棋力的穩定性。
   3.知識永久性:得到的知識不會有忘記的疑慮,而且具有長久的累積性。
   4.具體直接的判斷模式:優劣勢的判斷偏向於絕對的技術性,沒有相對的策略面。對所有的對手均用一樣的模式來對弈。
(除非操作者對弈前事先設定之)

三、象棋知識與程式的結合方向:
  1.量化:必須給予一個score,來作為局勢優劣的判斷。
  2.絕對與相對:
   (1)演變:電腦弈棋的知識都是從絕對的部分開始,然後相對的部分逐漸建構,與絕對的部分相輔相成,甚而可能代替
絕對的部分。
   (2)定義:給予電腦知識必須明確而可行,抽象的部分需由人將之具體化。以《三子歸邊》為例,首先就要定義出『邊』
的範圍。
   (3)子力:
     絕對部分─即子多則優。
相對部分─如《寡士怯雙俥》、《缺象怕炮攻》、《殘局馬勝炮》等子力型式,將子力的絕對分數做個調整。
   (4)位置:
     絕對部分─即該兵種在棋盤上的絕對位置。舉例來說,兵在花心位置可得到的加分。
     相對部分─與其他子力(包括己方與他方)相對位置來做調整分數的依據。例如:無根車包受到紅俥牽制時,分數應
予調降。
  3.database的取得:使用資料庫來記憶一些基本定式,可大幅減少電腦的運算時間,並增加正確的機率。這裡多用於開局
與殘局。
   (1)開局:
1 將書面棋譜以人工來輸入。
2 使用程式將現有的電子棋譜轉檔成可用的資料庫。
3 實戰對局的統計:將他人下過的棋局(如網路對局等)下載後,將變例的勝敗和局數統計出來,來當做電腦選用開局的參考。
   (2)實用殘局:
1細分勝和(優劣)程度:對於定式殘局,給予電腦不同程度(例如:必勝、巧勝、必和等等)的分數。使電腦於後中
局兌子時,選擇有利於自己的子力。
2殘局窮舉程式:殘局子力較少,目前的發展,已經可以給予雙方特定的子力,將位置與走法完全窮舉,然後把所有棋
形與走法導入資料庫供電腦使用。例如:傌兵對士象全(包括所有位置與走法)。
4 棋規與循環的關係:弈棋常會進入循環盤面,有無犯例必須告訴電腦,否則實際臨局將窒礙難行。所以棋規判斷的知識對於
電腦而言,重要性不亞於弈棋的知識。(以下均以亞洲棋規為例)
   (1)允許與非允許着法的定義:首要必須定義『叫將』、『根』(包括真根或假根)、『捉』等等常見術語,然後進一步判
定是否為允許著法。
   (2)score的調整:進入允許的循環盤面時,依據電腦變著後,可接受的優劣程度分數的誤差範圍,使電腦自行判斷是否變
著。因此並非一定要變著,或者一定不變著。
   (3)算度的影響:進入循環盤面後,電腦所計算的深度必然減低,致使電腦的棋力大受影響。因此必須在程式上給予電腦切
斷循環盤面的計算過程。
 5 test與debug:經常性的測試,並依據發生的問題來解決錯誤,是電腦象棋不可或缺的步驟。以下簡單介紹可能遭遇的問題與
解決方案:
  (1)知識與程式互相干擾:給予的知識有時會與之前所寫的程式碼有所衝突,因此造成弈棋程式發生無法預期的錯誤。
(2)知識的重複性:不同概念的審局函數寫進去後,常常因為兩種知識中的一小部分有所重複,因而造成電腦對局勢判斷的
錯誤(通常是過於樂觀)。
  (3)知識的不合理性:專家給予電腦知識時,仍無法完全跳脫主觀意識,而造成電腦局勢判斷的弱點。
  (4)典型局面的test:為了避免上述問題在實際對弈中產生,常要找許多與該知識相關的盤面來進行測試,以衡量其正確性。
(5)新版vs舊版:讓加入知識的新版程式,與未加入知識的舊版程式相互對弈一定盤數,測試新版勝率是否提高。
  (6)人vs電腦:人與電腦的思維並不完全一樣,因此還需常常要跟人類棋手對弈,來找出電腦下棋的弱點。
  (7)評估計算深度與廣度的影響:當加入許多審局函數後,雖然電腦會得到較為全面的棋藝知識,然而卻常常造成計算深度
的下降。所以還需要衡量知識與算度孰輕孰重的取捨問題。

四、今後要致力的部份:
  1.象棋各階段的顯著差異:開、中、殘局概念完全不同,且過渡時期較為模糊,有時還會大幅跳躍,定義難度相當高。
   2.概念性部分缺乏自省:電腦弈棋程式雖然現在已有自我學習的功能,但其實均由勝敗結果存入開局面的database,而無法從
棋形概念做自我提升。
   3.知識增加後所影響的算度與速度:礙於硬體等條件影響,即使能不斷增加正確的知識,若無法解決算度獲速度減低的問題,
對棋力的影響不一定是正面的。

五、結語:在不斷充實或修正電腦弈棋的方向的同時,電腦對弈程式有助於訓練或幫助人類強化棋力與穩定性,且未知的象棋知識
(或有探討空間者)也可利用科技而求突破,因而創造傳統與現代化雙贏的局面。

《後記》本篇是以增進電腦棋力的學術性為主,市售商業軟體有時會故意設定讓電腦失誤,來增加弈棋的娛樂性不盡相同。然而以
推廣象棋而言,實為以不同的方式來達成一樣的目的,故均應該提倡。
    另外不論學術或商業上,或者以棋手或教學路線來說,人們應具有以下觀念:電腦是一種人發明的『工具』,給予人們的
應是『協助』,而非『威脅』。心量必須放寬,對人類的進步才有正面的影響。

郭武昌執筆、徐讚昇(中研院資訊所副研究員)審稿

  中華民國象棋文化協會 電話:02-2365-6585 傳真:02-2365-5787 
地址:10646臺北市大安區羅斯福路二段91號4樓之1 (古亭捷運站3號出口直走步行約1-2分鐘)

版權所有2015中華民國象棋文化協會 All Rights Reserved.