1. 程式人生 > >解密Google Deepmind AlphaGo圍棋演算法

解密Google Deepmind AlphaGo圍棋演算法

2016年1月28日,Google Deepmind在Nature上發文宣佈其人工智慧圍棋系統AlphaGo歷史性的戰勝人類的職業圍棋選手!這條重磅新聞無疑引起了圍棋界和人工智慧界的廣泛關注!3月份AlphaGo對陣李世石的比賽更將引起全人類的目光!

是什麼使圍棋演算法產生了質的飛躍?要知道,在之前最好的圍棋程式也只能達到業餘人類棋手的水平。是真的人工智慧產生了嗎?

對於大多數人來說,大家都知道1997年的“深藍”計算機戰勝了人類的國際象棋冠軍卡斯帕羅夫,但是大家都不會認為“深藍”真正擁有了人工智慧,道理非常簡單:國際象棋(當然圍棋也是)每一步都是可見的,在一個確定性的棋局下,僅有有限個走法。這有限個走法中必然有一個最優的。一個基本的想法就是對棋局進行預測,遍歷每一種走法直到一方勝出,然後回退計算每一個可能贏的概率,最後使用概率最高的作為最優的走法。“深藍”就做了這麼件事,暴力窮舉所有的步子,然後找最優!贏了人類,但沒有智慧,因為整個演算法完全就是人工設計的一個演算法,根本看不到智慧在哪裡。

顯然圍棋理論上也可以暴力破解,但是問題就在於圍棋的可走的步子太多了,以至於目前的計算效能根本做不到暴力破解。這也就是為什麼圍棋是擋在人工智慧面前的一個重大挑戰。

要使圍棋程式戰勝人類頂尖高手,只有依靠真正的人工智慧!

對圍棋有了解的朋友都知道下圍棋需要對整個棋局有直觀的理解,這就是圍棋困難的地方。除非計算機真正理解了棋局,才有可能有大局觀,才有可能下出真正的好棋!

那麼,問題來了:

AlphaGo 有真正的人工智慧嗎?

我的回答:

AlphaGo有真人工智慧,雖然還不完美!

那麼

AlphaGo的真人工智慧在哪裡?

我的回答:

就在深度神經網路之中

一切的答案都在Google Deepmind在Nature上發表的文章: 

Mastering the Game of Go with Deep Neural Networks and Tree Search論文連結

本文將分析AlphaGo的這篇Nature文章,去解密真人工智慧的奧祕!

AlphaGo的”大腦“是怎樣的

深度神經網路是AlphaGo的”大腦“,我們先把它當做一個黑匣子,有輸入端,也有輸出端,中間具體怎麼處理先不考慮。那麼AlphaGo的”大腦“實際上分成了四大部分:

  • Rollout Policy 快速感知”腦“:用於快速的感知圍棋的盤面,獲取較優的下棋選擇,類似於人觀察盤面獲得的第一反應,準確度不高

  • SL Policy Network 深度模仿”腦“:通過人類6-9段高手的棋局來進行模仿學習得到的腦區。這個深度模仿“腦”能夠根據盤面產生類似人類棋手的走法。

  • RL Policy Network 自學成長“腦”:以深度模仿“腦”為基礎,通過不斷的與之前的“自己”訓練提高下棋的水平。

  • Value Network 全域性分析“腦”:利用自學成長“腦”學習對整個盤面的贏面判斷,實現從全域性分析整個棋局。

所以,AlphaGo的“大腦”實際上有四個腦區,每個腦區的功能不一樣,但對比一下發現這些能力基本對於人類棋手下棋所需的不同思維,既包含區域性的計算,也包含全域性的分析。其中的Policy Network用於具體每一步棋的優劣判斷,而Value Network則對整個棋局進行形勢的判斷。

而且很重要的是,AlphaGo提升棋力首先是依靠模仿,也就是基於深度模仿“腦”來進行自我水平的提升。這和人類的學習方式其實是一模一樣的。一開始都是模仿別人的下法,然後慢慢的產生自己的下法。

