階梯上的思索

為何我寫作?------我心中所蘊蓄的必得流露出來,所以我才寫作。
個人資料
歸檔
正文

走近人工智能——寫在AlphaGo與李世乭鏖戰前夕(七之六)

(2016-03-04 12:05:23) 下一個

六、橫空出世

就在人們普遍認為十年之內電腦不太可能在平等落子的情況下戰勝職業選手的時候,一個名叫AlphaGo的電腦棋手跳將出來,公然叫板歐洲圍棋冠軍、法國圍棋總教練、職業二段樊麾。更讓人吃驚的是:AlphaGo自負地宣稱“我不需你讓我半個子”。

AlphaGo是英國一家專門研究人工智能、名叫“深度思維”(DeepMind)的公司所研製的電腦圍棋軟件。該公司創建於2010年,早期曾接受企業界大牛人伊隆●馬思科的投資。公司於2014年被穀歌收購,外界估計收購金額為四億英鎊左右。

在AlphaGo的研製過程中,它曾與世界上所有著名圍棋軟件對弈,其中就包括雷米開發的“瘋狂的棋子”。結果是,AlphaGo勢如破竹,根本遇不到對手。在與這些程序對弈的500場比賽中,AlphaGo隻輸一場,其餘全部獲勝。後來AlphaGo幹脆讓對方四子,依舊連連獲勝。

這樣的結果讓AlphaGo覺得其他圍棋軟件都太小兒科了,於是邁出了向真正人類職業棋手挑戰的第一步。

自二〇一五年十月五日至九日的五天裏, AlphaGo與樊麾之間舉行了五場正式比賽和五場非正式(快棋)比賽:每天先下一盤正式比賽,再下一盤非正式比賽。在五場正式比賽中,AlphaGo以五比零的輝煌成績大獲全勝,其中,除了第一盤是以二目半取勝之外,其他四盤均為樊麾中盤認輸。

所有媒體都對正式比賽5:0的比分大書特書(特別是樊麾的中盤認輸),而對非正式比賽的結果隻字不提。站在穀歌或深度思維的立場上,這當然很容易理解,因為那是他們希望世人關注的焦點。然而多數中立媒體在作報導時依然選擇了與穀歌口徑完全一致,不知這是因為他們一開始就被穀歌牽了鼻子走,還是因為生活在信息泛濫世界裏的人們對隻看前言而不看後語早已習以為常了。

其實在另外五局非正式比賽中,樊麾依然有兩盤獲勝,而且結果都是AlphaGo中盤認輸。餘下三盤樊麾中盤認輸。

比賽結束後樊麾對記者說,賽前他以為自己肯定會贏,沒想到第一盤就輸了,於是他希望挽回局麵,結果反而更加緊張。他認為和電腦下棋的最大挑戰在於電腦不會犯錯,而人是會犯錯的。

筆者認為樊麾很大程度是輸在心理上。從第一盤的結果看,二者的差距並非5:0那麽大。很可能是樊麾對自己的失敗感到出乎意料,於是想要出些奇招,沒想到算得不夠精細,結果反而連連失誤。但在下非正式比賽時,估計樊麾就不那麽在意比賽結果了,於是竟有兩盤逼迫AlphaGo中盤認輸。雖然其餘三盤都是樊麾中盤認輸,但這至少說明AlphaGo並沒有強大到無懈可擊的地步。

不管怎樣,AlphaGo算是給所有電腦棋手出了氣,把不能在平等落子的情況下打敗人類職業選手的帽子甩到太平洋裏去了。有了這次5:0的戰績,電聖戰對它來說已經毫無意義了。一不做二不休,AlphaGo此番打算向人類圍棋的頂尖選手發出挑戰,對象就是在世界圍棋界舉足輕重的人物,韓國棋手李世乭。比賽將於今年三月九日至十五日在韓國舉行,勝者將獲得由穀歌公司提供的一百萬美元獎金。屆時YouTube將在網上現場直播比賽的全過程。

而第九屆電氣通信大學杯電腦圍棋大賽也將如期於三月十九日至二十日在日本舉行,獲勝的前兩名電腦棋手將參加於二十三日舉行的第四屆電聖戰,與日本圍棋界鼎鼎大名的棋聖小林光一對局。

