科創觀察

木遙:AlphaGo離圍棋之神還有多遠?

人類對人工智能發展速度的預期,常常既極端低估,又極端高估。

2016年3月13日,Alpha GO與李世乭對弈。
2016年3月13日,Alpha GO與李世乭對弈。攝:Lee Jin-man/AP via Imagine China

很多人都注意到,AlphaGo 的棋風有個有意思的特點:它很少下出「好棋」,也就是兇狠的殺招,並且還時不時似乎下出緩手。它局面從未大幅領先過,永遠只贏一點點。為什麼呢?

AI的棋風能不能更好看?

要訓練一個神經網絡,需要定義一個反饋函數,即告訴這個神經網絡怎樣的決策是好的。在 AlphaGo 的設計中有個重要的細節:訓練 AlphaGo 的神經網絡時所採用的反饋函數只依賴於輸贏,而同輸贏的幅度無關。換言之,對 AlphaGo 而言,贏一目的棋和贏十目的棋一樣好,它追求的只是單純的勝負而已。

但單純追求勝率,實際上就意味着放棄追求大勝。因為在多元優化問題中靠近邊緣的地方,不同的優化目標之間幾乎總是彼此矛盾的。比方說,如果一個局面需要考慮三手可能的棋,第一手可以贏十目,有 70% 的勝率,第二手可以贏一目,有 80% 的勝率。第三手可以贏二目,有 90% 的勝率。第二手棋顯然全面劣於第三手棋,不應該列入考慮。而值得比較的第一和第三手棋之間,勝率高的選擇一定是勝利幅度較低的那一個。——很顯然,這就是典型的帕累托優化問題。第二手棋不是帕累托最優的,或者說不夠接近優化的邊緣。而在邊緣處的第一手和第三手,兩個指標的優劣一定彼此相反。

因此,AlphaGo 以單純勝負作為反饋函數的結果,就是 AlphaGo 總是選擇那些相對而言更保證勝率而勝出幅度較小的棋。只贏一點點就夠了。

為什麼人類棋手(至少絕大多數)不這麼下棋呢?

因為這和人的思維方式不符。AlphaGo 可以這麼做的前提是極端精細的計算能力,從而得以控制微小而穩定的盤面優勢。像是貼着水面飛行的鳥,最危險但也最省力。但人無法永遠做出精確的計算,所以需要一次次努力擴大領先的幅度以維持一個安全的距離,防止一着不慎勝負翻盤。所以 AlphaGo 會顯得遇強則強,但也很少下出「好看」的棋。甚至可能因為過於追求全局取勝機率,下出在人類的視角看來局部並非最優的招式。反過來,通過一番搏殺來取得局部勝利,在人類看來總是一件好事,而在 AlphaGo 看來,這也許只是毫無必要地增加不確定性而已。

於是我忍不住設想,如果 AlphaGo 在訓練時採用不同的反饋函數會是什麼結果。不妨假設存在一個 BetaGo,一切都和 AlphaGo 設定相同,只是反饋函數定義為盤面領先的目數。(換言之,從一個正負之間的階梯函數變成線性函數。)可以猜測 BetaGo 的「棋風」應該比 AlphaGo 兇狠許多,更追求殺着,更希望大贏。如果讓 BetaGo 和 AlphaGo 反覆對戰,AlphaGo 贏的次數會更多,但平均而言 BetaGo 贏的幅度會更大。

或者更極端一點,乾脆採用盤面領先程度的平方乃至指數函數作為反饋,那會培養出什麼暴躁瘋狂的算法呢?

AlphaGo 採用目前的設計是很好理解的,因為首先追求的目標還是證明 AI 能夠戰勝人腦。但是從目前的情況來看,AlphaGo 似乎已經遙遙領先,那即使 BetaGo 勝率稍差,假以時日應該也可以超過人類。而它的棋應該會好看很多。

好可惜,我們看到的不是 BetaGo。

人類的思考,和AI如何不同?

AlphaGo 是否會打劫,早就不成為爭議了。

但它其實根本就不應當有爭議。打劫只是圍棋中「不得全局同形再現」這一條規則的推論,而這條規則對 AI 來說,實現起來再簡單不過:只要在搜索決策樹的時候,跳過所有已經出現過的局面就好了。

這當然不是說,AlphaGo 的實現細節中一定沒有任何針對劫的專門邏輯存在。一些特定的優化也許是有意義的。但是以為 AlphaGo 和人一樣,有必要去辨認劫的特性,選擇和保存劫材,在多個劫同時存在的局面下做複雜的戰略決策,只不過是把人的思維方式錯誤地套用在遵循完全不同邏輯的神經網絡上而已。神經網絡自我學習的特性,保證了只要讓它遵循圍棋的基本規則,它完全可以「顯得」像是懂得複雜的圍棋概念,但這絕不意味着它真的「在乎」這些概念。AlphaGo 的主要作者中的兩位 Chris Maddison 和 Aja Huang 在他們 2015 年發表過的一篇論文中寫過這樣一段話(原文為英文,以下是我的翻譯):

