圍棋人機巔峰對決 AlphaGo VS 李世乭 觀戰手冊

國內圍棋 AI 挑戰世界冠軍,并非嘩眾取寵,而是深度學習的勝利
吳韌做出的圍棋人工智能,是深度學習的進步,他可以做到,別人也可以做到。
編者按:人工智能 ALPHAGO 與圍棋選手李世石的世紀之戰開賽在即,國內人工智能異構神機也趁機向另一位圍棋冠軍柯潔宣戰。那兩者的區別是什么?開發時間僅一個多月的異構神機是否在嘩眾取寵?本文作者楊作興親身參與了異構神機的比賽過程,對于它的實力,以及人工智能均有獨到的看法。感興趣的朋友可以在他于深圳灣的主頁,與他交流。
3月7日,我參加了由異構智能公司,極客幫和聶衛平圍棋道場三方共同主辦的「異構智能挑戰未來」發布會。相關報道可閱讀深圳灣此前的文章。
作為 AI 領域的行業人士,我很有興趣了解吳韌博士異構神機算法的獨到之處,以及硬件實現的獨到之處,在媒體提問時間,我搶先問吳博士這個問題,吳博士好像沒有給到我答案。
發布會結束后,大家意猶未盡,吳韌,俞斌,華學明,蔣濤等仍在發布會邊上的一個房間繼續熱聊。俞斌九段是應該是圍棋界最懂軟件的,他之前有寫過圍棋方面的軟件(蔣濤曾經買過俞斌的圍棋軟件),現在也在做關于圍棋教育方面的 APP。他一直試圖做一個高水平的對弈軟件用于圍棋教學,但效果不好。吳博士的圍棋智能軟件在 3 月 6 號贏過一個職業四段一局,俞斌對這個事情很有興趣,問吳博士算法原理,并希望能看看吳博士的源碼。看到俞斌如此有興趣,有人建議俞斌跟吳博士的圍棋智能軟件切磋一下,找找感覺。盡管第二天俞斌要以嘉賓身份坐早上 8 點的飛機參加 ALPHAGO 跟李世石的對弈,但對于圍棋智能的強烈興趣,他欣然前往吳博士下榻的 Westin 酒店考察一下圍棋智能的實力。
第一局俞斌執白,10秒走1步,大約50步左右,圍棋智能認輸。第二局,俞斌繼續執白,讓兩子,30秒走1步,大概用了1個多小時,結果如下:

俞斌的評價是,走了一步臭棋,兩步好棋,讓兩子情況,他還占些優勢,如果讓三子,結果還很難說。總的來說,他覺得實力還不錯,超過他的預期。我當時的感覺也比較吃驚,我一直認為圍棋智能需要用到 ALPHAGO 那樣的 170 個 GPU 加上 1200 個 CPU 那樣的計算能力,才可能跟職業選手對弈,但吳博士智能圍棋硬件就是一個蘋果筆記本。而且吳博士就兩個人花了一個月的業余時間,寫了這個算法和軟件,當時感覺:吳博士真厲害,人工智能真的很棒。
作為一個人工智能行業人士,我一直在思考這是如何做到的,ALPHAGO 是大神,吳博士是大神?聶棋圣認為圍棋最難的是棋局判斷,這就是所謂的棋感,就是頂尖九段對一個局面也可能有多個看法,計算機是不可能做到這一點的,圍棋智能能做到這點么?
之后,結合我對計算機硬件和人工智能算法的了解,以及俞斌九段在 3 月 7 日晚上跟圍棋智能下棋過程中的一些講解,我好像想明白了,把我的想法跟大家分享一下。
在下面闡述之前,我需要申明一下,我是芯片的專業人士,對人工智能算法有一點了解,但不是專業的,對圍棋連業余都算不上。因此對于我闡述中不太對的地方,歡迎大家拍磚(微信號:yangzuoxing001)。
人工智能搞了好幾十年了,人們一直寄予了很高的期望,但失望大于期望。直到 2005 年 HILTON 發明了神經元卷積網絡(CNN):

