首頁 » 科技 » 谷歌工程師:AlphaGo是如何學會下圍棋的

谷歌工程師:AlphaGo是如何學會下圍棋的

谷歌工程師:AlphaGo是如何學會下圍棋的

  歡迎關注“創事記”的微信訂閱號:sinachuangshiji

  創事記註:本文為自媒體程序員和創業者鼓勵師採訪谷歌工程師許丞的實錄,文中簡單講解了AlphaGo的原理,創事記已獲得許丞本人的轉發授權。

  最近,AlphaGo和李世石的圍棋大戰刷爆了朋友圈,之前的比賽AlphaGo首次擊敗人類圍棋冠軍,朋友圈都在轉發人工智能的前景有多麼樂觀,其在未來發生的應用場景會非常多,機器代替人類的一天將在不久會出現。隨着2016年3月13日李世石第一次取勝AlphaGo,朋友圈又引起了一片嘩然,都是對人類充滿了希望,感慨人類未來會越來越好,未來的世界還是人類主宰。AlphaGo的出現,無疑反應了谷歌的技術實力,研究水平之深。今天,我們採訪曾經的谷歌中國第三位工程師,許丞,李開復的50大弟子之一,試圖從一個谷歌人的角度談談AlphaGo與李世石的這場激戰。

  鼓勵師

  您之前在谷歌有從事過人工智能相關的工作嗎?

  許丞

  老實說,其實沒有。。。我在谷歌參與的項目主要有谷歌地圖搜索,谷歌生活搜索以及谷歌光纖網絡。我參與過使用機器學習的項目,比如條件隨機場進行命名實體識別和Logistic Regression做點擊概率預測,但是沒有直接做跟Deep Learning等相關的項目。

  有兩個項目可能跟目前熱得發紫的深度學習相關的吧: 在谷歌我們有一個去學習深度學習的codelab,工程師都可以去學習如何使用像DistBelief(第一代谷歌大腦項目)來進行實驗研究。我研究過如何用DistBelief去完成MINST手寫數字識別,我寫的程序還進了後來的tutorial。之前的研究者如果要去做手寫數字識別,需要自己先定義好各個features, 然後再訓練模型。谷歌大腦系統完全不用寫features,直接把原始手寫數字標註好,直接讓機器去尋找最好的features並生成模型。這個過程簡直太奇妙了。

  第二個項目是在參與谷歌光纖網絡項目的時候,我們需要去用計算機視覺的方式去解決一個物體識別的問題。簡單來說的話,就是從街景車的全景圖裡面,用谷歌大腦去識別是不是有電線杆子,聽起來這個電線杆子沒什麼用。。。。嗯。。。在做光纖布線的時候還是有用的。街景圖裡面去識別物體已經用在了抹去車牌或者說隱私保護的很多場景下,經過對比測試之後,目前我知道的數字是谷歌大腦識別這些數字或者名字的能力已經超過了人眼。

  鼓勵師

  AlphaGo為什麼可以下圍棋?之前深藍擊敗卡斯帕羅夫的時候是用了什麼原理?呃。。。計算機是怎麼可以下棋的?

  許丞

  計算機下棋的一個基本原理就是在狀態空間上進行搜索。。。。嗯,太專業了是吧?好吧,那我們用一個簡單的方式來描述一下這個過程。

谷歌工程師:AlphaGo是如何學會下圍棋的

  我們把圍棋簡化一下,簡化成一個叫做九宮棋的棋類遊戲。

  這個棋就是個簡化版的五子棋,規則就是誰能把3個棋子連一片,就算贏(這也太簡單了吧?圍棋比這個可複雜多了。。。嗯,所有的抽象模型都是由簡單開始的)。

  我們把每個棋的一個形態當做一個狀態,把所有的可能性都作為它的子狀態。那麼久可以形成一個如下類似的一顆樹,這顆樹就叫做博弈樹。

谷歌工程師:AlphaGo是如何學會下圍棋的

  這樣的一棵樹基本上把自己接下來可能的步數,以及對手可能走的步數都模擬了一遍,這就是大家下棋的時候所說的能夠往後看幾步了。看得步數越多,顯然贏的可能性就越大,因此就越厲害。

  對於九宮棋(三子棋),所有的狀態空間是一定的,所以其實是能夠知道必勝的走法的。但是對於圍棋或者象棋來說,每一次可能的步數都很多,這樣每多看一步,就產生很多倍的新的狀態空間,對於機器來說,可能就會內存不夠或者時間不夠了。

  因此大家會定義一個用來評估當前局面的函數,叫做評估函數。比如拿九宮棋來說,可以有很多,比如那可以是目前已經連成2個子的個數,或者任然空着的行列對角線的個數等等。評估這個局面可以告訴計算機,目前我這一步的情況如何,是不是很好。

  對於某些特別不好的局面,那麼評估之後就會被剪掉,這叫做剪枝法。因為博弈樹是一個下完一個,另外一個跟着下,因此剪枝的方法一般用的是α–β剪枝法(Alpha–beta pruning)

  通過這顆搜索樹,那麼機器就知道如何下子跟走棋了。

  鼓勵師

  這樣就明白了。那麼《自然》論文的AlphaGo的原理是什麼樣的呢?跟剛剛講的一樣嗎?

  許丞

  其實所有的計算機下棋的程序抽象來看都是上面那個的過程。只是因為難度不一樣,所以具體的算法複雜性也會有巨大的區別。

  AlphaGo最厲害的地方是用人工神經網絡來建模了“棋感”這一個完全無法用計算機語言來描述的概念。通過上面的學習我們可以知道,評估一個棋局的局面實際上可以用簡單的函數來描述,也可以通過往後看幾步來分析。這個評估函數建模了棋局的勝負概率,因此至關重要。人類經過訓練之後,能夠比較快速的去數目並判斷棋盤的局勢,但是機器顯然很難(對於計算來說,數數顯然是很快的,但是圍棋的目數和局勢顯然不是單純數一下數目)。

  AlphaGo的幾個核心部分是:

  1。 Policy Network: 用來預測如果是人類最好的選手,他會選擇哪一個走法。這個模型是用深層神經網絡實現的,其實是建立了最好棋手棋感的一部分。

  2。 Fast rollout: 快速走子,跟1的功能一樣,但是用了不同的模型,這個模型跟預測點擊率的Logistic Regression模型沒有區別。

  3。 Value Network: 評估當前的棋局形勢。

  4。 Monte Carlo Tree Search: 蒙特卡洛樹搜索。用來進行狀態空間的快速搜索的概率模型。

  拿着剛剛學習的東西來對比:

谷歌工程師:AlphaGo是如何學會下圍棋的

  Policy/Value Network是對比與上文說的評估函數。在上面的搜索樹裡面用了一個簡單的數數的方式,而在AlphaGo中,用的是棋感和預測走子的方式來進行構建狀態空間。

谷歌工程師:AlphaGo是如何學會下圍棋的

  而蒙特卡洛樹搜索是一個概率搜索算法,跟上面的博弈樹搜索是一個套路的東西,只是用的是概率模型來進行更有效的搜索。

  鼓勵師

  太複雜了沒看懂,那麼您直接告訴我。。。他的貢獻是什麼吧?

  許丞

  建立了棋感是很重要的貢獻。人和機器根本的不一致在於: 如果你給他看一個圖片;對於機器而言,他看到的都是0/1這樣的二進制數字,除了最基礎的可以去數裡面有多少不同顏色什麼信息以外,啥都不知道。而人可以從全局的角度看這個圖片,這樣就能知道這個圖片大概是什麼東西,是什麼內容。

  棋感也是一樣——人工神經網絡應用在計算機視覺上的重要突破,就是人不再讓計算機用0/1來去識別圖像內容了,而是讓計算機自動的去抽取圖像的語義特徵–當然很可能只是一個一個小圖塊tiles這種組合方式的語義特徵。這樣計算機就可以開始慢慢的能夠開始感知到這個物體可能是什麼特徵通過線性組合出來的。慢慢的也就形成了概念。而棋感就是類比於這樣的概念!

  其二是增強學習。也就是說計算機可以開始通過自己和自己進行比賽的方式來提高自己的模型的精度。在此之前,所有的機器學習大部分都可以說是監督學習,人類在扮演着一個家長的角色,不停的告訴自己的計算機模型說這個是對的,這個需要修正。而現在在AlphaGo中,他們實現的無監督學習已經可以讓人不用再去當家長,他們左右互搏也能學習到非常強的知識。這個結果非常可怕

  鼓勵師

  目前不管是AlphaGo戰勝李世石還是李世石戰勝了AlphaGo ,這場人機大戰對未來會有什麼影響呢?

  許丞

  我認為這個影響將會是巨大的。在此之前,雖然人工智能,機器學習也算是人盡皆知的詞彙,但是此次新聞的傳播影響之大,從來沒有過讓普通人去這麼去關心人工智能的進展。這次人機大戰可以說是影響力全面超越了卡斯帕羅夫深藍大戰那次。可以預言人工智能在接下來的幾年之內一定是最熱的熱點話題,可以想象會有更多大學生投入到其中的學習和研究之中,也可能會讓投資更多的聚焦於這個領域,更多的應用和場景,進而會產生讓人不可思議的結果。

  AlphaGo中的技術和算法顯然不會只用於下棋,有意思的是歷史上的每一次人機棋類大戰都會帶來更多新技術的進步。1989年我的老師李開復博士帶着他的實習生在奧賽羅比賽中,利用統計學習打敗了當時的世界冠軍。也許當時對大部分的人來說,其實也僅僅是一次人機大戰而已。然而那次之後,統計學習在非特定人語音識別系統開始發揮無與倫比的作用,傳統的基於規則的語音識別系統被打得找不着北。現在我們能用到的siri, 自動電話應答機都是從此變為現實。更重要的是,從此之後,統計學習理論基本上統治了整個機器學習這個學科的所有研究方向,延續了差不多20多年。

  今天,風水輪流轉,曾經被認為沒前途的神經網絡技術捲土重來,通過深度學習的方式再次讓人類在視覺識別,棋類競技等項目上敗給機器,重新佔據了學術研究的焦點。這是一場計算機智能革命,這些比人機大戰結果的更有現實意義。我相信,隨着這些算法應用到計算機視覺,自動駕駛,自然語言理解等領域,AlphaGo及其帶來的人工智能革命必將改善我們所有人的生活。

谷歌工程師:AlphaGo是如何學會下圍棋的

(聲明:作者獨家授權新浪網使用,請勿轉載。本文僅代表作者觀點,不代表新浪網立場。)

看看這個吧

霍金想要探測比鄰星,有可能成功嗎?

HDé«�æ¸�æ��人å ...

蘋果購地以時光女神命名 疑有關電動汽車項目

HDé«�æ¸�æ��人å ...