[閒聊] ALPHA GO 輕鬆介紹

看板GO作者 (人)時間5年前 (2019/05/19 22:19), 5年前編輯推噓17(18145)
留言64則, 15人參與, 4年前最新討論串1/1
雖然標題說是輕鬆介紹,但是我是盡量把數學概念轉化成具體的能想像的事物。 給對圍棋熟悉,但是不甚完全了解AI下棋,尤其是ALPHA GO(以下只稱AG)的板友,我會盡 可能省略一些術語以及一些比較難而細節的部份,盡量維持在人腦下棋與AI下棋的差異。 我很討厭所謂的科普結果還是只有相關懂的人才看得懂的文章。 AI下棋的基礎還是建立在窮舉法,以及混入一些決策過程,但這以前只適用在象棋,西洋 棋這類從印度發源的棋類。即使是將棋還加入了打入的手段也不例外。因為每個棋都有各 自被限制棋類的功能性,因此在當下盤面,使用窮舉法馬上就可以知道接下來的一兩步盤 面變化,而這些盤面變化又可以很輕鬆的刪去很多不必要的走法: 例如走到某一點直接毫 無意義被吃掉。 AG結合了很重要的三個過程: 1) 背棋譜,但不一定必要,也可以採用另一種方式建立AG,直接下兩個過程來回建立出 自己的棋譜 2) 人類神經模擬 3) 有效率的窮舉法 其中前兩者與高端棋士做的事情差不多,但要注意所謂的人類神經模擬,只有一部份真的 與人在判斷盤面變化時有關係。而窮舉法在這裡扮演的腳色,已經不是以往大量直接從盤 面取得的盤面資訊,進行窮舉。AG使用了更有效率,採用盤面勝率評估(以下會提到)高的 一些節點進行窮舉,這樣省下了非常大部分的運算。 我們從AG從建立到下棋的過程說起,首先是背棋譜,這時與高端棋士一樣背了大量棋譜。 所以基本的局部死活題理解,高端棋士是與AG旗鼓相當的。對於詰棋大致上AG不太會出錯 的。 以下稍微複雜一點,但是只要用自己下棋的思考過程來想,應該不是太困難。在背了大量 棋譜後,AG並不滿足現有的棋譜,它開始進行自我訓練,採用蒙地卡羅樹可以在這部分得 到很大的幫助,蒙地卡羅樹基本上就是考慮到勝率評估,開始進行選點,採用那些點往下 延伸之後的可能一些走法,每一個蒙地卡羅樹下的某一步如果明顯劣於這樹下的其他走法 會直接被中止運算。 至於什麼是蒙地卡羅樹?每一個蒙地卡羅樹可以想像成,你在下棋時先想到下這個點,然 後開始推算後續變化,各種後續變化就構成一個蒙地卡羅樹。有些走法(在蒙地卡羅樹下) ,被評估明顯劣勢甚至輸掉,你就不會再考慮,AI的行為則是會直接截斷這條線之後的走 法不再運算,如果這個選點(整個蒙地卡羅樹)最後你認為全部延伸走法都沒意思,那整個 蒙地卡羅樹也會直接被終止不再運算,並考慮其他蒙地卡羅樹。非常重要的是,在這自我 訓練過程,AG會盡可能選一些不一樣的點下棋,一直下到完。這會產生勝率評估值。每一 個蒙地卡羅樹會跑到破1000次的後續走法模擬,而且也會隨機下棋以試試看新走法,但人 類在一個蒙地卡羅樹也許只能推到後續幾十步,高端棋士可能到破百步。這樣的AG自我練 習,會生出非常大量的新形態棋譜,而且就算一開始只讓它背高端棋譜,這自我練習的總 體品質仍然會高於原有輸入的高端棋譜。因為在這部分原有的棋譜會被拿出來當作自我對 弈的目標。 再來就是這個勝率評估值會分配給每個走法,形成一個有權重的下棋方向。什麼叫做有權 重的下棋方向?權重在這裡很簡單,就是勝率評估值,AG從大方向(最後的勝利)出發,最 後將形成一個權重網路。這裡就想像成你在蜘蛛網上走路(別管蜘蛛網黏不黏),最終目標 是要走出蜘蛛網(只要走出去就算勝利,不用管走哪條路),蜘蛛網的線有些很細,有些很 粗,你會理所當然走粗的線以防斷掉。但是也要考慮到權重網路,如果眼前有一條很粗的 線,卻只通往全部都是極細的線,那你當然就不會走這條路,而會選擇一條整體每條線負 重力總和最大的路線,這裡就是前面提到的部分的人類神經模擬。但是別忘記,AI可以直 接給出每條線一個勝率評估值,最後進行總和,而人腦只能靠直覺給出一個大略的數值。 而且高端棋士雖然背了上萬份棋譜,但是AG自己亂下試出了更多勝率更高的棋譜變化。接 著隨著對手下的每一步棋,整個蜘蛛網絡會重新更新一次,AG再次進行蒙地卡羅樹的運算 。 ================================= 這裡我想要補充一些d大的建議,以及推文的疑問 沒錯,這裡我的確在說明的順序上沒處理好,我一開始就有注意到。 蜘蛛網的每條線其實就是勝率評估值,在心裡評估怎麼走出去時,蜘蛛網會不斷改變 ,這裡就是大量的蒙地卡羅樹組合而成的蜘蛛網。 而勝率評估值很仰賴評估對手下一步會怎麼下,所以才會有本文的最後一段:對手下一步 會如何下的評估準確率。所以A大考慮是正確的,預測兩方彼此下了幾十步甚至幾百步, AG給出一個勝率評估值,而這個值本身又有一個誤差,這點在ALPHA GO的論文中也有提 到。 ================================= 因此高端棋士會輸給AG原因是因為: 1) AG背的棋譜及數量就已經比較優秀以及更大量(AG: 二到四千萬份棋譜 vs 高端棋士: 一到二萬份棋譜) 2) 在一個走法的勝率評估上算出相對準確的值,例如這步棋差異可能高達0.5%勝率差距 ,但人類評估不出來,累積下來就是AG必勝 3) 在同樣的時間內AG可以多開幾個蒙地卡羅樹,也就是多判斷幾個走法,這個部分就是 讓高端棋士比較迷惑之處,看似沒意義的一步,但是AG算過後,發現勝率評估值比起小戰 場的勝敗還高的話,AG會選擇這步(不過這步勝率評估值篇高甚至可能早就在AG的自我對 弈中發現了,不用當場算出來)。 直接對AG的實力進行對弈評估,目前結論是看出先餵給它大量棋譜進行監督式學習,它對 於目前權重網路,對手下一步(限高端棋士)的預測準確率比較高; 但是讓它自己學習,一 開始顯然較弱,但是它最終的ELO卻會高於讓它從所謂的高端棋譜起步的AG。 這裡出現一個很有意思的問題,也就是說直接給AG自己在規則下自我下棋學習,它最後的 強度,會突破先餵給它棋譜的實力。而且根據AG的圖表,大概在只要訓練20~36小時(這時 自己學習的AG顯然也出現ELO的上升趨緩,所以僵持了比較久才明確超越,但後面又會忽 然提升)左右,自己學習的AG的ELO便可以穩定超越受監督的AG。然而對於針對高端棋士的 下一步預測準確率,在自我訓練下棋的AG卻永遠低於受監督AG。這點根據研究結果,團隊 只指出自我學習的AG發展了自己的一套策略。這點也許是因為所謂"高端棋士的棋譜"其實 不是勝率最高的,以至於自我訓練的AG對於人類的棋譜,有較低的準確率,因為建立它在 自己更優秀的整體棋譜上。 關於以上這點有了解的人,或許可以說明,謝謝。 --------------------------------------------- 我不希望用數學迷惑版友,不像某人為了證明自己毫無研究過的論點,講出一大堆對毫無 幫助的數學名詞,想為自己的立論佐證,我認為這點毫無意義。 另外我也為我幾天前的暴躁感到抱歉,當時我已經連續工作了超過32小時,回到住處卻發 現某人跟風在諷刺我的刪文,我無論如何也是老PTT人,知道刪別人文的嚴重性。本來想 給它台階下,結果它卻跟風嘲諷我的恥度,所以當下極為暴怒。 總之抱歉,希望這篇文99%的版友都看得懂,知道AG到底在做什麼,這就達到我之前的承 諾了,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.151.21 ※ 文章網址: https://www.ptt.cc/bbs/GO/M.1558275577.A.892.html