那麼這些不同的腦區的效能如何呢?

  • 快速感知“腦”對下棋選擇的判斷對比人類高手的下棋選擇只有24.2%的正確率

  • 深度模仿“腦”對下棋選擇的判斷對比人類高手的下棋選擇只有57.0%的正確率,也就是使用深度模仿“腦”,本身就有一半以上的機率選擇和人類高手一樣的走法。

  • 自學成長“腦”在經過不斷的自學改進之後,與深度模仿“腦”進行比賽,竟然達到80%的勝利。這本質上說明了通過自我學習,在下棋水平上取得了巨大的提升。

  • 全域性分析“腦”使用自學成長“腦”學習訓練後,對全域性局勢的判斷均方差在0.22~0.23之間。也就是有大約80%的概率對局面的形勢判斷是對的。這是AlphaGo能夠達到職業棋手水準的關鍵所在。

從上面的分析可以看到AlphaGo的不同“腦區”的強大。具體每個大腦是怎麼學習的在之後的小節分析,我們先來看看有了這些訓練好的大腦之後AlphaGo是如何下棋的。

AlphaGo 是如何下棋的?

在分析AlphaGo是如何下棋之前,我們先來看看一下人類棋手會怎麼下棋:

  • Step 1:分析判斷全域性的形勢

  • Step 2:分析判斷區域性的棋局找到幾個可能的落子點

  • Step 3:預測接下來幾步的棋局變化,判斷並選擇最佳的落子點。

那麼,AlphaGo在擁有強大的神經網路”大腦“的基礎上採用蒙特卡洛樹搜尋來獲取最佳的落子點,本質上和人類的做法是接近的。

首先是採用蒙特卡洛樹搜尋的基本思想,其實很簡單:

多次模擬未來的棋局,然後選擇在模擬中選擇次數最多的走法

AlphaGo具體的下棋基本思想如下(忽略掉一些技術細節比如拓展葉節點):

  • Step 1:基於深度模仿“腦” 來預測未來的下一步走法,直到L步。

  • Step 2:結合兩種方式來對未來到L的走勢進行評估,一個是使用全域性分析“腦”進行評估,判斷贏面,一個是使用快速感知“腦”做進一步的預測直到比賽結束得到模擬的結果。綜合兩者對預測到未來L步走法進行評估。

  • Step 3:評估完,將評估結果作為當前棋局下的下一步走法的估值。即給一開始給出的下一步走法根據未來的走向進行評估。

  • Step 4 :結合下一步走法的估值和深度模仿腦進行再一次的模擬,如果出現同樣的走法,則對走法的估值取平均(蒙特卡洛的思想在這裡)

反覆迴圈上面的步驟到n次。然後選擇選擇次數最多的走法作為下一步。

說的有點複雜,簡單的講就是綜合全域性和具體走法的計算分析,對下一步棋進行模擬,找到最佳的下一步。對步子的選擇,既要依賴於全域性分析“腦”的判斷,也需要深度模仿“腦”的判斷。

分析到這裡,大家就可以理解為什麼在AlphaGo與Fan Hui的比賽中,有一些AlphaGo的落子並不僅僅考慮區域性的戰術,也考慮了整體的戰略。

知道了AlphaGo的具體下棋方法之後,我們會明白讓AlphaGo棋力如此之強的還是在於AlphaGo的幾個深度神經網路上。

所以,讓我們看看AlphaGo的大腦是怎麼學習來的。

AlphaGo是如何學習的?

AlphaGo的學習依賴於深度學習Deep Learning和增強學習Reinforcement Learning,合起來就是Deep Reinforcement Learning。這實際上當前人工智慧界最前沿的研究方向。

關於深度學習和增強學習,本文不做詳細的介紹。深度神經網路是由巨量的引數形成的一個多層的神經網路,輸入某一種型別的資料,輸出某一種特定的結果,根據輸出的誤差,計算並更新神經網路的引數,從而減少誤差,從而使得利用神經網路,特定的輸入可以得到特定想要的結果。

以深度模擬“腦”為例。這個實際上是一個12層的神經網路。輸入主要是整個棋盤的19*19的資訊(比如黑棋的資訊,白棋的資訊,空著的資訊,還有其他一些和圍棋規則有關的資訊一共48種)。輸出要求是下一步的落子。那麼Google Deepmind擁有3000萬個落子的資料,這就是訓練集,根據輸出的誤差就可以進行神經網路的訓練。訓練結束達到57%的正確率。也就是說輸入一個棋盤的棋局狀態,輸出的落子有一半以上選擇了和人類高手一樣的落子方式。從某種意義上講,就是這個神經網路領悟了棋局,從而能夠得到和人類高手一樣的落子方法。

