圍棋AI AlphaGo 之我見 - 圍棋

Anonymous avatar
By Anonymous
at 2016-03-14T13:17

Table of Contents


感謝f大的發文,我也是長知識了
我得再次承認我對NN的理解太膚淺,這是我做得不好的

一方面是因為我是做RFIC的,我沒那個能力時間把 NN 和 MCTS 的結合寫得精確
(我就只是在一月ASP-DAC做了 turorial 的 chair 聽了一整天NN,和看了那份 Nature
寫這篇也參考了那個台大資工教授的文章)
另一方面是由於我所寫的出發點是在,我希望借助我有的圍棋知識和我比較熟知的 MCS
還有一些對於 AyaBot 的經驗,去推估 AlphaGo(AG) 的可能弱點
而不是要告訴人 NN 如何在 AG 發揮作用,所以引出你這篇好文啊 XD

只是我不能同意 NN 是 AG 強的關鍵,
因為 NN 和 MCTS 是一起配合的,只有一方的情況下,過去的經驗會告訴你它會弱很多
只有 NN 的話可以想像有可能發生,在第一局第7手下出未見過的佈局,
AG 下一手就開始不會下,然後脆敗

我知道 NN 是協助 MCTS 更有效率地找出最佳解 (類似 MC 跟 MCMC 的分別)
用圍棋的話來說,NN 相當於一個形勢判斷 + 一個不強的算路 (相當於棋手第一感)
MCTS 就是在 NN 的協助下加強算路的能力,其實跟棋手的思維模式是很接近的
那麼我將 NN 的助益完全算進 MCTS 的 sims 數提高,去估算 AG 的算路深度是合理的

第四盤我看完圍棋TV張東岳的講法,
我會說如果 78手 是勝著,那麼 35手 虎 就是敗著,沒有虎而是黏,後面就不會有78了
也就是我上篇估計的三四十手算路
當然由於它有 MCTS 的關係,它在沒改 code 的情況下,遇到同樣的 78手,
它有可能會平安運轉
我的看法是 Google 太小看李世石,如果1000台 server 增到2000台,說不定就夠了
有人可能說 distributed 版跟單機版的勝率才77%,
但從十番棋的角度3勝1敗已經接近把對方打降級了)

從兩個現象看來,你不能抹殺 MCTS 的作用

1. 第二局的那個五路肩衝,那大概不是 NN 提供的優先選擇吧,非得 MCTS 掃出來
當然五路肩衝在職業譜也不會沒有,
我記憶中武宮有五五肩衝星位的棋吧,那更是對兩邊來說都是五路肩衝,
最近的棋也好像有吧,不過沒有在佈局的那麼早段下
而是其他很多地方都定型後再肩衝五路的場合下法
但樣本數少到單用 NN 是不可能建議你去下這種棋的,
但那個小機率權重讓它能在 MCTS 中脫穎而出

2. 昨天敗定後,AG 下出很多到無禮程度的業餘下法,那也是 MCTS 的「功勞」
它相當於下出很俗的打將式絕對先手,然後期望對方氣合脫先,從而得益
這在機率上就說得通了,但在下得很業餘這個點上,它就變成丟下 NN 的 AI 了

-------
至於你驚訝 ML 會輸給人類的話,正如我上面所講,Google 太小看李世石了
而且你可能有點陷入 optimal 的迷思了
那些 LS、LMS(MMSE) 或是你想用 SVD 去除掉一些 sigular value 很小的 mode
那樣的 optimum point,我的看法是出來會是 training sequence 的(加權)平均
不可能會最好,更不可能更好
大學專題玩過用 Kalman filter 去預估汐止那邊的車流,就是這種感覺