05/19 23:23, 5年前 , 1F
讚 清晰
05/19 23:23, 1F

05/19 23:27, 5年前 , 2F
05/19 23:27, 2F

05/19 23:27, 5年前 , 3F
道歉給推
05/19 23:27, 3F

05/20 00:50, 5年前 , 4F
讚!喜歡這種文章
05/20 00:50, 4F
※ 編輯: yeahhuman (111.250.76.199), 05/20/2019 01:01:42

05/20 03:06, 5年前 , 5F
雖然這篇脈絡理得不錯,不過其實我覺得可以多給你一點建議
05/20 03:06, 5F

05/20 03:06, 5年前 , 6F
05/20 03:06, 6F

05/20 03:07, 5年前 , 7F
經典的科普文有幾個雖非絕對但至少經常具備的要素:
05/20 03:07, 7F

05/20 03:08, 5年前 , 8F
1. 從非常輕鬆、聊天式的故事導入並可能在中間進行各段落
05/20 03:08, 8F

05/20 03:08, 5年前 , 9F
的引導
05/20 03:08, 9F

05/20 03:09, 5年前 , 10F
2. 接續上一點,有一些問答從一般人的角度出發,針對容易
05/20 03:09, 10F

05/20 03:09, 5年前 , 11F
產生於一般大眾心中的問題進行處理
05/20 03:09, 11F

