張澤玲
2016年3月9日至15日,韓國九段棋手李世石與谷歌計算機AlphaGo在韓國首爾進行了一次舉世矚目的人機大戰。經過5場艱難的對弈,AlphaGo以4∶1的比分取得勝利,而幾個月前,它還只能戰勝職業圍棋二段選手樊麾。AlphaGo戰勝了人類頂尖棋手,且進步速度如此之快,這不禁讓人擔心:這樣下去,它豈不是要像《終結者》中的“天網”和《黑客帝國》中的“母體”一樣,可以統治地球奴役人類了?
AlphaGo真的有這么無敵嗎?它的出現,對人類而言究竟是福還是禍呢?
拋開所有高大上的描述,AlphaGo本質上只是一段很長很長的程序代碼。人類眼中的下圍棋,在它眼里只是不停地按照代碼設定做計算。人類棋手下棋時要計算每一步棋該怎樣走,走這一步是優勢還是劣勢,同樣,AlphaGo也在做類似的計算。而支撐它進行計算的是四個程序設置:策略網絡、估值網絡、快速部署和蒙特卡洛樹搜索。要想知道AlphaGo是怎樣學棋、下棋的,我們就得好好說說這四個程序設置了。
AlphaGo的策略網絡,由監督學習和強化學習兩種機器學習方法搭建。聽上去有些高深?別急,平時刷題不止、考試不斷的你一定深有體會。
所謂的監督學習,是我們給程序一個訓練集,其中一部分稱為例子,相當于習題;一部分稱為目標,相當于答案。然后設定一個函數模型,讓程序不斷把訓練集的例子代入函數模型,算答案,對答案。如果答案不對,程序就去調整這個函數模型里的某些參數,再重復之前的過程,直到能得出較高的正確率。接著再給程序一個測試集,相當于考試。如果程序對測試集里的例子算出的答案正確率也比較高,表明訓練成功。
對于AlphaGo來說,訓練集是人類在KGS圍棋對戰平臺上下過的數萬局棋譜,其中,“例子”是給定一步以后下一步該走什么,“答案”是人類走法中較多人走的且效果不錯的那步,函數模型是模擬人類大腦的“深度卷積神經網絡”。這里的“神經網絡”指的是一類算法結構,本質是一簇互相關聯的函數;“深度”指的是“神經網絡”有好多層,每層負責學習不同的知識點;“卷積”則是一類數學方法,在神經網絡中處理一些函數之間的關系和提煉輸入數據里的有效信息。要想完全弄清楚“卷積”,大學的時候你可得好好學習高等數學哦。
接下來的強化學習,有點像平時老師讓我們用學到的知識去解決某些答案并不確定的實際問題。在監督學習的過程中,AlphaGo只是參照人類的走法大致學會了預測下一步,那么下棋的效果究竟會怎么樣呢?于是我們讓兩個策略網絡互相下棋并不斷調整,看哪邊下贏了就保留勝方的模式和參數,這樣下過3000萬盤后,AlphaGo便通過這樣“左右互搏”的方式提高了策略網絡的“實戰能力”,避免只會照貓畫虎模仿人類。
估值網絡與策略網絡中強化學習的過程差不多,只不過在這里AlphaGo學的不是預測下一步怎么走,而是學習評估此刻棋盤上自己下在不同地方最終獲勝的概率。
快速部署又是什么呢?雖然AlphaGo已經學習了很多東西,下棋的時候還是會遇到卡殼的情形,這個時候總不能干瞪眼發愣吧?于是,AlphaGo會根據經驗“猜”一步——按照正確率不太高的一個函數模型進行快速計算,然后結合估值網絡得出的獲勝概率分布和蒙特卡洛樹搜索得到的信息判定下一步該怎么下。
最后要說的是蒙特卡洛樹搜索?!懊商乜濉辈⒉皇侨嗣?,而是一個地名。該方法的發明人之一斯塔尼斯拉夫·烏拉姆的叔叔經常在蒙特卡洛賭場輸錢,賭博和這類方法都依賴概率,因此得名。它的功能是從當前一步參照估值網絡和快速部署所給的信息,去評估搜索接下來的幾步,再把搜索的結果傳回給策略網絡和估值網絡。這個過程的流程圖就像不斷分叉的樹干,選擇哪一個分支深入搜索下去則是靠一定的概率,因此被稱為“蒙特卡洛樹搜索”。
總的來說,AlphaGo跟人類下棋時,策略網絡和快速部署負責評估下一步不同走法的好壞,估值網絡負責估算當前盤面的獲勝概率分布,蒙特卡洛樹搜索負責結合前三者幫助找到最佳的那一步。當然,這只是粗略的分工,在AlphaGo的實際運行中,這四種程序設置是互相交叉協作的。
在跟李世石九段對決中,由于比賽規則里有時間限制,AlphaGo還額外增加了一部分程序設置用于控制時間。面對復雜度高的局面,AlphaGo的計算量會顯著增加,一樣會出現人類棋手的“長考”現象。為避免在一步棋中耗費太多時間,時間控制部分的程序就要權衡每步棋的時間分布。
這么看來,AlphaGo學習和下棋的過程真是比我們上課復雜枯燥多了——所有內容都是對數據的處理和計算。而且,因為只接受了“下圍棋”的訓練,AlphaGo只會下圍棋,別的什么也不會。如果沒有開發人員去調試AlphaGo的代碼,修改函數模型,給予新的訓練,AlphaGo就學不到新技能,逞不了什么威風。目前,AlphaGo更像是一條聰明的獵犬,必須要人類的牽引和訓練才能進步。即便有壞人企圖利用人工智能干壞事,情形也跟當下黑客入侵我們的電腦手機類似,自有負責信息安全的專家們去制止,更何況,人工智能的科學家們早在設計之初就把這些安全因素考慮進去了,目前最“聰明”的AlphaGo也還在科學家們的牢牢掌控之中呢。
從另一個角度看,AlphaGo的成功是因為它模仿了人類的思考方式和學習能力,這也讓我們認識到了人是多么神奇的存在,認識人類自身又是一個多么廣闊的領域。我們“日用而不知”的能力,包含了多少復雜的道理?這些天然的饋贈,我們不更應該好好珍惜、好好利用嗎?