不知你有沒有看過最近的兩部影視劇:《后翼棄兵》與《棋魂》,或者是出版更久遠些的《棋魂》原作動漫呢?方正的盤格上,一招一式中暗藏玄機,沉穩縝密的執棋者共同營造著奧妙無窮的哲學空間,而棋局背后,最讓人觸動的或許更是棋手們那股在勝敗之間全力堅守的勁頭。
那么,你想了解一下AI的棋局嗎?拋開新聞里充斥的“戰勝人類”威脅論,試試以一種只把AI看作一個棋手的方式。你或許會發現,它其實也一樣,在長久的光陰里,一步步成長,與對手戰斗,也挑戰自己。還有點不同的是,它的成長不止屬于自己,而是更像一個象征,凝結著近百年間人類科學家探索人工智能技術的智慧與成績,講述著人類挑戰智能技術更高峰的熱血堅持。
第一階段 初露頭角挑戰任務:西洋跳棋

西洋跳棋是一種在8x8格的兩色相間的棋盤上進行的技巧游戲,以吃掉或堵住對方所有棋子去路為勝利,棋子每次只能向斜對角方向移動,但如果斜對角有敵方棋子并且可以跳過去,那么就把敵方這個棋子吃掉。
大戰回顧:

成功秘訣:自我對弈
在和羅伯特·雷尼的比賽之后,尼雷表示,計算機走得極其出色,甚至沒有一步失誤。這是他自1954年以來8年中遇到的第一個擊敗他的“對手”。那么,這次跳棋盤上的勝利,秘訣在哪里呢?通過自我對弈學習評價函數是西洋跳棋AI程序的核心技術,自我對弈學習評價函數的基本原理是利用兩個副本進行對弈,學習線性評價函數每個特征的權重,其中一個副本使用固定的評價函數來學習特征的權重,另一個副本則是通過與使用極小極大(minimax search)算法作對比來學習特征的權重。事實上,后來的AlphaGo圍棋AI程序以及深度學習領域的生成式對抗網絡(GAN)都采用了類似的思想。
第二階段一場持續半世紀的挑戰挑戰任務:國際象棋

國際象棋起源于亞洲,后由阿拉伯人傳入歐洲,成為國際通行棋種,也是一項受到廣泛喜愛的智力競技運動。國際象棋棋盤由橫、縱各8格、顏色一深一淺交錯排列的64個小方格組成,棋子共32個,分為黑、白兩方,每方各16個。和8x8的西洋跳棋相比,國際象棋的狀態復雜度(指從初始局面出發,產生的所有合法局面的總和)從1021上升到1046,博弈樹復雜度(指從初始局面開始,其最小搜索樹的所有葉子節點的總和)也從1031上升到10123。人工智能研究者對國際象棋的挑戰持續了半個世紀。
大戰回顧:

成功秘訣:
● 成功秘訣之一:國際象棋加速芯片“深藍”計算機在硬件上將通過計算機處理器與象棋加速芯片相結合,采用混合決策的方法,即在自動處理器上執行運算分解任務,交給國際象棋加速芯片并行處理復雜的棋步自動推理,然后將推理得到的可能行棋方案結果返回通用處理器,最后由通用處理器決策出最終的行棋方案。97型“深藍”與96型相比,運算速度差不多提高了兩倍,國際象棋加速芯片的升級功不可沒。升級后的國際象棋加速芯片能夠從棋局中抽取更多的特征,并在有限的時間內計算出當前盤面往后12步甚至20步的行棋方案,從而讓“深藍”更準確地評估盤面整體趨勢。
● 成功秘訣之二:知識規則引擎“深藍”在軟件設計上采用了超大規模知識庫結合優化搜索的方法。一方面,“深藍”儲存了國際象棋100多年來70萬份國際特級大師的棋譜,能利用知識庫在開局和殘局階段節省處理實踐并得出更合理的行棋方案;另一方面,“深藍”采用Alpha-Beta剪枝搜索算法和基于規則的方法對棋局進行評價,通過縮小搜索空間的上界和下界提高搜索效率,同時可根據旗子的重要程度、旗子的位置、棋子對的關系等特征對棋局進行更有效的評價。規則引擎是一種遷入在應用程序中的組件,能夠實現將業務決策從應用程序代碼中分離出來,其核心是獲取knowledge(知識)。此外,規則引擎使用產生式規則“IFTHENRULE”表達邏輯將知識應用到特定的數據上。
第三階段 觸摸“棋魂”?挑戰任務:圍棋

8x8格國際象棋的狀態復雜度為1046,博弈樹復雜度為10123。到了19x19格的圍棋,其狀態復雜度已上升到10172,博弈樹復雜度則達到驚人的10360,因此被視為人類在棋類人機對抗中最后的堡壘。破局出現在2016年,Deep Mind公司開發出的AlphaGo在沒有任何讓子的情況下,以5:0完勝歐洲圍棋冠軍、職業二段選手樊麾。并在接下來的一系列博弈中勢如破竹。而后,AlphaGo Zero作了更進一步的升級和改進,將策略網絡和價值網絡整合在一起,使用純粹的深度強化學習方法進行端到端的自我對弈學習。
大戰回顧:

成功秘訣:
● 成功秘訣之一:蒙特卡羅樹搜索在機器博弈中,每步行棋方案的運算時間、堆棧空間都是有限的,只能給出局部最優解,因此,2006年提出的蒙特卡羅樹搜索就成為隨機搜索算法的首選。蒙特卡羅樹搜索是一種用于某些決策過程的啟發式搜索算法,它被廣泛用于科學和工程研究的算法仿真中,是現行圍棋程序的核心組件。有專家曾通俗地解釋什么是蒙特卡羅樹搜索:假如籃子里有1000個蘋果,讓你每次閉著眼睛找一個最大的,不限制挑選次數。于是,你可以閉著眼隨機拿一個,然后下一次再隨機拿一個與第一個比,留下大的,循環往復,拿的次數越多,挑出最大蘋果的可能性也就越大,但除非你把1000個蘋果都挑一遍,否則你無法讓肯定最終挑出來的就是最大的一個。這就是蒙特卡羅樹搜索。它給予了智能體推理的能力,智能體不僅可以根據過去的經驗采取更好的策略,也可以根據對未來的推測幫助自己選擇合適的方案。
● 成功秘訣之二:策略網絡與價值網絡策略網絡是一個模型,它使用深度學習、監督學習、增強學習等方法來預測下一步棋“大概”該走哪里。策略網絡的輸入是當前的棋局,輸出的是棋子最可能的步法,棋盤上的每一個空位都對應一個概率。AlphaGo面對一個局面時下一步大概怎么走已經了然于胸,這是因為它已經從KGS圍棋服務器上向職業選手學習了3000萬個局面的下一步,而且學習成果非常驚人;不僅記住了某個局面的下一步怎么走,還記住了相似局面的下一步步法,所以當AlphaGo學習的局面足夠多時,就掌握了所有不同局面的下法。這種學習叫做“監督學習(supervised learning)”對于AlphaGo而言,它所學習的職業棋手的棋譜就是它的老師。價值網絡也是一個監督的強化學習的模型,多次線下自我對弈學習的結果為價值網絡提供監督信息。它的模型結構與策略網絡類似,但學習目標不同,策略網絡的目標是當前局面的下一步棋如何走,而價值網絡學習的目標是走這一步后贏的概率,主要用于在線下下棋時得到平均的形勢判斷。
● 成功秘訣之三:強化學習強化學習是機器學習的一個重要分支。有監督學習的目標是從一個已經標記的訓練集中進行學習,無監督學習的目標是從一堆未標記樣本中發現隱藏的結構,而強化學習的目標則是在當前行動和未來狀態中獲得最大回報。在邊獲得樣例邊學習的過程中,不斷迭代“在當前模型的情況下,如何選擇下一步的行動才對完善當前的模型最有利”的過程直到模型收斂。
總體來說,AlphaGo在以下四個方面取得重要突破:
01 自學習能力AlphaGo的對弈知識是通過深度學習方法自己掌握的,而不是像“深藍”那樣編在程序里,它是通過大量棋譜和自我對弈完成的。這種深度學習能力,使得AlphaGo能不斷學習進化,產生了很強的適應性,而適應性造就了復雜性,復雜自適應性又是智能演化最普遍的途徑。
02 捕捉經驗能力找到了一種捕捉圍棋高手的經驗,即“棋感直覺”的方法。所謂棋感,就是通過訓練得到的直覺,“只可意會,不可言傳”。AlphaGo通過深度學習產生的策略網絡(走棋網絡),在對抗過程中可以實現局部步法的優化;通過增強學習方法生成的估值網絡,實現對全局不間斷的評估,用于判定每一步棋對全局棋勝負的影響。此外,還可以通過快速走子算法和蒙特卡羅樹搜索機制,加快走棋速度,實現對弈質量和速度保證的合理折中。這些技術使得計算機初步具備了既可以考慮局部得失,又可以考慮全局整體勝負的能力。而這種全局性的“直覺”平衡能力,正是過去人們認為人類獨有、計算機難以做到的。
03 發現創新能力發現了人類沒有的圍棋步法,初步展示了機器發現“新事物”的“創造性”。從觀戰的超一流棋手討論和反應可以看出,AlphaGo的下發有些超出了他們的預料,但事后評估又認為是好棋。這意味著AlphaGo的增強學習算法,甚至可以從大數據中發現人類千百年來還未發現的規律和知識,為人類擴展自己的知識體系開辟了新的認知通道。也難怪會有人感嘆AlphaGo難道是《棋魂》中的SAI轉世?
04 方法具有通用性這與很多其他博弈程序非常不同,通用性意味著對解決其他問題極具參考價值,AlphaGo運用的方法,實際上是一種解決復雜決策問題的通用框架,而不僅是圍棋領域的獨門秘籍。自學習的能力,使得計算機有了進化的可能,通用性則使其不再局限于圍棋領域。//////////從國際跳棋到堪稱是世界上最復雜棋盤游戲的圍棋,AI棋手不斷突破著技術的上限。棋盤競賽的喧囂背后,是機器博弈技術的進步和發展歷程。最后,和你分享我們在2001年的《棋魂》動畫版中,發現的這樣一段對話:

——“神之一手會從這里面(電腦)誕生”——“據說電腦下圍棋要超過人類還要花一百年吶”
來源:中國科學院自動化研究所
編輯:C&C