葉敏超
2017年年初,一位取得在線對弈60連勝的神秘棋手Master震驚了世界圍棋棋壇。在Master取得50連勝的時候,棋手古力在微博中這樣評價道:“50連勝……雖然我也曾想過,但事
實擺在面前時,還是令我等職業(yè)棋士汗顏。也許我們曾經(jīng)認為永恒不變的圍棋定式、真理,會因Master的出現(xiàn)而發(fā)生顛覆性的改變……好好睡了吧,去迎接美好的明天與未來!”最終,在與古力進行最后一盤對決前,Master終于自己揭下面紗——正如人們猜測的那樣,它果然是升級后的AlphaGo。此次代為執(zhí)子走棋的,依然是AlphaGo團隊中惟一懂圍棋的工程師黃士杰(Aja Huang)博士。
AlphaGo的前輩——深藍
從2016年起,AlphaGo就成了一個家喻戶曉的名字。它是一個圍棋游戲的計算機程序,最早由DeepMind公司在英國開發(fā),后被Google公司收購。2015年10月,它成為在19×19的圍棋棋盤上第一個打敗專業(yè)棋手的計算機游戲程序。2016年3月,它在5場比賽中以4:1的比分擊敗了韓國棋手李世石,成為計算機游戲程序的又一個里程碑:第一次由計算機圍棋程序打敗了9段的專業(yè)級棋手。因此,AlphaGo被韓國棋院授予“名譽職業(yè)九段”證書。
其實計算機程序并非首次打敗人類專業(yè)選手。早在1997年5月,IBM公司旗下的“深藍”電腦就成功挑戰(zhàn)國際象棋世界冠軍卡斯巴羅夫。比賽在5月11日結(jié)束,最終深藍以3.5:2.5的比分擊敗卡斯巴羅夫,成為首個在標準比賽時限內(nèi)擊敗國際象棋世界冠軍的電腦系統(tǒng)。既然深藍早在10年前就取得了人機大戰(zhàn)的勝利,那么10年之后,為什么AlphaGo的出現(xiàn)又會掀起如此大的波瀾?這就要從它們不同的原理說起了。
深藍取勝的秘訣是“窮舉”,也就是窮舉每一步所有可能的格局(落子方法),再根據(jù)當前格局窮舉下一步格局。也就是說,事先就做成一棵博弈樹。深藍窮舉搜索完整棵博弈樹,也就遍歷了所有可能的格局,然后通過對每一種格局進行評分,最終選擇最優(yōu)的解法。從當今的人工智能角度解讀,深藍的計算方式并不智能,只能用“暴力”去形容。深藍之所以能取得勝利,靠的是計算機強大的窮舉計算能力。當計算機的內(nèi)存足夠大,計算速度足夠快時,這種窮舉的算法應(yīng)付國際象棋綽綽有余。那么,可以將這種方法運用到圍棋上嗎?答案是“不能”。原因就在于國際象棋與圍棋規(guī)則的差異。國際象棋的棋盤只有64格,而圍棋棋盤卻有361格,從棋盤大小考慮,圍棋的博弈樹遍歷的復雜度已經(jīng)比國際象棋加大了好幾十個量級。而圍棋更復雜的計算在于其游戲規(guī)則??此坪唵蔚挠螒蛞?guī)則中,每一步的變化加上一些特殊規(guī)則所產(chǎn)生的計算復雜度是天文數(shù)字量級的。據(jù)測算,國際象棋的窮舉復雜度為1046,而圍棋格局的窮舉復雜度需要10170。這樣的計算復雜度,已經(jīng)遠遠超越了計算機的運算能力。因此,圍棋長期以來被認為是對人工智能最具挑戰(zhàn)性的棋類游戲。
AlphaGo是如何學習的
AlphaGo的出現(xiàn),是人工智能第一次成功挑戰(zhàn)圍棋這個棋類游戲,具有突破性的意義。那么,當博弈樹窮舉不再可行時,AlphaGo是如何進行決策的呢?于是,“學習”這一概念第一次在計算機程序?qū)牡念I(lǐng)域中出現(xiàn)。所謂“學習”,就是將專業(yè)棋手的對弈輸入計算機,計算機通過一定的算法,最終得到專業(yè)級的對弈策略。而近年來火了一把的深度神經(jīng)網(wǎng)絡(luò),就成了AlphaGo學習的核心算法。在博弈中,AlphaGo使用“價值網(wǎng)絡(luò)”(value networks)來評估棋盤中的位置,使用“策略網(wǎng)絡(luò)”(policy networks)來確定棋子的移動。這些深度神經(jīng)網(wǎng)絡(luò),通過對人類專家對弈的監(jiān)督學習和增強學習來進行組合訓練。
要解釋AlphaGo的學習原理,首先要從人工神經(jīng)網(wǎng)絡(luò)(artificial neural networks)開始談起。人工神經(jīng)網(wǎng)絡(luò)簡稱神經(jīng)網(wǎng)絡(luò),是一種模仿人類神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的計算模型。神經(jīng)網(wǎng)絡(luò)由多個神經(jīng)元構(gòu)成,每個神經(jīng)元的結(jié)構(gòu)包含數(shù)據(jù)輸入、輸入權(quán)值、輸入函數(shù)、激活函數(shù)。各種數(shù)據(jù)輸入后根據(jù)權(quán)值在輸入函數(shù)中進行疊加,然后通過非線性的激活函數(shù)進行變換后輸出。多個神經(jīng)元組成了神經(jīng)網(wǎng)絡(luò)。最簡單的神經(jīng)網(wǎng)絡(luò)包含一個輸入層、一個隱層和一個輸出層(見圖 2)。其特征是從輸入層輸入,經(jīng)過隱層,最終由輸出層輸出。訓練神經(jīng)網(wǎng)絡(luò)的目的,就是根據(jù)若干訓練樣本給定的輸入和輸出,計算出權(quán)值。深度神經(jīng)網(wǎng)絡(luò)與單隱藏層神經(jīng)網(wǎng)絡(luò)的區(qū)別,在于它們的深度和網(wǎng)絡(luò)的層數(shù)。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)是淺層網(wǎng)絡(luò),由一個輸入層和一個輸出層組成,并且最多有一個隱層。隱層數(shù)目多于一個(不包括一個)的神經(jīng)網(wǎng)絡(luò),才可稱為深度神經(jīng)網(wǎng)絡(luò)(見圖 3)。在深度神經(jīng)網(wǎng)絡(luò)中,每層神經(jīng)元基于前一層輸出在一組不同的特征上進行訓練。進入神經(jīng)網(wǎng)絡(luò)越深,神經(jīng)元識別的特征越復雜,因為這些特征是前一層特征的聚合和重組。這種特征的層次結(jié)構(gòu)可以挖掘出非結(jié)構(gòu)化的原始數(shù)據(jù)中的潛在結(jié)構(gòu)。換言之,深度神經(jīng)網(wǎng)絡(luò)可以視為一種自動提取特征的方法。對于圍棋落子這樣的非結(jié)構(gòu)化數(shù)據(jù)來說,深度神經(jīng)網(wǎng)絡(luò)就是很適合的一種學習方法。
AlphaGo的學習流程包括三步(見圖 4):第一步,使用監(jiān)督學習訓練策略網(wǎng)絡(luò)。將3000萬個專業(yè)棋手的落子位置以狀態(tài)-動作對(s,a)作為輸入,訓練一個13層的監(jiān)督學習策略網(wǎng)絡(luò);第二步,使用增強學習強化策略網(wǎng)絡(luò)。該步驟中的策略網(wǎng)絡(luò)與上一步驟結(jié)構(gòu)相同,都是通過當前策略網(wǎng)絡(luò)和之前迭代中隨機選出的一個策略網(wǎng)絡(luò)進行對弈(自我博弈),根據(jù)勝負對策略網(wǎng)絡(luò)進行更新。第三步,增強學習價值網(wǎng)絡(luò)。使用隨機梯度下降方法,通過以狀態(tài)-結(jié)果對(s,z)作為輸入,訓練價值網(wǎng)絡(luò)的權(quán)重。完成以上三步學習流程后,AlphaGo就獲取到了圍棋落子的“知識”。接下來,AlphaGo只需將策略網(wǎng)絡(luò)與價值網(wǎng)絡(luò)結(jié)合在一起,然后就能通過使用蒙特卡洛樹搜索法(Monte Carlo Tree Search,即MCTS)尋找到最佳落子方法了。
AlphaGo會超越人類嗎
相較于“深藍”的窮舉搜索,AlphaGo才算是真正的機器學習。它巧妙使用了深度神經(jīng)網(wǎng)絡(luò)這種自動提取特征的學習方法,從雜亂的棋局中挖掘出潛在的隱含特征,甚至是那些“只可意會不可言傳”的特征,學習到了專業(yè)棋手的落子套路。而自我博弈的增強學習方法,又成了AlphaGo溫故知新、自我提升的強大工具。正因如此,AlphaGo才能突破極限,攻破圍棋這個堅不可摧的人工智能堡壘。
AlphaGo的勝利讓一些人產(chǎn)生了惶恐——今后人工智能是否能夠完全超越人類的智慧,甚至統(tǒng)治人類?其實,我們大可不必惶恐。AlphaGo的深度神經(jīng)網(wǎng)絡(luò)和MCTS法都是由人類設(shè)計出來的,其學習知識的來源也都是人類的對弈。即便是看似“自我思考”的自我對弈,也僅僅是人類設(shè)計的增強學習算法。不但無需惶恐,而且我們還期待,隨著人類智慧的發(fā)展,今后還將有更優(yōu)秀的算法涌現(xiàn)出來,計算機的計算能力也會隨著硬件技術(shù)的發(fā)展而得到很大提升。因此我們有理由相信,人工智能將會有能力攻克更多的難題,更好地為人類服務(wù)。讓我們拭目以待吧。