AlphaZero進化論:從零開始,制霸所有棋類遊戲
2017年末,DeepMind推出了AlphaZero——一套能夠從零開始自主學習國際象棋、將棋(類似於日本版的國際象棋)以及圍棋的技藝,從而全面超越各專案世界冠軍的系統。
對於這一系統帶來的初步成果,整個公司的研發人員都感到非常興奮,並很高興看到國際象棋界成員對此做出的熱烈回應。他們在AlphaZero的棋藝當中發現了一種突破性、高度動態且“不同於傳統”的對弈風格,這也使其完全不同於以往存在過的任何棋類遊戲引擎。
今天,AlphaZero登上了著名的《科學》雜誌,並以封面論文的形式發表,它背後的公司DeepMind也在官方部落格上撰文,為這一系統取得的最新成就進行了詳細解析,InfoQ將全文翻譯整理如下:
今天,我們很高興地釋出AlphaZero的完整評估報告,這篇論文已經公開發表在《科學》雜誌上:
http://science.sciencemag.org/content/362/6419/1140
評審編輯已經確認並更新了這些初步結果。論文描述了AlphaZero如何快速學習每一種棋類,包括在僅獲得遊戲基本規則、但完全不存在內建指導的前提下從隨機遊戲開始,一步步成長為有史以來最強大的棋手。
這種從零開始學習每種棋類的能力由於不受人類固有思維的約束,因此產生出一種獨特、有悖於傳統,但卻極具創造性與動態思考的對弈風格。國際象棋大量馬修·薩德勒(Matthew Sadler)與女子國際象棋大師娜塔莎·里根(Natasha Regan)在即將於明年1月出版的《遊戲規則改變者(Game Changer)》一書中分析了AlphaZero進行的數千盤國際象棋對弈,並發現其風格不同於任何傳統的國際象棋引擎。馬修表示,“這就像是發現了古代棋藝大師的祕籍一樣。”
傳統的國際象棋引擎——包括世界計算機國際象棋冠軍Stockfish與IBM廣為人知的“深藍”——依賴於數千條由頂尖人類棋手提供的規則與啟發式方法。這些資訊嘗試解釋遊戲中的每一種可能性。將棋同樣遵循此理,其程式僅適用於將棋本身,但採用與國際象棋程式類似的搜尋引擎與演算法。
AlphaZero採取的方法則完全不同,其利用一套深層神經網路與大量通用型演算法取代了那些手工製作的規則,而且這些演算法除了棋類的基本規則之外一無所知。
在國際象棋當中,AlphaZero僅用了4個小時便成功擊敗Stockfish; 在將棋方面,其擊敗Elmo則僅用掉2個小時; 至於圍棋,AlphaZero在30個小時即擊敗曾於2016年壓倒世界冠軍李世石的AlphaGo版本。注意:每個訓練步驟代表4096個盤面位置。
為了學習每種棋類,這套未經訓練的神經網路會通過一種被稱為強化學習的實驗與試錯過程完成數百萬盤自我對弈。起初,其完全是在隨機亂下; 但隨著時間的推移,系統會從勝利、失敗以及平局當中學習經驗,從而調整神經網路引數,使其更有可能在未來的選擇中做出有利判斷。網路所需要的訓練量取決於遊戲的風格與複雜程度——國際象棋大約需要9個小時,將其大約需要12個小時,而圍棋則需要13天。
這套經過訓練的網路被用於指導一種搜尋演算法——被稱為蒙特卡洛樹搜尋(簡稱MCTS)——坐而選擇當前盤面下最為有利的棋步。對於每一步棋,AlphaZero所需要的位置搜尋量只相當於傳統國際象棋引擎的一小部分。例如在國際象棋當中,AlphaZero每秒只需要搜尋6萬個位置; 相比之下,Stockfish則需要搜尋大約6000萬個位置。
經過全面訓練之後,這套系統被用於對抗最強大的傳統國際象棋(Stockfish)與將棋(Elmo)引擎,甚至還包括AlphaZero“一奶同胞”的大哥AlphaGo——全球最強圍棋棋手。
每款程式都執行在專門設計的硬體之上。Stockfish與Elmo採用44個CPU核心(與TCEC世界錦標賽時的情況保持一致),而AlphaZero與AlphaGo Zero則使用一臺配備有4個第一代TPU與44個CPU核心的機器。第一代TPU的推理速度與英偉達Titan V GPU等商用硬體大體相似——當然,二者的架構差別巨大,不具備直接可比性。
所有比賽均採用單場3小時制,每步棋額外增加15秒。
在所有對抗當中,AlphaZero都以毫無爭議的方式擊敗了對手:在國際象棋方面,AlphaZero擊敗了2016年TCEC(第9季)世界錦標賽冠軍Stockfish——其中AlphaZero獲得155場勝利,且敗率僅為千分之六。為了驗證AlphaZero的穩健性,我們還刻意為雙方準備了由人類常規開盤形成的殘局。無論是哪種殘局,AlphaZero仍能順利擊敗Stockfish。此外,我們亦參加了2016年TCEC世界錦標賽,並在比賽中對陣近期剛剛進行升級的Stockfish版本——其中一種Stockfish變體採用了非常強大的開局走法組合,但AlphaZero仍無一例外全部取勝。
在將棋方面,AlphaZero擊敗了在2017年CSA世界錦標賽上勝出的Elmo版本,勝率為91.2%。
在圍棋方面,AlphaZero戰勝了AlphaGo Zero,勝率為61%。
然而,更令人著迷的是AlphaZero在對弈過程中展現出的行棋風格。例如,在國際象棋當中,AlphaZero在自我學習與訓練當中獨立發現並使用了常見的人類行棋模式,例如開口、保王以及兵陣等等。然而,由於自學成才且完全不受傳統觀念的影響,AlphaZero也發展出了自己的直覺與策略。其提出的一系列令人興奮的新穎想法,大大擴充了幾個世紀以來人類對於國際象棋戰略的理解。
棋手們首先注意到的,一定是AlphaZero的行棋風格。馬修·薩德勒表示,“它的走法充滿了目的性與攻擊性,始終圍繞著對方的王進行謀劃。”以此為基礎,AlphaZero還擁有著高度動態化的對弈能力,這最大限度提高了其棋路的靈活性與移動性,同時最大限制著對方棋子的靈活性與移動性。與直覺相反,AlphaZero似乎對於“棋子角色”的重視程度較低。現代競技專案的一大基礎特性,所有參與方都具有價值。如果某一選手在棋盤上的棋子價值高於對方,則表示前者在棋子角色方面具有優勢。但不同於此,AlphaZero更傾向於在開局之初就犧牲這些棋子角色,從而獲得更為長遠的形勢性收益。
馬修指出,“令人印象深刻的是,它在各種角色與位點上都表現出這種強烈的行棋風格。”他同時觀察到,AlphaZero在起步階段會非常刻意地以“與人類非常相似的意圖”設計開局。
馬修解釋稱,“傳統引擎非常穩定,幾乎不會出現明顯的錯誤。但在面對沒有具體且可參考解決方案的位置時,則顯得束手無策。相比之下,AlphaZero則能夠在這樣的位置上表現出「感覺」、「洞察」或者「直覺」。”
這種獨特的能力是其它傳統國際象棋引擎所不具備的,而且也在最近的世界國際象棋錦標賽當中為國際象棋愛好者們帶來了新的思路與啟發。馬格努斯·卡爾森(Magnus Carlsen)與法比亞諾·卡魯安納(Fabiano Caruana)之間的比賽就有所體現,《遊戲規則改變者》一書就對此做出了進一步探討。娜塔莎·里根表示,“對AlphaZero以及頂級國際象棋引擎乃至頂級大師的行棋方式進行分析,著實令人著迷。”
AlphaZero帶來的經驗,也與2016年AlphaGo與傳奇圍棋大師李世石間的對弈有所呼應。在此次比賽當中,AlphaGo走出了許多極具創造性的取勝手法,包括在第二場比賽中只用37步即告勝出——這徹底推翻了數百年來人類對於圍棋運動的理解。這些棋步已經被包括李世石本人在內的眾多棋手奉為經典案例。在評論第37步時,李世石表示,“我一直認為AlphaGo屬於那種基於概率的計算工具,畢竟它只是一臺機器。但在看到這一步時,我改變了看法。不可否認,AlphaGo擁有真正的創造力。”
與圍棋一樣,我們也對AlphaZero在國際象棋領域表現出的創造性感到興奮。自從計算機時代開始以來,國際象棋一直是人工智慧技術面臨的主要挑戰——包括巴貝奇、圖靈、夏農以及馮·諾伊曼在內的眾多早期開拓者都在努力設計能夠解決國際象棋問題的方案。但AlphaZero的適用於並不僅限於國際象棋、將棋或者圍棋。為了建立起能夠解決各類現實問題的智慧系統,我們要求其具備靈活性並能夠適應各種新情況。雖然我們已經在實現這一目標方面取得了一定進展,但其仍然是人工智慧研究中的一大核心挑戰。目前的系統雖然能夠以極高的標準掌握特定技能,但卻往往無法解決甚至只經過略微修改的任務。
AlphaZero這種掌握三種不同複雜棋類(甚至有可能涵蓋一切完美資訊類專案)的能力代表著克服這一問題的重要一步。這證明單一演算法完全有可能在不同的具體規則之下學習並發現新知識。另外,儘管尚處於早期發展階段,但AlphaZero的創造性見解加上我們在AlphaFold等其它專案中觀察到的振奮人心的結果,使我們對於建立通用學習系統這一目標充滿信心。這意味著我們有望發現更多新的解決方案,從而攻克那些最重要也最複雜的科學問題。
下載論文:
https://deepmind.com/documents/260/alphazero_preprint.pdf
原文連結:
https://deepmind.com/blog/alphazero·shedding·new·light·grand·games·chess·shogi·and·go/
會議推薦:
12月20-21,AICon全球人工智慧與機器學習技術大會將於北京盛大開幕,學習來自Google、微軟、BAT、360、京東、美團等40+AI落地案例年終總結,與國內外一線技術大咖面對面交流,不見不散。
相關文章
- 揭秘谷歌AlphaZero:從AlphaGo進化 如何通殺棋類遊戲谷歌Go遊戲
- 揭祕谷歌AlphaZero:從AlphaGo進化 如何通殺棋類遊戲谷歌Go遊戲
- 從零開始實現放置遊戲(一)遊戲
- 從零點五開始用Unity做半個2D戰棋小遊戲(一)Unity遊戲
- 貝葉斯分類器詳解 從零開始 從理論到實踐
- 從零開始學機器學習——聚類視覺化機器學習聚類視覺化
- 從零開始
- 從零開始做一個SLG遊戲(七):遊戲系統以及配置表遊戲
- 從零開始:用REACT寫一個格鬥遊戲(二)React遊戲
- 從零開始:用REACT寫一個格鬥遊戲(一)React遊戲
- 從零開始實現放置遊戲(六):Excel批量匯入遊戲Excel
- 從零開始實現放置遊戲(一):整體框架搭建遊戲框架
- 不怕從零開始,只怕從未開始!
- 遊戲進化論:從超休閒到混合休閒遊戲
- 如何製作魂類箱庭?從零開始的理論與實戰精粹
- 智慧體的ChatGPT時刻!DeepMind通用AI向人類玩家進化,開始理解遊戲智慧體ChatGPTAI遊戲
- 從零開始,使用Dapr簡化微服務微服務
- 從零開始學機器學習——瞭解聚類機器學習聚類
- 併發程式設計從零開始(十一)-Atomic類程式設計
- 從零開始實現放置遊戲(三):後臺管理系統搭建遊戲
- 從零開始做一個SLG遊戲(一):六邊形網格遊戲
- 從零開始做一個SLG遊戲(八):配置表載入元件遊戲元件
- 從零開始搭建前後端分離論壇 一後端
- flutter 從零開始-1Flutter
- 從零開始學PythonPython
- 從零開始學Spring Boot系列-外部化配置Spring Boot
- 從零開始做一個SLG遊戲(六):UI系統擴充套件遊戲UI套件
- 從零開始做一個SLG遊戲(三):用unity繪製圖形遊戲Unity
- 從零開始做一個SLG遊戲(四):UI系統之主介面搭建遊戲UI
- 文案策劃必修課(1):從零開始的遊戲劇情創作遊戲
- 從零開始學機器學習——初探分類器機器學習
- 併發程式設計從零開始(十四)-Executors工具類程式設計
- phaser3入門教程-從零開始開發一個打磚塊遊戲遊戲
- 學習程式設計從遊戲開始程式設計遊戲
- java 從零開始手寫 RPC (04) -序列化JavaRPC
- 從零開始學Python:20課-函式使用進階Python函式
- 從零開始做一個SLG遊戲(五):UI系統之彈窗功能遊戲UI
- 從零開始--webpack 4 配置Web