颱風假救了我的鐵人賽,這樣應該是有機會繼續苟延殘喘,下週會不會棄賽就看我這周末能寫多少了。
hackMD原稿
雖然很多人都介紹過AlphaGo了,但我今天是用圍棋愛好者的角度切入去探討,加上電腦對局的知識跟大家探討不同角度的AlphaGo,希望可以帶大家看到不同面貌的AlphaGo。
首先我們來看一下AlphaGo中很重要的Policy Network跟Value Network,這邊就不贅述他們是怎麼訓練出來的了,只說明功能。
接著我們來看一下AlphaGo的MCTS有哪裡不一樣。
圖片擷取自Mastering the game of Go with deep
neural networks and tree search
這邊他的Simulation改叫做Evaluation,Backpropagation改叫Backup。
PUCT 是 UCT 的一個改進,而在AlphaGo中又做了點小改變,通過 Policy network 輸出走步的機率 來輔助選擇。
具體的 PUCT 公式如下:
再來看一下Evaluation階段,AlphaGo 引入了 Value Network 來對葉節點進行評估。當到達搜索樹的葉節點後,Value Network將會對當前局面進行評估,輸出一個值 ,代表當前勝率。
當模擬結束後進到Backup,要更新每個節點的獲勝期望值 和拜訪次數 。根據模擬結果(勝、負或和局),將葉節點的評估值 回溯到根節點,更新所有沿途經過的節點的 。
這邊加入的 就是Value Network評估的勝率值。
我個人認為AlphaGo的精華就是通過強大的Policy Network在 MCTS 的Selection和Expansion階段,通過輸出每個走步的機率,幫助縮小搜索範圍,讓 AlphaGo 尋找到有潛力的走步。
AlphaGo Zero 不再依賴人類專家的棋譜數據,使用單一的神經網絡(結合Policy Network跟Value Network)進行自我對弈學習。
MCTS直接改為三階段Selection、Expansion & Evaluation、Backup,與 AlphaGo 的主要區別在於,AlphaGo Zero 在Evaluation階段直接依賴神經網絡進行葉節點評估,不再使用 Rollout Policy 來模擬對局,大幅加速了決策過程。
AlphaGo比起人類強在哪?
還記得這句話是黃士傑學長回到實驗室分享時,問大家的一個問題。
每個時代都會誕生不少的高手,但那種遠超當代其他棋手的天才,可能百年都不一定一遇,這裡我們也來分析一下,那些天才,比起同代的高手到底是強在哪裡?
這是我在因島的本因坊秀策紀念館拍攝的照片,蠻推薦喜歡圍棋的人可以去朝聖的。
棋聖道策,實力超越當代棋手非常多,因此有十三段的美名(最高是九段),發明了著名的圍棋理論手割分析,被稱為近代圍棋之祖,不拘泥於局部,利用棄子爭先,大局觀領先全世界。
以上都是對道策的評價,基本上沒什麼人提到說道策的計算力有多厲害,多是讚嘆道策對棋的理解高出其他人一大截,所謂對棋的理解就是大局觀,就是對全局形勢判斷的能力。
圖片取自維基百科。
接著我們來看看昭和棋聖吳清源,在與本因坊秀哉的對局中下出了震驚棋壇的星、三三、天元開局,開創了新時代的布局,比起當代的人更注重中央的潛力,十番棋不敗,把當時全日本的高手打到降級。
對吳清源的評價大多也不是什麼戰鬥力非凡、計算精準之類的,而是他下出了前所未見的布局與定石,一樣是大局觀領先全世界。
申真諝於2018年登上Go Ratings排行榜第一名,至今ELO分數突破3800分,長期與第二名差距達150~200分以上(第2與第10名差距通常不到50分)。
大家對申真諝的評價幾乎都是AI吻合度很高(現在很多人都是以AI來檢視棋手,吻合度愈高代表跟AI愈接近),在中盤局勢混沌不明時能夠比別人判斷得更清楚。
我們可以發現那些天才都有個共同點,那就是對棋的理解已經超出同代人不少了,在大局觀上展現出色的判斷能力。
這邊要補充一下,去年亞運的圍棋項目,台灣第一人許皓鋐接連擊敗世界排名前三的朴廷桓、申真諝、柯潔,奪得金牌,你沒看錯,其中就包含了締造上面一堆可怕紀錄的申真諝。
還有今年的國手山脈盃,台灣的賴均輔,接連擊敗范廷鈺、卞相壹、申真諝奪冠。
這兩年台灣棋手在國際舞台上都有非常好的表現,可惜絕大多數台灣人都不知道這些消息,所以剛好利用這次鐵人賽花點篇幅來分享,讓大家能夠更認識這些台灣之光們,還有歡迎大家一起學圍棋XDD。
回到一開始的問題,那AlphaGo到底強在哪呢?
其實答案很明顯了,那就是大局觀、形勢判斷的能力,AlphaGo對李世石的那五盤棋,常常有一些顛覆當時人類想法的棋出現,反而不是在計算上讓大家驚豔,甚至當時還有人懷疑AlphaGo是不是不會打劫。
應該蠻多人的第一反應都是計算,覺得AlphaGo能夠計算的比人類更深遠,所以才會贏人類,但其實純粹用Policy輸出的走步,不經過計算直接下(就很像是人類所說的用棋感(第一感)下棋),就已經能達到台灣業餘7段的水準了,在大局觀上甚至是職業頂尖水準,這才是AlphaGo最令我驚訝的地方。
要說到計算力,雖然說人腦肯定算不贏電腦,但人腦的剪枝能力卻是遠遠大勝電腦,我們再看一下Day14中的征子範例,雖然要算出吃掉A點的黑子需要計算接近50步,人類幾乎都是一看就知道答案,但是對於電腦來說則是非常困難的問題。
而且在局部戰鬥時,人類還是能下出很多AI沒有算到的妙手,只能說AI還是浪費很多計算資源在計算一些無用的分支上,這點是還遠遠不及人類的。
這邊附上我之前寫的棋評,是小申下出連AI也沒算到的「妙手」,會下棋的朋友可以看看。
廣義上來說AlphaGo的計算力確實大於人類,但在計算這塊上人類還是有遠超電腦的剪枝能力的。
AlphaGo最強的地方就在於他的Policy Network,以前傳統的選點方式可能是根據一些數學公式,或是遊戲特性寫出來的規則,你都能解釋他是為什麼會選擇這個點,但偏偏AlphaGo你無法解釋,他居然能通過自我學習打敗人類幾百年來的經驗,AlphaGo不只開啟了大AI時代,也替本來很多棋力遇到瓶頸的遊戲開啟了另一條新的研究之路。