Google DeepMind 宣布在人工智慧方面取得重大突破,名為 AlphaGo 的人工智慧在沒有任何讓子的情況下以 5:0 完勝歐洲冠軍、職業圍棋二段樊麾。
這是 AI 第一次在全尺寸(19 X 19)的棋盤上擊敗了人類專業選手,在 AlphaGo 之前,業界普遍認為 AI 戰勝人類圍棋冠軍的時間點至少還要等上十年。當下,AlphaGo 借助深度學習(Deep Learning)技術實現了,描述 AlphaGo 研究成果的論文也成為了2016年 1 月 28 日Nature雜誌的封面文章。
人機世紀大戰第二場2016年3/9日開戰,由 Google 開發的人工智慧系統 AlphaGo 對戰南韓棋王李世乭。
AlphaGo 2016(3/9)日第一盤,逼得李世乭投降,取得勝利。
3/10日第二盤,AlphaGo 勝。
3/12日第三盤,AlphaGo 勝。
3/13日第四盤,李世乭 勝。(詳下文【神之一手】)
3/15日第五盤,由 AlphaGo 獲勝。
最終比數 AlphaGo 4:1 勝李世乭,AlphaGo 也擠上世界排名(GoRatings.org)第 4 名。
-----------------------------
AlphaGo 是如何做到的?
傳統的人工智慧方法是將所有可能的走法構建成一棵搜尋樹 ,但這種方法對於走法如此之多的圍棋並不適用。AlphaGo基於 Google和DeepMind一直專研的深度學習技術,將高級搜尋樹與深度神經網路結合在一起。
【深度學習】是機器學習的一個分支。機器學習這個概念認為,對於待解問題,無需編寫任何專門的程式碼,只需要輸入數據,演算法會在數據之上建立起它自己的邏輯。深度學習強調的是使用的模型,最流行的是被用在大規模圖像識別任務中的卷積神經網絡(Convolutional Neural Nets,CNN),簡稱 ConvNets。AlphaGo 運用到的深度神經網路是 Policy Network(策略網路)以及 Value Network(價值神經網路)。
早在多年前IBM的深藍不是已經在1997年打敗過棋王了嗎( IBM 的深藍超級電腦在上個世紀打敗西洋棋大師卡斯帕羅夫)?這次AlphaGo打敗棋王又有什麼大驚小怪?那次深藍打敗的是西洋棋的冠軍,這次打敗的是圍棋冠軍。圍棋,被視為是目前難度最高的一項棋類比賽,難就難在圍棋的變化高出西洋棋許多。因此擊敗人類的圍棋冠軍,一直是科學界發展人工智慧的重要目標。以複雜度來說:
- 西洋棋的複雜度為:10的123次方。
- 中國象棋的複雜度為:10的150次方。
- 日本將棋的複雜度為:10的226次方。
- 圍棋的複雜度為:10的360次方。
棋類比賽基本上都是利用搜尋樹展開演算法,用搜尋樹來判斷對手下子的可能性,然後依照一些資訊來進行優劣判斷,再來從多種可能的結果選出最好的一步來下子。西洋棋每走一步,有24種可能性。而圍棋則每一步有兩百種,再往下算下去將無窮無盡(下圖)。