不知小林光一會讓對手幾個子。在AlphaGo的比賽之後,原本吸引了眾多電腦圍棋愛好者眼球的電聖戰恐怕隻能黯然失色了。真懷疑那些原本極為牛叉的軟件作者會不會提前退出賽事,忙著回家建造他們的神經網絡去了。

AlphaGo擁有怎樣的新算法,膽敢如此囂張?莫非它真的擁有一個如同人類一樣聰明的大腦?

其實不然。AlphaGo最底層的核心算法依然是雷米發明的蒙特卡羅樹搜索方法。隻不過除此之外,AlphaGo又增加了兩個十二層的神經網絡,其中一個叫“決策網絡”(policy network),另一個叫“評估網絡”(value network)。

這兩個網絡的輸入都是19x19的棋盤對局,決策網絡決定下一步該往哪裏走,而評估網絡則決定當前的棋局對誰更有利。

深度思維對外宣稱說這兩個網絡並非一般的神經網絡,而是更為高大上的“卷積式神經網絡”(Convolutional Neural Network, CNN)。反正名詞越深奧,一般人越聽不懂,AlphaGo的神秘感就越強。

之所以要用到“卷積”,是因為這樣做會給訓練神經網絡帶來很多方便。

記得前麵舉過的例子嗎?兩塊一模一樣的棋,一個裏麵有眼,另一個沒有。在人類棋手看來,這是兩個完全不同的局麵,因而會用不同的招式去應對。而神經網絡是不懂啥“眼”不“眼”的,它隻知道這兩者在投票時會產生極為類似的權重分布,因而傾向於輸出相同的結果。也不是說專家們就不能硬讓它們輸出不同結果,隻是那樣做,網絡的層數不知又要增加多少層,優化權重和閾值不知又得多花多少時間。

咋辦呢?聰明的人類想出了“卷積”這個巧妙的辦法。所謂卷積,就是一種變換,它能把一片棋子當中的眼和周圍的邊界放大很多倍,使得電腦本以為完全相同的兩塊棋因為眼的存在而變得完全不同。讓兩個完全不同的輸入去產生兩個不一樣的投票結果,實現起來當然容易多了。

訓練這兩個神經網絡的方法和前麵討論過的偽民主代議製非常相似,隻不過在規模上大了許多:這兩個網絡都是十二級網絡,而用來訓練它們的樣本則是3000萬步真實人類圍棋對弈的棋局。由於樣本量之巨大,加之十二級的網絡,這個訓練過程一定漫長而艱苦。不過其原理依然逃不出我們前麵所舉的偽民主代議製的例子。那就是,必須不斷修改投票機製(神經網絡中的權重和閾值),讓棋譜給出的落子得以通過,而其他走法統統被否決。

舉例來說,通常在開局時,假如已有三個角都被占領了,那麽接下來最好的走法一定是去占第四個角。於是,由我們人類設計的代議製就會讓搶第四個角的法案通過,而讓其他法案統統被否決。

這麽說,電腦棋手是可以依靠神經網絡來下棋了?也不行。在真實對弈中遇到如此板上釘釘局麵的機會非常少,多數情況下電腦所麵對的都是它從未見過的棋局。神經網絡雖然很神奇,但是並不知道應該怎樣運用圍棋知識去尋求答案。它所能做的,就是把棋局輸入網絡(實際上是在參考人類的幾千萬步真實對局),看看在相似的情況下人會下出怎樣的落子。

由於世界上很少出現一模一樣的棋局,因而人類的下法隻能對棋局起指導作用,給出一些可能的好下法。接下來,AlphaGo依舊要借助傳統蒙特卡羅樹搜索方法,用蠻力找出最佳下法。由於神經網絡已經給出了搜索範圍,因而它不必將所有可能的落子都搜索一遍。

AlphaGo不是有兩個神經網絡嗎?評估網絡是咋回事,是用來做啥的呢?

