五子棋AI算法第一篇-我對谷歌Alphago的看法

五子棋AI教程第二版發佈啦,地址:https://github.com/lihongxun945/myblog/labels/%E4%BA%94%E5%AD%90%E6%A3%8BAI%E6%95%99%E7%A8%8B%E7%AC%AC%E4%BA%8C%E7%89%88

當前這個是舊版教程,強烈建議閱讀新版教程。

最近Google宣佈他們的圍棋AI以5:0的戰績打敗歐洲圍棋三冠王。我一直對人工智能比較感興趣,正好趁年前空閒的幾天用JS寫了一個五子棋的AI。其實很久以前就用自創的算法寫過一個JAVA版的五子棋AI,不過棋力很不理想。這次用的是JS寫的,所以無論任何平臺上只要能打開網頁的都可以玩。

google爆出這個新聞之後,很多人覺得這是不是意味着電腦智商已經在人類之上了,圍棋已經沒有意義了之類的。甚至覺得這是不是電腦統治人類的開端。對這些想法我只能呵呵了。

Alphago其實沒有人類的“智商”!

智商包括很多維度比如認知能力、學習能力、記憶力、創造力、邏輯思維能力等,而人類智商最大的特點在於創造力,或者說想象力。現在的AI並不具備創造力,但是具備一定的學習能力。
不過這個學習能力也僅僅是很片面的一個領域內的,比如AlphaGo只會學習圍棋,不會學習如何寫作如何修車等。所以它只具備人類通過深度學習算法賦予它的一點點很初級很優先的學習能力。這個學習能力和幾歲的小孩都沒法比。

Alphago 基本上是以深度神經網絡結合蒙特卡羅算法實現的,他可以通過不斷和高手對弈或者和自己對弈來提高棋力。無論是深度神經網絡還是蒙特卡羅搜索,都是現成的理論,沒有在AI領域有本質上的突破。
而Alphago能贏歐洲的圍棋冠軍,靠的是一羣大牛程序員和一大批專業棋手以及那個超強計算能力的大型計算機。

圍棋也不會失去意義

首先,雖然Alphago戰勝了專業二段水平,但是圍棋其實是一個亞洲的遊戲,高手都在中日韓三國。業界公認樊麾和頂級的李世石九段是有巨大的實例差距的,而且和Alphago的對決中樊麾發揮的非常不好。所以Alphago在和樊麾對戰的時候,棋力應該是專業二段左右,和李世石九段差距甚遠。當然電腦的進步是神速的,而且Alphago肯定會研究李世石之前的棋譜來找對策,所以有一定的機會能贏,但是即使贏了,也不會贏得很輕鬆。個人比較傾向於現階段Alphago會輸,但是幾年或者十幾年之後,電腦最終會以極大優勢橫掃圍棋界,這個時間點的到來比很多人預期的要快。

即使電腦完虐人類,圍棋也不會失去意義。就像汽車不會讓博爾特失去意義,深藍不會讓國際象棋失去意義一樣。這段新聞過了之後,圍棋還是圍棋,電腦還是電腦。只不過可能小朋友能借助AI在網上虐一下高手而已。

Alphago的意義

圍棋是一個唯一人類可以狂虐電腦的棋類遊戲,甚至業餘高手都可以狂虐電腦,之前最頂尖的電腦也不過業餘5段水平,而全國業餘五段數以萬計,並且業餘五段和業餘六段以及專業段位有天壤之別。
主要原因有如下兩點:

  • 圍棋非常難進行局勢評價。國際象棋對當前局勢的評價函數比較簡單,根據每個子的權重加一下就可以了(當然實際上沒這麼簡單),而圍棋這種牽一髮動全身,需要縱觀全局的遊戲很難對當前局勢設計一個好的評估函數。而且實際上並不存在一個簡單的函數能對圍棋的局勢進行評估。
  • 圍棋所需計算量極大,唯一的每一步平均有200+的變數,基本都會下滿棋盤,相比之下 國際象棋每一步的平均變數不超過50,一般幾十步就會結束遊戲。

所以圍棋的博弈樹極其龐大,而且非常難對當前的局勢進行評分。相比之下象棋這種遊戲就簡單太多了。所以傳統的基於對博弈樹進行搜索和評估的算法在圍棋上是行不通的。而Alphago得出現,讓這個問題的求解看到了希望。很多人覺得電腦下不贏人的原因是認爲圍棋需要靠大局觀才能贏,而alphago證明了這種大局觀也不過是一個數學問題而已,完全可以考計算機來解決。

如果說Alphago的意義,那就是它攻下了人類在棋類遊戲的最後一塊陣地,現在全世界的人都相信,電腦已經統治了所有棋類遊戲。或者說,在所有的完備信息的零和博弈遊戲中,電腦已經完勝人類。

下面說下完備信息零和博弈遊戲的定義,關鍵就是兩個點:

  • 完備信息,也就是博弈雙方完全知道對方的所有信息,從第一步到最後一步,所有的走法,整個棋盤看的清清楚楚,也不存在隨機性。相比之下,四國軍棋就不在這個範圍內,因爲看不到對手的棋,德州撲克也不再這個範圍內,因爲看不到對手的牌,而且下一次發出的牌是隨機的。
  • 零和博弈,也就是雙方的收益之和爲0。電腦優勢則玩家必然劣勢,不存在雙方都是優勢或者雙方都是劣勢的情況。

圍棋和象棋都是典型的這類遊戲,我們要講的五子棋也是。

我們要講的五子棋算法是用JS實現的,源碼在github上,大家可以先看一下,跟電腦對戰幾盤感受下電腦的棋力:

下一章講五子棋AI的三個關鍵算法。

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