換另一個角度看會覺得AlphaGo很可怕,因為這個神經網路本來是用在計算機視覺上的。神經網路的輸入是棋盤,就類似為AlphaGo是看著棋盤學習的。

接下來的自學成長“腦”採用深度增強學習(deep reinforcement learning)來更新深度神經網路的引數。通過反覆和過去的“自己”下棋來獲得資料,通過輸贏來判斷好壞,根據好壞結果計算策略梯度,從而更新引數。通過反覆的自學,我們看到自學成長“腦”可以80%勝率戰勝深度模仿“腦”,說明了這種學習的成功,進一步說明自學成長“腦”自己產生了新的下棋方法,形成了自己的一套更強的下棋風格。

說到這,大家可以看到真人工智慧來源於神經網路,具體神經網路的引數為什麼能夠表現出智慧恐怕無人知曉?智慧到底是什麼還需要等待答案。

深度神經網路是人工智慧的黎明!

【本文為原創文章,轉載請註明出處:blog.csdn.net/songrotek】

AlphaGo贏了圍棋 人工智慧就此崛起?

前言:在今日Google的Alpha Go和李世石的比賽中,耗時4小時擊敗了這位當今最強人類棋手。

這兩天大家都紛紛在討論這個人工智慧的新星,大家都很好奇這個人工智慧系統到底是如何工作的呢?要回答這個問題,我們先來從最基礎的人工智慧下棋演算法說起。

文/Jason(出門問問NLP工程師)

傳統的下棋人工智慧演算法

平時,我們形容一個人下象棋下的好,我們可能會說“他腦子很會算,能算到5步以後呢”。這個意思就是說,這個人在選擇下一步走法的時候,他評估每一步走法,會往後繼續多想幾步——“如果我這麼走,對方會怎麼下呢?那對方這麼下之後,那個時候我可能選擇的最佳走法又是什麼呢?”以此類推。對人類來說,他在大腦中會進行多次推演,來選擇最好的走法路徑。所以能夠想到5步之後,已經是很厲害的人類了!但這種思維方式,恰恰是計算機特別擅長的。MinMax演算法就是一個這樣的演算法,成功應用在很多棋類AI中,基本思想和之後要講的AlphaGo的MCTS演算法也有相通之處。

圖:MinMax演算法示例,來自於wikipedia

圓形的節點表示“你”面對的局面,而方塊的節點表示對手面對的局面。這裡是4層兩個回合的搜尋樹。

- 我們從最下層第4層開始,這一層是葉子節點,不再展開,我們使用“估值函式”(Evaluation Function)評估局面的“好壞”,為每一種局面打分,如圖上節點上的數字所示。在中國象棋中,比如“估值函式”可以考慮的因素比如中國象棋中車的個數、卒是否過河、是否有空頭跑架在對方的帥上方等等。分數越高,對你越有利。一個正無窮的分數,代表遊戲結束並且你獲得勝利,反之亦然。

- 接著第3層對手從這些局面中選擇他最好的局面(也就是你最壞的局面),也就是得分最少的局面(因為計算得分是從你的角度計算的)。

- 接著你在第2層選擇得分最多的局面。

- 接著對手在第1層選擇得分最少的局面。

- 最後你在第0層選擇得分最多的局面,也就是得分為-7的節點。

這樣的樹形結構成為搜尋樹,也稱為搜尋空間,其中的每一個節點代表了棋局中的一個可能性。可以看到,這樣的搜尋空間的規模是跟這顆樹的層數(也稱深度),以及每個節點可以衍生出來的子節點的個數(稱之為Branching Factor)。比如上圖就是一個深度為4,Branching Factor為2的搜尋樹,其搜尋空間的總數為2 + 4 + 6 + 9 = 21。

