先說結論,增大隨機性,減少策略性。規則越復雜,策略性越高,越有利於AI。
古早的棋類AI依賴於對規則的理解,對棋子的價值(棋力、位置和對其他棋子的影響等)進行賦值,並遍歷所有的可能性,從而找出最優的走法。比如打敗西洋棋大師的「更深的藍」。
深藍是平行運算的電腦系統,建基於RS/6000 SP,另加上480顆特別制造的VLSI象棋晶片。下棋程式以C語言寫成,執行AIX作業系統。 1997年版本的深藍運算速度為每秒2億步棋,是其1996年版本的2倍。1997年的深藍可搜尋及估計隨後的12步棋,而一名人類象棋好手大約可估計隨後的10步棋。每增加1步棋的搜尋能力約等於增加下棋強度約80 ELO分。1996年2月10日,深藍首次挑戰西洋棋世界冠軍卡斯巴羅夫,但以2-4落敗。比賽在2月17日結束。其後研究小組把深藍加以改良——它有一個非官方的昵稱「更深的藍」(Deeper Blue)——1997年5月再度挑戰卡斯巴羅夫,比賽在5月11日結束,最終深藍電腦以3.5–2.5擊敗卡斯巴羅夫,成為第一個在標準比賽時限內擊敗西洋棋世界冠軍的電腦系統。
對於這樣的棋類AI,我們可以透過增大遊戲規則的復雜度來增加棋子價值的不確定性,從而加大計算量,使得AI無法找出最優解。比如,當年的圍棋就是這樣的。
一般認為,電腦要在圍棋中取勝比在西洋棋等遊戲中取勝要困難得多,因為圍棋的下棋點極多,分支因子遠多於其他遊戲,而且每次落子對情勢的好壞飄忽不定, 諸如暴力搜尋法、Alpha-beta剪枝、啟發式搜尋的傳統人工智慧方法在圍棋中很難奏效。圍棋無法僅透過尋找最佳棋步來解決。遊戲一盤平均約有150步,每一步平均約有200種可選的下法,這意味著有太多需要解決的可能性。
但是,新的棋類AI已經沒必要解讀這些規則了。新的AI只要經過大量的對戰,就可以自主地找到最優解,像AlphoGo那樣。
AlphaGo使用蒙地卡羅樹搜尋 (Monte Carlo tree search),借助估值網路(value network)與走棋網路(policy network)這兩種深度神經網路 ,透過估值網路來評估大量選點,並透過走棋網路選擇落點。AlphaGo最初透過模仿人類玩家,嘗試匹配職業棋手的過往棋局,其資料庫中約含3000萬步棋著。後來它達到了一定的熟練程度,它開始和自己對弈大量棋局,使用強化學習 進一步改善它。因此,棋類遊戲的策略如果過於復雜,很可能人類自己都無法深刻理解並完全掌握,從而出現像圍棋中的「神之一手」或「迷之勝利」這樣的情況。那麽,AI很可能透過大量對戰,先於人類掌握了最優步驟或者必勝步驟。
為了使人類在棋類遊戲中保持一定的勝率,我們需要增加隨機性,而減少策略性。簡單來說,就是將AI拉低到和人類一樣的水平,大家都靠天吃飯,勝負看臉。需要指出的是,這裏所說的隨機性,指的是「真隨機性」,而不是現在一些電子遊戲中的「假隨機性」。否則,AI還是能夠透過對機率的預測而完爆人類。
極致的隨機性遊戲就是擲骰子,不過跟AI玩擲骰子有點無聊。我們可以在棋類遊戲(比如象棋)的基礎上加入擲骰子環節。每一回合先擲骰子,贏的走棋;吃子之前先擲骰子,贏了才能吃,輸了這步作廢。這樣一來,應該能將AI的勝率降下來。不過還是有點無聊啊。
以上。