這個網絡的基本原理是對物體特征的逐層抽象,它有三個重要的意義:
- 1)物體特征是通過計算抽取出來的,不是模式識別年代由專家假定的特征。采用 CNN 抽取出來的特征,設計者自己也不知道它應該出來什么特征。
- 2)卷積神經元的參數對于每一個小窗口的參數是一樣的,這個極大的降低了特征提取的計算量。
- 3)提取特征的模型參數是通過學習出來的,隨著學習樣本的增多,模型參數會越來越準確,特征的提取也越來越準確,使用者會感覺它越來越聰明。
采用以CNN為代表的深度學習方法以后,人工智能開始取得突破性的進展:


人工智能在語音和圖像識別方面開始超越人:
- 1)語音識別(錯誤率):機器(6%) < 人 (8%)
- 2)人臉識別(錯誤率):機器(0.23%) < 人 (0.8%)
AlphaGo 完勝歐洲圍棋冠軍、職業二段選手樊麾,進一步顯示了深度學習在方法學上的成功。那圍棋智能是如何使用深度學習做到這一點的?他未來還會做到多好?它的軟肋在哪里?
圍棋最難的是什么?是棋感,聶棋圣如此說,很多下過圍棋的也這么說。為什么難呢?因為當前的局面說不清楚是好是壞,一個人一個感覺。一顆子下去,好還是不好,大部分情況由感覺決定。為什么出現這種情況,大家下棋不是要計算么,為什么不是棋手算出來的?圍棋每一個子下去有 361 個位置,凡是空的地方理論上都可以下子,如果我們能看兩步棋,那我們就需要在腦子里邊考慮 361*361=13.0321 萬個棋局,如果考慮四步,那就是 312.7704 萬種棋局,如果 361 步都能算出來,那就是——抱歉,采用 EXCEL 算不出這么大的數。因此圍棋很難通過計算來下棋,大家在訓練和實戰中,通過定式和感覺來下棋。這個人搞不定的事情,計算機可以搞定么?計算機的計算力能力遠大于人,但很遺憾目前的計算機也搞定不了這么大的計算量。
但是深度學習改變了這個局面,計算機通過訓練,可以培養出來棋感。具體情況見下圖:

這里邊有三個重要的要素:
- 1)海量的棋局,幾十萬,幾百萬的對局,越多越好。
- 2)CNN計算網絡,可以設計成不同的層數,每一個的大小可以不同,中間還可以加入各種保證收斂的非線性層。
- 3)網絡模型參數,這個最重要,這個就是棋感。
訓練的過程是這樣的,輸入海量棋局,調整 CNN 網絡結構和網絡模式參數,使計算出來的局面判斷結果跟人判斷的結果一致。最后局面的結果是確定的,但從第一子到最后結局之前的局面如何判斷?初期的局面的確很難判斷,但一個基本的傾向是,凡是最后結果好的,前面走的局面都做正向判斷,哪怕有幾步明顯是臭棋。如果我們采用同一套 CNN 網絡結構和同一套模型參數,讓海量棋局的計算機局面判斷和人為判斷是一致的,那從原理上來說一個計算機沒有見過的棋局它也能以極大的概率判斷正確。這樣計算機的棋感就訓練出來了。
有了這個棋感模型,計算機下棋就簡單了。在當前局面下,計算機可以采用蒙特卡洛方法隨機設定幾個落子點,根據這幾個落子點評價一下局面,選擇幾個對自己有利的落子點(根據局面判定),然后假設幾個對手的落子點,為對方做局面評估,選幾個對對方有利的下子點,如此繼續,這樣計算機就可以看到后面的多步棋。

上圖是例示了黑棋四個可能下子點,白棋根據黑棋情況的相應兩個可能落子點。
那么采用深度學習方法后,計算機能算多少步呢?

