當前位置: 華文問答 > 數碼

AlphaGo 能戰勝李世石嗎?

2016-06-22數碼

現在的比分是 0:2,小李的狀態很不佳,這次也完全可能被零封。但目前的 AlphaGo,可能並非人類不可戰勝。


【UPDATE:對 AlphaGo 和圍棋人工智能有興趣的朋友,我最近在寫一個系列,介紹如何自制你的"AlphaGo",請點選:

知乎專欄

UPDATE:第四盤,電腦盲點出來了。我在下面說過,邏輯性是 DNN 的盲點,可以誤導 MCTS 的展開,某些怪招是走入了錯誤的變化,而不全是什麽神之一手天外飛仙。 同時 AlphaGo 也會出現盲區。 正是如此。 之前我在這裏還說 Google 很雞賊,不公開 AlphaGo 失敗的棋譜,也不開放任何對弈,避免顯示自己的弱點,下面不時有人出來噴「憑什麽要求Google公布」雲雲,言辭非常不客氣,我就編輯掉並關閉評論了,各位現在理解了嗎。許多做機器學習的朋友不了解電腦圍棋,如果真研究過近年來的電腦圍棋文獻,會發現和跑個 ImageNet 的程度不一樣,需要的邏輯知識更豐富。電腦圍棋未來會完美戰勝人類棋手(且必須加入更多Domain-dependent的方法),但恐怕不是今天。NOT TODAY。我們看看 Google DeepMind 的 Hassabis 怎麽說吧:

@demishassabis 26m26 minutes ago

Lee Sedol is playing brilliantly! #AlphaGo thought it was doing well, but got

confused on move 87. We are in trouble now...

@demishassabis 7m7 minutes ago

Mistake was on move 79, but #AlphaGo only came to that realisation on around

move 87

這就正是我在此所說的「電腦吃驚」。 其實即使對於AI研究,最完美的情況也並不是碾壓李世石,而是我們看到人機之間的此消彼長,互相學習。圍棋是一個極其有趣的問題,希望看到它能為AI研究貢獻更多世界的奧秘,而不是如此輕易地被徹底解決。


AlphaGo的核心是 MCTS + DNN + RL 。之前沒有說 RL,但它其實是很有意思的部份,因為在從前的對弈程式研究中,RL 的效果一般並不好。RL 的弱點是 overfit,也就是雖然小道訊息公布目前這個版本的 AlphaGo 面對去年的戰勝樊麾的版本的勝率是 100%,估計 ELO 分已經超出 4000,號稱天下無敵,但這裏面實際是會有很大的水分的可能。在其他棋類的例子上,有這樣的例子: RL 後的程式秒殺 RL 前的程式,但面對其它不同棋風程式的勝率反而略微降低。下面我們看 MCTS 和 DNN 的缺陷。

================================================

身為人類,恰好對於電腦圍棋、General Game Playing、機器學習有過一點研究,希望在此為形勢不利的一方支招。冀望研究AI的朋友們此時都開放一點,告訴公眾和棋手,目前AI所存在的缺陷,而不是有意無意地只想搞個大新聞。很理解Google等公司作為利益相關者,大談AI的長處,不會自揭短板。Google這次取得的成就也非常偉大。但即便從公司利益出發,現在為人類棋手支招,事實上也有利於進一步促進AI水平的提高。如果人類不在最佳狀態,那麽對於機器的測試又如何能測試出機器的極限?下文如有錯漏,請各位不吝補充。

1) 復雜的劫爭、復雜的對殺(Semeai)、"看似有利實際不成立的棋"、"看似不利實際合理的棋"(做過對弈程式的朋友會清楚,這些反應出來就是"漏看","過分樂觀")等等,一言喻之,所謂 trap,一直是 蒙地卡羅樹搜尋( MCTS )甚至對弈樹搜尋的軟肋 ,如 International Conference on Computers and Games 2013 論文集中,多篇都討論過這類缺陷的表現。


AlphaGo 透過運用深度神經網絡評估和選點、tree與playout的共享創意、歷史共享創意、暴力增加搜尋速度和節點數,等等,彌補了大部份"漏看"的情況,但"漏看"仍會存在。對於圍棋,尤其如此。


這首先來自於,由於對弈樹太大,所以MCTS在每一層都會盡快選中少數點集中搜尋。如果一開始的選點全部或大部份錯了,根據合格的MCTS的設計,仍然可以在後續搜尋中找回正確的選點,但需要的時間會很多,有可能就會漏看;其次,在playout中,也同樣會有覆蓋不夠的盲點,影響局面評估。


一個具體的例子。AlphaGo 在局勢均衡時,出現的怪招,如果是在短兵相接的情況下出現的,一部份會是算路極深的妙手,但也會有一些屬於這樣的誤算(就是沒看到後續雙方的正解,而是陷入了錯誤的變化),表現出來就是損棋。後文會繼續談電腦的怪招問題。


