Re: [好文推薦] 這兩盤棋 沒人會比李世石做得好

作者: fallcolor (秋天走了)   2016-03-12 00:39:12
※ 引述《reinhert (史丹佛的銀色子彈)》之銘言:
: 所以常常看到有人說找Bug和對原始碼下手,但其實這是不對的
: 這個計算系統是隨時隨地在變動的
: 如果有一般人所謂的Bug(系統實作上的問題)也早就找出來了
: 要也是要對Model和系統本身的弱點來下手,但NN會在不斷的訓練逐漸趨近最佳解
: 所以要"騙"或找Bug是非常困難的甚至沒意義的
其實找bug這件事也不是這麼絕望
NN的穩定性目前在ML領域還是一直受到挑戰
例如:
http://www.zdnet.com/article/hacking-neural-networks/
作者就是在研究針對一個NN訓練出來的分類器
如何加入一點點雜訊就可以造成預測結果改變
不過這種作法相當於用演算法破解演算法
要靠人的智識透過觀察與歸納找出ML技術訓練出來的模型的的漏洞
可行性幾乎是零
作者: aaaba (小強)   2016-03-12 00:42:00
姑且不論狗不是純nn的機制,你要怎麼注入雜訊分類問題分錯就錯掉了,回歸問題錯得不離譜的情況,mcts 會順利運作
作者: fallcolor (秋天走了)   2016-03-12 00:45:00
加入什麼樣的雜訊能讓模型預測失效也是靠演算法算出來人類能做的事是從這些雜訊反推此模型對什麼樣的輸入比較敏感 容易預測錯誤
作者: bxxl (bool)   2016-03-12 00:46:00
ML系統不是本來就該能容忍輸入資料的一些雜訊才算實用嗎?
作者: fallcolor (秋天走了)   2016-03-12 00:48:00
對 但這個研究的方向就是要證明ML還有改善空間
作者: aaaba (小強)   2016-03-12 00:48:00
圖片的像素可以任意微調,盤面是要怎麼動手腳?
作者: fallcolor (秋天走了)   2016-03-12 00:50:00
在某棋面下出某一步造成系統預測失準 把這種方式當作加雜訊
作者: ddavid (謊言接線生)   2016-03-12 00:51:00
你丟入低棋的棋譜、雖然是高棋但下爛的棋譜,這就是一種雜訊如果能證實,放1000好的高棋譜跟1000高棋+500爛譜都能學成相差不大的實力,則我們就可以說這個架構有一定抗雜訊的能力了,反之要是加入爛譜會讓實力驟降,那就是非常不抗雜訊
作者: aaaba (小強)   2016-03-12 00:54:00
樓上先弄清這裡在講testing phase
作者: ddavid (謊言接線生)   2016-03-12 00:55:00
喔,我沒針對那篇的內容在講啊你如果一定要限定在Testing的話,以圍棋這個例子我還真沒法立刻想到特別好的方法,因為盤面動一子已經視同完全不同的盤面了,跟一般常見以特徵條列的Input特性不太一樣不過其實我覺得談到雜訊的時候training處理比較重要因為只要training沒因為雜訊造成overfitting,就相對不怕testing用的資料也有雜訊
作者: blackwindy (黑色的風)   2016-03-12 01:03:00
丟棋譜其實沒甚麼用 因為它主要是靠自我學習成長棋譜比較像是initialization 亂數起始比較沒效率
作者: ddavid (謊言接線生)   2016-03-12 01:04:00
不,棋譜是學習開始使用的seed,絕不是不重要的東西
作者: blackwindy (黑色的風)   2016-03-12 01:05:00
他會自我校正阿 除非初始化真的太差 不然不會差太多
作者: aaaba (小強)   2016-03-12 01:06:00
可是圖片分類器在training時雜訊加得可多了,還是有盲點。
作者: blackwindy (黑色的風)   2016-03-12 01:06:00
有隨機的成分在 時間拉長還是會往好的方向去收斂
作者: ddavid (謊言接線生)   2016-03-12 01:07:00
還是不完全正確,不佳的initialization除了效率可能不佳外,有可能更容易導向較差的local maximum
作者: blackwindy (黑色的風)   2016-03-12 01:08:00
所以沒事就找些真人來打打 讓他不要過早收斂自我對戰可能比較容易陷入local optimum
作者: ddavid (謊言接線生)   2016-03-12 01:09:00
這跟餵新的好譜是同樣的概念呀
作者: blackwindy (黑色的風)   2016-03-12 01:09:00
但這邊有個問題就是 如果他的local opt已經比人強了那好像就沒差了
作者: ddavid (謊言接線生)   2016-03-12 01:10:00
對於追求更好來說還是有差的啦,應用層面當然就會夠用即好
作者: aaaba (小強)   2016-03-12 01:18:00
反正就是圍棋的輸入很乾淨,沒也所謂雜訊干擾的問題。training的時候根本就沒有加爛譜砸自己腳的道理。測試階段也無法讓電腦接收到雜訊,落子偏一路之類的,對電腦可不是什麼雜訊,而是你下壞了。
作者: ddavid (謊言接線生)   2016-03-12 01:22:00
training加爛譜有意義啊,第一是測試model的穩定性不會因為你不小心加了如有些高手下出來可是有惡手的譜就學到爛招,第二是這些惡手是人類判讀的,但電腦未必如此解讀而能重組成為新的好手餵不同的資訊training出多個不同版本來觀察之間的差異,可以進一步確認餵譜時的選取標準也是一點
作者: aaaba (小強)   2016-03-12 01:30:00
先問一下,爛譜是?
作者: ddavid (謊言接線生)   2016-03-12 01:31:00
比如兩個級位的棋譜。不過,這邊我不特別定義什麼是爛譜,我的看法是在training餵各種不同的譜然後看分別出來model的表現,才去反推哪些譜應該要被歸類於盡量不要餵進去的「爛譜」,最後才以留下被認為效果較佳且合理的譜去train一個最終的版本另外就是,如果多個版本其實表現差不多,那就會表示這個model其實抗雜訊能力很強,甚至反過來能從一些連人為判讀都覺得明顯糟糕的譜篩選出有效資訊,則在這種情況下就變成
作者: aaaba (小強)   2016-03-12 01:36:00
在圖片分類問題時,貓的圖片加雜訊後,人也是可以認出是一隻貓,所以training時可以藉此做data augment,你的爛譜似乎沒這個效果。
作者: ddavid (謊言接線生)   2016-03-12 01:36:00
不需擔憂及定義區分餵進去譜的品質了,有譜就餵即可爛譜的每一手或特定一段著手是可以拆開看的,爛譜仍然有可能有助於統計什麼下法會是該被懲罰的惡手,利用正確並非完全無用但我前提講得很清楚,什麼譜是有用的要分別用不同集合的
作者: aaaba (小強)   2016-03-12 01:40:00
你這樣好像把貓的圖片標示為狗,能幫助學習嗎?
作者: ddavid (謊言接線生)   2016-03-12 01:40:00
training來做測試,結論當然有可能就是某些定義的爛譜不該餵就說了這個測試就是為了知道這能不能幫助學習,有沒有惡影響呀XD舉例來說圖片網站上面人為標的Label並不一定都是對的,人力根本沒辦法全部一一驗證,所以我們會期待我們的model有抗雜訊能力,餵了少數貓標成狗、狗標成貓的圖還是最後能夠train出來相差不大的model。所以才需要先做這個刻意控制的測試來檢驗model的抗雜訊能力或者對training data的偏好,這是為了下一步挑選出最佳的training set來train出最終版本的model另外就像我現在在做的問題是incomplete label,一張照片可能有很多元素,但人可能只標出最重要的一些,其他的一些沒被標到不代表它不存在,但是你餵進去model就會真的當那些元素不存在了,那你怎麼樣在label沒給完整的情況下盡可能還是train出一個可以解答更完整label的model?很明顯incomplete label是學習的負面因子,事實上也是廣義的一種雜訊,但就是要觀察什麼model能夠在這種情況下仍舊train出可用可被接受的model,如此我們就能在挑選圖片/棋譜這個耗人力的階段省下更多cost,甚至反過來還能讓model幫我們篩選出什麼是標完整的照片/好譜,什麼是亂標的照片/亂下的棋譜另外像semi-supervised learning也是相關的層面,有些照片
作者: blackwindy (黑色的風)   2016-03-12 01:53:00
現在的問題是你沒辦法驗證有沒有惡影響
作者: ddavid (謊言接線生)   2016-03-12 01:53:00
根本就什麼都沒標,但是就是有研究讓你塞少量有標大量沒標
作者: blackwindy (黑色的風)   2016-03-12 01:54:00
我相信這世界上濫譜的數量遠大於好譜 全部亂餵那蠻貴的 而且這應該不是GOOGLE要的東西
作者: ddavid (謊言接線生)   2016-03-12 01:55:00
以對局輸贏的機率來反推哪種趨向的training set能讓它更好我說的只是一種研究方向,並不是說Google必須如此做XD
作者: blackwindy (黑色的風)   2016-03-12 01:56:00
是阿 研究題目到是不錯 只是google要的是可以動的產品
作者: ddavid (謊言接線生)   2016-03-12 01:56:00
這是因為這篇推文最前面談到雜訊問題才一路談下來的XD事實上如果做出抗雜訊的model,它的好處就是可以幫我們反篩選哪些是爛譜哪些是好譜(雖然是以它的角度)
作者: blackwindy (黑色的風)   2016-03-12 01:57:00
還有個問題 都丟人類棋譜只是讓弄出個像人的阿法狗我想這也不是GOOGLE要的 他要的是超越人的阿法狗
作者: ddavid (謊言接線生)   2016-03-12 01:58:00
但如果目標不在此,就是要做到跟人下棋,當然不見得需要理這個研究方向,就乖乖選擇一般人認同為好譜的集合丟進去做為seed就好了這沒有啥問題,因為丟譜只是做為seed,他後續的成長是靠之後自我對局做最佳化,很明顯現在的AlphaGo就是餵人類對局卻也能自我學出不完全人類的思維
作者: blackwindy (黑色的風)   2016-03-12 02:00:00
是阿 我前面就說了init沒甚麼差 訓練後比人強就好
作者: aaaba (小強)   2016-03-12 02:01:00
應該要對雜訊敏感的model才能拿來篩選dataset吧?
作者: ddavid (謊言接線生)   2016-03-12 02:01:00
不,自我對局那邊是一個最佳化過程,它雖然可以學到一開始譜沒有的東西但不代表它不會受到seed的影響呀自我學習並不是萬靈丹可以絕對最佳化,你給它爛seed還是有
作者: blackwindy (黑色的風)   2016-03-12 02:02:00
問題是這space太大了 這麼大你從哪邊起始差異不大吧
作者: ddavid (謊言接線生)   2016-03-12 02:02:00
可能使它成長的天花板變低的就是太大了,你選了爛起點會有可能造成他永遠逛不到好的那
作者: blackwindy (黑色的風)   2016-03-12 02:03:00
而且你不能排除人類那些東西是一個local opt的可能
作者: ddavid (謊言接線生)   2016-03-12 02:04:00
一邊去,一直在爛的這邊走來走去
作者: blackwindy (黑色的風)   2016-03-12 02:04:00
根本沒有一個有效的評估方式去知道那堆棋譜的好壞
作者: blackwindy (黑色的風)   2016-03-12 02:05:00
你看現在結果證明那堆棋理搞不好根本都錯了 不靠譜阿
作者: ddavid (謊言接線生)   2016-03-12 02:05:00
用自我學習去盡可能跳脫原本的local maximum往更好的部分爬
作者: blackwindy (黑色的風)   2016-03-12 02:07:00
我個人是比較贊成亂數起始就是 比較沒bias
作者: ddavid (謊言接線生)   2016-03-12 02:07:00
並沒有證明「都錯」啊,事實上真正超脫的著手並不多啊,整體來講仍然大多數著手都在棋理之中,只是少部分新觀念太搶
作者: blackwindy (黑色的風)   2016-03-12 02:08:00
應該說 人類下的那堆棋到底AI適不適用就是個問題
作者: jimmy20642 (金殷2014拿冠軍!)   2016-03-12 02:08:00
對岸看到的一篇文章:https://goo.gl/JX1YHd
作者: blackwindy (黑色的風)   2016-03-12 02:09:00
說不定反而害他綁手綁腳
作者: jimmy20642 (金殷2014拿冠軍!)   2016-03-12 02:09:00
不明覺厲 請高手解釋orz
作者: ddavid (謊言接線生)   2016-03-12 02:09:00
眼會讓人誤以為過去棋理崩潰,但其實並不到過去全錯的地步
作者: blackwindy (黑色的風)   2016-03-12 02:10:00
這樣說吧 如果亂數起始然後還是跑出類人的棋理那就驗中那些棋理是對的 沒跑出來搞不好就是錯的懂嗎? 你要研究價值這就一點
作者: ddavid (謊言接線生)   2016-03-12 02:10:00
亂數起始就回到我前面講的東西啦,如果你餵一堆高手譜跟餵亂下譜最後能train出一樣好的model,就證明了此model不依賴seed,因此當然就不用擔心這回事啦這就是我前面說,改變training set可以進行的其中一種研究@jimmy20642 本版應該已經有好幾篇文在解釋,恕我沒法在這邊再一次重覆了XD 一個不注意都過半夜兩點了啦!XDDD我要先撤退了,感謝幾位的討論XD
作者: aaaba (小強)   2016-03-12 02:15:00
亂數seed能成立的機率請參考地球生命的起源
作者: ddavid (謊言接線生)   2016-03-12 02:16:00
不一定啦,要看問題特性跟model,特別是類神經網路這一種model在真的讓它試看看之前我實在無法說seed的好壞到底差多少XD
作者: birdy590 (Birdy)   2016-03-12 02:19:00
它的幾個網路並不是用來下棋啊 而是輔助mcts
作者: aaaba (小強)   2016-03-12 02:20:00
他講的亂數那種方法只有過時的ga才有,類神經的label用亂數是怎麼學?
作者: blackwindy (黑色的風)   2016-03-12 02:25:00
http://goo.gl/qnoGZI 這邊有人問上面基本上觀點跟我理解的一樣
作者: fermib (ohyah)   2016-03-12 07:03:00
這東西簡直就是變魔術 原理說破不難理解 但實現的過程極其困難有很多問題也一堆人不相信 結果真的跟魔術一樣 讓人張大嘴巴...
作者: fallcolor (秋天走了)   2016-03-12 08:04:00
人這麼武斷很難做研究
作者: aaaba (小強)   2016-03-12 10:44:00
@blackwindy:你說的是weight在還沒training前如何init?那目前慣例是用亂數沒錯,只是這樣一來,你前面的論述我就不懂了,ddaivid在討論要用什麼樣的dataset來研究其他議題時,你在講初始化,根本是不同的事情,我就誤會了,現在我的理解是不管ddavid要用好譜還壞譜,他都能用亂數weight開始訓練網路,你們所謂init可能存在歧義。你在25樓說“丟棋譜沒用,現在是靠亂數起始”,這句話意味不明,你的label不是用棋譜產生嗎?棋譜怎麼會沒有用呢?不用棋譜你來做出一個1d的AI? 願聞其詳。
作者: birdy590 (Birdy)   2016-03-12 12:30:00
學理是輸入棋譜大量訓練後會趨於穩定, 初值亂數會比較快
作者: aaaba (小強)   2016-03-12 12:55:00
初值亂數沒問題,我質疑的初值亂數根本無法取代譜的好壞扯在一起討論難免產生誤會

Links booklink

Contact Us: admin [ a t ] ucptt.com