「很明顯,神經網絡內在地理解了圍棋的許多深奧的層面,包括好形,布局,定式,手筋,劫爭,實地,虛空。令人驚異的是這樣一個單獨、統一、直接的架構就能把圍棋的元素掌握到這個程度,而不需要任何明確的先導。」

歸根結底,劫是一個完全人為構造的概念。人們用它來描述自己的戰略,建構自己的思考模式,就像別的圍棋術語一樣。但它只是刻畫,並非本質。如果 AlphaGo 有意識,它也許會在面對人類的詢問時說:噢,原來你把我走的這一步叫做打劫啊。

但這是人類的缺陷麼?我們是否是在把一個本來應該用純粹的計算解決的問題毫無必要地歸納於概念,然後又讓自己的思維囿於這些概念而作繭自縛呢?

恰恰相反。能夠迅速建立起高級抽象的概念,然後用它來簡化和指引決策,這是人類在千百萬年間演化出的偉大能力,今天的人工智能還遠遠不能望其項背。藉助這些抽象觀念,人們得以把全局問題分解為一系列局部的,可以簡明描述和推理的子問題,做出也許未必在數值上嚴格最優,但是相當接近最優的判斷,從而取代人工智能需要耗費海量計算才能作出的決策。更重要的是,這些抽象觀念可以讓一個人從極少數樣本中辨認本質、總結經驗、汲取教訓、獲得成長。一個棋手從觀摩一盤棋中得到的教益,可以多於 AlphaGo 千萬盤自我對局。AlphaGo 的神經網絡自我反饋訓練雖然有效,但是盲目。而人們知道自己要學的是什麼。

這是人類智能最耀眼的優勢之一。

這引出了下面進一步的問題:這兩種思維方式是否有可能對接?能不能讓 AlphaGo 把自己的決策過程翻譯為人類可以理解的概念和語言呢?

這件事在應用上的潛力顯而易見(用人工智能來輔助教學,當然不限於圍棋),但更重要的是它在理論上的挑戰。AlphaGo 的決策過程是個黑箱,我們能夠提煉出它用來提取棋局特徵的元素,但無法直接理解它們意味着什麼。我們不知道它們如何對應於人所熟悉的概念,或者在那裏是否存在人們尚未總結出的新知識。我們當然可以看到它最終的結論,例如一步棋是好是壞,可是僅有結論,並沒有太多用處。

但這裏仍然有做文章的餘地。AlphaGo 可以看做是一個記錄了自己每一次神經脈衝細節的人工大腦,而機器學習的原理也可以應用在這些海量的記錄數據本身之上。不難設想,也許可以訓練出另一個神經網絡,來識別出這些數據中對應於人類高級概念的特徵,從而設法把 AlphaGo 的決策過程拆解和翻譯為人類熟悉的觀念模塊。如果可以實現這一點,人類就可以更直觀地理解 AlphaGo。

我不知道這能否實現,但我希望可以。那將是一個重大的飛躍。

到那時,我們也許就可以看到人類棋手和 AlphaGo 在真正的意義上「覆盤」了。

我們離圍棋之神還有多遠?

AlphaGo 最大的未知數之一,是它自我對局訓練的效率。按照目前公開的訊息,它的棋力一直在隨着時間穩定上升,假以時日,它的棋力還會進一步成長。

但這個預計完全在未定之天。事實上,過去這段時間以來它的棋力增長本身是個奇蹟,而非必然。通過自我對局的輸贏反饋來提升能力,最大的問題在於容易陷入機器學習中所謂「過擬合」的狀態。簡單地說,就是因為自己的對手也是自己,從而陷入一個自洽的邏輯圈無法自拔。其結果是缺陷變成了優勢,盲點變成了禁區。初始經驗中的噪音,逐漸固化成了金科玉律。實際上並不存在的界限,因為從來沒有試圖跨越,結果變成了真的限制。最後「自以為」自己下得很好,而且越下越好,其實只是越來越適應自己而已。

DeepMind 的團隊當然想到了這個問題。他們的解決方案是不僅僅讓 AlphaGo 自我對弈,也不斷讓不同等級的 AlphaGo 之間互相越級對弈作為校準,以避免出現隨着不斷進化,客觀棋力反而萎縮的現象。問題在於,這種校準終究是在 AlphaGo 的「家族」內部進行的。自己近親繁殖的結果是有些 bug 永遠都無法被自己意識到,只有在和棋風棋路截然不同的對手的對弈中才有可能暴露出來。

譬如人類這個對手。AlphaGo 和李世乭的對弈,可以看做是它第一次遇到和自己旗鼓相當而截然不同的異類。於是它果然崩潰了一次。

其實和人類棋手相比,AlphaGo 也並非完全是天外來客。它最初的訓練來自大量人類棋手的網絡圍棋對局,血液裏保存着人類棋手的基因。正因為如此,DeepMind 公司在過去幾個月裏重新來過,在不依賴人類對局數據的基礎上,從零開始訓練新的圍棋程序,以探索不落現有圍棋觀念窠臼的新道路。