對於國際象棋來說,Branching Factor為35,即對於一個局面平均有35種不同的合法走法。對於圍棋來說,Branching Factor是250。(https://en.wikipedia.org/wiki/Branching_factor)因此在真實的棋類比賽中,搜尋空間是巨大的。從根節點枚舉出所有的子節點,再逐一進行考慮是絕對不現實的,再快的計算機也無法完成這一浩大的計算。在MinMax中會採用一種叫做Alpha-beta的剪枝演算法,通過簡單的邏輯讓系統在某些分支上停止展開,儘早避免把搜尋時間花在肯定不會有好結果的分支上。

所以一個好的搜尋策略,會應用更智慧的剪枝演算法,優先選擇更有希望導致勝利的分支進行搜尋。同時,一個準確的估值函式,能夠正確的評估某個分支代表的局面的好壞,這樣不用算到最後的決勝局,就可在較淺的深度通過估值函式來預估勝算。

為什麼圍棋這麼難?

總結上文,一個好的棋類AI,需要結合高效的搜尋策略和準確的估值函式。我們從這個角度來分析以下,為什麼20年前AI就已經打敗國際象棋的人類世界冠軍,直到現在圍棋AI才剛剛嶄露頭角呢?

其一,圍棋棋盤是19x19,因此每一步可以選的合法走法遠遠大於象棋(剛剛也提到圍棋的Branching Factor是250,象棋只有35)。因此圍棋搜尋空間相對於國際象棋來說大得多

其二,圍棋的估值函式很難設計。象棋裡面你尚能用簡單的統計棋子個數來推斷,圍棋棋局千變萬化,可能看似風平浪靜其實暗藏殺機。

這兩個主要原因導致了圍棋AI上面一直很難有大的進展。

AlphaGo怎麼這次怎麼做到的?

那這次出戰的AlphaGo,又是有什麼獨門絕技呢?類似之前提到的MinMax搜尋框架,AlphaGo(以及現在很多其他的圍棋AI),在決定下一步棋怎麼走的時候,採用了MCTS(Monte Carlo Tree Search)的搜尋框架。

大致思想可類比MinMax演算法:MCTS演算法,對於給定的當根前節點,通過計算機模擬推演以當前根節點出發的各種可能的走法,配合高效的“剪枝”演算法來控制搜尋空間大小,並用演算到最後一步的結果來反過來影響當前跟節點下一步棋的選擇。之前也提到過圍棋相對於傳統棋類AI的設計難點:1)可能的走法太多(即Branching Factor較大)導致搜尋空間非常大 2)沒有一個好的估值函式對進行中的圍棋棋局計算一個靜態得分。於是MCTS針對這兩個問題提出解決方案:搜尋空間更大我們就採取比Alpha-beta剪枝更激進的剪枝策略,只把有限的計算資源留給最最有希望的走法(後面會提到的Selection、Expansion);對於中間棋局好壞很難估計,那我們就一路模擬到最後分出勝負為止(後面會提到的Simulation)!

MCTS演算法是一個多輪迭代演算法,每一輪迭代都會以此經歷四個階段:Selection,Expansion,Simulation和Back Propagation。下圖展示了MCTS的某一時刻搜尋空間的情形,當前有有限個子節點(而不是所有的可能性組成的全搜尋空間)正在演算法的搜尋範圍之內。


圖注:MCTS搜尋策略每一輪迭代的四個步驟

這四個步驟分別為:

1) Selection:根據現有的搜尋空間,選擇一個“最最需要展開”的子節點,比如圖中Selection步驟當中,沿著粗線一路走到底的最下方的葉子節點。這個節點被選中,意味著當前狀態下,系統認為沿著這個節點的這條路徑,最有可能導致勝利

2) Expansion:對於上面被選中的節點,從它的子節點中挑選出一個最有希望的子節點,展開之(即加入到當前搜尋空間中)

3) Simulation:從剛剛展開的這個節點,繼續往下模擬(也稱Rollout),直到分出勝負。當然這個往下模擬採用了另一套搜尋策略,由於在這個階段搜尋深度需要達到最終分出勝負為止,所以會採用更加簡單的搜尋策略,以保證在有限時間內能夠搜尋到決勝節點。

4) Back Propagation:Simulation階段已經搜尋到最終的決勝節點。那麼根據這個Simulation的最終勝負,我們會反過來更新剛剛的選擇和展開的節點所在的路徑。比如Simulation最後結果是我方勝,那麼說明剛剛導致這個結果的所有每一步(圖中粗線所經過的所有節點),都是需要表揚和肯定的。那麼具體來說,會更新這些節點所對應的得分,保證在下一輪迭代的時候這些節點會有更大的機率被選中。反之,如果Simulation的最終結果是我方輸,那麼相應的節點都會受到懲罰,在下一輪迭代中會更小的機率被選中。

那麼經歷過足夠多輪的迭代之後(或者限定時間耗盡),迭代結束。這時候,會從當前根節點的所有探索過的子節點中,選擇一個得分最高的子節點,作為最終的下一步走法。

