天天看點

解密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的”大腦“是怎樣的

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

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

  • Rollout Policy 快速感覺”腦“:用于快速的感覺圍棋的盤面,擷取較優的下棋選擇,類似于人觀察盤面獲得的第一反應,準确度不高
  • SL Policy Network 深度模仿”腦“:通過人類6-9段高手的棋局來進行模仿學習得到的腦區。這個深度模仿“腦”能夠根據盤面産生類似人類棋手的走法。
  • RL Policy Network 自學成長“腦”:以深度模仿“腦”為基礎,通過不斷的與之前的“自己”訓練提高下棋的水準。
  • Value Network 全局分析“腦”:利用自學成長“腦”學習對整個盤面的赢面判斷,實作從全局分析整個棋局。

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

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

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

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

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

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

AlphaGo 是如何下棋的?

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

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

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

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

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

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

繼續閱讀