在西洋棋裡面,電腦的搜尋樹可以利用棋子的位置、棋子的數量來判斷優劣,因此在樹的展開可以依照每個棋局的局面來往下進行深度的搜尋。但是圍棋的邏輯性沒有那麼強,比較難得到判斷的方式。甚至有時你問頂尖棋手為什麼當時要下某一子的時候,他也只能回答你「靈光乍現」,這也是為什麼科技人工智慧這麼想要在圍棋上取得成果的原因。
雖然電腦圍棋的研究開始於1970年,但是圍棋程式從未被人們認為是強大的。一直到2006年,當「蒙地卡羅樹搜尋」與「樹狀結構信賴上界法」出現之後,才帶來了圍棋程式的革命。
【蒙地卡羅】是一種大數法則的方法,使用隨機取樣,而不用把所有的可能都估算到。但是當取樣的次數越多,其所得出的平均值將趨近於理論值。這個方式應用在圍棋時,會隨機下子直到盤末,由此依據各點模擬的結果,來對於盤面進行優劣的評估,從中選出最好的下子方式。
這個方法多少帶有點運氣,但是當取樣數量越多的時候,誤差會相對變低。2006 年,法國科學家以蒙地卡羅方式發展出的 Crazy Stone 在 第十一屆電腦奧林匹克 9*9 比賽中獲得了冠軍。而「應用於電腦圍棋之蒙地卡羅樹搜尋法的新啟發式演算法」這篇博士論文的指導教授之一,正是Crazy Stone 的那位法國開發者Rémi Coulom博士。拿到了博士學位的黃士傑,之後也曾獲2012年臺灣電腦對局學會博士論文獎與2010 年19 路電腦圍棋金牌。在這份2010年他才發表的博士論文摘要中,有這樣一段話:
「雖然電腦圍棋的研究開始於1970年,但是圍棋程式從未被人們認為是強大的。一直到2006年,當「蒙地卡羅樹搜尋」與「樹狀結構信賴上界法」出現之後,才帶來了圍棋程式的革命。人們才開始相信,圍棋程式在10年或者20年之後,將能夠擊敗頂尖的人類棋手」現在,這份論文才發表不過6年的時間,他就親手把自己的預言給打破。
--------------------------------
(撰文者:36 氪 發表日期:2016/02/22)在象棋和國旗象棋中,電腦軟體都非常厲害,只有圍棋是唯一「電腦贏不過人類」的項目。而今年1月份有個爆炸性的新聞:Google DeepMind 開發的人工智慧程式 AlphaGo 以5:0比數壓倒性擊敗了歐洲圍棋冠軍、專業二段棋手。並且3月份 AlphaGo 將會和韓國九段、世界冠軍李世乭進行對弈。如果此役 AlphaGo 獲勝,將意味着人工智慧真正里程碑式的勝利。

這也引起了筆者的好奇心,在春節期間,跟 Facebook 的田淵棟(他的背景無可挑剔,卡內基梅隆大學機器人系博士,Alphabet X 無人車核心團隊,Facebook 人工智慧组研究員)交流,他做的也是計算機圍棋 AI --黑暗森林(熟悉《三體》的朋友知道怎麼回事),今年1月份他的文章被機器學習頂級會議 ICLR 2016 接受,(表達學習在江湖上稱作深度學習或者特徵學)已在機器學習社群開闢了自己的江山,成為學術界的新寵。
他談到自從Google收購了DeepMind,投入大量資源去做好人工智慧專案,不為别的,就是要向世界證明Google智慧的強大。發表在頂级期刊《Nature》的論文光看作者就20個,明顯是下了血本,前兩位都是計算機圍棋界的權威,第一,銀鴻是計算機圍棋和強化學習的頂級專家,整個博士論文主題就是圍棋;第二,阿哈黃以前寫過多年圍棋軟體,自己又是AGA6D的水平。
------------ 下面是SpinPunch CTO對AlphaGo的工作原理解讀,原文見參考資料 -------------
Google DeepMind宣布他們研發的神經網絡圍棋AI──AlphaGo,戰勝了人類職業選手。這篇論文由銀鴻等人完成。其中的技術是出乎意料地簡單而強大。為了讓不熟悉的讀者更容易理解,以下是我對系統工作原理的解讀。
深度學習
「深度學習」是指多層的人工神經網絡和訓練它的方法。一層神經網络會把大量矩陣數字輸入,通過非線性激活方法取權重,再產生另一個數據集合作為輸出。這就像生物神經大腦的工作機理一樣,透過合適的矩陣數量,多層組織鏈接一起,形成神經網絡「大腦」進行精準複雜的處理,就像人們識別物體、標註圖片一樣。
雖然神經網絡在幾十年前就有了,直到最近才浮出檯面。這是因為他們需要大量的「訓練」去發現矩陣中的數字價值。對早期研究者來說,想要獲得不錯效果的最小量測試,都遠遠超過計算能力和能提供的數據的大小。但最近幾年,一些能獲取大量資源的團隊重現挖掘神經網絡,其實就是透過「大數據」來使測試更有效率。
兩個大腦
AlphaGo是透過兩個不同神經網絡「大腦」合作來優化下棋程式。這些大腦是多層神經網絡,跟Google圖片搜索引擎識別圖片原理相似。它們從多層啟發式二維過濾器開始,去處理圍棋棋盤的定位,就像圖片分類器網絡處理圖片一樣。經過過濾,13個完全連接的神經網絡層產生對它們看到的局面判斷。這些層能夠做分類和邏輯推理。