類比之前對於MinMax的分析,MCTS策略的好壞,也是建立在對子空間的選擇之上的。因為不可能列舉所有的子空間,所以在Selection和Exapansion階段,就必須有效的挑選出最有希望的走法進行Simulation。如果選擇不好,則會導致浪費大量的時間在其實沒有希望的子節點上,甚至是錯過最終可能導致勝利的子節點。

AlphaGo用兩個深度神經網路來幫助這個選擇:Policy Network和Value Network。

其中Policy Network用來在Selection和Expansion階段,衡量為每一個子節點打分,找出最有希望、最最需要預先展開的那個子節點。Policy Network網路的訓練,是通過觀察其他人類之間對弈的棋局來學習的,主要學習的目標是:“給定一個棋局,我接下來的一步應該怎麼走”?(這是一個靜態的過程,不用繼續深入搜尋更深層的子節點)為此,AlphaGo先讀取KGS(一個網路圍棋對戰平臺)上面近16萬局共3000多萬步的人類走法,通過Supervised Learning的方法,學習出來一個簡單的SL Policy Network(同時還順便訓練出來Simulation階段用來一路算到決勝局使用的Rollout Policy)。然後基於這個在人類棋局上學習出來的SL Policy Network, 使用強化學習(Reinforcement Learning)的方法通過自己跟自己對弈,來進一步優化Policy Network。這麼做的原因,一個可能的原因是通過人類棋局學出來的SL Policy Network,受到了人類自身能力的侷限性的影響(KGS棋局中包含了很多非專業棋手,實力層次不齊),學不出特別好的策略來。那不如在此基礎上,自己跟自己打,在此過程中不斷學習不斷優化自己的策略。這就體現了計算機的優勢,只要不斷電,計算機可以不分晝夜不斷自己跟自己下棋來磨練棋藝。RL Policy Network初始引數就是SL Policy Network的引數,但青出於藍而勝於藍,實驗指出RL跟SL策略對弈,RL勝率超過80%。RL Policy Network也是最終應用在實際對戰過程中MCTS Selection階段的策略。

Value Network是AlphaGo第一次提出來的,它的作用是為給定的局面打分,類似於之前MinMax演算法中的估值函式(這也是我們提到的圍棋AI中的一個難點,之前的研究都回避的這方面的工作)。Value Network可以給某個特定的局面打分,這樣,在MCTS做Selection的時候,可以更準確的評估一個子節點的優劣,避免不必要的Expansion和Rollout Simulation。

(圖注:AlphaGo使用了Policy Network和Value Network在實戰中的MCTS搜尋中高效選擇搜尋子空間。訓練過程:通過KGS上的人類棋局(Human expert positions)來學習SL Policy Network和Rollout Network,然後基於SL Policy Network進行機器自我對弈(Self-play Positioning)學習出更優秀的RL Policy Network, 最後通過RL Policy Network學習出Value Network)

可以看到,AlphaGo通過當前很火的深度學習,更有效的模擬了人類的下棋策略。並且通過不間斷的自我學習,不斷優化這個策略。通過Policy Network和Value Network共同篩選出MCTS搜尋中下一步最應該優先探索節點,AlphaGo才能在有限的計算資源下,更快速準確地找到最佳下一步。

人工智慧就此崛起了麼?

在跟李世石的首局比賽中獲勝,是人工智慧發展史上有一個里程碑。也有人猜測,首局比賽中李世石為了避免下出AlphaGo曾經學過的棋路,特意採取了一種比較冒險的下法,導致最終的失利。並且,作為一個人類棋手,李世石的決策還受到了心理因素的影響,而不像冷酷無情的AlphaGo,自始至終的每一輪的計算都是那麼的理性和縝密。我們拭目以待接下來李世石會以什麼樣的策略繼續迎戰AlphaGo,就算AlphaGo最終還是輸了,以它現在每天不吃不喝左右互搏的學習能力,假以時日贏過人類也也是非常有可能啊。

那麼,如果被人工智慧攻克下被稱為人類最後的智力優勢的圍棋,是否預示著人工智慧就此崛起了呢?我覺得完全不用那麼悲觀。