※ 引述《fallcolor (秋天走了)》之銘言:
: 想透過這篇文章順著介紹一下這次讓圍棋AI效能躍升的關鍵:機器學習(machine
: learning)技術。當然現在大家對alphago的演算法背景都大致了解了,簡單說是類神經網
: 路(neural network)與蒙的卡羅樹狀搜尋(monte carlo tree search)的組合。不過如同
: 一些圍棋AI專家提到的,MCTS從2006就被應用於開發圍棋AI了,雖然帶來搜尋策略的大躍
: 進,卻還是有些盤面(例如打劫)難於處理。NN為alphago帶來的最大效益就是搜尋深度/廣
: 度/順序的優化,使MCTS得以在有限時間內對勝率較高的目標手展開樹狀預測。從這點來
: 看,理解alphago成功的關鍵是NN而不是MCTS,要如何破解alphago的關鍵也應該在此處。
: 而NN就是ML技術的其中一種,所以我想提供一點對ML的基礎認知。
: ML的廣義目的是從輸入資料中學習出有意義的pattern,要實現此目的的演算法種類很多
: ,但我想介紹的是比較主流的deterministic algorithm。這類演算法應用於ML上可以用
: 清楚的數學模型表達:
: y = f(x; theta) ……(1)
: 其中x是輸入資料,f()是需要事先定義的模型函數,theta是f()函數中的參數,y是你希
: 望f()函數輸出的預測值。當中theta是未知的,演算法目的就是希望根據給定的輸入資料
: x與輸出資料y自動決定theta,實踐的手段則是透過最小化模型預測結果與預期輸出之間
: 的誤差值:
: Minimize | y – f(x;theta) |^2 …… (2)
: 這個例子中選擇的誤差函數只是簡單的平方運算,此函數稱為目標函數,也是可以選擇的
: 。到此為止,機器學習其實只是一道數學問題,解決公式(2)需要用到的是數值最佳化
: (numerical optimization)技巧,但我也不打算從這個方向介紹下去。要理解ML的優缺點
: 應該從對數學的直觀理解出發。這麼說吧,先把公式(2)想像成一個簡單的聯立方程式求
: 解問題,如果我們有三組(x,y)資料(並且不是線性相依),而未知數theta個數也是3,基
: 礎數學告訴我們恰好有唯一解。若未知數theta個數小於3,此時找不到任何解滿足三組方
: 程式了,但我們可以找到一個使誤差值最小的解。若未知數大於3,我們則可以找到無限
: 多解。
: 為什麼要複習這麼簡單的數學概念呢?因為這裡面其實解釋了ML的所有困難與迷人之處。
: 如果你對資料假設的ML模型很簡單,也就是說theta個數少,換言之f()函數無法滿足太大
: 資料量,我們就會說這模型對資料的泛化(generalization)能力差。若相反,f()函數很
: 複雜,theta個數多到比輸入資料多,意味著你可以找到無限多theta滿足所有訓練資料。
: 但很不幸它們對演算法而言又都一樣,此時就容易掉進local optimum,我們就會說這模
: 型過度擬合(overfitting)了。
: 到此為止,大家可以思考看看如果你是一個ML的研究者,你會傾向選擇一個簡單但泛化能
: 力普通的模型還是一個複雜卻容易找到wrong optimum的模型呢?相信有志氣的各位一定
: 是選擇後者吧。但現實情況是,十年以前的這個領域人們寧願選擇前者搭配其他技術當作
: ML的補丁。這當然有許多因素,包括以前的學術研究通常是在規模較小的資料庫上做驗證
: 就可以發論文了,也包括過去處理的ML問題並不複雜,最關鍵的或許是過去的最佳化技術
: 還沒成長到可以解決複雜模型下的最佳化問題,而對簡單模型卻幾乎保證可以找到
: global optimum。種種原因造成當時的學界有另外一種研究面向叫做特徵工程(feature
: engineering),它關注的是如何表示輸入資料x。這一派的研究者相信,透過domain
: knowledge先對輸入資料設計比較好的特徵表示,而不是把原始資料赤裸裸地丟近模型裡
: 進行訓練,相當於很大的模型複雜度在這個步驟就解決掉了。基於這個理念十年前的ML其
: 實比較像feature extraction + model prediction的組合技,前者衍生出降維
: (dimension reduction)、特徵子(feature descriptor)等技巧,後者更是百家爭鳴,包
: 括logistic regression、support vector machine、decision tree、adaboosting,有
: 時候我贏你一點點,過陣子你又贏我一點點,不變的是誰也不能統一天下。除了以上還有
: 個比較特殊的派別叫做kernel machine,它的理念有點像是把兩步驟再次合二為一:假設
: x可以經過一個mapping轉換到無限維度,此時就可以把這個新表示法塞進模型裡並且以核
: 函數(kernel function)取代。……再往下說就離題了,不過因為kernel machine這概念
: 可以塞進許多ML模型,當時簡直掀起一波洗論文的熱潮,很有趣。
: 說了這麼多,可能有人想問,那尊爵不凡的NN呢?難道還沒被提出嗎?
: 其實正好相反,作為幾乎是最早的幾種ML模型之一,NN早在1980左右就被提出來了。雖然
: 我沒能躬逢其盛,但聽說1990初的ML領域幾乎是NN一統天下的時代,直到1995有位叫
: Vapnik的研究者提出SVM後才迅速沒落。NN的好處在於它的模型複雜度可以設計到非常高
: ,而對模型參數做最佳化的數學公式經過Hinton等人推導後也變得非常簡潔。然而它的缺
: 點同時出現:即使有了漂亮的最佳化公式,仍無法解決一旦模型複雜度過高就掉入local
: optimum的問題,而且這個local optimum還通常很糟。於是,當SVM挾著「我有global
: optimum」的口號橫空出世之後,NN就慢慢被喜新厭舊的研究者們淡忘了。所幸固執的
: Hinton沒有放棄,經過十年沉潛,在2006提出pre-training的技巧首次在工程意義上解決
: NN會overfitting的問題。或許為了重新出發,他這次為NN的學習技巧下了一個叫deep
: learning的口號,甚至嗆聲與NN相比,那些SVM、boosting、tree什麼有的沒的模型都只
: 是shallow learning(…膚淺學習)。後面的事大家就比較熟悉了,學界捲起一股DL旋風,
: google/FB/IBM/百度……等大公司紛紛投入可觀的資源研究,ML瞬間成為實現AI的希望,
: 諸如此類。
: 當然NN在技術層面的故事並不只到此為止。過沒多久研究者就發現,原來只要灌大數據加
: 上對NN模型有一些合理的規範限制,連pre-training都不用做就可以升天啦。灌大數據這
: 件事在過去是難以想像的,然而仰賴計算機硬體效能一日千里總算可以實現;而對NN模型
: 採取合理規範這個概念,造就了convolutional NN、recursive NN等新式模型的興起,其
: 中CNN就是這次alphago使用的機器學習模型。另外研究者也對NN的最佳化演算法進行一些
: 工程方面的改良,使訓練過程更穩定、更不會掉到奇怪的解,也更可以提高模型的複雜度
: 。
: 看上去NN完美無瑕了,不過其中很重要的一點是,這些改良都是透過實驗數據的提升來支
: 持的,背後仍然缺乏優美的數學理論。也就是說,NN會掉到local optimum這件事是它與
: 身俱來的原罪,不管灌再大的數據、做各式各樣演算法補強,這件事永遠可能發生。於是
: 有些腦筋不正常的研究者開始找NN麻煩,他們試圖透過另外一套演算法找出一種輸入雜訊
: n,使得
: x ~= x+n (~=:約等於)
: y != f(x+n) (!=:不等於)
: 這個研究的目標當然也可以從善意的一面來理解:分析NN模型究竟會在何時預測失效,並
: 以此進行改良。相關資料我曾提供於之前的討論文章中,這邊就不重複了。於是我們終於
: 可以回到圍棋AI的問題,在介紹一堆ML的基礎認知後,人究竟要如何理解alphago前所未
: 有的成功呢?
: Alphago這次訓練出來的類神經網路模型,可以看待成是一個複雜度非常高、泛化能力強
: 、預測又穩定的數學函數f()。裡面的所有參數theta都是根據餵進去的棋譜以及相對應的
: 棋局勝負一筆一筆學習出來。這樣的模型可能已經非常接近完美了,但是請記住,回歸數
: 學本質時,它一定是不完美的。因為NN註定就是會在訓練過程中掉進local optimum,而
: 這個local optimum因為沒有完美地擬合圍棋遊戲這個決策的超平面(hyper-plane),就必
: 然會在某一種輸入資料中發生預測失準的問題。經常看到板上有人質疑,是否alphago沒
: 看過的棋步它就無法應付?這句話從ML的角度來看是不對的,因為就算這個棋步alphago
: 沒看過,若參數的泛化能力強到可以「合成」這一步棋,就還在模型的表示範圍之內。直
: 觀一點理解或許可以想像成函數的內插,即使輸入資料不在取樣資料內,但計算出來的函
: 數上的每一點都是可以透過取樣資料參數化後內插得到的。反之,若是需要外插才能表示
: 的資料點,就可能造成函數的預測錯誤。
: 所以今天李世石九段的勝利──神之一手78,從數學意義上來說可以簡單理解為製造了一
: 個模型函數的外插點,或是說製造了一筆想搞砸NN模型的研究者朝思暮想的x+n的資料,
: 使得alphago終於無法泛化。在之前的文章中我很悲觀地認為這個n一定是得靠另外一套演
: 算法才能破解得到的。也就是說以一位ML愛好者而言,我認為只有ML演算法才能破解ML演
: 算法,沒有機會透過人類的智識歸納。想不到李九段今天立刻狠狠地打我的臉,心情實在
: 是很激動啊。坦白說對這次比賽的關心是很失敬的,因為我甚至不會下圍棋,只是對ML抱
: 著興趣就忍不住當了幾日棋迷,簡直有點蔑視圍棋了。然而這四場比賽下來對於李世石的
: 表現卻是真的打從心底十分動容,於是決定寫這篇文章。希望透過這篇介紹能讓喜歡圍棋
: 的人對ML稍有認識。ML並不神奇,說到底就是資料堆積出來的一個數學模型,因為它仍然
: 缺乏人最重要的邏輯思維與創作才華(我認為這不同於模型的泛化能力),至少在現階段它
: 是遠遠不需要恐懼的,而是需要與人類的智慧互相參考與提升,一起進步下去。

