開場白
AlphaGo兩番贏下了人類圍棋世界的真正高手,世界第二的韓國棋手李世石[1]。
賽前,準確說是Google的DeepMind團隊剛放出消息說戰勝了歐洲圍棋冠軍樊輝并打算挑戰李世石的時候,我個人是很謹慎地說這場比賽很難講,但其實心里認為AlphaGo的贏面更大。只不過當時AlphaGo戰勝的樊輝雖說是歐洲冠軍,但全球排名都不入百,實在算不得是大高手。但AlphaGo的優勢在于有半年多的時間可以不眠不休地學習提高,而且還有DeepMind的工程師為其保駕護航,當時的AlphaGo也不是完全版,再加上我所深知的人類固有的夜郎自大,這些戰內戰外的因素結合在一起,雖然嘴巴上說這事難講,但心里是認定了AlphaGo會贏得。
結果,李世石賽前說比賽應該會5:0或者4:1而自己的使命就是盡可能阻止那1的出現,但實際的戰況卻是現在AlphaGo以2:0的比分暫時領先。且,如果不出意外的話,最終的總比分應該是AlphaGo勝出——只不過到底是5:0還是4:1,這還有待事態發展。
這一幕不由地讓人想起了當年的吳清源,將所有不屑他的挑戰者一一斬落,最終敢讓天下先。
當然了,當今世界棋壇第一人的柯潔對此恐怕是不同意的,但讓我說,如果下半年AlphaGo挑戰柯潔,或者柯潔主動挑戰AlphaGo,那我還是堅定地認為,AlphaGo可以戰勝柯潔。
不過,這里所要說的并不是上述這些時代背景。
機器超越人類僅僅是一個時間的問題,當然還有一個人類是否肯丟下面子去承認的問題[2]。
輸贏不是重點,為什么會輸怎么會贏,這才是重點。
AlphaGo的算法
第一局對弈中,李世石開局選擇所有人都不曾走過的開局,是為了試探AlphaGo。而中后盤又出現了明顯的惡手,所以人們普遍可以認為AlphaGo是捕捉到了李世石本身的重大失誤,這才完成的逆轉。
事實上李世石本人也是這么認為的。
但到了第二局,事情就完全不同了。執黑的AlphaGo竟然讓李世石認為自己從來就沒有真正地占有過優勢,從而可以認為是被一路壓制著走到了最后。
而且,無論是第一局還是第二局,AlphaGo都走出了所有職業棋手都嘆為觀止的妙手,或者是讓所有職業棋手都皺眉不接的怪手。
很多時候,明明在職業棋手看來是不應該走的落子,最后卻居然發揮了奇妙的作用。就連賽前認為AlphaGo必敗的聶棋圣,都對第二局中AlphaGo的一步五線肩沖表示脫帽致敬。
職業棋手出生的李喆連續寫了兩篇文章來分析這兩局棋,在對棋局的分析上我自然是不可能比他更專業的。我這里所想要說的是,從AlphaGo背后的算法的角度來看,機器的棋道究竟是什么呢?
AlphaGo的算法,可以分為四大塊[3]:
- 策略網絡
- 快速走子
- 估值網絡
- 蒙特卡洛樹搜索
這四個部分有機結合在一起,就構成了AlphaGo的算法。
當然,這么說比較枯燥,所以讓我們從蒙特卡洛樹開始做一個簡單的介紹。
當我們在玩一個游戲的時候(當然,最好是圍棋象棋這種信息完全透明公開且完備沒有不可知成分的游戲),對于下一步應該如何行動,最好的方法當然是將下一步所有可能的情況都列舉出來,然后分析對手所有可能的策略,再分析自己所有可能的應對,直到最后比賽結束。這就相當于是說,以現在的局面為種子,每一次預判都進行一定數量的分岔,構造出一棵完備的“決策樹”——這里所謂的完備,是說每一種可能的未來的變化都能在這棵決策樹中被體現出來,從而沒有跑出決策樹之外的可能。
有了決策樹,我們自然可以分析,哪些下一步的行為是對自己有利的,哪些是對自己有害的,從而選擇最有利的那一步來走。
也就是說,當我們擁有完備的決策樹的時候,勝負基本已經定下了,或者說如何應對可以獲勝,基本已經定下了。
更極端一點的,梅策羅有條定理就是說,在上述這類游戲中,必然存在至少一條這種必勝的策略[4]。
所以,原則上來說,在全知全能的上帝(當然是不存在的)面前,你不管怎么下圍棋(或者國際象棋、中國象棋、日本將棋),上帝都知道怎么走必勝,或者最多最多就是你走的剛好和上帝所預設的一樣。
但,上述完全的完備的完美的決策樹,雖然理論上對于圍棋這樣的游戲來說是存在的,但實際上我們無法獲得。
不但是說我們人類無法獲得,更是說我們的機器也無法獲得——圍棋最后的局面可能有3361種可能,這個數量超過了人類可觀測宇宙中的原子總數。
因此,現在的情況是:無論是人還是機器,都只能掌握完全決策樹的一部分,而且是非常非常小的一部分。
所以,上述神之棋路是我們人類和機器都無法掌握的。
故而,人和機器就采用了一定的手段來多決策樹做簡化,至少將其簡化到自己能處理的程度。
在這個過程中,一個最自然的方法(無論對機器還是對人來說),就是只考慮少量層次的完全展開,而在這些層次之后的決策展開則是不完全的。
比如說,第一步有100種可能,我們都考慮。而這100種可能的落子之后,就會有第二部的選擇,這里比如說有99種可能,但我們并不都考慮,我們只考慮其中的9種。那么本來兩層展開有9900種可能,現在我們就只考慮其中的900種,計算量自然是大為縮減。
這里,大方向人和機器是相同的,差別在于到底如何篩選。
對機器來說,不完全的決策展開所采用的是蒙特卡洛方法——假定對子決策的隨機選擇中好與壞的分布與完全展開的情況下的分布是相似的,那么我們就可以用少量的隨機抽樣來代表完全采樣的結果。
說白了就是:我隨便選幾個可能的決策,然后最進一步分析。
這里當然就存在很大的風向了:如果正好有一些決策,是隨機過程沒有選中的,那不就蛋疼了么?
這點人的做法并不相同,因為人并不完全是隨機做出選擇。
這里就牽扯到了所謂的棋感或者大局觀。
人們在落子的時候,并不是對所有可能的上百個選擇中隨機選一個出來試試未來的發展,而是利用棋形、定式、手筋等等通過對局或者學習而得來的經驗,來判斷出哪些落子的可行性更高,哪些位置的落子則基本可以無視。
所以,這就出現了AlphaGo與李世石對局中那些人類棋手很莫名的棋著來了——按照人類的經驗,從棋形、棋感、定式等等經驗出發完全不應該去走的落子,AlphaGo就走了出來。
在傳統只利用蒙特卡洛樹搜索的算法中,由于對落子位置的選擇以隨機為主,所以棋力無法再做出提升。這等于是說機器是一個完全沒學過圍棋的人,完全靠著強大的計算力來預測未來幾百步的發展,但這幾百步中的大多數都是隨機走出的不可能之棋局,沒有實際的參考價值。
Facebook的DarkForest和DeepMind的AlphaGo所做的,就是將原本用于圖形圖像分析的深度卷積神經網絡用到了對棋局的分析上,然后將分析結果用到了蒙特卡洛樹搜索中。
這里,深度卷積神經網絡(DCNN)的作用,是通過對棋局的圖形圖像分析,來分析棋局背后所隱藏的規律——用人的話來說,就是棋形對整個棋局的影響規律。
然后,將這些規律作用到對決策樹的裁剪上,不再是完全通過隨機的方法來判斷下一步應該往哪走,而是利用DCNN來分析當下的棋形,從而分析當下棋形中哪些位置的落子具有更高的價值,哪些位置的落子幾乎毫無價值,從而將無價值的可能落子從決策樹中減除,而對哪些具有高價值的決策進行進一步的分析。
這就等于是將學習來的棋形對棋局的影響規律運用到了對未來可能發展的選擇策略中,從而構成了一個“學習-實踐”的正反饋。
從AlphaGo的算法來看,這種學習經驗的使用可以認為分為兩部分。一個是估值網絡,對整個棋局大勢做分析;而另一個是快速走子,對棋局的局部特征做出分析匹配。
因此,一個負責“大局觀”,而另一個負責“局部判斷”,這兩個最后都被用來做決策的剪裁,給出有足夠深度與準確度的分析。
與之相對的,人的決策時如何制定的呢?
人類的弱點
我雖然不是棋手,只是知道圍棋規則和簡單的幾個定式,但人的一大特征就是,人的很多思考方式是在生活的各個領域都通用的,一般不會出現一個人在下圍棋時用的思路與干別的事時的思路徹底不同這樣的情況。
因此,我可以通過分析自己與觀察別人在日常生活中的行為以及如何導致這種行為的原因,來分析下棋的時候人類的普遍一般性策略是怎么樣的。
那就是——人類會根據自身的性格與情緒等非棋道的因素,來進行決策裁剪。
比如說,我們經常會說一個棋手的風格是保守的,而另一個棋手的風格是偏向于激進廝殺的——記得人們對李世石的風格界定就是這樣。
這意味著什么?這其實是說,當下一步可能的決策有100條,其中30條偏保守,30條偏激進,40條中庸,這么個情況下,一個棋風嗜血的棋手可能會選擇那激進的30條策略,而忽略別的70條;而一個棋風保守的,則可能選擇保守的30條策略;一個棋風穩健的,則可能是那中庸的40條策略為主。
他們選擇策略的因素不是因為這些策略可能的勝率更高,而是這些策略所能體現出的局部的棋感更符合自己的風格——這是與是否能獲勝無關的價值判斷,甚至可以說是和棋本身無關的一種判斷方法,依據僅僅是自己是否喜歡。
更進一步,人類棋手還可以根據對手的棋風、性格等因素,來篩選出對手所可能走的棋路,從而篩選出可能的策略進行反擊。
因此,也就是說:由于人腦無法處理如此龐大的信息、決策分岔與可能性,于是人腦索性利用自身的性格與經驗等因素,做出與處理問題無關的信息篩選。
這可以說是AlphaGo與人類棋手最大的不同。
人類棋手很可能會因為風格、性格、情緒等等因素的影響,而對某些可能性做出不夠重視的判斷,但這種情況在AlphaGo的算法中是不存在的。
其中,情緒可以通過各種手段來壓制,但棋手個人的風格與更深層次的性格元素,卻完全可能導致上述弱點在自己無法控制的情況下出現。但這是AlphaGo所不具備的弱點——當然,這不是說AlphaGo沒弱點,只不過沒有人類的弱點罷了。
究其根本,這種通過戰局外的因素來篩選戰局內的決策的情況之所以會出現,原因在于人腦的信息處理能力的不足(當然如果我們計算一個單位體積或者單位質量的處理問題的能力的話,那么人腦應該還是優于現在的計算機很多很多的,這點毋庸置疑),從而只能通過這種手段來降低所需分析的信息量,以確保自己可以完成任務。
這是一種在有限資源下的取舍策略,犧牲廣度的同時來換取深度以及最終對問題的解決。
同時,又由于人腦的這種功能并不是為了某個特定任務而開發的,而是對于整個生活與生存來說的“通識”,因此這種舍去本身只能與人的個體有關,而與要處理的問題無關,從而無法做到AlphaGo那樣完全只通過局面的分析來做出篩選,而是通過棋局之外的因素來做出選擇。
這就是人與AlphaGo的最大不同,可以說是分別寫在基因與代碼上的命門。
更進一步,人類除了上述決策篩選的通用方案之外,當然是有針對特定問題的特定篩選方案的,具體在圍棋上,那就是各種定式、套路以及各種成熟或者不成熟的關于棋形與大勢的理論,或者僅僅是感覺。
也就是說,人通過學習來掌握局部與全局特征,并利用這些特征來做出決策,這個步驟本身和機器所干的是一樣的。但不同點在于,人可能過于依賴這些已有的經驗總結,從而陷入可能出現而無人注意的陷阱中。
這就是這次AlphaGo數次走出有違人類經驗常理的棋著但事后發現很有用很犀利的原因——我們并不知道自己數千年來總結下來的經驗到底能在多大程度上應用于新的棋局而依然有用。
但AlphaGo的算法沒有這方面的困擾。它雖然依然是利用人類的棋譜所給出的經驗,利用這些棋譜中所呈現出的全局或者局部的規律,但最終還是會通過蒙特卡洛樹搜索將這些經驗運用到對棋局的推演中去,而不是直接利用這些規律做出定式般的落子。
所以,不但定式對AlphaGo是沒意義的,所謂不走尋常路的新棋路對AlphaGo來說威脅也不大——這次第一局中李世石的新棋路不就一樣失效了么?因此即便吳清源再世,或者秀哉再世(佐為??),他們即便開創出全新的棋路,也不能作為必定能戰勝AlphaGo的依據。
理論上來說,只要出現過的棋譜足夠多,那么就能找出圍棋背后的規律,而這就是機器學習要挖掘出來的。新的棋路,本質上不過是這種規律所演化出的一種無人見過的新現象,而不是新規律。
那么,AlphaGo的弱點是什么?它是不是全無弱點?
這點倒是未必的。
AlphaGo的弱點
從AlphaGo的算法本身來說,它和人一樣不可能對所有可能的決策都做出分析,雖然可以利用各種手段來做出價值判斷,并對高價值的決策做出深入分析,但畢竟不是全部,依然會有遺漏。這點本身就說明:AlphaGo的考慮不可能是完備的。
而且,很顯然的是,如果一個人類可能進行的策略在AlphaGo看來只會帶來不高的勝率,那么這種策略本身就會被剪除,從而這種策略所帶來的變化就不在AlphaGo當下的考慮中。
因此,假如說存在一種棋路,它在前期的多輪思考中都不會帶來高勝率,那么這種棋路就是AlphaGo“意料之外”的。
而如果這種每一步都沒有高勝率的棋路在若干步后可以給出一個對人類來說絕佳的局面,從而讓AlphaGo無法翻盤,那么這種棋路就成了AlphaGo思路的死角。
也就是說說,在AlphaGo發覺它之前,它的每一步鋪墊都是低勝率的,而最后構造出的棋形卻具有絕對的高勝率,這種低開高走的棋路,是會被AlphaGo忽略的。
雖然我們并不知道這種棋路是否存在,以及這種棋路如果存在的話應該長什么樣,但我們至少知道,從理論上來說,這種棋路是AlphaGo的死角,而這一死角的存在就基于這個事實:無論是人還是AlphaGo,都不可能對所有策略的所有演變都掌握,從而無論如何死角總是存在的。
當然,這一理論上的死穴的存在性并不能幫助人類獲勝,因為這要求極深的觀察力和預判能力,以及要構造出一個即便AlphaGo察覺了也已回天乏力的幾乎可以說是一錘定音的局面,這兩點本身的要求就非常高,尤其在思考深度上,人類恐怕本就比不過機器,從而這樣的死角可能最終只有機器能做到——也就是說,我們可以針對AlphaGo的算法研發一款BetaGo,專門生成克制AlphaGo的棋路,然后人類去學習。以算法戰勝算法[5]。
但這樣到底是機器贏了,還是人贏了呢?
另一方面,上述方法雖然是理論上的AlphaGo思維的死角,本人們并不容易掌握。那有沒有人們可以掌握的AlphaGo的死角呢?
這點恐怕非常難。我認為李喆的觀點是非常有道理的,那就是利用人類現在和歷史上的整體經驗。
開創新的棋局就必須面對處理你自己都沒有充分面對充分準備過的局面,這種情況下人類具有前面所說過的兩個弱點從而要么思考不完全要么陷入過往經驗與定式的坑中沒能走出來,而機器卻可以更均衡地對所有可能的局面盡可能分析,思考更全面周翔,那么人的局限性未必能在新棋局中討到什么好果子吃。
反過來,如果是人類已經研究多年非常非常熟悉的局面,已經沒有新花樣可以玩出來了,那么機器的全面考慮就未必能比人的千年經驗更占有。
因此,面對AlphaGo,人類自以為傲的創造力恐怕反而是絆腳石,回歸傳統利用傳統積累才有可能獲勝。
但,這樣的獲勝等于是說:我創造力不如機器,我用我的經驗砸死你。
人類引以為傲的創造力被拋棄,機器本應更擅長的被定式卻成了救命稻草,這不是很虐心么?
那么,創新棋路是否真的不可能戰勝AlphaGo?這點至少從目前來看,幾乎不可能,除非——
如果李世石和別的人類其實通過這兩天,或者說在這幾年里都演練過一個被推演得很充分的新棋路,但這套棋路從來沒有被以任何形式公開過,那么這樣的新棋路對AlphaGo來說可能會造成麻煩,因為原本創新中AlphaGo的均衡全面考慮可能會敗給李世石等人類棋手多年的推演專修而來的集體經驗。
因此,我們現在有了三條可以戰勝AlphaGo的可能之路:
- 通過每一步低勝率的棋著構造出一個擁有極高勝率的局面,利用前期的低勝率騙過AlphaGo的策略剪枝算法,可以說是鉆算法的漏洞;
- 利用人類千年的圍棋經驗總結,靠傳統定式而非創造力擊敗思考均衡的AlphaGo,可以說是用歷史戰勝算法;
- 人類棋手秘而不宣地研究從未公開過的新棋路,從而突破AlphaGo基于傳統棋譜而總結學習來的經驗,可以說是用創造力戰勝算法。
其中,算法漏洞是必殺,但人類未必能掌握,只能靠未來更先進的算法,所以不算是人類的勝利;用歷史戰勝算法,則可以說拋棄了人類的驕傲與自豪,勝之有愧;而用創造力戰勝算法,大概算是最有范的,但卻依然很難說必勝——而且萬一AlphaGo自己與自己的千萬局對弈中早就發現了這種棋路,那人類依然會慘敗。
綜上所述,要戰勝AlphaGo,實在是一條充滿了艱辛的道路,而且未必能走到頭。
人相對AlphaGo的優勢
雖然說,在圍棋項目上,人必然最終敗在以AlphaGo為代表的計算機算法的腳下,但這并不表示AlphaGo為代表的圍棋算法就真的已經超越了人類。
問題的關鍵在于:AlphaGo下棋的目的,是預設在算法中的,而不是其自己生成的。
也就是說,AlphaGo之所以會去下圍棋,會去盡力贏圍棋,因為人類設定了AlphaGo要去這么做,這不是AlphaGo自己能決定的。
這可以說是人與AlphaGo之間做大的不同。
而,進一步來分析的話,我們不由地要問:人活在這個世界上是否真的是無預設的,完全有自己決定的呢?
恐怕未必。
包括人在內的所有生物,基本都有一個預設的目標,那就是要保證自己能活下去,也即求生欲。
人可以通過各種后天的經驗來講這個目標壓制下去,但這一目標本身是寫在人類的基因中的。
從這點來看,AlphaGo的問題恐怕并不是被預設了一個目標,而是目前還不具備設置自己的目標的能力,從而就更加談不上以自己設置的目標覆蓋預設的目標的可能了。
那么,如何讓算法可以自己設定目標呢?這個問題恐怕沒那么容易來回答。
而,如果將這個問題局限在圍棋領域,那么就成了:AlphaGo雖然知道要去贏棋,但并不知道贏棋這個目標可以分解為前中后三期的子目標,比如人類經常談及的爭大勢、奪實地以及最后的獲勝,這類子目標。
雖說在某些小局部,DCNN似乎展現了可以將問題分解為子目標并加以解決的能力,但至少在設立總體目標這個問題上,目前的算法看來還無能為力。
這種自助設定目標的能力的缺失,恐怕會是一種對算法能力的制約,因為子目標有時候會極大地簡化策略搜索空間的結構與大小,從而避免計算資源的浪費。
另一方面,人超越AlphaGo的另一方面,在于人具有將各種不同的活動共通抽象出一種通用的規律的能力。
人們可以從日常生活、體育活動、工作學習等等活動中抽象出一種通用的規律并收為己用,這種規律可以認為是人生觀或者價值觀,也或者別的什么,然后將這種三觀運用到諸如寫作與下棋中,從而形成一種通過這種具體活動而體現出自己對人生對生活的看法的獨特風格,這種能力目前計算機的算法并不能掌握。
這種將各不同領域中的規律進一步融會貫通抽象出更深一層規律的能力,原則上來說并不是算法做不到的,但我們目前沒有看到的一個最主要的原因,恐怕是無論是AlphaGo還是Google的Atlas或者別的什么項目,都是針對一個個特定領域設計的,而不是設計來對日常生活的方方面面進行處理。
也就是說,在算法設計方面,我們所持的是一種還原論,將人的能力分解還原為一個個領域內的特有能力,而還沒有考慮如何將這些分解后的能力再重新整合起來。
但人在自然演化過程中卻不是如此,人并不是通過對一個個項目的鉆研,然后匯聚成一個人,人是在直接面對日常生活中的各個領域的問題,直接演化出了大腦,然后才用這個大腦去處理一個個特定領域內的具體問題。
因此,算法是由底向上的設計方式,而人類卻是由頂向下的設計方式,這恐怕是兩者最大的不同吧。
這也就是說,雖然在某個具體問題上,以AlphaGo為代表的計算機的訓練樣本是遠大于人的,但在總體上來說,人的訓練樣本卻可能是遠高于計算機的,因為人可以利用圍棋之外的別的日常生活的活動來訓練自己的大腦。
這恐怕是一種新的學習算法設計方向——先設計一種可以利用所有可以探測到的活動來訓練自己的神經網絡演化算法,然后再利用這個算法已經生成的神經網絡來學習某個特定領域的問題。
這種通用的神經網絡算法相對于專門領域的算法到底是優是劣,這恐怕在那一天出來以前,人類是無法知道的了。
人與AlphaGo的不同
最后,讓我們回到AlphaGo與李世石的對局上。
我們可以看到,在這兩局中,最大的一個特點,就是AlphaGo所理解的棋道,與人所理解的棋道,看來是存在很大的不同的。
這也就是說,人所設計的下圍棋的算法,與人自己對圍棋的理解,是不同的。
這代表什么?
這表示,人為了解決某個問題而設計的算法,很可能會做出與人對這個問題的理解不同的行為來,而這個行為滿足算法本身對這個問題的理解。
這是一件細思極恐的事,因為這表示具有更強能力的機器可能因為理解的不同而做出與人不同的行為來。這種行為人無法理解,也無法判斷到底是對是錯是好是壞,在最終結局到來之前人根本不知道機器的行為到底是何目的。
因此,完全可能出現一種很科幻的局面:人設計了一套“能將人類社會變好”的算法,而這套算法的行為卻讓人完全無法理解,以至于最終的社會可能更好,但中間的行為以及給人帶來的局面卻是人類根本想不到的。
這大概是最讓人擔憂的吧。
當然,就目前來說,這一天的到來大概還早,目前我們還不用太擔心。
結尾
今天是AlphaGo與李世石的第三輪對決,希望能有所驚喜吧,當然我是說AlphaGo能為人類帶來更多的驚喜。
通過本協議,您可以分享并修改本文內容,只要你遵守以下授權條款規定:姓名標示 、非商業性、相同方式分享。
具體內容請查閱上述協議聲明。
本文禁止一切紙媒,即印刷于紙張之上的一切組織,包括但不限于轉載、摘編的任何應用和衍生。網絡平臺如需轉載必須與本人聯系確認。
如果喜歡簡書,想要下載簡書App的話,輕戳這里~~
<small>私人推薦訂閱專題:《有意思的文章》、《嚴肅碼匠圈》</small>
-
對,是世界第二,因為就在年初他剛剛被中國圍棋天才柯潔斬落馬下,所以柯潔現在是世界第一,李世石很不幸地低落到了世界第二。當然了,AlphaGo背后的DeepMind團隊打算挑戰李世石的時候,他還是世界第一。 ?
-
有一個很有趣的效應,稱為“AI效應”,大意就是說一旦機器在某個領域超越了人類,那么人類就會宣布這一領域無法代表人類的智慧,從而始終保持著“AI無法超越人類”的局面。這種掩耳盜鈴的鴕鳥政策實在是讓人嘆為觀止。 ?
-
這部分可以看Facebook圍棋項目DarkForest在知乎的文章:AlphaGo的分析 ?
-
策梅洛于1913年提出的策梅洛定理表示,在二人的有限游戲中,如果雙方皆擁有完全的資訊,并且運氣因素并不牽涉在游戲中,那先行或后行者當中必有一方有必勝/必不敗的策略。 ?
-
這方面,有人已經研究了一種算法,可以專門功課基于特定神經網絡的學習算法,從而構造出在人看來無意義的噪音而在計算機看來卻能識別出各種不存在的圖形的圖像。未來這種針對算法的“病毒算法”恐怕會比學習算法本身具有更大的市場和更高的關注。 ?