首先,在現有的計算機體系下,程式都是確定的(deterministic),即人類讓程式怎麼做,程式就只能這麼做,絕對不會超過人類預先劃定的範圍(包括計算機產生的隨機數,從某種程度上講,也是確定的哦)。人工智慧作為程式的一種型別,也遵循這麼一個鐵的定律。即使本文中講到的RL Policy Network訓練中的自我“學習”,也是在人類規定下進行的:迭代多少輪、每一輪怎麼通過強化學習更新模型引數,都是由人一一事先確定的好的。這並不是人類意義上可以舉一反三的自我學習。除非一種全新的體系誕生,讓程式可以自行推理、自我複製、自我學習,在超出人類界定框架之外自我進化,並且恰巧進化出來要消滅人類這麼一個念頭,那才是我們真正需要擔心的事情。

其次,雖然現在計算機在象棋、圍棋、智力問答方面已經超過了人類,能夠在微秒之內完成百萬之間的乘法運算,能夠儲存下世界上所有圖書館裡面的知識 —— 但是在某些方面,連3歲的人類小孩都不如。比如人類小孩能夠輕易的認出媽媽和爸爸,能夠通過觀察大人關燈的動作就自己學習出來牆上的開關和屋頂的電燈存在著某種聯絡,這些看似事對於當今最強的人工智慧演算法,也無法做到。所以有一些任務,如果不能被很好的抽象成一個具體的步驟序列,那麼計算機根本無能為力。

所以,距離真正的人工智慧,還有很長的一段距離。距離戰勝人類象棋冠軍過去了20年,人類才剛剛造出來一個可以擊敗人類圍棋冠軍的AI,何足畏懼。

不過,這次Google的AlphaGo的意義仍是非比尋常的。1997年IBM的深藍計算機在國際象棋上擊敗了當時的國際象棋世界冠軍,2011年IBM的Watson系統在知識問答類競賽Jeopardy!上擊敗了競賽有史以來最聰明、知識最淵博的幾位人類選手。今天,終於,輪到了Google的AlphaGo,在圍棋上擊敗了人類世界冠軍李世石。雖然這只是5輪比賽的首輪,最終鹿死誰手尚未可知,但無疑今天AlphaGo的首戰告捷已經成為了人工智慧歷史上又一個值得被載入史冊的里程碑!

更重要的是,藉助AlphaGo研究這個契機,一些深度學習方面的演算法得以進一步被深入研究,並且可以平行借鑑到其他領域中去。如同IBM閉門5年造出來Watson Deep QA系統,在Jepardy!大賽上擊敗人類選手之後,除了為IBM帶來了巨大聲譽,也讓IBM將相關技術應用到金融、醫療等領域。又如同前段時間發現引力波的LIGO的研發,其順帶的研究副產品,比如減震系統技術,也惠及了人類其他科技領域的發展。所以,AlphaGo對於人類的意義,絕不僅僅是它擊敗了人類圍棋冠軍而已。

我們是這個時代的幸運者,能夠見證一個新的里程碑的誕生。不管最終誰輸誰贏,都是我們人類的勝利。

 


本期封面所示為作為一個電腦晶片嵌入在一塊整合電路板上的一張圍棋盤。該圍棋盤的佈局來自2015105日在Fan Hui (黑子)AlphaGo (白子)之間所進行的一場歷史性圍棋比賽的最終棋局。這場比賽是在沒有讓子或讓先的遊戲中、在19 × 19的標準大小棋盤上一個電腦程式歷史上第一次戰勝了一位職業棋手。下棋電腦 “深藍”1997年在一場六局比賽中對戰當時的國際象棋世界冠軍加里•卡斯帕羅夫的勝利被看成是人工智慧發展中的一個重要里程碑。但這之後仍有一個甚至更大的挑戰需要應對——古老的圍棋運動。儘管經過了幾十年的優化,但直到不久前最強的電腦下圍棋的水平也仍然只相當於人類業餘棋手。AlphaGo上陣了。由Google DeepMind開發的這個程式利用深度神經網路來模仿專業棋手,並通過從和自己對陣的棋局中學習來進一步提高其效能。AlphaGo 對陣其他最強圍棋程式的勝率達到了99%,並在一場巡迴賽中以5-0戰勝了衛冕歐洲冠軍Fan Hui

 

DeepMind創始人Demis Hassabis

Demis Hassabis說,圍棋是人類發明的最複雜也是最美的遊戲。通過戰勝Fan Hui,「我們的程式贏得了長期以來一項重大人工智慧挑戰的勝利。而這項技術在Google的首個用途將是開發更好的個人助理軟體。這樣的個人助理能夠從使用者線上行為中學習使用者偏好,並對產品和事件作出更符合直覺的建議。」