--
Tags: 圍棋

All Comments

Kyle avatar
By Kyle
at 2016-03-19T06:32
推!實際上去估一下cNN讀取時間就會發現分析深度超級淺
Gilbert avatar
By Gilbert
at 2016-03-23T14:50
MCTS後段才是處理手筋的重點所在
Ethan avatar
By Ethan
at 2016-03-26T17:27
MC 跟 MCMC 的異同是什麼?
Genevieve avatar
By Genevieve
at 2016-03-28T03:29
因為這領域真的滿專業的吧
Jack avatar
By Jack
at 2016-03-29T04:38
Alphago是強在MCTS+"三套"NN know-how也都在那三套的
訓練跟整合
Zora avatar
By Zora
at 2016-04-03T01:10
你要說是增加sims數目也不能說錯 但是NN有機會給你
Aaliyah avatar
By Aaliyah
at 2016-04-05T17:12
相當於算到局末的價值 不是純粹1000->5000這樣倍率
的進步而已
Todd Johnson avatar
By Todd Johnson
at 2016-04-09T16:07
回aaaba,相似點在「提高 MC 的效率」
Catherine avatar
By Catherine
at 2016-04-11T07:07
m大,那就相當於職業棋手的形勢判斷,至於準不準呢...
Charlie avatar
By Charlie
at 2016-04-15T10:43
它就是職業的加權平均水準
Sierra Rose avatar
By Sierra Rose
at 2016-04-16T09:50
我也覺得MCTS很重要 但既然不熟就不敢評論它的重要性
Frederica avatar
By Frederica
at 2016-04-19T00:38
至於NN 純粹是認為你對NN求的最佳解理解為平均這概念
是錯的 所以才想介紹ML基礎原理
Dinah avatar
By Dinah
at 2016-04-22T20:17
Kalman filter的話...恩...它跟NN複雜度差太多..
不要這樣推論比較好
Erin avatar
By Erin
at 2016-04-25T09:17
複雜是一回事 比較好是一回事,昨天神就丟顆骰子砸死AG了XD
Franklin avatar
By Franklin
at 2016-04-28T22:41
比較同意f大的看法 NN應該是MCTS的前提 前提錯了就跟只
有MCTS一樣 我覺得要如何下出讓Value network估算錯的棋
才是問題
Barb Cronin avatar
By Barb Cronin
at 2016-05-01T09:47
而加權平均的假設在這幾盤棋是沒有實驗數據的
Oscar avatar
By Oscar
at 2016-05-05T10:53
找個佈局下得好的棋手下就不同了
John avatar
By John
at 2016-05-09T17:33
我沒說NN不是前提,但只有NN沒MCTS 實力就只有業餘低段
Oliver avatar
By Oliver
at 2016-05-13T10:07
記者會上說AG是按勝率最大去下的,所以更像NN提供權重
Margaret avatar
By Margaret
at 2016-05-16T14:09
讓MCTS去找,那找到錯的,不一定是NN錯,是進入了一個稀有
事件,所以我會說神丟個骰子砸死了AG
William avatar
By William
at 2016-05-20T08:53
無禮還是無理?
Agnes avatar
By Agnes
at 2016-05-23T18:58
看論文就知道分支的分數是綜合nn和rollout,nn低分不見得就
會被忽略。例如第二局五路肩沖那手
Linda avatar
By Linda
at 2016-05-27T10:23
已經無理到無禮的地步了
Cara avatar
By Cara
at 2016-05-29T00:28
對啊,所以我說NN 低分,還是可能在MCTS 出來
Candice avatar
By Candice
at 2016-05-31T17:27
是條件機率的概念
Kristin avatar
By Kristin
at 2016-06-01T14:56
請問有辦法估讓AlphaGo跑自我訓練 得到一組勝率的數據需
要吃多少資源嗎 @ @?
Elizabeth avatar
By Elizabeth
at 2016-06-04T06:00
因為自我訓練相當於在平時做窮舉,COMPUTER GO DIGEST上說
Regina avatar
By Regina
at 2016-06-09T04:59
自我訓練在起始會有作用,但慢慢就會收歛
Blanche avatar
By Blanche
at 2016-06-10T17:15
請先看一下 7779
Anonymous avatar
By Anonymous
at 2016-06-13T19:44
因為圍棋複雜度是10^170次方,是沒機會掃好掃滿的
Oscar avatar
By Oscar
at 2016-06-16T12:48
bir大,我再說一次,我是在估 AG 的弱點,計算深度
Quintina avatar
By Quintina
at 2016-06-18T20:09
http://zhuanlan.zhihu.com/yuandong/20607684
Elma avatar
By Elma
at 2016-06-23T12:34
7779是轉貼這篇之前就有版友給的連結
Tracy avatar
By Tracy
at 2016-06-25T03:56
我知道 NN 可以提高MCTS效率,就反過來相當於節省了硬件
Rachel avatar
By Rachel
at 2016-06-28T07:44
我不是在描述 AG 的技術 details
Michael avatar
By Michael
at 2016-06-30T19:07
這裡的"自我訓練"沒那麼神, 其實只是訓練估值網路的過程
Liam avatar
By Liam
at 2016-07-04T11:31
自我訓練的收歛是...不明顯但仍然向上增長 還是會到瓶頸?
Queena avatar
By Queena
at 2016-07-08T06:53
在這裡面有很多名堂要注意, 並不是棋譜倒進去那麼簡單
eg "每一盤棋只取一個樣本來訓練以避免過擬合"
Margaret avatar
By Margaret
at 2016-07-10T18:53
只取一個樣本是什麼意思呀?只計算一次?
Sarah avatar
By Sarah
at 2016-07-14T05:41
看原文啊 有解釋... 現在的做法好壞其實是未知 XD
Agnes avatar
By Agnes
at 2016-07-16T04:22
這一塊應該算是還沒開拓過的領域, 如果 DeepMind 不知道
世界上也沒人會知道, 只有花大量時間下去實驗才會有結論
(高級軟體測試工程師 get)
Damian avatar
By Damian
at 2016-07-18T11:25
但到底要再投入多資源才能有效證明這個「假設」?
Elizabeth avatar
By Elizabeth
at 2016-07-22T17:16
大量的硬體資源和足夠強的棋手呀,正在實驗中
Xanthe avatar
By Xanthe
at 2016-07-25T07:05
......就當作是職業棋手的天劫吧= =
Kristin avatar
By Kristin
at 2016-07-26T05:29
那你就這樣認為吧 以後你對ML懂更多就會改變想法了
Freda avatar
By Freda
at 2016-07-30T05:57
所以現在在爭什麼?
Gilbert avatar
By Gilbert
at 2016-08-02T09:38
f大認為NN可以到達training 樣本(職棋)的最強水平甚至更強
Megan avatar
By Megan
at 2016-08-03T15:22
我沒這麼說 我是說平均這概念不對 請別腦補 謝謝
Agatha avatar
By Agatha
at 2016-08-08T01:48
嚴格來說NN是「feature」的多層加權平均(線性組合),但
不會是「instances」的加權平均
Quintina avatar
By Quintina
at 2016-08-10T12:26
所以不會是職業(棋譜)的加權平均水準
Daniel avatar
By Daniel
at 2016-08-12T01:09
另外就算論feature,因為這邊的「加權」可以為負值也可以
為超大的正值,所以「平均」的概念也不是非常好
Blanche avatar
By Blanche
at 2016-08-13T22:29
樓上大致正確,但局限於非最後一層裡的前半段
Olga avatar
By Olga
at 2016-08-14T23:50
也就是通過activation function以前
Ina avatar
By Ina
at 2016-08-15T06:40
對,你說的比較精確XD

