圍棋人機(jī)巔峰對(duì)決 AlphaGo VS 李世乭 觀戰(zhàn)手冊(cè)
國(guó)內(nèi)圍棋 AI 挑戰(zhàn)世界冠軍嫡良,并非嘩眾取寵,而是深度學(xué)習(xí)的勝利
吳韌做出的圍棋人工智能惜颇,是深度學(xué)習(xí)的進(jìn)步皆刺,他可以做到,別人也可以做到凌摄。
編者按:人工智能 ALPHAGO 與圍棋選手李世石的世紀(jì)之戰(zhàn)開賽在即锨亏,國(guó)內(nèi)人工智能異構(gòu)神機(jī)也趁機(jī)向另一位圍棋冠軍柯潔宣戰(zhàn)痴怨。那兩者的區(qū)別是什么?開發(fā)時(shí)間僅一個(gè)多月的異構(gòu)神機(jī)是否在嘩眾取寵器予?本文作者楊作興親身參與了異構(gòu)神機(jī)的比賽過(guò)程浪藻,對(duì)于它的實(shí)力,以及人工智能均有獨(dú)到的看法乾翔。感興趣的朋友可以在他于深圳灣的主頁(yè)爱葵,與他交流。
3月7日反浓,我參加了由異構(gòu)智能公司萌丈,極客幫和聶衛(wèi)平圍棋道場(chǎng)三方共同主辦的「異構(gòu)智能挑戰(zhàn)未來(lái)」發(fā)布會(huì)。相關(guān)報(bào)道可閱讀深圳灣此前的文章雷则。
作為 AI 領(lǐng)域的行業(yè)人士辆雾,我很有興趣了解吳韌博士異構(gòu)神機(jī)算法的獨(dú)到之處,以及硬件實(shí)現(xiàn)的獨(dú)到之處月劈,在媒體提問(wèn)時(shí)間度迂,我搶先問(wèn)吳博士這個(gè)問(wèn)題,吳博士好像沒(méi)有給到我答案猜揪。
發(fā)布會(huì)結(jié)束后惭墓,大家意猶未盡,吳韌而姐,俞斌诅妹,華學(xué)明,蔣濤等仍在發(fā)布會(huì)邊上的一個(gè)房間繼續(xù)熱聊。俞斌九段是應(yīng)該是圍棋界最懂軟件的吭狡,他之前有寫過(guò)圍棋方面的軟件(蔣濤曾經(jīng)買過(guò)俞斌的圍棋軟件),現(xiàn)在也在做關(guān)于圍棋教育方面的 APP丈莺。他一直試圖做一個(gè)高水平的對(duì)弈軟件用于圍棋教學(xué)划煮,但效果不好。吳博士的圍棋智能軟件在 3 月 6 號(hào)贏過(guò)一個(gè)職業(yè)四段一局缔俄,俞斌對(duì)這個(gè)事情很有興趣弛秋,問(wèn)吳博士算法原理,并希望能看看吳博士的源碼俐载⌒仿裕看到俞斌如此有興趣,有人建議俞斌跟吳博士的圍棋智能軟件切磋一下遏佣,找找感覺挖炬。盡管第二天俞斌要以嘉賓身份坐早上 8 點(diǎn)的飛機(jī)參加 ALPHAGO 跟李世石的對(duì)弈,但對(duì)于圍棋智能的強(qiáng)烈興趣状婶,他欣然前往吳博士下榻的 Westin 酒店考察一下圍棋智能的實(shí)力意敛。
第一局俞斌執(zhí)白,10秒走1步膛虫,大約50步左右草姻,圍棋智能認(rèn)輸。第二局稍刀,俞斌繼續(xù)執(zhí)白撩独,讓兩子,30秒走1步账月,大概用了1個(gè)多小時(shí)综膀,結(jié)果如下:
俞斌的評(píng)價(jià)是,走了一步臭棋捶障,兩步好棋僧须,讓兩子情況,他還占些優(yōu)勢(shì)项炼,如果讓三子担平,結(jié)果還很難說(shuō)《Р浚總的來(lái)說(shuō)暂论,他覺得實(shí)力還不錯(cuò),超過(guò)他的預(yù)期拌禾。我當(dāng)時(shí)的感覺也比較吃驚取胎,我一直認(rèn)為圍棋智能需要用到 ALPHAGO 那樣的 170 個(gè) GPU 加上 1200 個(gè) CPU 那樣的計(jì)算能力,才可能跟職業(yè)選手對(duì)弈,但吳博士智能圍棋硬件就是一個(gè)蘋果筆記本闻蛀。而且吳博士就兩個(gè)人花了一個(gè)月的業(yè)余時(shí)間匪傍,寫了這個(gè)算法和軟件,當(dāng)時(shí)感覺:吳博士真厲害觉痛,人工智能真的很棒役衡。
作為一個(gè)人工智能行業(yè)人士,我一直在思考這是如何做到的薪棒,ALPHAGO 是大神手蝎,吳博士是大神?聶棋圣認(rèn)為圍棋最難的是棋局判斷俐芯,這就是所謂的棋感棵介,就是頂尖九段對(duì)一個(gè)局面也可能有多個(gè)看法,計(jì)算機(jī)是不可能做到這一點(diǎn)的吧史,圍棋智能能做到這點(diǎn)么邮辽?
之后,結(jié)合我對(duì)計(jì)算機(jī)硬件和人工智能算法的了解扣蜻,以及俞斌九段在 3 月 7 日晚上跟圍棋智能下棋過(guò)程中的一些講解逆巍,我好像想明白了,把我的想法跟大家分享一下莽使。
在下面闡述之前锐极,我需要申明一下,我是芯片的專業(yè)人士芳肌,對(duì)人工智能算法有一點(diǎn)了解灵再,但不是專業(yè)的,對(duì)圍棋連業(yè)余都算不上亿笤。因此對(duì)于我闡述中不太對(duì)的地方翎迁,歡迎大家拍磚(微信號(hào):yangzuoxing001)。
人工智能搞了好幾十年了净薛,人們一直寄予了很高的期望汪榔,但失望大于期望。直到 2005 年 HILTON 發(fā)明了神經(jīng)元卷積網(wǎng)絡(luò)(CNN):
這個(gè)網(wǎng)絡(luò)的基本原理是對(duì)物體特征的逐層抽象肃拜,它有三個(gè)重要的意義:
- 1)物體特征是通過(guò)計(jì)算抽取出來(lái)的痴腌,不是模式識(shí)別年代由專家假定的特征。采用 CNN 抽取出來(lái)的特征燃领,設(shè)計(jì)者自己也不知道它應(yīng)該出來(lái)什么特征士聪。
- 2)卷積神經(jīng)元的參數(shù)對(duì)于每一個(gè)小窗口的參數(shù)是一樣的,這個(gè)極大的降低了特征提取的計(jì)算量猛蔽。
- 3)提取特征的模型參數(shù)是通過(guò)學(xué)習(xí)出來(lái)的剥悟,隨著學(xué)習(xí)樣本的增多灵寺,模型參數(shù)會(huì)越來(lái)越準(zhǔn)確,特征的提取也越來(lái)越準(zhǔn)確区岗,使用者會(huì)感覺它越來(lái)越聰明略板。
采用以CNN為代表的深度學(xué)習(xí)方法以后,人工智能開始取得突破性的進(jìn)展:
人工智能在語(yǔ)音和圖像識(shí)別方面開始超越人:
- 1)語(yǔ)音識(shí)別(錯(cuò)誤率):機(jī)器(6%) < 人 (8%)
- 2)人臉識(shí)別(錯(cuò)誤率):機(jī)器(0.23%) < 人 (0.8%)
AlphaGo 完勝歐洲圍棋冠軍慈缔、職業(yè)二段選手樊麾蚯根,進(jìn)一步顯示了深度學(xué)習(xí)在方法學(xué)上的成功。那圍棋智能是如何使用深度學(xué)習(xí)做到這一點(diǎn)的胀糜?他未來(lái)還會(huì)做到多好?它的軟肋在哪里蒂誉?
圍棋最難的是什么教藻?是棋感,聶棋圣如此說(shuō)右锨,很多下過(guò)圍棋的也這么說(shuō)括堤。為什么難呢?因?yàn)楫?dāng)前的局面說(shuō)不清楚是好是壞绍移,一個(gè)人一個(gè)感覺悄窃。一顆子下去,好還是不好蹂窖,大部分情況由感覺決定轧抗。為什么出現(xiàn)這種情況,大家下棋不是要計(jì)算么瞬测,為什么不是棋手算出來(lái)的横媚?圍棋每一個(gè)子下去有 361 個(gè)位置,凡是空的地方理論上都可以下子月趟,如果我們能看兩步棋灯蝴,那我們就需要在腦子里邊考慮 361*361=13.0321 萬(wàn)個(gè)棋局,如果考慮四步孝宗,那就是 312.7704 萬(wàn)種棋局穷躁,如果 361 步都能算出來(lái),那就是——抱歉因妇,采用 EXCEL 算不出這么大的數(shù)问潭。因此圍棋很難通過(guò)計(jì)算來(lái)下棋,大家在訓(xùn)練和實(shí)戰(zhàn)中沙峻,通過(guò)定式和感覺來(lái)下棋睦授。這個(gè)人搞不定的事情,計(jì)算機(jī)可以搞定么摔寨?計(jì)算機(jī)的計(jì)算力能力遠(yuǎn)大于人去枷,但很遺憾目前的計(jì)算機(jī)也搞定不了這么大的計(jì)算量。
但是深度學(xué)習(xí)改變了這個(gè)局面,計(jì)算機(jī)通過(guò)訓(xùn)練删顶,可以培養(yǎng)出來(lái)棋感竖螃。具體情況見下圖:
這里邊有三個(gè)重要的要素:
- 1)海量的棋局,幾十萬(wàn)逗余,幾百萬(wàn)的對(duì)局特咆,越多越好。
- 2)CNN計(jì)算網(wǎng)絡(luò)录粱,可以設(shè)計(jì)成不同的層數(shù)腻格,每一個(gè)的大小可以不同,中間還可以加入各種保證收斂的非線性層啥繁。
- 3)網(wǎng)絡(luò)模型參數(shù)菜职,這個(gè)最重要,這個(gè)就是棋感旗闽。
訓(xùn)練的過(guò)程是這樣的酬核,輸入海量棋局,調(diào)整 CNN 網(wǎng)絡(luò)結(jié)構(gòu)和網(wǎng)絡(luò)模式參數(shù)适室,使計(jì)算出來(lái)的局面判斷結(jié)果跟人判斷的結(jié)果一致嫡意。最后局面的結(jié)果是確定的,但從第一子到最后結(jié)局之前的局面如何判斷捣辆?初期的局面的確很難判斷蔬螟,但一個(gè)基本的傾向是,凡是最后結(jié)果好的罪帖,前面走的局面都做正向判斷促煮,哪怕有幾步明顯是臭棋。如果我們采用同一套 CNN 網(wǎng)絡(luò)結(jié)構(gòu)和同一套模型參數(shù)整袁,讓海量棋局的計(jì)算機(jī)局面判斷和人為判斷是一致的菠齿,那從原理上來(lái)說(shuō)一個(gè)計(jì)算機(jī)沒(méi)有見過(guò)的棋局它也能以極大的概率判斷正確。這樣計(jì)算機(jī)的棋感就訓(xùn)練出來(lái)了坐昙。
有了這個(gè)棋感模型绳匀,計(jì)算機(jī)下棋就簡(jiǎn)單了。在當(dāng)前局面下炸客,計(jì)算機(jī)可以采用蒙特卡洛方法隨機(jī)設(shè)定幾個(gè)落子點(diǎn)疾棵,根據(jù)這幾個(gè)落子點(diǎn)評(píng)價(jià)一下局面,選擇幾個(gè)對(duì)自己有利的落子點(diǎn)(根據(jù)局面判定)痹仙,然后假設(shè)幾個(gè)對(duì)手的落子點(diǎn)是尔,為對(duì)方做局面評(píng)估,選幾個(gè)對(duì)對(duì)方有利的下子點(diǎn)开仰,如此繼續(xù)拟枚,這樣計(jì)算機(jī)就可以看到后面的多步棋薪铜。
上圖是例示了黑棋四個(gè)可能下子點(diǎn),白棋根據(jù)黑棋情況的相應(yīng)兩個(gè)可能落子點(diǎn)恩溅。
那么采用深度學(xué)習(xí)方法后隔箍,計(jì)算機(jī)能算多少步呢?
- Step:計(jì)算機(jī)能算的步數(shù)
- T:落子限定時(shí)間
- N1:第一步的可能落點(diǎn)
- N2:第二步可能的落點(diǎn)
- Nm:第m步的可能落點(diǎn)
- CNN_time:采用CNN網(wǎng)絡(luò)評(píng)估一個(gè)棋局需要的時(shí)間
舉例來(lái)說(shuō)脚乡,如果 CNN_time = 0.5 mS, T = 30 S, 那總共可以計(jì)算 6 萬(wàn)次 CNN蜒滩。我們可以采用如下策略:
- N1:50,50個(gè)局面判斷完成后奶稠,我們選擇其中20個(gè)最好的落子點(diǎn)
- N2:30俯艰,根據(jù)第一步優(yōu)選的20個(gè)落子點(diǎn),第二部每個(gè)點(diǎn)嘗試30次锌订,從30次里邊選擇最好的10個(gè)落子點(diǎn)
- N3:20, 根據(jù)第二步的10個(gè)落子點(diǎn)蟆炊,第三步每個(gè)點(diǎn)嘗試20個(gè)落子點(diǎn),從中優(yōu)選10個(gè)落子點(diǎn)
- N4:15瀑志,根據(jù)第三步的10個(gè)落子點(diǎn),第四步每個(gè)點(diǎn)嘗試15個(gè)落子點(diǎn)
那總的計(jì)算次數(shù)為:50+20*30+20*10*20+20*10*10*15=34650 次 CNN污秆。也就是說(shuō)在 CNN_TIME = 0.5 mS劈猪,每步限定時(shí)間為 30 S的情況下,計(jì)算機(jī)可以算出 4 步棋良拼。
根據(jù)上面的知識(shí)战得,那我們現(xiàn)在回頭看看吳博士的圍棋智能:
- 1)關(guān)于計(jì)算能力。吳博士采用蘋果筆記本庸推,而 ALPHAGO 采用 170 個(gè) GPU 和 1200 個(gè) CPU常侦,這兩者的計(jì)算能力可以初略認(rèn)為差距是 1000 倍,那 1000 倍的計(jì)算能力對(duì)圍棋智能意味著什么呢贬媒?如果下一步選擇都是 10 個(gè)可能的話聋亡,1000 倍的計(jì)算力就相當(dāng)于 ALPHAGO 可以比吳博士的圍棋智能多算三步棋。但吳博士的程序跟 ALPHAGO 是差三步棋么际乘?這個(gè)還不一定坡倔,因?yàn)?CNN 的計(jì)算時(shí)間除了跟計(jì)算機(jī)的性能相關(guān)外,還跟 CNN 的結(jié)構(gòu)復(fù)雜程度脖含,模型參數(shù)大大小有關(guān)罪塔。而由于 CNN 的結(jié)構(gòu)和模型參數(shù)的大小,可能造成一個(gè)數(shù)量級(jí)的計(jì)算時(shí)間差異(在圍棋局面評(píng)估結(jié)果差不多的情況下)养葵。
- 2)關(guān)于圍棋直覺征堪。這個(gè)主要來(lái)源于深度學(xué)習(xí)和 CNN 網(wǎng)絡(luò)。但如果 ALPHAGO 跟吳博士的圍棋智能比較关拒,那就是模型結(jié)構(gòu)和輸入圍棋局?jǐn)?shù)和質(zhì)量的差異了佃蚜。那我們?cè)傧胗褂椋绻粋€(gè)做深度學(xué)習(xí)的資深工程師,給他海量的圍棋數(shù)據(jù)爽锥,他是不是也可以很快造一個(gè)挑戰(zhàn)圍棋職業(yè)選手的神機(jī)涌韩?這個(gè)是可能的,但是要打敗 ALPHAGO 或者吳博士的圍棋神機(jī)氯夷,就不一定了臣樱。
到這里,相信大家對(duì)圍棋智能應(yīng)該有所認(rèn)識(shí)了腮考。圍棋智能還是沒(méi)有思維雇毫,他不是我們普通人想的那種智能,他是計(jì)算機(jī)踩蔚,他會(huì)的只有計(jì)算和存儲(chǔ)棚放。但他又有智能表象,他會(huì)學(xué)習(xí)馅闽,他可以準(zhǔn)確分析棋局飘蚯。
今天就是 ALPHAGO 跟李世石的世紀(jì)大戰(zhàn)了,我想根據(jù)上面的分析福也,對(duì)這個(gè)比賽預(yù)測(cè)一下:
- 1)第一局至關(guān)重要局骤,如果第一局李世石贏了,那后面幾局 ALPHAGO 基本沒(méi)有什么機(jī)會(huì)暴凑。因?yàn)樵诙潭處滋熘悄?ALPHAGO 很難大幅度調(diào)整它的計(jì)算能力峦甩,模型結(jié)構(gòu)和模型參數(shù)。ALPHAGO 應(yīng)該會(huì)準(zhǔn)備很多版本现喳,但這些版本跟第一局用的版本應(yīng)該沒(méi)有太大差別凯傲。ALPHAGO 當(dāng)然知道第一局最重要,第一局使用的應(yīng)該是最好的 ALPHAGO嗦篱。不過(guò)這次 ALPHAGO 即便輸了也沒(méi)有關(guān)系冰单,他很快可以繼續(xù)提高計(jì)算能力,繼續(xù)更大的海量數(shù)據(jù)訓(xùn)練灸促,它可以在一個(gè)月內(nèi)提高一個(gè)量級(jí)球凰,但李世石一個(gè)月提高不了一個(gè)量級(jí)。因此計(jì)算機(jī)打敗頂尖棋手就是這一兩年的事情腿宰。
- 2)如果第一局李世石輸了呕诉,他通過(guò)第一局的較量,能摸到 ALPHAGO 的規(guī)律吃度,做出調(diào)整甩挫,他能贏下后面的四局。我想有一個(gè)簡(jiǎn)單的調(diào)整辦法椿每。ALPHAGO 會(huì)對(duì)李世石的所有棋局做充分的學(xué)習(xí)伊者,如果李世石不采用自己通常的走法英遭,甚至不采用普通棋手慣常的走法,ALPHAGO 面對(duì)自己沒(méi)有學(xué)習(xí)過(guò)的東西亦渗,會(huì)比較愚蠢的挖诸,這就是圍棋智能的軟肋。我想李世石作為圍棋頂尖高手法精,他應(yīng)該可以發(fā)現(xiàn) ALPHAGO 更多的破綻多律。
我認(rèn)為,吳韌做出的圍棋人工智能搂蜓,是深度學(xué)習(xí)的進(jìn)步狼荞,他可以做到,別人也可以做到帮碰,這是方法學(xué)上的成功相味。
對(duì)于文章中的錯(cuò)誤和不足之處,歡迎留言討論殉挽。
寫的還是蠻容易懂的
長(zhǎng)篇紀(jì)實(shí)+技術(shù)剖析。即便是要觀戰(zhàn) AlphaGo 和李世石的世紀(jì)大戰(zhàn)锁荔,這篇文章也能夠給你很多指引蟀给。
深度好文,深入淺出阳堕,點(diǎn)贊跋理!
這篇文章解釋了「深度學(xué)習(xí)的勝利」,但不能證明異構(gòu)是否「嘩眾取寵」恬总。希望除了基礎(chǔ)理論的解釋前普,更多介紹一些異構(gòu)本身在算法設(shè)計(jì)和訓(xùn)練程度。
吳博士太太想公布算法細(xì)節(jié)壹堰,那是他的命根子拭卿。他們計(jì)劃每?jī)蓚€(gè)禮拜找聶衛(wèi)平棋院的小棋手做一次比賽骡湖,比賽過(guò)程會(huì)全程直播
mark