Hassabis還說道,他們用來創造Alpha Go的技術,也正是他的團隊努力開發強人工智慧的嘗試。他說:「最終,我們想要將這些技術應用到真實世界的重要問題中。因為我們用的方法是通用的,我們希望有一天,它們能延伸得更廣,幫助解決最緊迫的社會問題,從醫藥診斷到環境模型。」

實際上在幾年前,大多數圍棋選手和棋類程式設計師都相信,圍棋實在是太困難了,必須要花上幾十年的時間,計算機才能達到人類專業棋手的標準水平。對計算機來說,圍棋比象棋的挑戰更大,原因有二:每個回合可能存在的走法數量多得多,沒有一個簡單的方法來測算優勢。所以,棋手只能學著在棋盤上幾百個棋子中識別出抽象模式。即使是專家也經常會很難解釋為什麼一步棋看起來很有優勢或有問題。

眾專家的評價

1997年,當IBM深藍計算機在象棋上稱霸時,它使用的是手工編碼的規則,在搜尋時將窮盡所有可能發生的步法。Alpha Go從本質上則是隨著時間而學習的,可以識別出可能具有優勢的模式,然後模擬出數量有限的潛在結果。

Google的成就受到了廣泛的祝賀,也引起了許多本領域研究者的驚訝。

新成立的非營利性組織OpenAI的AI研究者Ilya Sutskever說:「從技術的角度說,這個研究對AI具有紀念碑式的貢獻。」他說,這個成果非常重要,因為Alpha Go從本質上教會了自己如何贏得比賽。「同樣的技術也可以用於其他棋類遊戲中,以獲得高超表現。」

加拿大阿爾伯塔大學的電腦科學教授Michael Bowling最近開發了一個能在撲克牌上贏過人類的程式。他聽到這個訊息也很興奮。他相信,這個方法在許多可以運用機器學習的領域都很有用。他說:「許多我們通常認為是人類智慧的東西其實都構建於模式匹配上。許多被我們看做學習的東西,其實都是在過去看到了某些模式,然後意識到它們與現在的狀況有何聯絡。」

紐約大學認知教授Gary Marcus說:「這不是所謂的端對端深度學習系統。而是精心建構的模組化系統,在前端具有一些縝密的手工操作,也就是說,幾乎媲美人類心智:豐富,模組化,通過演化做出些微調整,而不僅僅是一束隨機互聯的神經元,完全通過經驗做出調整。」

Facebook不甘示弱:提前發表論文,LeCun精彩迴應

而就在國外媒體對谷歌這篇論文進行大規模報道之前,Facebook人工智慧實驗室(以下簡稱FAIR)負責人Yann LeCun也非常「巧合」地在自己Facebook主頁貼出了Facebook剛剛發表在arXiv.org的一篇針對圍棋問題的論文,還意味深長的從圍棋問題的歷史、相關技術、Facebook研究進展等方面進行了詳細說明。

首先,Yann LeCun解釋了我們為什麼要研究圍棋?他說,作為一項非常困難的任務,圍棋是一個很好的案例來驗證各種學習技能的結合,包括模式識別、問題解決和規劃等,也是一個可以用來測試新想法的工具,包括機器學習、推理和規劃的結合。

Yann LeCun說,Facebook FAIR的一位科學家Yuandong在幾個月前開始獨立研究圍棋專案,他開發了一款叫做「黑暗森林」的機器人。根據論文中的描述,最新版機器人將卷積神經網路和目前圍棋機器人的經典方法——蒙特卡洛樹搜尋進行了有機結合。

此前,曾在2014年東京圍棋擂臺賽上通過讓子以微弱優勢戰勝人類棋手的Crazy Stone就是依賴於蒙特卡洛樹搜尋,這是一套能夠從本質上對每一步走法的所有結果都進行分析的系統。所以,有些機器能夠非常精通西洋棋、國際象棋和其他棋類。它們比人類棋手看的更遠,所以能夠輕鬆的擊敗他們。但圍棋不是這樣,下圍棋有太多的可能性需要考慮。在國際象棋的任何一個回合,平均可能的走法有35種。但圍棋的走法卻能達到250種。並且在這250種可能的走法之後,還對應著另外250種可能,以此類推。因此,用蒙特卡洛數搜尋去計算每一步走法所帶來的所有結果是不可能的。

