解密Google Deepmind AlphaGo圍棋算法:真人工智能來自於哪裏?

go

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則對整個棋局進行形勢的判斷。

network

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

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

  • 快速感知“腦”對下棋選擇的判斷對比人類高手的下棋選擇只有24.2%的正確率
  • 深度模仿“腦”對下棋選擇的判斷對比人類高手的下棋選擇只有57.0%的正確率,也就是使用深度模仿“腦”,本身就有一半以上的機率選擇和人類高手一樣的走法。
  • 自學成長“腦”在經過不斷的自學改進之後,與深度模仿“腦”進行比賽,竟然達到80%的勝利。這本質上說明了通過自我學習,在下棋水平上取得了巨大的提升。
  • 全局分析“腦”使用自學成長“腦”學習訓練後,對全局局勢的判斷均方差在0.22~0.23之間。也就是有大約80%的概率對局面的形勢判斷是對的。這是AlphaGo能夠達到職業棋手水準的關鍵所在。

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

AlphaGo 是如何下棋的?

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

  • Step 1:分析判斷全局的形勢
  • Step 2:分析判斷局部的棋局找到幾個可能的落子點
  • Step 3:預測接下來幾步的棋局變化,判斷並選擇最佳的落子點。

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

the way

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

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

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%勝率戰勝深度模仿“腦”,說明了這種學習的成功,進一步說明自學成長“腦”自己產生了新的下棋方法,形成了自己的一套更強的下棋風格。

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

深度神經網絡是人工智能的黎明!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章