原來,評估網絡是用來簡化蒙特卡羅樹搜索的。它的輸入依然是19x19的棋盤,而輸出則是在當前情況下誰處於劣勢。訓練過程依然是受人操控的:首先,人需要想辦法把用來訓練評估網絡的棋譜逐一打分,指出白(或黑)子在那種情況下是不是一定會贏/輸,然後強製評估網絡接受此結果。於是評估網絡在看到類似的棋局時也能輸出相對精確的局勢分析。

評估網絡可以提前中斷蒙特卡羅樹搜索。

還記得蒙特卡羅樹搜索是怎樣工作的嗎?為了決定當前這步棋走得好不好,找一堆水平一般的人繼續把棋下完,如果結果是在多數情況下自己依然能贏,則剛才這步棋就是好棋,否則就不是。

有了評估網絡,這些棋就不必下到最後一個子了,隻要評估網絡說“這樣下去你肯定輸”,就可以停止搜索。這樣做,可以把很多CPU時間節約出來,使其不被浪費在搜索顯而易見的昏招之上。

所以,無論是決策網絡還是評估網絡,其最終效果都不是給AlphaGo帶來智能,而是將其從繁重的蠻力搜索中解脫出來。

也許讓人覺得最玄乎和不可思議的地方不是AlphaGo打敗了樊麾,而是深度思維所宣稱的AlphaGo的自增強學習(Reinforcement Learning)能力:在經過3000萬步棋局的訓練後,AlphaGo可以通過自身的不懈努力來提高圍棋水平。

聽上去很嚇人。電腦是不知道疲勞的,不需要有人天天對它耳提麵命“頭懸梁錐刺股”的古訓,也不需我們時不時地把遊戲機從它手中奪下而大喝三聲“寫作業去!”隻要把電源開關打開,電腦便會一直學啊學啊學啊學下去,這樣用不了多久,它的智力不就很容易超過人類嗎?

由於我們已經理解AlphaGo神經網絡的訓練過程,因而理解其學習能力也就是順理成章的事了。在經曆了3000萬步的訓練之後,AlphaGo應該算是“會”下棋了。於是就找兩個AlphaGo互相對弈,以子之矛攻子之盾,下完後把每一步複盤。複盤後得來的棋譜正好又可以作為訓練樣本,把它們拿去繼續完善AlphaGo的決策網絡和評估網絡。隻不過,這中間的每一步都是在人類的指導下完成的。

具體做法是:讓兩個決策網絡互相下棋,決策網絡在下棋時會看著當前的棋局產生落子建議。假如一盤棋下贏了,那麽這些落子就會被加分,反之被減分。假如某種落子建議總是導致輸掉比賽,那麽這些建議就會被從神經網絡中除去。

就這樣,在千萬次的自我對弈過程中,新棋譜會不斷地產生,變成決策網絡的新鮮血液,而不好的棋譜會被逐漸淘汰,如此這般,電腦的棋藝也就越來越強。

另外,決策網絡互相對弈所產生的棋譜也被用來訓練評估網絡,因為對於這些棋譜來說,最終的勝負是已知的,而評估網絡需要的就是看到棋局後便能預測結果的功能。

電腦的這種學習,從開始設計學習方案到最後驗收結果,包括中間的每一步細節,都必須由人來手把手地幫助實現。在這個過程中,人隻能發出“把這個數組拷貝到那個數組、把剛才的步驟重複一萬次”之類的低級指令,因為電腦根本聽不懂“你倆互相對弈”這樣的自然語言。此外,在整個學習的過程中,電腦不會表現出一點主觀能動性,完全聽任人類的擺布。

是的,AlphaGo是一個對“學習”二字毫無感覺的木偶,既不懂“金角、銀邊、草肚皮”,也不懂“尖、跳、飛、斷、打劫、雙活”。它所能做的隻是按照人的意圖把棋局輸入偽民主製度中,做一番看上去體現了自己民意的投票,然後再來上一通極為蠻力的隨機搜索。至於投票結果是怎樣被操控的,自己的搜索能解決什麽問題,自己是怎樣學習圍棋的,自己學會了圍棋又有什麽意義,它一無所知。

至此,AlphaGo的底牌已被全部翻開。

待續

階梯講師原創作品•謝謝閱讀

[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.