從Facebook的研究成果可以看出,通過將訓練過的卷積神經網路和蒙特卡洛樹搜尋的結合,我們可以在模式匹配功能上再加入策略評估這個新功能。這也將有益於遊戲之外的其他應用,比如說自然語言生成,在回覆中能夠加上自發性和多樣性,同時也能進行推理,而推理所需要的就是搜尋可能的答案並挑選出最優的邏輯鏈。我們的興趣並不在於要開發出世界上最好的圍棋選手,但這是我們人工智慧研究進展的一次有趣練習。

從去年11月起,DarkForest就已經在公開的圍棋伺服器KGS上擊敗了一些人類選手和其他圍棋機器人。DarkForest的第一版完全是基於卷積神經網路。通過有監督模式的訓練讓它來「模仿」人類選手。我們使用了大量人類專業選手比賽錄影的資料庫,然後將比賽的棋盤格局輸入到卷積神經網路中,以此來訓練它預測人類選手的下一步走法。這需要大規模卷積神經網路,它的輸入是一個帶有註釋的完整的19x19圍棋棋盤,而神經網路輸出的是一個代表著人類專業棋手每一步走法概率分佈的棋盤地圖。這充分利用了卷積神經網路的模式識別能力,而這種能力在影象中的物體識別、人臉識別和語音識別方面的成功早就得到了證明。

LeCun表示,將卷積神經網路應用於圍棋的想法要追溯到很久之前的1994年,Nicol Schraudolph及合作者共同在NIPS上發表了一篇論文,將卷積神經網路和增強學習結合起來應用於圍棋問題研究。但當時對這些技術的理解還不夠深入,而且那時的計算機限制了可以被訓練的卷積神經網路的規模和複雜性。近期,多倫多大學的博士生Chris Maddison與Google DeepMind的研究者在ICLR 2015上共同發表了一篇論文,文章中提到,用比賽視訊資料庫訓練過的卷積神經網路能夠在預測走法上擁有優秀表現。愛丁堡大學Amos Storkey團隊發表在ICML上的論文同樣體現出這個結果。許多研究者開始相信,或許深度學習和卷積神經網路真正能夠在圍棋上有所作為。Amos Storkey說:「圍棋是由棋盤上的各種模式來驅動,深度神經網路非常擅長從棋盤的各種模式中進行歸納總結,因此非常合適下圍棋。」

這就是促使Yuandong將第一版黑暗森林釋出在KGS伺服器上的原因,此後,一個更加先進的版本很快攀升到了KGS伺服器上的第三名,遠好於之前的研究。這項排名要好於大多數開源程式,即便是人類棋手,也需要花費幾年時間才能達到這個水平。人類棋手喜歡和它對弈的原因在於它的走法非常像人類棋手。但同時它又非常擅長作戰策略。贏下區域性和策略有關的戰爭有時需要非常具體的探索,而非單純的模式識別。

很明顯,通過將卷積神經網路和蒙特卡洛樹搜尋的結合可以提升程式在策略方面的能力。在過去五年中,計算機圍棋程式通過蒙特卡洛樹搜尋取得了很大進步。蒙特卡洛樹搜尋是一種應用於計算機國際象棋程式中的樹形搜尋方法的「隨機」版本。INRIA的法國研究者團隊第一次提出了蒙特卡洛樹搜尋。之後,這種方法很快在幾個最好的計算機圍棋團隊中流傳開來,並變成開發頂級圍棋機器人所需要的標準方法。

今天釋出的新論文描述了DarkForest的最新版本,被稱作黑暗森林3,它使用了卷積神經網路和蒙特卡洛樹搜尋的結合。這個程式已經在KGS伺服器上運營了一個多月,並取得了成人組第五的排名。這個排名意味著它已經成為全美國最好的前100名選手之一,也步入了世界最頂尖圍棋機器人之列。

有趣的是,這個專案是由我們一個小團隊僅花了幾個月時間開發出來的,沒有投入任何圍棋專家資源(當然,除了比賽錄影資料庫)。這是對機器學習威力的一次偉大證明。

接下來明智的選擇是將卷積神經網路和蒙特卡洛樹搜尋與增強學習結合起來,就像Nicol Schraudolph的開創性研究。使用增強學習的優勢在於可以讓機器自己與自己對戰連續玩很多次