-
1 # 蜘蛛池
-
2 # 裸猿的故事
Master版的阿爾法狗,怎麼說都應該算是人類的學生,只不過青出於藍而勝於藍,現在被“純自學野路子版”的阿爾法元吊打,的確頗有點讓人情何以堪的滋味。
要解釋為什麼阿爾法元(AlphaGo Zero)能無師自通,那答案取決於兩個因素:首先是圍棋的本質,其次是演算法。即圍棋這類完全資訊博弈並且勝負判斷精確且規則明確的問題,在本質上可以不依賴前人的探索,而完全從零開始在足夠巧妙的演算法和硬體配合下,既能在短時間內到達相當的水平和高度。這依賴的是首先可以進行自對弈,其次能從自對弈中提取分析勝敗的相關因素和特徵,並投入到下一輪自對弈中去進行檢驗。
對比一下人類的自學能力所需要的前置條件:首先,得有一個合格的人腦,即一個大約由數百億神經元組合連線而成的硬體系統,其次得有一個基本的初始輸入,包括認字脫盲擁有基礎閱讀理解能力,這可以類比為人類的算法系統。在這兩者配合之下,至少部分人就擁有了不依賴老師,而自己學習新知識甚至開拓新領域的能力。
而AlphaGoZero並非一無所有,它有兩大神經網路架構,供它從每一局的自對弈中提取分析勝敗的特徵演算法,即自我反省能力,自我總結能力,並且將這種反省和總結立即投入到下一局的實戰中進行校驗的能力。
而之所以能只通過490萬局自對弈就能勝過從前三千萬局的成果,我想這主要是因為演算法的改進,尤其是特徵提取方面的改進造成的,要知道從前的AlpahGo的一些基礎特徵,比如虎口之類的認知靠的是外界輸入設定的,這說明老版本的特徵提取能力不強,當然在能夠利用人類經驗的情況下,許多棋型特徵都可以作為先驗知識輸入,這樣在初期顯示出來的水平較高,但在後期則可能受制於這些權重較高的經驗而誤入歧途。
這就是為何阿爾法元的成功,證明了兩件事。其一,圍棋是可以完全從零開始進行AI化的遊戲,其二,人類經驗在一定程度上是有侷限的,會限制AI在極高水平時候的提高和成長。但我們還是得看到,阿爾法元 vs Master版本時候,並未到達全勝,總還是給人類經驗留下點顏面了。另外,看到阿爾法元的成長史,也頗為有趣,萬丈高樓也得有個地基啊。
-
3 # 晴月浩新雪
人類如何下棋
人類下圍棋時,實際上有兩個技能比較重要:棋感與推算。
棋感
棋感相當於對圍棋的直覺,包括對候選著子位置的直覺和對局面優劣的評估兩個方面。
經過訓練的人可以透過觀察棋盤的局面,在沒有推演預測後續棋局變化的情況下,僅憑直覺就可以快速給出一些候選的著子位置。所以,某種角度看,對定式的學習和記憶等也都是在彙總前人經驗基礎上形成自己的棋感和直覺。即便最差勁的剛入門的棋手,也不會完全隨機的亂下,更不會一上來就放到(1,1)上,這就是你的棋感幫助你過濾掉了大量沒有意義的下法。
除了對落子位置的選擇有直覺影響外,我們對局面優劣的評估(特別序盤階段)也是受直覺影響的。比如我們經常用厚薄、虛實、先後、攻守等詞語描述圍棋裡雙方的局面,而且每個人都會用自己的風格來會平衡上面的因素推斷出當前局面裡雙方誰更佔優勢、優勢大小等。
我們有時會看到,專業棋手可以在幾乎沒有時間思考的情況下同時和十個甚至幾十個非專業棋手對弈,而且仍然能保持很高的勝率。在這種情形下,高水平的專業棋手推算能力被大幅度削弱,而遠勝非專業棋手的棋感在取勝上就起到了很大的作用。
推算
推算是我們在大腦中模擬雙方推演後續局面變化的能力,從而對未來的局勢變化有所預測。在一定水平的棋感幫助下,我們可以對每個局面快速給出若干個可能的候選落子位置,然後再對每一種有潛在優勢的落子可能,我們都可以交換角色反覆推算下去。這樣整個推演過程,就把對棋局變化的模擬組織成了一個樹狀結構。這樣,人們就會傾向於選擇對未來最有利的下法,能對未來的各種局面預測得越準確、預測得越長遠,那麼獲勝的機會也就越大。
那麼到底人類棋手的推演水平可以到達一個什麼程度呢?我們可以用下盲棋來衡量一下。實際上能下完完整棋局的盲棋對人類是非常難的,除了推演能力還要很高水平的記憶力。很多專業棋手(沒有專門訓練下盲棋)大概可以下到100手左右,後面就很容易亂了。一般業餘低段可算十幾步,業餘高段可算幾十步,某些職業棋手最多可以算至百步。計算機基本上沒有這種推演深度的限制,選擇一個合適的搜尋廣度和合適演算法後,它甚至可以一直模擬到終局,也就是相當於人類的下盲棋。
猴子爬樹我們正好可以用猴子爬樹來類比一下下棋時棋感和推算如何發揮作用。假設現在有一顆樹,有一隻猴子想要找到一條可以爬到樹的高處的路徑。
每到一個分叉點,猴子都可以嘗試選擇沿著哪條枝幹繼續爬下去。如果猴子能沒有遺漏的觀察每個分叉點的情況,它肯定每次都會選擇最粗狀的分支,這就是棋感。實際上受到自己的棋感水平的限制,每個猴子並不一定每次都只能看到所有的分支:棋感好的猴子,基本很少或不會遺漏最粗壯的樹杈。而棋感差的可能根本就看不見最粗壯的樹杈,或者雖然能看見最粗壯的樹杈但還是卻錯誤的把它當成細樹杈了。所以,棋感影響的是在每個分叉點觀察的廣度和準確度。
當然每次選擇最粗的分叉也並不能保證就可以爬到很高的位置,所以當所有分叉都很細不能繼續爬的時候,猴子會退回去換一個稍細的分叉來試試。每嘗試一個新的分叉點,就要消耗猴子的一些體力,這樣在體力耗盡之前,猴子會嘗試找到一個能爬到稍高一點的位置的路線。在爬樹過程中,猴子所消耗的體力就相當於圍棋裡的推算能力。而推算能力其實影響的是爬樹時的嘗試次數,或者說是嘗試的深度。
綜合廣度和深度,那麼:
在觀察力相同的情況下,體力好的猴子總能比比體力接近零純靠觀察的猴子,容易找到更好的路線在體力不變的情況下,觀察力好的猴子就可以減少很多無謂的嘗試,提高探索的效率從而有機會找到更好的路線。每次猴子累個半死爬完樹,或者跑到細樹杈上掉下來摔個半死之後,猴子終於找到一條比最開始純靠最初的直覺更好一些的路徑。如果猴子可以從過去的經驗中學習的話,那麼它就可以在下次爬樹的時候有一個稍好一些的直覺,比如除了粗細它還可以發現方向、堅固程度、光滑程度等等也都很有用,它就會傾向於不去選擇水平伸展的枝杈,也不去選擇太光滑或者比較脆易折斷的樹杈。AlphaGo Zero的奧秘AlphaGo Zero的結構其實是對人類下棋過程的建模。
深度殘差神經網路
在這裡,我們不對人工深度神經網路的原理做科普介紹,我們只需要把它想象成計算力的大腦就好。它的原理和結構都和人類大腦的工作方式有相似之處,可以看成是一個數學建模後的大腦。每一層神經網路就是其輸入資訊的特徵提取,最初的幾層神經網路只能提取區域性的簡單特徵,而堆疊足夠深以後就可以提取非常高階和複雜隱藏起來的高階特徵。
Alpha Go Zero裡那個幾十層的深度殘差神經網路(ResNet),實際上就是對人類棋感的模擬。
其中,20或40層的殘差單元堆疊部分,就是各種說不清、道不明的直覺(當然應該也包括一些對特定棋型模式的識別)。每個殘差堆疊單元內則是兩個3*3的卷積層。每多進行一次卷積計算,就相當於擴大了一次特徵識別的範圍。如果只進行一次卷積計算,則只會綜合棋盤上3*3範圍內的資訊,顯然是不夠的。而實際上堆疊20個單元的AlphaGo Zero,已經可以最多進行40次卷積,可以提取的特徵早就可以覆蓋到整個棋盤了。當然實際計算的大多是情形下,真正會參與到計算被啟用的神經元未必有40層卷積那麼深,分佈上最多的應該是1到41之間的某個中段上的數字,特別深和特別淺的卷積是很罕見的。而所謂的策略頭(Policy Head)就是模擬人類在直覺基礎上形成的候選著子位置。至於價值頭(Value Head )則是模擬人類在直覺基礎上對局面優劣的判斷(取勝的可能性)。它們更多的作用就是綜合用殘差網路的直覺提取的特徵,而產生最後的判斷。蒙特卡羅搜尋樹
蒙特卡羅搜尋樹,其實就是在模擬人類推演未來局面變化的部分,也就是類似前面說到的猴子爬樹的過程。
前面我們提到,經過對未來推演預測之後,就會得出可以比純靠直覺好一些的著子選擇,至少如果面臨一個和你水平相當的對手時是一定是可以取勝的。如果有辦法,能衡量圍棋的直覺與推演兩種下法的差距,並且透過某種方式細微調整直覺使差距縮小,那麼實際上你就會取得一點點進步。下次即便僅靠直覺你也能下出更好的好棋。
實際上,AlphaGo Zero也就是這樣的進步的。而且蒙特卡羅搜尋只是在自我對弈訓練時起作用。經過幾百萬盤自我對弈,積累無數微小進步之後,AlphaGo Zero的棋感或者說直覺已經和蒙特卡羅推演結果無限接近了,這樣到了真正跟其它對手下棋時,AlphaGo Zero已經完全不需要進行蒙特卡羅推演,僅靠直覺就能達到很高的水平。這一點就像專業圍棋選手很小朋友下一對十的指導棋一樣,全憑感覺也是可以贏棋的。
無師自通的過程實際舉幾個例子來說明吧。
一開始,實際上完全不懂圍棋的AlphaGo Zero其實是在用隨機方式下棋,就像連圍棋規則都不懂的小孩一樣,包括(1,1)這樣的亂下也是屢見不鮮的。但是經過多次蒙特卡羅推演和模擬後,AlphaGo Zero就會像初學圍棋的人一樣,發現大多數情況下這樣的走法是愚蠢的,取勝機率很小。於是就會逐漸調整代表圍棋直覺的神經網路裡的引數,來避免這種下法。
類似的還有吃子(提子),一開始只是在隨機模擬中遇到這樣的局面,但很快它發現下在能把子吃掉的位置就可以增加獲勝的機率,於是它就像貪婪的初學者一樣用這個只顧區域性吃子的策略來下棋。這是AlphaGo Zero大概3個小時自我對弈了20萬盤棋後的水平。可以說,因為基礎太差,所以從零到一的這一步,它的學習效率比較低,甚至遠遠不如比人類初學者的學習速度。
雖然很慢,但大概從10個小時開始(70萬盤棋之後),它已經進化到可以逐步獨立摸索出一些人類常用的定式。這也是不斷總結經驗後,發現這樣下棋會比較有取勝的機會。人類初學者學習定式雖然很快,但實際上是前輩幾代人在數百年對弈經驗基礎上總結和發現的。從可以獨立發現定式的角度,這時的AlphaGo Zero雖然仍然業餘水平沒法下贏職業棋手,但在學習潛力上已經可以和古往今來的許多發明定式的大師相媲美。
大概36個小時自我對弈250萬盤棋後,AlphaGo Zero已經進化到了和擊敗李世石的版本相近的水平。按Deepmind內部的評估,這個版本的等級分已經和目前的圍棋第一人柯潔相仿。
而72個小時490萬盤棋後,AlphaGo Zero的棋力就已經達到了可以用100比0的絕對優勢碾壓前代AlphaGo Lee(4比1擊敗李世石)的水平。按Deepmind的內部評估,它的棋力大致與前代AlphaGo Master相仿,也就是那個能以60比0快棋橫掃人類,並用3比0在烏鎮打敗柯潔的版本。
以上是20層殘差堆疊的效果。而升級到40層殘差堆疊並延長訓練時間到40天后(按計算量估計要自我對弈3000萬盤以上),Deepmind又得到了一個更加強大的AlphaGo Zero。那個曾經對戰人類時戰無不勝的AlphaGo Master,也只能以11比89的成績臣服。
在最後,我要補充和強調一點,以上成績水平的評估時,AlphaGo Zero其實都只是在用模擬棋感的部分在下棋,並沒有再用類似人類推演預測未來局面變化的蒙特卡羅樹搜尋技術……相對於人類而言,在圍棋上,這已經是無限接近神的境界了。
-
4 # 造就
如果學習模仿人類,那最多也就只能模仿人類而已。在很多複雜的局面中,存在著人類永遠發現不了的新見解。
掀翻世界圍棋冠軍後僅僅19個月,計算機程式AlphaGo跨越了一個更大的障礙:它現在能全憑自學達到前所未有的圍棋水平。取名AlphaGo Zero的新版程式剛開始對圍棋策略一無所知,在不接受任何人為訓練的情況下,只用了三天時間,就創造出幾千年來人類圍棋手從未想到的高明策略。這項突破讓人工智慧擺脫對人類知識的依賴,為智慧機器的未來消除了一個主要限制。
早期版本的AlphaGo在人類的指導下,利用兩種方法來學習圍棋。一是監督學習,研究人員把10萬場業餘高手的對局輸入程式,教它模仿人類的走法;二是強化學習,他們讓程式自己下棋,從結果中吸取經驗教訓。
AlphaGo Zero跳過了第一步。該程式從白丁開始,只知道圍棋的規則,自己跟自己對弈。起初,它把棋子隨機地放在棋盤上。隨著時間的推移,它能更好地評估棋盤上的局勢,發現有利的落子位置。它還學會了圍棋策略中的很多訣竅,自己發明了新招數。
“如果你學習模仿人類,那最多也就只能模仿人類而已,”密歇根大學計算機科學家桑汀德·辛格(Satinder Singh)說,“在很多複雜的局面中,存在著你永遠發現不了的新見解。”
經過三天的訓練和490萬場練習賽後,研究人員讓AlphaGo Zero和曾經打敗世界圍棋冠軍的舊版AlphaGo一決高下。AlphaGo Zero取得了100:0的全勝戰績。
在行家眼中,這個結果令人震驚。
圍棋比國際象棋複雜得多,走法多不勝數,單純的強化學習似乎無法掌握,你會認為AlphaGo Zero將永遠摸不著頭緒,盲目地尋找可行的策略。然而,它很快就培養出了人類無法企及的能力。
高效的學習過程歸功於反饋迴路。和其前身一樣,AlphaGo Zero透過一個名為“樹搜尋”的過程來確定下一步棋的走法。該程式從當前的盤面入手,考慮可能的落子位置,接著考慮對手會怎麼下,然後再考慮自己如何應對,以此類推,形成一個模擬不同落子組合、產生不同盤面的分支樹圖。
AlphaGo Zero無法窮盡搜尋樹的每個分支,因為這需要極為強大的計算能力。它透過確定哪些路徑最有取勝希望,有選擇地修剪枝丫。它根據以前學到的致勝走法和盤面,來計算應該修剪哪些枝丫。
早期版本的AlphaGo也是這麼做,但AlphaGo Zero的新穎之處在於,它不是執行樹搜尋,然後走一步棋,而是記住樹搜尋的結果以及對弈的結果,然後利用這些資訊,調整它對具有取勝希望的走法和不同落子位置的致勝可能性的判斷。因此,下一次執行樹搜尋的時候,它能利用改善後的判斷(經由以前的樹搜尋結果加以訓練),來進一步改善對最佳可能走法的判斷。
AlphaGo Zero背後的計算策略很有效,特別是在擁有眾多可能性、需要找到最優解的情況下。在描述AlphaGo Zero研究的論文中,作者們寫到,他們的系統可用於材料研究(識別讓材料具有不同屬性的原子組合)和蛋白質摺疊(瞭解蛋白質的三維結構如何決定其功能)。
至於圍棋,AlphaGo Zero帶來的影響可能是驚天動地的。迄今為止,遊戲公司未能開發出世界級的圍棋軟體。AlphaGo Zero可能改變這一點。美國圍棋協會執行副Quattroporte安德魯·傑克遜(Andrew Jackson)認為,不久後圍棋應用程式將面市。這將改變人類圍棋手的訓練方式,也將使作弊變得更容易。
對於AlphaGo來說,其未來是無限寬廣的。圍棋十分複雜,沒人知道一個能夠自學的計算機程式將達到怎樣的高度。現在,AlphaGo有了能夠匹配圍棋之廣博的學習方法。
翻譯:于波
-
5 # 北航秦曾昌
Alpha Zero是Deepmind繼AlphaGo Zero(主要針對圍棋推出的演算法)之後推出的終極對弈殺器,在經過短短几個小時的訓練就相繼征服了國際象棋,日本將棋以及中國圍棋。
那麼Alpha Zero為何會如此強大呢,這其中的關鍵就在於深度神經網路和蒙特卡洛搜尋樹的結合。其中深度神經網路的輸入當前以及歷史的棋盤佈局,輸出下一步的下棋位置的機率分佈以及勝率。蒙特卡洛搜尋樹則是一種常用的搜尋樹,透過不斷的推演棋盤之後的狀態,從而下那些勝率高的位置。在蒙特卡洛搜尋的過程中結合了深度神經網路對於當前棋盤的評估,使得蒙特卡洛搜尋的質量更好。
整個訓練過程就可以歸結為兩步:
1. 利用蒙特卡洛搜尋樹和深度神經網路的自我對弈(self-play)得到更好的下棋資料;2. 用這些資料來訓練神經網路,以提高其評估的質量。反覆的執行上述過程,就可以不斷提高Alpha Zero的下棋水平
在這裡我們可以將Alpha Zero的訓練過程比作人的學習過程。人在開始學習的時候,不知道該怎麼下,就可能會胡亂的下棋。但是經過幾輪的下棋之後,人就會講之前的下棋經驗累積起來,慢慢的開始瞭解到什麼時候該下哪裡以及我是快輸了還是贏了。此外人在下棋的過程中,總會是推演之後的下棋狀態,從而下的位置更好。然後隨著下的盤數增加,人的經驗就回越來越豐富,下棋的水平也越來越高。這其中人腦就是深度神經網路,能夠儲存過去的經驗,而結合神經網路的蒙特卡洛搜尋就是基於當前的經驗和未來的推演來得到更好的棋局,神經網路的訓練過程就是總結棋局成為經驗。
但是Alpha Zero為什麼能在那麼短時間內就能去的如此之快的進步。這就在於其中使用了大量的TPU和CPU,使得Alpha Zero能在極短的時間內就能下很多盤棋,大大加快了學習的速度。
回覆列表
人工智慧,目前還在主動學習的初級階段,只能半自動化,我覺得已經足矣,可以寫一個程式讓程式識別寫一了半程式碼的表達意思,去完善剩下的程式碼,就是人指導程式碼來寫程式碼,還是很牛的。報道中常說的“自學成才”其實表達的不算很準確,為什麼可以這場人機大戰,其實是人與機器的互動,可以理解成人與程式碼的聯絡,人的每一步棋可以理解成人對機器的一個指令,機器總是可以戰勝人的。單一小方向的指令機器是可以做到的,下棋有多少種走法,機器可以判斷,人卻沒有那麼大的計算量。人工智慧,潛力巨大,如果研發方向更多的向民生工程傾向,就如手術,可以透過很小的機器,程式碼實現,那麼真是造福人類的偉大壯舉,不知道技術難題還有多少有待克服~