【弈客圍棋APP 記錄你的圍棋人生】
AlphaGo Zero = 啟發式搜索 + 強化學習 + 深度神經網絡,你中有我,我中有你,互相對抗,不斷自我進化。使用深度神經網絡的訓練作為策略改善,蒙特卡洛搜索樹作為策略評價的強化學習算法。
人工智慧長期以來的一個目標是創造一個能夠在具有挑戰性的領域,以超越人類的精通程度學習的算法,「tabularasa」(譯註:一種認知論觀念,認為指個體在沒有先天精神內容的情況下誕生,所有的知識都來自於後天的經驗或感知)。此前,AlphaGo成為首個在圍棋中戰勝人類世界冠軍的系統。AlphaGo的那些神經網絡使用人類專家下棋的數據進行監督學習訓練,同時也通過自我對弈進行強化學習。
在這裡,我們介紹一種僅基於強化學習的算法,不使用人類的數據、指導或規則以外的領域知識。AlphaGo成了自己的老師。我們訓練了一個神經網絡來預測AlphaGo自己的落子選擇和AlphaGo自我對弈的贏家。這種神經網絡提高了樹搜索的強度,使落子質量更高,自我對弈迭代更強。從「tabula rasa」開始,我們的新系統AlphaGo Zero實現了超人的表現,以100:0的成績擊敗了此前發表的AlphaGo。
全新的強化學習:自己成為自己的老師
AlphaGo Zero 得到這樣的結果,是利用了一種新的強化學習方式,在這個過程中,AlphaGo Zero 成為自己的老師。這個系統從一個對圍棋遊戲完全沒有任何知識的神經網絡開始。然後,通過將這個神經網絡與一種強大的搜索算法相結合,它就可以自己和自己下棋了。在它自我對弈的過程中,神經網絡被調整、更新,以預測下一個落子位置以及對局的最終贏家。
這個更新後的神經網絡又將與搜索算法重新組合,進而創建一個新的、更強大的 AlphaGoZero 版本,再次重複這個過程。在每一次迭代中,系統的性能都得到一點兒的提高,自我對弈的質量也在提高,這就使得神經網絡的預測越來越準確,得到更加強大的 AlphaGo Zero 版本。
這種技術比上一版本的 AlphaGo 更強大,因為它不再受限於人類知識的局限。相反,它可以從一張白紙的狀態開始,從世界上最強大的圍棋玩家——AlphaGo 自身——學習。
AlphaGo Zero 在其他方面也與之前的版本有所不同:
AlphaGo Zero 只使用圍棋棋盤上的黑子和白子作為輸入,而上一版本的 AlphaGo 的輸入包含了少量人工設計的特徵。
它只使用一個神經網絡,而不是兩個。以前版本的 AlphaGo 使用一個「策略網絡」(policy network)來選擇下一個落子位置和一個「價值網絡」(valuenetwork)來預測遊戲的贏家。這些在 AlphaGo Zero 中是聯合進行的,這使得它能夠更有效地進行訓練和評估。
AlphaGo Zero 不使用「走子演算」(rollout)——這是其他圍棋程序使用的快速、隨機遊戲,用來預測哪一方將從當前的棋局中獲勝。相反,它依賴於高質量的神經網絡來評估落子位置。
上面的所有這些不同之處都有助於提高系統的性能,使其更加通用。但使得這個系統更加強大和高效的是算法的改變。
在進行了3天的自我訓練後,AlphaGoZero 在100局比賽中以100:0擊敗了上一版本的 AlphaGo——而上一版本的 AlphaGo 擊敗了曾18次獲得圍棋世界冠軍的韓國九段棋士李世石。經過 40 天的自我訓練後,AlphaGo Zero 變得更加強大,超越了「Master」版本的 AlphaGo——Master曾擊敗世界上最優秀的棋士、世界第一的柯潔。
在經過數以百萬計的 AlphaGo vs AlphaGo 的對弈後,這個系統逐漸從零開始學會了下圍棋,在短短幾天內積累了人類數千年積累的知識。AlphaGo Zero 也發現了新的知識,開發出非常規的策略和創造性的新下法,這些新下法超越了它在與柯潔和李世乭比賽時發明的新技巧。
儘管目前仍處於早期階段,但 AlphaGo Zero 成為了朝著這個目標邁進的關鍵一步。DeepMind 聯合創始人兼 CEO Demis Hassabis 評論稱:「AlphaGo在短短兩年裡取得了如此令人驚嘆的成果。現在,AlphaGo Zero是我們項目中最強大的版本,它展示了我們在更少的計算能力,而且完全不使用人類數據的情況下可以取得如此大的進展。
「最終,我們希望利用這樣的算法突破來幫助解決現實世界的各種緊迫問題,例如蛋白質摺疊或新材料設計。如果我們能在這些問題上取得與AlphaGo同樣的進展,就有可能推動人類理解,並對我們的生活產生積極影響。」
AlphaGo Zero 技術細節拆解:將價值網絡和策略網絡整合為一個架構,整合蒙特卡洛搜索不斷迭代。
新方法使用了一個深度神經網絡 fθ,參數為 θ。這個神經網絡將原始棋盤表徵 s(棋子位置和歷史)作為輸入,輸出落子概率和一個值 (p, v)= fθ(s)。
落子概率向量 p 表示選擇下每一步棋(包括不下)的概率。值 v 是一個標量估值,衡量當前棋手在位置 s 獲勝的概率。
這個神經網絡將最初的 AlphaGo(下文中的AlphaGo Fan 和 AlphaGo Lee,分別指對戰樊麾和對戰李世石的版本)的策略網絡和價值網絡整合到一個架構裡,含有很多基於卷積神經網絡的殘差模塊,這些殘差模塊中使用了批正則化(batch normalization)和非線性整流函數(rectifier nonlinearities)。
AlphaGo Zero 的神經網絡使用自我對弈數據做訓練,這些自我對弈是在一種新的強化學習算法下完成的。在每個位置 s,神經網絡 fθ 都會進行蒙特卡洛樹搜索(MCTS)。MCTS 輸出下每步棋的落子概率 π。這樣搜索得出的概率通常比神經網絡 fθ(s) 的原始落子概率 p 要更加強一些;MCTS 也因此可以被視為一個更加強大的策略提升 operator。
系統通過搜索進行自我對弈,也即使用增強的基於 MCTS 的策略選擇下哪步棋,然後使用獲勝者 z 作為價值樣本,這個過程可以被視為一個強有力的策略評估 operator。
這一新的強化學習算法的核心思想是,在策略迭代的過程中,反覆使用這些搜索 operator:神經網絡的參數不斷更新,讓落子概率和價值 (p,v)= fθ(s) 越來越接近改善後的搜索概率和自我對弈贏家 (π, z)。這些新的參數也被用於下一次自我對弈的迭代,讓搜索更強。下面的圖1 展示了自我對弈訓練的流程。
AlphaGo Zero 自我對弈訓練的流程示意圖
圖1:AlphaGo Zero 自我對弈訓練的流程:a. 程序自己和自己下棋,標記為s1, ..., sT。在每個位置st,一個MCTS αθ被執行(見圖2),使用最新的神經網絡fθ。每個走子選擇的依據是通過MCTS, at ? πt計算的搜索概率。最終的位置sT根據遊戲規則計算對局的最終勝者z。b. AlphaGo Zero 中神經網絡的訓練。該神經網絡將棋盤位置st作為輸入,與參數θ一起講它傳送到許多的卷積層,並同時輸出表示每一走子的概率分布的向量pt 和一個表示當前玩家在位置 st 上的贏率的標量值 vt。
MCTS 使用神經網絡 fθ 指導其模擬(參見圖2)。搜索樹中的每條邊 (s, a) 都存儲了一個概率先驗 P(s, a),一個訪問數 N(s, a),以及動作值 Q(s, a)。每次模擬都從根節點狀態開始,不斷迭代,選擇能將置信區間 Q(s, a)+ U(s, a) 的上層最大化的落子結果,直到走到葉節點 s′。
然後,網絡會擴充這個葉節點,並且只進行一次評估,生成概率先驗和評估值,(P(s′, •), V(s′))= fθ(s′)。在模擬中,遍歷每條邊 (s,a) 後,會更新訪問量 N(s, a),然後將動作值更新,取所有模擬的平均值:
MCTS 可以被看做一種自我對弈算法:給定神經網絡參數θ 和一個根節點位置 s,計算搜索概率向量推薦落子 π = αθ(s),與每步棋的訪問量指數成正比,τ 是溫度參數:
圖2:MCTS 使用神經網絡 fθ 模擬落子選擇的過程示意
神經網絡使用這個自我對弈的強化學習算法做訓練,正如上文介紹,這個算法使用 MCTS 下每一步棋。首先,神經網絡使用隨機權重θ0 初始化。在隨後的每一次迭代中,i ≥ 1,生成自我對弈棋譜(參見圖1的a)。在每個時間步長 t,運行一個 MCTS 搜索 πt =αθ (st),使用上一次神經網絡 fθi?1 迭代的結果,然後根據搜索概率採樣下出一步棋。一局棋在第 T 步結束,也就是雙方都無法落子,搜索值降低到閾值以下的時候。隨後,進行計分,得出獎勵 rT ∈ {?1,+1}。
每一個時間步長 t 的數據都被存儲為 (st,πt, zt),其中 zt = ± rT 就是從當前這步棋 t 看來最終獲勝的贏家。
同時(參見圖1 b),使用從最後一次自我對弈迭代的所有時間步長中獲取的數據 (s, π, z),對新的網絡參數 θi進行訓練。調整神經網絡 (p, v) = fθi (s),將預測值 v 和自我對比勝者 z 之間的誤差降低到最小,同時將神經網絡落子概率 p 和搜索概率 π 之間的相似度提升到最大。
具體說,我們用損失函數 l 的梯度下降來調節參數 θ,這個損失函數表示如下,其中 c 是控制 L2 權重正則化水平的參數(防止過擬合):
評估結果:21天就比戰勝柯潔的Master更加厲害
DeepMind官方博客上介紹了AlphaGo Zero與此前版本的對比。完全從零開始,3天超越AlphaGo李世石版本,21天達到Master水平。
幾個不同版本的計算力對比如下:
論文中,為了分開結構和算法的貢獻,DeepMind研究人員還比較了 AlphaGo Zero 的神經網絡架構和先前與李世石對弈時的 AlphaGo (記為 AlphaGo Lee)的神經網絡架構的性能(見圖4)。
我們構建了4個神經網絡,分別是在AlphaGo Lee 中使用的分開的策略網絡和價值網絡,或者在 AlphaGo Zero 中使用的合併的策略和價值網絡;以及 AlphaGo Lee 使用的卷積網絡架構,或 AlphaGo Zero 使用的殘差網絡架構。每個網絡都被訓練以最小化同一個損失函數(公式1),訓練使用的是 AlphaGo Zero 在72小時的自我對弈之後產生的同一個自我對弈棋局數據集。
使用殘差網絡的準確率更高,誤差更低,在 AlphaGo 達到600 Elo(等級分)的性能提高。將策略(policy)和價值(value)結合到一個單一的網絡中的話,走子預測的準確性略微降低了,但是價值錯誤也降低了,並且將 AlphaGo 的性能再提高了600 Elo。這在一定程度上是由於提高了計算效率,但更重要的是,雙目標使網絡成為支持多個用例的常規表示。
圖4:AlphaGo Zero 和 AlphaGo Lee 的神經網絡架構比較。使用分開的策略和價值網絡記為(sep),使用組合的策略和價值網絡記為(dual),使用卷積網絡記為(conv),使用殘差網絡記為(res)。「dual-res」和「sep-conv」分別表示在 AlphaGo Zero 和 AlphaGo Lee 中使用的神經網絡架構。每個網絡都在同一個數據集上訓練,該數據集由 AlphaGo Zero 的自我對弈產生。a,每個訓練好的網絡都與 AlphaGo Zero 的搜索相結合,以得到一個不同的玩家。Elo等級分是由這些不同玩家之間的評估遊戲計算得到的,每一步棋有5秒的思考時間。b,對每個網絡架構的職業棋手的走法(從GoKifu數據集得來)的預測準確性。c,每個網絡架構的人類職業棋手的棋局結果(從GoKifu數據集得來)的MSE。
AlphaGo Zero學到的知識。a)AlphaGo Zero訓練期間發現的五個人類定式(常見的角落序列)。b)自我對弈中愛用的5個定式。c)在不同訓練階段進行的3次自我對弈的前80步棋,每次搜索使用1,600次模擬(約0.4s)。最開始,系統關注奪子,很像人類初學者。而後,關注勢和地,也即圍棋根本。最後,整場比賽體現出了很好的平衡,涉及多次戰鬥和一場複雜的戰鬥,最終以白棋多半子獲勝。
「Zero提高了計算效率,並且沒有使用到任何人類圍棋數據,」AlphaGo之父、DeepMind聯合創始人兼 CEO 戴密斯•哈薩比斯(Demis Hassabis)說。AlphaGo此前的版本,結合了數百萬人類圍棋專家的棋譜,以及強化學習的監督學習進行了自我訓練。在戰勝人類圍棋職業高手之前,它經過了好幾個月的訓練,依靠的是多臺機器和48個TPU(谷歌專為加速深層神經網絡運算能力而研發的晶片)。AlphaGo Zero的能力則在這個基礎上有了質的提升。最大的區別是,它不再需要人類數據。也就是說,它一開始就沒有接觸過人類棋譜。研發團隊只是讓它自由隨意地在棋盤上下棋,然後進行自我博弈。AlphaGo Zero強化學習下的自我對弈。經過幾天的訓練,AlphaGo Zero完成了近5百萬盤的自我博弈後,已經可以超越人類,並擊敗了此前所有版本的AlphaGo。
DeepMind團隊在官方博客上稱,Zero用更新後的神經網絡和搜索算法重組,隨著訓練地加深,系統的表現一點一點地在進步。自我博弈的成績也越來越好,同時,神經網絡也變得更準確。AlphaGo Zero習得知識的過程「這些技術細節強於此前版本的原因是,我們不再受到人類知識的限制,它可以向圍棋領域裡最高的選手——AlphaGo自身學習。」 AlphaGo團隊負責人大衛•席爾瓦(Dave Sliver)說。
據大衛•席爾瓦介紹,AlphaGo Zero使用新的強化學習方法,讓自己變成了老師。系統一開始甚至並不知道什麼是圍棋,只是從單一神經網絡開始,通過神經網絡強大的搜索算法,進行了自我對弈。
隨著自我博弈的增加,神經網絡逐漸調整,提升預測下一步的能力,最終贏得比賽。更為厲害的是,隨著訓練的深入,DeepMind團隊發現,AlphaGo Zero還獨立發現了遊戲規則,並走出了新策略,為圍棋這項古老遊戲帶來了新的見解。
首先,AlphaGo Zero僅用棋盤上的黑白子作為輸入,而前代則包括了小部分人工設計的特徵輸入。
其次,AlphaGo Zero僅用了單一的神經網絡。在此前的版本中,AlphaGo用到了「策略網絡」來選擇下一步棋的走法,以及使用「價值網絡」來預測每一步棋後的贏家。而在新的版本中,這兩個神經網絡合二為一,從而讓它能得到更高效的訓練和評估。
第三,AlphaGo Zero並不使用快速、隨機的走子方法。在此前的版本中,AlphaGo用的是快速走子方法,來預測哪個玩家會從當前的局面中贏得比賽。相反,新版本依靠地是其高質量的神經網絡來評估下棋的局勢。席爾瓦繼續稱:「在每場對弈結束後,AlphaGo Zero實際上都訓練了一個新的神經網絡。它改進了自己的神經網絡,預測AlphaGoZero自己的棋路,同時也預測了這些遊戲的贏家。當AlphaGo Zero這樣做的時候,實際上會產生一個更強大的神經網絡,這將導致『玩家』進行新的迭代。因此,我們最終得到了一個新版AlphaGo Zero,它比之前的版本更強大。而且隨著這個過程不斷重複,它也可以產生更高質量的數據,並用於訓練更好的神經網絡。」
AlphaGo 小傳
姓名:AlphaGo(Fan,Lee,Master,Zero)
別名:阿老師,阿爾法狗
生日:2014年
出生地:英國倫敦
1、擊敗樊麾
2015年10月,AlphaGo擊敗樊麾,成為第一個無需讓子即可在19路棋盤上擊敗圍棋職業棋手的電腦圍棋程序,寫下了歷史,相關成果在2016年1月發表於Nature。
2、擊敗李世石
2016年3月,AlphaGo在一場五番棋比賽中4:1擊敗尖端職業棋手李世石,成為第一個不藉助讓子而擊敗圍棋職業九段棋手的電腦圍棋程序,再創歷史。五局賽後韓國棋院授予AlphaGo有史以來第一位名譽職業九段。
3、排名短暫超越柯潔
2016年7月18日,AlphaGo在GoRatings網站的排名升至世界第一。但幾天之後被柯潔反超。
4、化名「Master」橫掃棋界
2016年底至2017年年初,再度強化的AlphaGo以「Master」為名,在未公開其真實身份的情況下,借非正式的網絡快棋對戰進行測試,挑戰中韓日臺的一流高手,60戰全勝
5、戰勝柯潔,成為世界第一
2017年5月23至27日烏鎮圍棋峰會,最新的強化版AlphaGo和世界第一棋手柯潔對局,並配合八段棋手協同作戰與對決五位頂尖九段棋手等五場比賽,獲取3比零全勝的戰績,團隊戰與組隊戰也全勝。這次AlphaGo的運算資源消耗僅李世石版本的十分之一。在與柯潔的比賽結束後,中國圍棋協會授予AlphaGo職業圍棋九段的稱號。
AlphaGo在沒有人類對手後,2017年5月25日,AlphaGo之父傑米斯•哈薩比斯宣布AlphaGo退役。AlphaGo的研究計劃於2014年開始,從業餘棋手的水平到世界第一,AlphaGo的棋力獲取這樣的進步,僅僅花了兩年左右。
AlphaGo雖已退休,但技術永存。
謹以此文,致敬AlphaGo,以及研發AlphaGo的人。