這些網絡透過反覆運算來檢查結果,再去校對調整參數,去讓下次執行更好。這個處理器有大量的隨機性元素,所以我們是不可能精確知道網絡是如何「思考」的,但更多的運算後能讓它進化到更好。
第一大腦:落子選擇器(行動機械手)
AlphaGo的第一個神經網絡大腦是「監督式學習的策略網絡(政策網絡)」,觀察棋盤佈局企圖找到最佳的下一步。事實上,它預測每一個合理下一步的最佳概率,你可以想像成「落子選擇器」。

落子選擇器是怎麼看到棋盤的?數字呈現出最強人類選手會下在哪些地方的可能性。
團隊透過在KGS(網路圍棋對戰平台)上最強人類對手、百萬級的對弈落子去訓練大腦。這就是AlphaGo最像人的地方,目標是去學習那些頂尖高手的妙手。不是為了贏棋,而是去找一個跟人類高手同樣的下一步落子。AlphaGo落子選擇器能正確符合57%的人類高手。(不符合的不是意味著錯誤,有可能是人類自己犯的失誤)
更強的落子選擇器
AlphaGo系統事實上需要兩個額外落子選擇器的大腦。一個是「強化學習的策略網絡(策略Network)」,通過百萬級額外的模擬局來完成。比起基本的訓練,只是教程式去模仿單一人類的落子,高級的運算訓練會與每一個模擬棋局下到底,教程式最可能贏的下一步棋。 Sliver團隊通過更強的落子選擇器總結了百萬級訓練棋局,比他們之前版本又強化了不少。
單單用這種落子選擇器就已經是強大的對手了,可以到業餘棋手的水平,或者說跟之前最強的圍棋AI媲美。這裡重點是這種落子選擇器不會去「讀」。它就是簡單審視從單一棋盤位置,再提出從那個位置分析出來的落子。它不會去模擬任何未來的走法。這展示了簡單的深度神經網絡學習的力量。
更快的落子選擇器
AlphaGo當然團隊沒有在這裡止步。下面我會闡述是如何將閱讀能力賦予AI的。為了做到這一點,他們需要更快版本的落子選擇器大腦。越強的版本耗時越久──不過為了產生一個不錯的落子也夠快了,但「閱讀結構」需要去檢查幾千種落子可能性才能做決定。
Sliver團隊建立簡單的落子選擇器去做出「快速閱讀」的版本,他們稱之為「滾動網絡」。簡單版本是不會看整個19 * 19的棋盤,但會在對手之前下的和新下的棋子中考慮,觀察一個更小的窗口。去掉部分落子選擇器大腦會損失一些實力,但輕量級版本能夠比之前快1000倍,這讓「閱讀結構」成了可能。
第二大腦:棋局評估器(位置計算器)
AlphaGo的第二個大腦相對於落子選擇器是回答另一個問題。不是去猜測具體下一步,它預測每一個棋手贏棋的可能,在給定棋子位置情況下。這「局面評估器」就是論文中提到的「價值網絡(價值Network)」,通過整體局面判斷來輔助落子選擇器。這個判斷僅僅是大概的,但對於閱讀速度提高很有幫助。通過分類潛在的未來局面的「好」與「壞」,AlphaGo能夠決定是否通過特殊變種去深入閱讀。如果局面評估器說這個特殊變種不行,那麼AI就跳過閱讀在這一條線上的任何更多落子。
局面評估器是怎麼看這個棋盤的,深藍色表示下一步有利於贏棋的位置
局面評估器也通過百萬級別的棋局做訓練.Silver團隊通過複製兩個AlphaGo的最強落子選擇器,精心挑選隨機樣本創造了這些局面。
這裡AI落子選擇器在高效創建大規模數據集去訓練局面評估器是非常有價值的。這種落子選擇器讓大家去模擬繼續往下走的很多可能,從任意給定棋盤局面去猜測大致的雙方贏棋概率。而人類的棋局還不夠多恐怕難以完成這種訓練。
增加閱讀
這裡做了三個版本的落子選擇大腦,加上局面評估大腦,AlphaGo可以有效去閱讀未來走法和步驟了。閱讀跟大多數圍棋AI一樣,透過蒙特卡洛樹搜索(MCTS)算法來完成。但AlphaGo比其他AI都要聰明,能夠更加智慧的猜測哪個變種去探測,需要多深去探測。