但即便如此,它仍然無法避免有一天終究會落入過擬合的陷阱。要逐漸接近圍棋之神的境界,可能需要不止一個競爭者出現,彼此切磋訓練才有可能做到。甚至可以想像,人們最終會找到隨機生成新的圍棋算法的方法,海量生成大量競爭者。但要做到這一點,需要人們對圍棋和人工智能有遠比今日更深刻的理解才行。

長遠來看,探索圍棋的規律,和探索圍棋算法的規律,在宏觀的時間尺度下本來不就是一回事麼?

從某種意義上說,在遇到 AlphaGo 之前的人類圍棋,整體上也是一個自我繁殖而逐步陷入過擬合的家族。雖然江山代有才人出,但是作為一個集體,始終在繼承着相似的傳統,遵循着統一的範式。現成的定式和規律,已經被研究地如此透徹,以至於任何新穎的想法都會因為初生時的弱小而曇花一現。在千年圍棋史上,也許只有本因坊秀策和吳清源曾經以一人之力掀起過整個圍棋觀念的革命。絕大多數情況下,後來者只是在通過自己的努力進一步強化既有的棋理而已。

直到 AlphaGo 的出現。

於是我們看到一個強大的傳統遇到了新奇而健壯的挑戰者。從一開始不屑的訕笑,變成了敬畏的崇拜,直到最終勇敢的接納。這並非一朝一夕之功,當然總是會有抗拒和懷疑,會有恐懼、憤怒和絕望。更坎坷的部分也許還在後面。但是這一步一旦走出,就無法再後退了。

歸根結底,這是避免一個自我封閉的系統陷入衰敗的唯一途徑。固步自封,夜郎自大,築起牆來抵禦想像中的危險,把自我適應的沉渣視為不可動搖的根本,絕無可能生生不息欣欣向榮,而只會在自我滿足的道路上越走越遠。

當然,不止下棋是這樣。

面對人工智能,人類要失敗了嗎?

有趣的是,人類對人工智能發展速度的預期,常常既極端低估,又極端高估。在 AlphaGo 挑戰李世乭之前,大多數人本能地拒絕相信人工智能可以達到這樣的高度,認為圍棋中某些普遍被認為是屬於人類的強項,例如大局觀、直覺、平衡感、洞察力,是人工智能不可逾越的高峰。甚至有些人在看到對局結果之後,還是固執堅信人工智能只是以暴力和統計學堆疊出勝利,並沒有真正展現出人類大腦特有的能力。但另一方面,很多人又在一夜之間開始擔憂人工智能統治人類的未來,似乎人工智能從學會下圍棋到征服世界,只有一步之遙。

而事實是,人工智能早就開始在許多關於直覺和美的領域裏展現出創造性。三十年前,Harold Cohen 已經開始能夠讓電腦自動畫出人們誤以為來自人類畫家的畫作。二十年前,David Cope 編寫的程序寫出的肖邦風格的馬祖卡舞曲已經傳神到即使音樂專業的聽眾也難辨真偽。歸根結底,人的大腦在功能性的層面上只是一架精密的機器而已。既然是機器,就有被數值計算模擬和逼近的可能性。AlphaGo 所展現出的圍棋開局時良好的「棋感」,再好不過地說明了所謂的直覺並非無法量化,只是無法被我們自己量化而已。

但這是人類的失敗麼?

從茹毛飲血的穴居時代到遊弋太陽系的今天,人類的進步從來就不體現為本身生物能力的優越,而體現於不斷創造出工具成為自我的延伸。我們製作出的機器跑得更快,飛得更高,算得更準,想得更深。但是歸根結底,定義人性的並不是我們的能力,而是我們的弱點,以及我們為了克服自身缺陷和拓展未知的邊界所作出的艱苦卓絕的努力。在這個過程中,在一次又一次失敗裏,我們砥礪心靈、認識自我、戰勝矇昧和愚蠢,然後成長。

我曾經和朋友談及有哪些人工智能還做不到的事情。朋友說:人工智能至少無法設計出 LIGO 這樣的科研工程來探測引力波。我說:我不相信。LIGO 當然是人類智慧的結晶,但是考慮到人類所能掌握的資源的有限可能性,讓人工智能設計出整套方案並非不可能。

我真正覺得人工智能無法做到的,是「想要探測引力波」這件事。

所以機器的發明從不曾阻止我們在健身房裏揮汗如雨,或者尋求素數定理的一個又一個新的證明。印刷術沒有取代書法,數字音樂的普及也無法消滅演唱會現場的淚水和歡呼。在圍棋三尺天地的手談之中,在須臾之間寸爭勝敗的纖毫境界裏,人們所付出的長久凝視和堅忍血汗,所尋找到的對世界和彼此的理解,絕不會因為 AlphaGo 的出現而煙消雲散。

它是我們的進步的一部分。

(木遙,現居紐約)

編按:本文原題《觀棋錄》,載於作者微信公眾號,經作者授權,由《端傳媒》編輯轉載。

請按右上角選在「在 Safari」打開