職業棋手一生的對弈/訓練量?

Thomas avatar
By Thomas
at 2016-03-14T13:16
AlphaGo 可以自行對弈數百萬、數千萬局棋, 大量的對弈讓它在短短幾個月內能快速自我學習、累積數據。 因此我想請教各位高手關於職業棋士的訓練量? 若隨便估算, 比較厲害的職業棋士假設從 6 歲開始接觸圍棋(9 x 9 棋盤也算), 密集訓練時,可能一天下好幾局, 除了對弈,排棋譜、研究棋局,也都包含在 ...

古今世界圍棋高手的比較 / 圍棋基本理解

Franklin avatar
By Franklin
at 2016-03-14T12:48
: 以上講解完畢,所以如果從分數上來看,可以看出我個人認為歷史上的排名是 : 李昌鎬 andgt;= 吳清源 andgt; 曹薰玄=李世石=柯潔 andgt; 古力=alphago=常昊=趙治勳=朴廷桓=聶衛平 如果你指的是歷史上的定位,柯潔可以排在這裡 那麼後面應該再多加個 =范廷鈺=江維傑=唐偉星=陳 ...

Alpha Go 來 ELO 參一腳囉!

Susan avatar
By Susan
at 2016-03-14T11:59
如題 先上網址 http://www.goratings.org/ Alpha Go 把小李擠下第四名囉 好期待第五局對奕喔 (ˊωˋ*) - ...

「戰勝自己」對於AlphaGo而言不只是口號

Joe avatar
By Joe
at 2016-03-14T11:49
這是台大資工林守德老師在他FB寫的一篇文章,是他看過Nature那篇論文之後寫的感想 個人認為高手解讀應該有助於釐清大家對AlphaGo行為模式的理解 原文連結:https://goo.gl/m8cBHn (FB連結,不喜誤入) 「戰勝自己」對於AlphaGo而言不只是口號 ─ “Masterin ...

電腦和圍棋高手對弈 可以取勝 不足為怪

Suhail Hany avatar
By Suhail Hany
at 2016-03-14T11:19
(低棋淺見)電腦和圍棋高手對弈 可以取勝 不足為怪 在 2006 年 當時的西洋棋(國際象棋)世界冠軍 Vladimir Kramnik 以 4 和 2 負的成績 輸給運行在 2 個 Xeon 5160 的 Deep Fritz version 10 後 (最強的)西洋棋(國際象棋)軟體可以擊敗最強的人類高 ...