05/20 03:10, 5年前 , 12F
3. 對於每個專有名詞或某些專門機制,不是直接解釋其實際
05/20 03:10, 12F

05/20 03:11, 5年前 , 13F
做法及功能,而是以一些一般人都知道的事物先進行比喻,然
05/20 03:11, 13F

05/20 03:12, 5年前 , 14F
後才將比喻中的各要素進行補充對應到原始機制上
05/20 03:12, 14F

05/20 03:16, 5年前 , 15F
關於3的部分,像你文中就用到了一個還不錯的走出蜘蛛網比
05/20 03:16, 15F

05/20 03:17, 5年前 , 16F
喻,但是對我而言整體並沒有極好的理由是你把比喻跟原始機
05/20 03:17, 16F

05/20 03:18, 5年前 , 17F
制及術語混在一起一次寫,會導致這個比喻其實起的效用被削
05/20 03:18, 17F

05/20 03:18, 5年前 , 18F
弱。
05/20 03:18, 18F

05/20 03:18, 5年前 , 19F
單就那一段,我建議可能是走以下的脈絡:
05/20 03:18, 19F

05/20 03:19, 5年前 , 20F
1. 先完整從頭到尾寫出一個「走出蜘蛛網」的比喻
05/20 03:19, 20F

05/20 03:19, 5年前 , 21F
2. 開始對應「走出蜘蛛網」劇本中與原始問題與機制的對應
05/20 03:19, 21F

05/20 03:21, 5年前 , 22F
,比如必須明確寫出蜘蛛網的粗細是哪個機制算出來的?走出
05/20 03:21, 22F

05/20 03:23, 5年前 , 23F
蜘蛛網的起點是什麼,目標又是什麼?每走一步都要重新織蜘
05/20 03:23, 23F

05/20 03:24, 5年前 , 24F
蛛網嗎?還是可以描述成「在一面很大的網上走,可是蜘蛛是
05/20 03:24, 24F

05/20 03:25, 5年前 , 25F
大近視,對於越遠網線的粗細看得越不清楚,要等走近一點才
05/20 03:25, 25F

05/20 03:25, 5年前 , 26F
重新看一次把粗細判斷得更清楚一點」之類的?
05/20 03:25, 26F

05/20 03:26, 5年前 , 27F
而對於其他段落,這篇就相對比較欠缺一開始三點所說的引導
05/20 03:26, 27F

05/20 03:27, 5年前 , 28F
故事、新手問答及比喻對應等要素,所以即便脈絡清楚、即便
05/20 03:27, 28F

05/20 03:28, 5年前 , 29F
你盡可能省去艱澀的專有名詞及技術內涵,但是整體仍然會相
05/20 03:28, 29F

05/20 03:28, 5年前 , 30F
對讓人比較覺得是「用詞比較不深的技術概要文章」而非「科
05/20 03:28, 30F

05/20 03:29, 5年前 , 31F
普」。當然現在去搜尋科普文章,也是有很多就用這樣的寫法
05/20 03:29, 31F

05/20 03:30, 5年前 , 32F
,所以這也不是寫法有什麼對錯,只是我個人覺得在科普的易
05/20 03:30, 32F

