AlphaGo贏了李世石,人工智能就此崛起了么?
Alpha Go首輪戰勝李世石,智能界的大神怎么看?AutoLab汽車實驗室特邀出門問問NLP工程師、劍橋大學學霸、出門問問創始團隊員工Jason,為各位粉絲解讀。
文?▍Jason
在昨日Google的Alpha Go和李世石的比賽中,耗時4小時擊敗了這位當今最強人類棋手。
在跟李世石的首局比賽中獲勝,是人工智能發展史上有一個里程碑。也有人猜測,首局比賽中李世石為了避免下出AlphaGo曾經學過的棋路,特意采取了一種比較冒險的下法,導致最終的失利。
作為一個人類棋手,李世石的決策還受到了心理因素的影響,而不像冷酷無情的AlphaGo,自始至終的每一輪的計算都是那么的理性和縝密。
接下來李世石會以什么樣的策略繼續迎戰AlphaGo,我們拭目以待。就算AlphaGo最終還是輸了,以它現在每天不吃不喝左右互搏的學習能力,假以時日,贏過人類也也是非常有可能。
人類的勝利
那么,如果被人工智能攻克下被稱為人類最后的智力優勢的圍棋,是否預示著人工智能就此崛起了呢?我覺得完全不用那么悲觀。
首先,在現有的計算機體系下,程序都是確定的(deterministic),即人類讓程序怎么做,程序就只能這么做,絕對不會超過人類預先劃定的范圍(包括計算機產生的隨機數,從某種程度上講,也是確定的哦)。
人工智能作為程序的一種類型,也遵循這么一個鐵的定律。
即使是RL Policy Network訓練中的自我“學習”,也是在人類規定下進行的:迭代多少輪、每一輪怎么通過強化學習更新模型參數,都是由人一一事先確定的好的。這并不是人類意義上可以舉一反三的自我學習。
除非一種全新的體系誕生,讓程序可以自行推理、自我復制、自我學習,在超出人類界定框架之外自我進化,并且恰巧進化出來要消滅人類這么一個念頭,那才是我們真正需要擔心的事情。
其次,雖然現在計算機在象棋、圍棋、智力問答方面已經超過了人類,能夠在微秒之內完成百萬之間的乘法運算,能夠存儲下世界上所有圖書館里面的知識 —— 但是在某些方面,連3歲的人類小孩都不如。
比如人類小孩能夠輕易的認出媽媽和爸爸,能夠通過觀察大人關燈的動作就自己學習出來墻上的開關和屋頂的電燈存在著某種聯系,這些看似事對于當今最強的人工智能算法,也無法做到。
所以有一些任務,如果不能被很好的抽象成一個具體的步驟序列,那么計算機根本無能為力。
距離真正的人工智能,還有很長的一段距離。距離戰勝人類象棋冠軍過去了20年,人類才剛剛造出來一個可以擊敗人類圍棋冠軍的AI,何足畏懼。
不過,這次AlphaGo贏得比賽的意義仍是非比尋常的。
1997年IBM的深藍計算機在國際象棋上擊敗了當時的國際象棋世界冠軍,2011年IBM的Watson系統在知識問答類競賽Jeopardy!上擊敗了競賽有史以來最聰明、知識最淵博的幾位人類選手。今天,終于,輪到了Google的AlphaGo,在圍棋上擊敗了人類世界冠軍李世石。
雖然這只是5輪比賽的首輪,最終鹿死誰手尚未可知,但無疑今天AlphaGo的首戰告捷已經成為了人工智能歷史上又一個值得被載入史冊的里程碑。
更重要的是,借助AlphaGo研究這個契機,一些深度學習方面的算法得以進一步被深入研究,并且可以平行借鑒到其他領域中去。
如同IBM閉門5年造出來Watson Deep QA系統,在Jepardy!大賽上擊敗人類選手之后,除了為IBM帶來了巨大聲譽,也讓IBM將相關技術應用到金融、醫療等領域。
又如同前段時間發現引力波的LIGO的研發,其順帶的研究副產品,比如減震系統技術,也惠及了人類其他科技領域的發展。
所以,AlphaGo對于人類的意義,絕不僅僅是它擊敗了人類圍棋冠軍而已。
我們是這個時代的幸運者,能夠見證一個新的里程碑的誕生。不管最終誰輸誰贏,都是我們人類的勝利。
AlphaGo,是怎么工作的?
對于這枚人工智能的新星,大家都很好奇它的系統到底是如何工作的?以下是燒腦時間。
要回答這個問題,先來從最基礎的人工智能下棋算法說起。
傳統的下棋人工智能算法
平時形容一個人下象棋下的好,我們可能會說“他腦子很會算,能算到5步以后呢”。
這個意思就是說,這個人在選擇下一步走法的時候,他評估每一步走法,會往后繼續多想幾步——“如果我這么走,對方會怎么下呢?那對方這么下之后,那個時候我可能選擇的最佳走法又是什么呢?”以此類推。
對人類來說,他在大腦中會進行多次推演,來選擇最好的走法路徑。所以能夠想到5步之后,已經是很厲害的人類了!
但這種思維方式,恰恰是計算機特別擅長的。MinMax算法就是一個這樣的算法,成功應用在很多棋類AI中,基本思想和之后要講的AlphaGo的MCTS算法也有相通之處。
MinMax算法示例(https://en.wikipedia.org/wiki/Minimax)
圓形的節點表示“你”面對的局面,而方塊的節點表示對手面對的局面。這里是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。
因此在真實的棋類比賽中,搜索空間是巨大的。從根節點枚舉出所有的子節點,再逐一進行考慮是絕對不現實的,再快的計算機也無法完成這一浩大的計算。
在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的算法和實現細節參考了同屬出門問問公司的李理的文章:http://geek.csdn.net/news/detail/58910)
AutoLab關注汽車科技領域的新公司、新技術、新模式、新投資。如果你有強烈的求知欲望,強烈建議你通過“百度百家”關注AutoLab!或者直接微信搜索“autolab”,參與我們線上線下各種活動,結識創業大咖!