2) 同樣, 深度神經網絡 (DNN) 也存在盲點 ,且這種盲點屬於此方法的根本問題,現階段無可能解決。下面是一個普通人不了解的事情:DNN與目前的絕大多數機器學習演算法,所學習到的,其實都是統計知識,而不是精確的邏輯知識。


舉個影像辨識的例子。給DNN一群人在一起的照片,DNN現在可以數出裏面有多少個人,且有時比人類還要強。比如只露了某個身體部位,也可能辨識出來。但是,也永遠會有人類看上去一目了然,但DNN辨識錯誤的情況,因為DNN完全沒有辦法學到什麽是人的精確定義!


這方面經典的文章是 Deep neural networks are easily fooled: High confidence predictions for unrecognizable images ,下圖左邊精心構造的噪音影像會被DNN以非常高的置信度判定為存在某某物品(有趣的是,可以在右邊看到,我們也可以構造出「有點像這個物品」的假影像,說明DNN學到了許多東西,只是不精確)。

如果我們拿到 AlphaGo 的網絡權重數據,同樣可以構造許多類似的欺騙局面。但是,我們拿不到。不過,目前看來,這種問題已經在對局中顯現了。


一個典型的例子是布局部份,所謂的"走錯定式"。


與普通人的想象不一樣,DNN雖然學習過無數局棋譜,但是絕不會簡單地死記硬背棋譜。這是DNN的勝利,它有能力大致學習到棋譜中所反應的更有趣的精神,如布局的方向選擇,某個局部和另一個局部之間的聯系,等等;而另一方面,DNN所學習到的圍棋知識,也存在著同樣的"不精確性"與"邏輯性缺陷",正如霧裏看花。


那麽,布局走錯次序、走錯位置、不同布局的雜糅等等,在了解的人看來,就很可能是DNN的簽名(MCTS也有類似的缺陷,因為在它看來布局的許多不同位置的勝率都差不多,結果實際行棋就會有不精細之處)。人類所應該做的,就是不要想太多,按照棋理與布局理論給予還擊(是的,人類的布局理論一定還有缺陷,但以 AlphaGo 目前的水準,恐怕還達不到這一層)。


如果不了解這件事,把電腦想得太神秘莫測,只求穩,如小李在第二局的一些應對,則會正中電腦的下懷,把自己繞進去了。關於此,柯棋渣的直播和孟主播的復盤 圍棋TV_極速點評之人機大戰特別版都說得很好。


電腦的某些怪招,也同樣是這麽來的,不一定都是什麽天外飛仙。此前舉的復雜劫爭、對殺等等,也存在精密的邏輯成分(如每個劫材的精確大小、先後手,全棋盤各個局部之間的復雜關系,等等),會是電腦的弱項。另一方面,官子部份雖然也要精確算,但以 AlphaGo 目前的運算能力恐已足以暴力搜尋解決(團隊應該會在此時接入精確的搜尋樹而非蒙地卡羅樹),不能指望它出錯了(看似出錯的地方,都是棋局大幅領先時MCTS的簽名而已,不改變勝負)。


3) 關鍵的部份來了。 怎麽應對 AlphaGo


單從對局來說:


第一,自己不能出錯,每步棋要達到 80 分的質素。 因為電腦抓漏抓棋形缺陷等等的能力有時會很強(就看MCTS是否剛好考慮到了那個變化),不能給它機會。


第二,如果看到 AlphaGo 的怪招(特別是棋局開局與中前期的怪招),先想想是否是自己看漏了,如果似乎不是,那麽不要把它想得太高明,應該用正常的方法反擊,而不要心虛求穩。這樣才可慢慢積聚起優勢。否則就是安樂死,仿佛不知道輸在哪裏。


第三,同樣,AlphaGo的行棋有時會有不精細之處。發現時,都應積極抓住處理。


第四,一些需要了解的地方:


1. 從 AlphaGo 的 DNN 設計來看,它會略微更喜歡走離 自己上一手 / 對方上一手 很近的點。


2. 目前的MCTS演算法,電腦容易略微高估自己,低估人的戰鬥能力和活棋能力。如果人表現得好,電腦是會吃驚的(評論有朋友問什麽叫電腦吃驚,這個做過對弈程式的朋友都知道,就是起初認為局勢一片大好的評估函數,突然就開始急轉直下了,哈哈)。


3. 許多人都已經知道,目前的電腦圍棋程式在領先的時候都會求穩,下緩手(因為實際測試,這樣的勝率確實更高)。


以上是對局的方面。 而更重要的事情是在對局之外