蒙特卡洛樹搜索算法
如果擁有無限的計算能力,MCTS可以理論上去計算最佳落子透過探索每一局的可能步驟。但未來走法的搜索空間對於圍棋來說太大了(大到比我們認知宇宙裡的粒子還多),實際上AI沒有辦法探索每一個可能的變種.MCTS做法比其他AI有多好的原因是在識別有利的變種,這樣可以跳過一些不利的。
銀鴻團隊讓AlphaGo裝上MCTS系統的模組,這種框架讓設計者去嵌入不同的功能去評估變種。最後馬力全開的AlphaGo系統按以下方式使用了這些大腦。
-
從當前的棋盤佈局,選擇哪些下一步的可能性。他們用基礎的落子選擇器大腦(他們嘗試使用更強的版本,但卻讓AlphaGo更弱,因為這沒有讓MCTS提供更廣闊的選擇空間)。它只集中在「明顯最好」的落子,而不是去選擇也許對後來有利的下法。
-
對於每一個可能的落子,有兩種評估方式:要不用棋盤上局面評估器在落子後,要不運行更深入的蒙特卡羅模擬器去思考未來的落子,使用快速閱讀的落子選擇器去提高搜索速度。 AlphaGo使用簡單的參數──「混合相關係數」,將每一個猜測取權重。最大馬力的AlphaGo使用50/50的混合比,使用局面評估器和模擬化滾動去做平衡判斷。
這篇論文包含一個隨著他們使用插件的不同,AlphaGo的能力變化和上述步驟的模擬。若僅使用獨立大腦,AlphaGo跟最好的計算機圍棋AI差不多強,但當使用這些綜合手段,就可能到達職業選手水平。