05/20 03:30, 5年前 , 33F
讀性、引導性跟趣味性來說,那三點應該是蠻有幫助的要素
05/20 03:30, 33F

05/20 03:39, 5年前 , 34F
例如下面科普寫作網路平台的第二屆人與自然科普寫作桂冠
05/20 03:39, 34F

05/20 03:39, 5年前 , 35F
獎首獎:
05/20 03:39, 35F

05/20 03:39, 5年前 , 36F
05/20 03:39, 36F

05/20 03:41, 5年前 , 37F
第四屆人與自然科普寫作桂冠獎三獎:
05/20 03:41, 37F

05/20 03:41, 5年前 , 38F
05/20 03:41, 38F

05/20 03:41, 5年前 , 39F
第五屆人與自然科普寫作桂冠獎三獎:
05/20 03:41, 39F

05/20 03:42, 5年前 , 40F
05/20 03:42, 40F

05/20 03:45, 5年前 , 41F
可以看到他們對於故事性、問答及比喻都有不同比重的採用,
05/20 03:45, 41F

05/20 03:46, 5年前 , 42F
但不管如何,這三個要素都能讓閱讀者腦中的景象鮮明起來,
05/20 03:46, 42F

05/20 03:47, 5年前 , 43F
且容易跟隨到寫作者的脈絡。
05/20 03:47, 43F

05/20 03:58, 5年前 , 44F
像是如果科技業應該很可能聽說過的The Joel on Software
05/20 03:58, 44F

05/20 03:59, 5年前 , 45F
系列文章(集結出書時譯為約耳趣談軟體)也都帶有這些要素
05/20 03:59, 45F

05/20 03:59, 5年前 , 46F
05/20 03:59, 46F

05/20 04:07, 5年前 , 47F
05/20 04:07, 47F

05/20 04:10, 5年前 , 48F
雖然Joel的針對面向是已經相對熟知程設或科技業的人,所以
05/20 04:10, 48F

05/20 04:11, 5年前 , 49F
不那麼科普,但他還是很擅長加入這些要素讓文章變有趣
05/20 04:11, 49F

05/20 07:00, 5年前 , 50F
推原po 跟 ddavid
05/20 07:00, 50F

05/20 12:26, 5年前 , 51F
你好 我想請問 AG是用甚麼方式評估該點的勝率呢?因為
05/20 12:26, 51F

05/20 12:26, 5年前 , 52F
要評估勝率不是本來就要往後算幾步嗎?
05/20 12:26, 52F
d大 A大已在內文回覆你們的建議以及疑問。

05/20 14:50, 5年前 , 53F
講得太複雜 失敗
05/20 14:50, 53F

05/20 16:58, 5年前 , 54F
以蛛網比喻的話,我以為每次(模擬)對局,走過的蛛網會變粗
05/20 16:58, 54F

05/20 17:28, 5年前 , 55F
贏的話蛛網才變粗,輸的話就變細
05/20 17:28, 55F

05/20 19:57, 5年前 , 56F
05/20 19:57, 56F

05/20 21:55, 5年前 , 57F
沒搔到癢處,太過簡略等於沒寫一樣
05/20 21:55, 57F

05/20 22:06, 5年前 , 58F
05/20 22:06, 58F

05/20 22:06, 5年前 , 59F
1ECB: 參考這一篇 05/20 22:06

05/20 22:24, 5年前 , 60F

05/20 22:25, 5年前 , 61F
AlphaGo Lee-->AlphaGo Master-->AlphaGo Zero-->AlphaZero
05/20 22:25, 61F
因為我終究沒有跟編輯討論過的這一步驟,沒辦法做到深度與趣味性兼具,我也已經意識 到這一點,我會盡可能讓以後的文章更清晰以及更有深度。 事實上這一篇我已經考慮了簡易度,也許是因為還是沒有辦法把握住分寸所以有人覺得 簡略,也有人覺得太困難,我會更朝向給普通人的文章盡可能努力,不預設讀者有任何 知識背景。 ※ 編輯: yeahhuman (140.112.150.140), 05/21/2019 00:58:06

05/22 17:24, 5年前 , 62F
討論到刪推文 刪推文引起別人不滿被酸有甚麼好暴怒的
05/22 17:24, 62F

05/27 15:35, 4年前 , 63F
05/27 15:35, 63F

11/29 23:30, 4年前 , 64F
推!!
11/29 23:30, 64F
文章代碼(AID): #1SuMNvYI (GO)