AlphaGo有沒有缺點或弱點?
不包括尚未證實的打劫,僅僅從演算法本身談存在的弱點。
一直是人工智慧技術的支持者,看了前幾局比賽加上看了一些相應論文之後,之前心裡一直有個隱約的想法,看到第四局一半的時候,大概能總結出這個演算法的缺陷,拋磚引玉,試圖跟大家探討一下。
排除一個假設:第四局中盤被黑客攻擊被deepmind團隊故意放水,如果是這個原因,以下推論也可能成立,但是可靠性偏弱。
首先幾個現象,這也是大家都發現的
簡化變化:感覺到計算機在某些部位簡化變化甚至不惜損一部分不願意打劫:明顯感覺到計算機不願意打劫
整局的棋感:機器的整局,勢的感覺要更好,典型的如五路尖沖局部精確的計算先大概講一下alphago的結構:
兩個組件,局面評估網路,走棋網路,一個統籌,MCTS。可能還配上其他設定總體還是蒙特卡洛搜索樹,利用走棋網路和局面評估網路來大概計算一下如何走,算一下概率走哪一個贏面大。類比人腦,走棋網路做的功能是人類的算棋過程,局面評估網路是大概用來評估局面那一塊比較大,也就是用來評估局面優勢還是劣勢。推論:
一、簡化變化,不願意打劫=&>算力問題:蒙特卡洛搜索樹是一種搜索演算法,但是依然會有算力瓶頸,所以在很多情況下,電腦會簡化棋形,保證有足夠的算力得以應對局部的複雜情況。同樣的,打劫因為涉及到局部與全局的各種價值的精細比較,也容易其導致算力不足,算力不足可能會導致機器搜索空間變小,更多的算棋部分可能切換成快速走棋網路(猜想)。譬如第四局,中間明顯一個劫的情況下,他的中間部分搜索深度似乎變弱,可能是花費了太多算力在各個局部的劫材運算是否應手的價值權衡以及還需要考慮劫財數量上,這個他就看不清了。
二、不願意打劫=&>概率演算法的缺陷:
MCST演算法是一種抽樣概率演算法,而一般棋手的習慣是儘可能贏的多,如果是接近全知的搜索的話,的確是概率演算法是對的,但是畢竟MCST是一種抽樣演算法,對局面的覆蓋面有限。而打劫這種概率演算法的重要缺陷。原因有二 1.劫材的前期積累可以轉換為後期的利益:譬如已經死掉的作為一方實空的棋,作為劫財,可以大幅度轉化為開劫時一方的優勢。譬如劫財這種東西,如果不開劫,可能價值很低甚至為0,但是如果開劫,就擁有巨大的價值。2.對劫的出現時間點難以預測導致其成為MCST的盲點:前期的劫財可能更後期劫爭的勝負有非常強的關聯,但是前期是無法搜索到後局是否會出劫的,在一方故意的情況下,劣勢方出劫的概率可能大大提升。所以我們發現alphago在前期非常容易將棋快速定型,不留餘味,在有開劫趨勢的情況下能迴避就迴避。MCST的問題在Zen等很多使用這種演算法的圍棋軟體上也有這種類似問題。那麼,一般人類棋手儘可能贏的多,而不是儘可能贏的概率大,就成為一種有一定合理性的選擇。
因為如果我贏的多,那麼在面對開劫等不確定事件的時候會有更多的容錯性。而除非把後面這種波動性考慮進去,否則前期追求勝利概率的一定深度廣度的尋優演算法,由於劫的這種前後耦合的存在,收斂到最終勝率的可能性可能並沒有那麼高。甚至除了劫爭之外,各種大棋形之間的對殺轉換這種一旦決出勝負,之前積累的優勢直接消失殆盡,然後又有相對深的走棋空間的時候,可能也是alphago的缺陷。另外,在alphago劣勢的情況下,MCST可能也有類似的問題,。
綜上,MCST這個最不像人腦思維方式的地方可能是alphago的缺陷。
三、整局的棋感=&>DNN的特點引出的猜想
因為評估和走子網路的訓練方式為將棋局作為一種類似圖片的形式輸入DNN(當然還配上其他特徵),DNN其實是一個高維空間一些抽象特徵的分類器的作用。這個網路會指導走棋和局面評估。那麼alphago的走棋全局感就會很強,五路尖沖就是很典型的類似武宮正樹或者吳清源那樣的走法,他大概知道什麼樣特徵的全局形勢是好的,然後會儘可能讓全局的局勢往這個方向走。這部分特點在很多局裡面也很容易出現,會導致他應對虛的局面的情況下,下出一些比較奇怪或者精彩的棋,尚不知道如何利用。取勝策略:
針對概率演算法 ,針對算力問題做攻擊,總結起來就是一句話,也就是第四局的情況:多處複雜局面留餘味,大勝負劫爭果斷開劫。李世石今天的中間用全部剩餘時間長考後下出的挖斷非常精彩,看的人心情激蕩,很有武俠小說裡面高手捨命相搏的風範。我認為谷歌的選子評估方法有欠缺。
首先,原因和證據
這是谷歌介紹AlphaGo演算法的論文中的一張圖,介紹了AlphaGo選擇下子位置的演算法。每一個備選的下子位置都有一個優選值,用Q+u(P)算得,Q可以理解為勝率,u(P)代表一個由先驗概率和經過次數計算得出的值。具體計算公式見論文,我就說一下依據Q+u(P),AlphaGo的下棋偏好:勝率高,歷史上棋局(包括棋手下的和它自己和自己下的)最常下的,發展最單一的,為最好,當然很有可能有的點是勝率好但其他兩個較差而被捨棄而取另一個三者綜合值更好的點。那麼我們可以看出,AlphaGo的選擇方式就是評估單點,雖然評估過程中會設計多步預測和多步概率評估,但最後落腳在一個點,我下這個點而不下在另一點的原因就是它這個點的Q+u(P)更高,而沒有考慮這個點之後的各點的勝率等因素,也就是說它沒有布局。我這麼說還是很難說清楚,不過如果藉助決策樹,就可以清楚一些了。這個是我簡單畫的一個決策樹,藍色代表棋局,黑色代表輸局,白色代表勝局,一共有紅色,黃色和紫色三種方案。最後紅色的勝率為0,黃色為40%,紫色為33%。這樣黃色方案的位置就很有可能被AlphaGo選中而下出,但我們可以注意到紫色方案下有一種方案是有必勝(實際情況中為勝率極高)的發展方式,可能有人會說這個發展方式的可能性也許會很低,但是,哪怕這個發展方式的可能性很高但依然有可能被AlphaGo捨棄,因為它的綜合勝率較低而且發展的可能方向較黃色更多,而且它的u(P)也不見得比黃色方案高,此處應有例子(待更)。那麼我們就可以看出AlphaGo的另一個下棋偏好了,保守。而且,這個保守在有些時候,很有可能成為錯誤。通過上面的決策樹,我們可以看出AlphaGo計算勝率的方式簡單直接,但是在有些情況下並不合理,比如當紫色中全勝的這一路很容易打出,而全敗的其他兩路發生的可能性不大時,選擇紫色位置明顯更加合適,但AlphaGo並不懂得從長遠考慮,它更喜歡保守地選擇綜合勝率高的。我之所以說AlphaGo不懂得布局的原因就在於此,在它的邏輯里,多步棋布局從而引導出優勢更大的局面並不是最好的選擇,最好的選擇是一步可以走出最多勝局的棋。
其實Google的Deepmind小組應該也注意到了這個問題,在論文中他們這樣寫道:It is worth noting that the SL policy network pσ performed better in
AlphaGo than the stronger RL policy network pρ, presumably becausehumans select a diverse beam of promising moves, whereas RL optimizesfor the single best move.
presumably because humans select a diverse beam of promising moves, whereas RL optimizes for the single best move.
嗯。-------------------------------------------------------------分割線上面待更的例子可以補上了。今天這個第四局就很好地體現了我上面畫的那個樹圖的問題,紫色為那個該打劫的那步棋,雖然勝率高但因為發展方向多而導致其優選值被拉低而被AlphaGo捨棄。肯定有人會問,那為什麼之前第三局的打劫會被下出呢,因為第三局的打劫的發展方向比今天的要明朗太多,可能性也少很多,優選值並沒有被拉下很多。李世石第三局的打劫也只是純粹為了打劫而打劫,並不會有足夠多的發展方向來拉低優選值。
我寫了一篇文章指出出了AlphaGo的漏洞:AlphaGo的致命漏洞 - 知乎專欄。 內容如下:
圍棋AI為什麼難做?公認的兩點理由是:搜索空間大、局面評估難。
AlphaGo為什麼厲害?因為它很好地處理了第一個問題。面對搜索空間大的問題,AlphaGo通過策略網路,使得選擇搜索分支時有了很強的針對性。但我認為AlphaGo還遠遠沒解決準確評估局面的問題,因為它是基於蒙地卡羅法做局面評估的,這會導致它在評估局面時出現致命的漏洞。下面我會用通俗的語言來做說明,小學生也能看懂:
蒙地卡羅法是一種用隨機數解決統計問題的方法。用在圍棋的局面評估上,就是將圍棋的局面評估問題看成一個統計問題。電腦評估一個局面好不好的時候,隨機下子,直到棋局結束,如此重複多盤模擬對局,看看勝率如何,勝率高的話就認為局面是好的。也就是說,它認為模擬對局的勝率高就是局面好。
但是在某些情況下,這是不成立的。如果接觸過象棋殘局的話就會知道,象棋殘局通常只有一個走法可以贏,走其它著法都會輸,勝率是很低的,但只要走對了就是必勝的。因此,勝率低不等於局面差,勝率高不等於局面好。這就是蒙地卡羅法必然有漏洞的原因。而且,這個問題也不會因為模擬棋局的數量增多而發生根本的改變。
AlphaGo模擬對局的方法建立在蒙地卡羅法之上,但有所改進,並不是隨機落子,而是落子在一些較好的位置上,但依然是用勝率來判斷局面的優劣。前面論證過,勝率高不等於局面好。因此這一定會是AlphaGo漏洞。
AlphaGo的局面評估運用了兩種方法,一是實戰時的模擬對局,二是價值網路。蒙地卡羅法的問題不僅僅表現在實戰時的模擬對局,也波及到價值網路,因為價值網路是通過實戰前的模擬對局產生的,同樣是根據勝率來判斷局面的優劣。
而且我認為,用蒙地卡羅法評估局面並不一定有讓圍棋軟體的棋力出現很大幅度的提升,具體原因請看我的另一篇專欄文章:真正引發電腦圍棋界大地震的並不是MCTS - 知乎專欄。
在局勢複雜的時候反映出來算力不夠。雖然在記譜,搜索的廣度和深度上要超過人類的高級棋手,但是其搜索的局面可能和人類棋手搜索的不同。所以alphago即可以下出出乎人類意料的好棋,也會對人類棋手公認的勝負手視而不見。這個缺陷可以通過增加計算資源,變化評估函數,合理分配用時來改善,但是不能從根本上解決問題。每一種類型的alphago,必然會對某類棋手是苦手的。
把局面搞渾是人類棋手獲勝的唯一機會,既然大家都算不清楚,那麼就拼運氣和少犯錯誤吧。
用時分配不合理。
像開局前幾手也要用一分鐘,中盤非常重要的幾手也用一分鐘左右,最後完全不行了才長考。
如果今天把計算的時間多用在最關鍵的那幾手上,可能會有更好的應對。比如李世石長考後下出78手,正常人都會看出這一手的關鍵和不尋常的程度,從而回應一個長考。而alphago很快的下出79手。「什麼時候需要分配更多時間」這個問題,屬於圍棋以外的另一個維度,而且沒有一個簡單的判斷正確或錯誤的標準,所以現在的策略可能就是簡單地平均分配,如果勝率低了再搜索更深?我覺得alphago可以自己和自己下很多盤,採取不同的用時策略,然後根據不同用時策略的勝率,就大概知道什麼情況下該多用時了。作為一個CS畢業的工程師。我想alphgo最強的地方是局面評估和搜索演算法。局面評估沒什麼漏洞。而搜索演算法是放棄了一些低概率的演算法。搜索深度也必然有限。那麼我想,在遙遠的地方來一個雙引征,可能會是電腦無法搜索到的高深度招法。深度學習解決了電腦的聯想能力,但是對事物進行提煉總結並簡化的能力仍然是電腦所缺乏的。人類可以把征子簡化,而電腦不行。所以遠距離的一子解雙征可能會是電腦無法發現的妙招。
推薦閱讀:
※為什麼AlphaGo不願意和羅洗河下一盤?
※如果AlphaGo走出第四局白78,大家會給出"這是神之一手,超越了人類的巔峰"這樣的評價嗎?
※DeepZenGo和AlphaGo的差距主要體現在那些方面?
※如何看待計算機博士、《人工智慧學家》主編劉鋒對谷歌AlphaGo的質疑?
※AlphaGo 是什麼語言開發的?