上面是媒體報道使用的一張圖片。這張圖片看了令人覺得挺難過。李世石和從前的卡斯巴羅夫一樣,現在面對的心理壓力,前所未有的巨大。希望能有機器學習專家找到李世石,介紹 AlphaGo 的演算法和可能存在的缺陷,讓他能夠調整狀態,奮力再戰!


此次對局,是 AlphaGo 在暗,人類棋手在明。AlphaGo 看過所有人類棋手的棋譜,而人類棋手卻始終蒙在鼓裏。有些不厚道的是,Google 故意放煙霧彈,只公布了去年的較弱的版本的對局譜,並且絕不談最新版本的棋力情況,有心理戰的嫌疑。


這並不改變 Google 取得了偉大成就的事實,不過也留下了口實。心理因素,對於人類而言太重要了。打個比方,如果換成愛虐電腦,與機器鬥爭經驗豐富的羅洗河,局面會是如何,會比較有趣。


如果 Google 不是僅僅為了追求宣傳效應,那麽建議在此次或此一系列對局事件後,開放與 AlphaGo 對弈的介面,讓所有人類頂尖棋手前來實驗。即使收費,也會有許多人願意。


人類的學習能力,在許多方面仍然遠強於機器學習。透過反復測試,完全可能試出 AlphaGo 的缺陷,學會 AlphaGo 學習棋譜與自我對局所生成的經驗(DNN 裏面的經驗也是有辦法直接顯示給人類的,不是純粹的黑箱)。這與象棋的情況不同。圍棋很特殊,可以說是最適合人類的一種棋類,比象棋等要適合得多。樊麾在與 AlphaGo 多次對弈後長棋了,其他人類棋手也會有類似的發現。電腦能進步,人也一樣。一個強大的對手,可以推動圍棋的新發展。


(要找到AlphaGo 的缺陷所在,最直接的,是看 AlphaGo 自我對弈的棋譜。自我對弈,就總有一方會輸,那麽就看看是如何輸的。 說起這個,許多人可能不知道,對局程式裏有大量的內部資訊,比如程式估計的選點,每個點的勝率,以及每個點的變化圖解。如果再略微分析一下,還可以顯示程式認為哪裏是局勢的關鍵點,哪裏已經塵埃落定,哪裏是未來可能爭鬥最激烈的區域,以及DNN的形式判斷理由,等等等等。 如果 Google 願意把這些數據顯示出來,那就更有意思了。)


行文至此,東方漸白。我相信在圍棋這個畢竟是人類創造的棋盤遊戲上,機器在不久的將來會徹底戰勝人類,斷絕一切幻想,正如現在的象棋,但我只想說,NOT TODAY!如果您同意本文的意見,請記得給本文 up vote 一下吧,對,就是點一下左上角那個向上的剪頭。


何況,這只是 AI 漫漫長路的一個小小驛站。別的不說,前沿的理論數學的證明,很難想象現在的 AI 怎麽理解,更不談怎麽推導。代數拓撲和代數幾何有希望。數論最難。更簡單的例子,AI 什麽時候能寫出我們在這裏的回帖?目前的電腦架構,恐怕希望不大。生物電腦,量子電腦,分子電腦,可能才是正解。不說了,先睡了...


彭博 於 2016年3月11日晨



補充:


對於電腦圍棋關註過很多年,大部份這方面的文獻都讀過,也寫過程式。此處寫下的 MCTS 和 DNN 的漏洞,既是許多文獻的意見,也是自己的經驗所得。如果哪位有不同意見,很歡迎指正。


但是,這裏的所有評論,居然沒有一個人正面談論這個問題(如這些漏洞是否存在,該如何解決),一群人去爭論些邊邊角角的雜事,如 Google 是否應該公開權重公開棋譜之類,有沒有可能解讀出權重裏面的資訊等等,各路人瞎吵,令人無語。這是新一代的中醫vs西醫之爭嗎?訊噪比太低了,全清空罷。


最後,點名批評之前評論中的許多人,學了一點機器學習課本知識,就開始 show,太可怕了。世界很復雜,我們都還得虛心學習一個。實際的問題千變萬化,不是課本可以涵蓋。是的,我對於喜歡人身攻擊的人就是這麽不留情。討論問題很好,有些人一上來就人身攻擊,這是什麽路數?


我還搜尋了一下,好像很多人都在知乎吐槽噴子,還有人總結說噴子最喜歡抓住他們懂的那點東西死纏爛打。比如 MCTS 這麽簡單,但對於機器博弈又極其重要的東西,他們很多就不懂,很多課本也不教,所以他們就啥都不會說。關於本文說的主要論題,他們也啥都不會說(真令人失望),就會反復纏結一些細節。很多時候,我特別特別不想回他們的評論,因為感覺在免費教他們。但是看他們在下面吧,又覺得很容易誤導觀眾(他們會互相點贊!很牛的),怎麽辦呢?現在我學會了,就是拉黑+關閉評論......