國內圍棋 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 S,每步限定時間為 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 更多的破綻。

我認為,吳韌做出的圍棋人工智慧,是深度學習的進步,他可以做到,別人也可以做到,這是方法學上的成功。

對於文章中的錯誤和不足之處,歡迎到文章原文頁留言區討論。

版權聲明:本文系深圳灣原創文章,轉載請註明來自深圳灣,並標明網站地址 shenzhenware.com。轉載、採訪、投稿、團隊報道聯繫公眾號:shenzhenware


推薦閱讀:

轉型AI產品經理,原來不需要學那麼深的演算法和數學模型
【名師課堂】如何快速舉一反三!機器學習演算法與原理深入解析
淺析 Hinton 最近提出的 Capsule 計劃
BAT機器學習面試1000題系列(第1~10題)

TAG:机器学习 | 人工智能 | 人工智能算法 | 人工智能竞赛 |