AlphaGo的能力變化與MCTS的插件是否使用有關
這篇論文還詳細講了一些工程優化:分佈式計算,網絡計算機去提升MCTS速度,但這些都沒有改變基礎算法。這些算法部分精確,部分近似。在特別情況下,AlphaGo透過更強的計算能力變得更強,但計算單元的提升率隨著性能變強而減緩。
優勢和劣勢
我認為AlphaGo在小規模戰術上會非常厲害。它知道通過很多位置和類型找到人類最好的下法,所以不會在給定小範圍的戰術條件下犯明顯錯誤。但是,AlphaGo有個弱點在全局判斷上。它看到棋盤式通過5 x 5金字塔式的過濾,這樣對於集成戰術小塊變成戰略整體上帶來麻煩,同樣道理,圖片分類神經網路往往對包含一個東西和另一個的搞不清。比如說圍棋在角落上一個定式造成一個牆或者引徵,這會劇烈改變另一個角上的位置估值。
就像其他的基於MCTS的AI,AlphaGo對於需要很深入閱讀才能解決的大勢判斷上,還是麻煩重重的,比如說大龍生死劫。 AlphaGo對一些故意看起來正常的局也會失去判斷,天元開盤或者少見的定式,因為很多訓練是基於人類的棋局庫。
----------------人機圍棋世紀之戰首役 AlphaGo勝李世乭棋界震驚---------------
------------------人機大戰的第四場 【神之一手】----(2016-03-13)-----------------------
「AlphaGo」於今仗本來處於上風,但戰至中段李世石在劣境下秉持拼博精神,施展「神之一手」令AlphaGo不知所措,部署大亂終落敗,足證人類在逆境中可以發揮超乎平常表現,表現更勝電腦。
就在輿論普遍認為李世乭將會繼續敗北的時候,人機大戰的第四場,李世乭出人意料地挽回了勝局,將比分改寫為「3:1」。
比賽開局階段,李世乭始終落後於 AlphaGo,一直被打。然而,第 78 手的時候,局勢峰迴路轉,李世乭下出了關鍵的一步,一招極其冷門下出妙手。對於這一步棋,觀戰的職業棋手古力評價為「神之一手」。隨後,AlphaGo 一連串的差手讓棋面局勢利於李世乭。在第 97 步,AlphaGo 再次出現低級失誤,所下黑子被李世乭果斷吃掉。最終,經過長達 4 個多小時的激戰之後,AlphaGo 中盤認輸,李世乭終於在這場人機大戰中贏回「尊嚴」之戰。
根據 DeepMind 執行長,AlphaGo 原論文第一作者之一的 Demis Hassabis 在賽後的總結,
「李世乭下出白 78 後,AlphaGo 自我感覺良好,在程序的「值網絡」(value network,用於評估電腦勝率)中,誤以為勝率達到 70%,直到第 87 步才反應過來。」

(Demis Hassabis on Twitter)
高飛龍猜測,很可能是蒙地卡羅算法本身的一個缺陷。「78 步本身是盲點,(李世乭)小機率的選點,很可能導致(AlphaGo)在正確率很高的算法上出現意外,導致出錯。」
Deep Learning是Machine learning的分支,是一種multiple levels of representations的深度ML。
Multiple levels of representations的(概念)學習,是DL的關鍵也是其與big data相關聯的樞紐。
DL的multiple levels of representations與多層次的Neural Network之多層次雖有相通處但仍為不同的概念。
Deep Learning是從multiple levels of representations(層別表述)到high-level abstractions(高階概念化)的一種結構化structured的machine learning。The number of level is data depedent(依資料量而定)。如:圖片內容的意義辨識。
【出處】
http://www.bnext.com.tw/ext_rss/view/id/1279569
http://www.bnext.com.tw/article/view/id/38593
http://technews.tw/2016/01/30/google-alphago-2/
http://www.bnext.com.tw/article/view/id/38740
http://www.bnext.com.tw/ext_rss/view/id/1410209
https://share.inside.com.tw/posts/24473
參考資料
AlphaGo如何運作:
http://www.dcine.com/2016/01/28/alphago/
《Nature》論文:
http://www.nature.com/nature/journal/v529/n7587/full/nature16961.html
關於AlphaGo論文的閱讀筆記:
http://36kr.com/p/5042969.html
關於圍棋AI的新思路:http://zhuanlan.zhihu.com/yuandong/20364622
「李世石-AlphaGo 人機對戰」背景及賽事介紹:http://bepo.ctitv.com.tw/2016/03/38015/
【延伸】
從馬文·閔斯基到 AlphaGo,人工智慧走過了怎樣的 70 年? (作者 雷鋒網 | 發布日期 2016 年 02 月 11 日)