- Step:計算機能算的步數
- T:落子限定時間
- N1:第一步的可能落點
- N2:第二步可能的落點
- Nm:第m步的可能落點
- CNN_time:采用CNN網絡評估一個棋局需要的時間
舉例來說,如果 CNN_time = 0.5 mS, T = 30 S, 那總共可以計算 6 萬次 CNN。我們可以采用如下策略:
- N1:50,50個局面判斷完成后,我們選擇其中20個最好的落子點
- N2:30,根據第一步優選的20個落子點,第二部每個點嘗試30次,從30次里邊選擇最好的10個落子點
- N3:20, 根據第二步的10個落子點,第三步每個點嘗試20個落子點,從中優選10個落子點
- N4:15,根據第三步的10個落子點,第四步每個點嘗試15個落子點
那總的計算次數為:50+20*30+20*10*20+20*10*10*15=34650 次 CNN。也就是說在 CNN_TIME = 0.5 mS,每步限定時間為 30 S的情況下,計算機可以算出 4 步棋。
根據上面的知識,那我們現在回頭看看吳博士的圍棋智能:
- 1)關于計算能力。吳博士采用蘋果筆記本,而 ALPHAGO 采用 170 個 GPU 和 1200 個 CPU,這兩者的計算能力可以初略認為差距是 1000 倍,那 1000 倍的計算能力對圍棋智能意味著什么呢?如果下一步選擇都是 10 個可能的話,1000 倍的計算力就相當于 ALPHAGO 可以比吳博士的圍棋智能多算三步棋。但吳博士的程序跟 ALPHAGO 是差三步棋么?這個還不一定,因為 CNN 的計算時間除了跟計算機的性能相關外,還跟 CNN 的結構復雜程度,模型參數大大小有關。而由于 CNN 的結構和模型參數的大小,可能造成一個數量級的計算時間差異(在圍棋局面評估結果差不多的情況下)。
- 2)關于圍棋直覺。這個主要來源于深度學習和 CNN 網絡。但如果 ALPHAGO 跟吳博士的圍棋智能比較,那就是模型結構和輸入圍棋局數和質量的差異了。那我們再想,如果一個做深度學習的資深工程師,給他海量的圍棋數據,他是不是也可以很快造一個挑戰圍棋職業選手的神機?這個是可能的,但是要打敗 ALPHAGO 或者吳博士的圍棋神機,就不一定了。
到這里,相信大家對圍棋智能應該有所認識了。圍棋智能還是沒有思維,他不是我們普通人想的那種智能,他是計算機,他會的只有計算和存儲。但他又有智能表象,他會學習,他可以準確分析棋局。
今天就是 ALPHAGO 跟李世石的世紀大戰了,我想根據上面的分析,對這個比賽預測一下:
- 1)第一局至關重要,如果第一局李世石贏了,那后面幾局 ALPHAGO 基本沒有什么機會。因為在短短幾天智能 ALPHAGO 很難大幅度調整它的計算能力,模型結構和模型參數。ALPHAGO 應該會準備很多版本,但這些版本跟第一局用的版本應該沒有太大差別。ALPHAGO 當然知道第一局最重要,第一局使用的應該是最好的 ALPHAGO。不過這次 ALPHAGO 即便輸了也沒有關系,他很快可以繼續提高計算能力,繼續更大的海量數據訓練,它可以在一個月內提高一個量級,但李世石一個月提高不了一個量級。因此計算機打敗頂尖棋手就是這一兩年的事情。
- 2)如果第一局李世石輸了,他通過第一局的較量,能摸到 ALPHAGO 的規律,做出調整,他能贏下后面的四局。我想有一個簡單的調整辦法。ALPHAGO 會對李世石的所有棋局做充分的學習,如果李世石不采用自己通常的走法,甚至不采用普通棋手慣常的走法,ALPHAGO 面對自己沒有學習過的東西,會比較愚蠢的,這就是圍棋智能的軟肋。我想李世石作為圍棋頂尖高手,他應該可以發現 ALPHAGO 更多的破綻。
我認為,吳韌做出的圍棋人工智能,是深度學習的進步,他可以做到,別人也可以做到,這是方法學上的成功。
對于文章中的錯誤和不足之處,歡迎留言討論。
寫的還是蠻容易懂的
長篇紀實+技術剖析。即便是要觀戰 AlphaGo 和李世石的世紀大戰,這篇文章也能夠給你很多指引。
深度好文,深入淺出,點贊!
這篇文章解釋了「深度學習的勝利」,但不能證明異構是否「嘩眾取寵」。希望除了基礎理論的解釋,更多介紹一些異構本身在算法設計和訓練程度。
吳博士太太想公布算法細節,那是他的命根子。他們計劃每兩個禮拜找聶衛平棋院的小棋手做一次比賽,比賽過程會全程直播
mark