■ 在此之前,樊麾曾說過「AplhaGo缺點是他無法理解圍棋之美」,但在這一刻, AlphaGo卻用自己的一步棋讓他體會到了其中的美和優雅
■ 這不是機器的勝利,而是一群人戰勝了另一個人,而這群人正在製造「未來」
麥克·雷蒙不敢相信自己看到的畫面。他的右手在空中足足停留了兩秒,其間四次扭頭看向電腦屏幕上的棋盤,才把一顆黑棋貼在了AlphaGo剛剛走的位置上。
作為一名職業9段的圍棋高手,雷蒙已經習慣了把自己的情緒隱藏起來。他是這次人機大戰的英文解說嘉賓,一本正經又慢條斯理的解說風格,有時會讓人犯困。不過一秒前他臉上的困惑以及隨後的嘴角上揚,都說明了賽場上發生了一件不同尋常的事,而這一切,剛好被掃過的特寫鏡頭逮到。
因為現場轉播信號的延遲,古力比雷蒙晚了一分多鐘才看到這一手棋。他的反應與雷蒙如出一轍,只不過更加激烈,「AlphaGo怎麼會下這裡?」 整個騰訊的直播間也因這一步棋炸開了鍋,國家圍棋隊總教練俞斌表示「反常規」,職業棋手唐奕覺得「是業餘水準」,沒有人覺得這是一步「對」的棋。
李世石抽完本場比賽的第一支煙,回到座位上。他也看到了對手的這一步棋,第一次露出了疑惑的神情。不過這種疑惑持續了只很短的時間,隨後,他陷入了長時間的思考,臉色也變得越來越難看。「印象中我從沒見過職業高手下這樣的棋,李世石可能也沒有,所以看得出,他要好好考慮一下。」雷蒙評論道。
這一幕發生在「人機大戰」第二場比賽開始後50分鐘,AphaGo所下的第37手。
此為圍棋人機大戰第二盤棋
根據比賽的規則,每名選手都有兩個小時的常規時間,再此期間選手可以任意分配每一步棋的時間(10秒或者10分鐘)一旦時間用完,就要進入「讀秒」,每步棋考慮時間不能超過60秒。
李世石明白,第一場的失利很大程度上是因為自己下得太快,考慮不周全。在投子認輸時,他還有近半小時的常規時間,比AphlaGo少用了25分鐘。因此在第二場比賽中,他有意放慢了每一步棋的節奏,希望可以考慮得更周全。在這一步棋之前,他的總用時是25分2秒,比AlphaGo多用的5分鐘幫他換回了盤面上的一點優勢,於是他放鬆地起身,去抽了第一支煙。
AlphaGo無法感受到李世石心情的變化,所以這一步「怪棋」也不像只是簡單地想把當前的局面攪亂,而是跟前面的36步一樣,進行過分析後的決定。李世石明白這一點,也正是因為如此,他花了更多時間去思考這棋背後的「深意」。
「當你覺得它足夠厲害時,即使它真的下了一招爛棋,你也會覺得它有別的什麼意圖,只是自己沒有看出來。然後你會越來越懷疑自己。」在回顧0比5輸給AlphaGo的心理變化時,樊麾這麼告訴騰訊科技。
在賽後接受採訪時,作為裁判的他對AlphaGo的這一步棋讚不絕口。在此之前,他曾經說過「AplhaGo缺點是他無法理解圍棋之美」,但在這一刻, AlphaGo卻用自己的一步棋讓他體會到了其中的美和優雅。
麥克•雷蒙也感受到了這種「刺激」,他說經過這兩天的觀察,自己非常想和AlphaGo下一盤棋。「許多圍棋高手都會有自己習慣的套路,尤其是在布局階段。這樣做卻更加穩健,但是下多了也少了許多變化的樂趣。」雷蒙說,「而這也是AlphaGo與眾不同的地方。」
15分37秒,這是李世石在這一步棋上花掉的思考時間。從結果上看,這一部棋並沒有對之後的棋局產生巨大的影響。但在下完這步棋後,他的用時已經比AlphaGo多了20分鐘。有意思的是,李世石比AlphaGo先讀秒的時間,也恰好是20分鐘。
「今天AlphaGo的表現幾乎是完美的,自始至終沒有一步棋讓我覺得它下得不合理。我無話可說。」李世石在第二場比賽後的新聞發布會上說。
誰是李世石?
第二場比賽多花了一個小時,但從比賽結束到召開發布會的進間,卻縮短了十幾分鐘。
與第一場結束後的熱烈討論相比,現場的氣氛更加壓抑。李世石入場沒有像昨天第一場失利後那麼緊張和不安,但卻多了些落寞。一位韓國媒體鼓起了掌,想給李世石打氣,但單薄的掌聲顯得異常刺耳。
第一場之後,仍然有不少韓國媒體在為李世石的失利尋找理由,比如下得太快,失誤太多,比如有些輕敵,不太認真。這些理由的背後傳統的共同信息是,只要李世石認真下,仍然可以取勝。
此為圍棋人機大戰第一盤棋
而在24小時之後,當目睹了AlphaGo是如何從開始到結束掌控主局面,沒有給李世石任何獲得的機會,最終又逼迫李世石投子認輸後,大家心裡對於誰強誰弱,已經有了一個答案。而作為韓國媒體,需要用更多時間去接受這種現實。
在韓國,李世石並不是一個招媒體喜歡的棋手。
「目中無人」、「口無遮攔」、「不尊重對手和前輩」,你可以在任何一個韓國圍棋記者口中得到這些形容李世石的話。在過去15年,這些標籤就像他的成績一樣耀眼,即使他現在已經比過去收斂許多,這些輕狂之言也時常會被翻出,雖然大部分時間僅僅是作為談資。
比如在2001年第5屆LG杯決賽中輸給前輩李昌鎬之後,年僅18歲的李世石卻說「在所有高手中,昌鎬的水平是最差的」,同樣在兩年後的LG杯中,李世石再一次語出驚人,他說自己心目中世界冠軍的候選中,沒有包括馬曉春。在對尊卑位份異常重視的韓國,李世石常常因此受到媒體詬病。
他還經常在大賽前做出樂觀的預測,2005年1月第二屆豐田杯,李世石與常昊冠亞軍決賽前,他聲稱自己「有65%至70%的勝算」,儘管當時雙方歷史交手的成績是1比4;2010年第12屆農心杯前,李世石面對10位中日高手,聲稱要取得「十連勝」。
即便在這兩年有所收斂,但是在接受Google AlphaGo的圍棋挑戰時,李世石仍然在第一時間表示,比賽將會是他以5:0取勝。
這一次,李世石不僅是代表韓國,而且是代表人類出戰。這個巨大的噱頭無疑刺激到了韓國媒體們的神經,只要他能贏,他說什麼都行。
一時間,李世石以一種「民族英雄」的形象登上了報紙和電視的頭版頭條,所有的報導都在極力渲染這次比賽的重大意義,「從沒有見過這麼多媒體如此關心一個圍棋選手和圍棋比賽」,一位跑了15年圍棋的韓國記者告訴騰訊科技。
這種關心的「保質期」並沒有想像得那麼久,比賽當天那種300多家媒體湧進四季酒店,為了提前進場佔據一個有力位置不惜提前一個小時排隊的盛況已經不再。來到現場的韓國媒體數量大概只有前一天的70%,中餐自助午餐的消耗速度也不像第一天那麼快。
3月8日上午的賽前新聞發布會,當Google DeepMind公司CEO Demis Hassabis在臺上講解AlphaGo的算法原理時,一大群攝影師衝到了場地前方正中央,拍攝坐在前排的李世石,擋在了Hemis和其它臺下的記者之間,甚至引起了部分國際記者的吐槽。
而在3月9日第一場的賽後發布會後,位於舞臺右側角度裡的DeepMind團隊被長槍短炮團團圍住,閃光燈閃個不停。到了3月10日第二場比賽之後,你會看到這些穿著統一黑T恤的外國人時常會被韓國記者攔下,用不太流利的英語問著關於AlphaGo,關於Google的一些問題。
李世石不再是鏡頭的全部。越來越多的媒體想知道,這個兩次戰勝了李世石的AlphaGo,到底是個什麼玩意?
一支叫AlphaGo的小分隊
一群穿著統一黑色T恤的年輕人,突然聚集在了國際媒體直播間門口。他們在相互擊掌、擁抱,臉上的笑容,就像是在聖誕節早晨得到了心儀禮物的孩子。
這是3月9日下午3點30分左右,就在幾分鐘之前,李世石出人意料地做出了投子認輸的決定,這也就意味著AlphaGo第一次擊敗了職業9段圍棋手。媒體們一齊擁向了十幾米外的長廊兩側,這裡是李世石從比賽現場走到發布會房間的必經之路。
其中一個年輕人為了躲開一個從身邊匆忙跑過試圖擠進長廊兩側的媒體,往後退了一步。他對身邊的另一個戴眼鏡的哥們兒聳了聳肩,露出了一副「看我們幹的好事」的神情。這時候,英文解說嘉賓Chris Garlock從媒體直播間走了出來。「太棒了,實在是太棒了。恭喜你們。」Garlock對這種小夥子說。在說這句話時,他似乎還沒有從剛剛的興奮中緩過來,當李世石投子認輸時,他一連喊了三個「wow」。
黑色T恤背上的AlphaGo字樣暴露了這群人的身份,他們正是來自DeepMind公司,開發了AlphaGo的那群人。就在幾分鐘之前,他們創造了歷史。
這是一支15人的小分隊,為了這次比賽特地從倫敦飛到韓國,從2月底開始,就住在四季酒店,為比賽做著各項準備。
George Van Den Driessche 和 Julian Schrittweiser 是兩位最主要的工程師,他們的主要任務,就是保證AlphaGo能在這裡順利運行。「他們許多與系統相關的檢查,包括查看各個接口,準備備用方案。」DeepMind的創始人,CEO Demis Hassabis 告訴騰訊科技。
除了工程師,這個團隊中還有人專門負責IT基礎設施。儘管韓國是全球網速第一的國家,但團隊仍然在酒店鋪設了特別的網線,保證全球直播過程中的高速和穩定。
另一部分團隊成員則與Google的團隊一起,負責比賽的組織。不同顏色的號碼牌代表不同的權限,每一個區域交接處都有至少兩名安保人員站崗;直播間為國際媒體和DeepMind團隊專門預留座位,所有發布會和採訪時間的誤差均不超過10分鐘。
「我從來沒有見過組織比賽這麼細緻的,所有的事情都要排練好多次。」樊麾告訴騰訊科技。作為這次比賽的裁判,他從比賽前5天就來到了首爾,幫助小分隊一起準備。
第一場比賽的賽後發布會上,AlphaGo項目的主要負責人David Silver和公司CEO Demis Hassabis、李世石一起上臺接受的採訪。而在離他幾米遠的地方,小分隊的成員們聊得正high。發布會一結束,這個角落就被媒體團團圍住。他們終於成了主角。
這不是機器的勝利,而是一群人戰勝了另一個人。而這群人正在製造「未來」。未來,正在發生。
原題:這不是機器的勝利,而是一群人戰勝了另一個人
來源:騰訊科技
作者:田淵棟 來源:知乎
連結:http://zhuanlan.zhihu.com/yuandong/20607684
最近我仔細看了下AlphaGo在《自然》雜誌上發表的文章,寫一些分析給大家分享。
AlphaGo這個系統主要由幾個部分組成:
1. 走棋網絡(Policy Network),給定當前局面,預測/採樣下一步的走棋。
2. 快速走子(Fast rollout),目標和1一樣,但在適當犧牲走棋質量的條件下,速度要比1快1000倍。
3. 估值網絡(Value Network),給定當前局面,估計是白勝還是黑勝。
4. 蒙特卡羅樹搜索(Monte Carlo Tree Search,MCTS),把以上這三個部分連起來,形成一個完整的系統。
我們的DarkForest和AlphaGo同樣是用4搭建的系統。DarkForest較AlphaGo而言,在訓練時加強了1,而少了2和3,然後以開源軟體Pachi的預設策略(default policy)部分替代了2的功能。以下介紹下各部分。
1.走棋網絡:
走棋網絡把當前局面作為輸入,預測/採樣下一步的走棋。它的預測不只給出最強的一手,而是對棋盤上所有可能的下一著給一個分數。棋盤上有361個點,它就給出361個數,好招的分數比壞招要高。DarkForest在這部分有創新,通過在訓練時預測三步而非一步,提高了策略輸出的質量,和他們在使用增強學習進行自我對局後得到的走棋網絡(RL network)的效果相當。當然,他們並沒有在最後的系統中使用增強學習後的網絡,而是用了直接通過訓練學習到的網絡(SLnetwork),理由是RLnetwork輸出的走棋缺乏變化,對搜索不利。
有意思的是在AlphaGo為了速度上的考慮,只用了寬度為192的網絡,而並沒有使用最好的寬度為384的網絡(見圖2(a)),所以要是GPU更快一點(或者更多一點),AlphaGo肯定是會變得更強的。
所謂的0.1秒走一步,就是純粹用這樣的網絡,下出有最高置信度的合法著法。這種做法一點也沒有做搜索,但是大局觀非常強,不會陷入局部戰鬥中,說它建模了「棋感」一點也沒有錯。我們把DarkForest的走棋網絡直接放上KGS就有3d的水平,讓所有人都驚嘆了下。可以說,這一波圍棋AI的突破,主要得益於走棋網絡的突破。這個在以前是不可想像的,以前用的是基於規則,或者基於局部形狀再加上簡單線性分類器訓練的走子生成法,需要慢慢調參數年,才有進步。
當然,只用走棋網絡問題也很多,就我們在DarkForest上看到的來說,會不顧大小無謂爭劫,會無謂脫先,不顧局部死活,對殺出錯,等等。有點像高手不經認真思考的隨手棋。因為走棋網絡沒有價值判斷功能,只是憑「直覺」在下棋,只有在加了搜索之後,電腦才有價值判斷的能力。
2. 快速走子
那有了走棋網絡,為什麼還要做快速走子呢?有兩個原因,首先走棋網絡的運行速度是比較慢的,AlphaGo說是3毫秒,我們這裡也差不多,而快速走子能做到幾微秒級別,差了1000倍。所以在走棋網絡沒有返回的時候讓CPU不閒著先搜索起來是很重要的,等到網絡返回更好的著法後,再更新對應的著法信息。
其次,快速走子可以用來評估盤面。由於天文數字般的可能局面數,圍棋的搜索是毫無希望走到底的,搜索到一定程度就要對現有局面做個估分。在沒有估值網絡的時候,不像國象可以通過算棋子的分數來對盤面做比較精確的估值,圍棋盤面的估計得要通過模擬走子來進行,從當前盤面一路走到底,不考慮岔路地算出勝負,然後把勝負值作為當前盤面價值的一個估計。這裡有個需要權衡的地方:在同等時間下,模擬走子的質量高,單次估值精度高但走子速度慢;模擬走子速度快乃至使用隨機走子,雖然單次估值精度低,但可以多模擬幾次算平均值,效果未必不好。所以說,如果有一個質量高又速度快的走子策略,那對於棋力的提高是非常有幫助的。
為了達到這個目標,神經網絡的模型就顯得太慢,還是要用傳統的局部特徵匹配(local pattern matching)加線性回歸(logistic regression)的方法,這辦法雖然不新但非常好使,幾乎所有的廣告推薦,競價排名,新聞排序,都是用的它。與更為傳統的基於規則的方案相比,它在吸納了眾多高手對局之後就具備了用梯度下降法自動調參的能力,所以性能提高起來會更快更省心。AlphaGo用這個辦法達到了2微秒的走子速度和24.2%的走子準確率。24.2%的意思是說它的最好預測和圍棋高手的下子有0.242的概率是重合的,相比之下,走棋網絡在GPU上用2毫秒能達到57%的準確率。這裡,我們就看到了走子速度和精度的權衡。
和訓練深度學習模型不同,快速走子用到了局部特徵匹配,自然需要一些圍棋的領域知識來選擇局部特徵。對此AlphaGo只提供了局部特徵的數目(見Extended Table 4),而沒有說明特徵的具體細節。我最近也實驗了他們的辦法,達到了25.1%的準確率和4-5微秒的走子速度,然而全系統整合下來並沒有復現他們的水平。我感覺上24.2%並不能完全概括他們快速走子的棋力,因為只要走錯關鍵的一步,局面判斷就完全錯誤了;而圖2(b)更能體現他們快速走子對盤面形勢估計的精確度,要能達到他們圖2(b)這樣的水準,比簡單地匹配24.2%要做更多的工作,而他們並未在文章中強調這一點。
在AlphaGo有了快速走子之後,不需要走棋網絡和估值網絡,不藉助任何深度學習和GPU的幫助,不使用增強學習,在單機上就已經達到了3d的水平(見Extended Table 7倒數第二行),這是相當厲害的了。任何使用傳統方法在單機上達到這個水平的圍棋程序,都需要花費數年的時間。在AlphaGo之前,Aja Huang曾經自己寫過非常不錯的圍棋程序,在這方面相信是有很多的積累的。
3. 估值網絡
AlphaGo的估值網絡可以說是錦上添花的部分,從Fig 2(b)和ExtendedTable 7來看,沒有它AlphaGo也不會變得太弱,至少還是會在7d-8d的水平。少了估值網絡,等級分少了480分,但是少了走棋網絡,等級分就會少掉800至1000分。特別有意思的是,如果只用估值網絡來評估局面(2177),那其效果還不及只用快速走子(2416),只有將兩個合起來才有更大的提高。我的猜測是,估值網絡和快速走子對盤面估計是互補的,在棋局一開始時,大家下得比較和氣,估值網絡會比較重要;但在有複雜的死活或是對殺時,通過快速走子來估計盤面就變得更重要了。考慮到估值網絡是整個系統中最難訓練的部分(需要三千萬局自我對局),我猜測它是最晚做出來並且最有可能能進一步提高的。
關於估值網絡訓練數據的生成,值得注意的是文章中的附錄小字部分。與走棋網絡不同,每一盤棋只取一個樣本來訓練以避免過擬合,不然對同一對局而言輸入稍有不同而輸出都相同,對訓練是非常不利的。這就是為什麼需要三千萬局,而非三千萬個盤面的原因。對於每局自我對局,取樣本是很有講究的,先用SL network保證走棋的多樣性,然後隨機走子,取盤面,然後用更精確的RLnetwork走到底以得到最正確的勝負估計。當然這樣做的效果比用單一網絡相比好多少,我不好說。
一個讓我吃驚的地方是,他們完全沒有做任何局部死活/對殺分析,純粹是用暴力訓練法訓練出一個相當不錯的估值網絡。這在一定程度上說明深度卷積網絡(DCNN)有自動將問題分解成子問題,並分別解決的能力。
另外,我猜測他們在取訓練樣本時,判定最終勝負用的是中國規則。所以說三月和李世石對局的時候也要求用中國規則,不然如果換成別的規則,就需要重新訓練估值網絡(雖然我估計結果差距不會太大)。至於為什麼一開始就用的中國規則,我的猜測是編程非常方便(我在寫DarkForest的時候也是這樣覺得的)。
4. 蒙特卡羅樹搜索
這部分基本用的是傳統方法,沒有太多可以評論的,他們用的是帶先驗的UCT,即先考慮DCNN認為比較好的著法,然後等到每個著法探索次數多了,選擇更相信探索得來的勝率值。而DarkForest則直接選了DCNN推薦的前3或是前5的著法進行搜索。我初步試驗下來效果差不多,當然他們的辦法更靈活些,在允許使用大量搜索次數的情況下,他們的辦法可以找到一些DCNN認為不好但卻對局面至關重要的著法。
一個有趣的地方是在每次搜索到葉子節點時,沒有立即展開葉子節點,而是等到訪問次數到達一定數目(40)才展開,這樣避免產生太多的分支,分散搜索的注意力,也能節省GPU的寶貴資源,同時在展開時,對葉節點的盤面估值會更準確些。除此之外,他們也用了一些技巧,以在搜索一開始時,避免多個線程同時搜索一路變化,這部分我們在DarkForest中也注意到了,並且做了改進。
5. 總結
總的來說,這整篇文章是一個系統性的工作,而不是一兩個小點有了突破就能達到的勝利。在成功背後,是作者們,特別是兩位第一作者David Silver和Aja Huang,在博士階段及畢業以後五年以上的積累,非一朝一夕所能完成的。他們能做出AlphaGo並享有現在的榮譽,是實至名歸的。
從以上分析也可以看出,與之前的圍棋系統相比,AlphaGo較少依賴圍棋的領域知識,但還遠未達到通用系統的程度。職業棋手可以在看過了寥寥幾局之後明白對手的風格並採取相應策略,一位資深遊戲玩家也可以在玩一個新遊戲幾次後很快上手,但到目前為止,人工智慧系統要達到人類水平,還是需要大量樣本的訓練的。可以說,沒有千年來眾多棋手在圍棋上的積累,就沒有圍棋AI的今天。
在AlphaGo中,增強學習(Reinforcement Learning)所扮演的角色並沒有想像中那麼大。在理想情況下,我們希望人工智慧系統能在對局中動態地適應環境和對手的招式並且找到辦法反制之,但是在AlphaGo中增強學習更多地是用於提供更多質量更好的樣本,給有監督學習(Supervised Learning)以訓練出更好的模型。在這方面增強學習還有很長的路要走。
常見的幾個問題:
問題1:「Alphago的MCTS做rollout的時候,除了使用快速走子,還用了搜索樹的已有部分,看起來像是AMAF/RAVE反過來:AMAF是把快速走子的信息傳導到樹的其它無關部分,Alphago是把樹的其它無關部分拿來增強快速走子。我懷疑這是不是它棋力比其它DCNN+MCTS強的原因之一。"
這個辦法在解死活題的文章中出現過,會在一定程度上提高搜索效率,但是提高多少還不知道。
問題2:「rollout的走法質量變好可能會導致棋力下降。」
這裡要分兩種情況,tree policy和default policy。在AlphaGo的文章裡面已經說過了,tree policy的分布不能太尖,不然在搜索時太過重視一些看起來的好著,可能使得棋力下降。但是除了這種原因,一般來說tree policy變好棋力還是會變強的。
default policy這邊,即(半)隨機走子到最後然後判分,就很複雜了,質量變好未必對局面能估得更準。default policy需要保證的是每塊棋的死活大體正確,不要把死的棋下成活的或者反之,而對大局觀的要求反而沒有那麼高。雙方完全可以配合著把每塊棋下完,然後轉戰另一塊,而不是說搶在對方前去別處佔先手。
兩篇文章分別來自「騰訊科技」和「知乎」
歡迎關注瞭望微信
點擊【閱讀原文】 下載瞭望客戶端
更多精彩,請訂閱《瞭望》新聞周刊