PTT推薦

Re: [分享] 用寶可夢紅版示範AI的機器學習

看板C_Chat標題Re: [分享] 用寶可夢紅版示範AI的機器學習作者
kirimaru73
(霧丸)
時間推噓21 推:21 噓:0 →:70

嘗試解釋一下過去的AI和現在的AI,在「暴力」這方面本質上的差異

過去以暴力幹爆人類的棋類AI中,最有名的就是深藍
我們假設現在要請深藍用同樣的方法,嘗試在圍棋上幹爆人類

那麼所謂的「暴力求解」大概可以形容成這樣:

深藍:
我執黑,現在輪我下棋

棋盤上一之一是空的,我可以下這邊(如果不能下就跳過)
如果我下在一之一,對手接下來會下任何一個他可以下的點
如果他下在A之B會得到最大的優勢

棋盤上一之二是空的,我可以下這邊
如果我下在一之二,對手接下來會下任何一個他可以下的點
如果他下在C之D會得到最大的優勢

...

直到把整個棋盤輪完一遍,每個地方對手都有一個「獲得最大優勢」的選項
而正常的AI沒事不會放水,也不會假設對手是白癡
他會假設對手永遠都盡力表現,但是我還是要幹爆他
所以最後他會選擇一個「就算你表現再好,上限也最低」的著手

到這裡就是賽局理論中一個最粗糙、最暴力的決策樹模型
以圍棋來說,可以想像這個模型相當的巨大
理論上和實作上還有很多可以簡化(更傳神的用語稱為「修剪」)這顆決策樹的方法
有些是能用數學證明很完美的,有些是犧牲準確度換取效率的
不同主題的研究者會因為遊戲性質的不同,而採取各自理想的策略

另外還有一個嚴重的問題,AI下一顆,對手下一顆,接下來要判斷對手有多少優勢
可是圍棋的勝負,可能是在後面一百多顆的戰鬥中才決定的
雖然有所謂「形勢判斷」的技術(僅從現在的盤面估算雙方的目數差異)
但那終究只是個估算,而且要讓AI具有可靠的估算能力,又會變成另一個難題

這裡先偷跑一下,借用阿法狗介紹文中總是會出現的蒙地卡羅方法
如果我不知道現在這個場面到底是哪邊比較好,那我就從現在這個場面開始
請兩個實力都很不錯的AI往後下個一千盤,看看哪邊爆掉比較多次就知道了
我不確定前阿法狗時代的圍棋AI有沒有用這種方法來進行估算
不過在電腦與顯示卡的算力爆發之前,就算真的能用,效率應該也不佳
除了計算量以外,光是去找「兩個實力都很不錯的AI」就是一大問題了

總之,過去的圍棋AI有這些手段能用,以及一大堆竭盡所能提高效率的策略
最好的成果大概能跟業餘棋手玩玩,對於中階棋手可能還具有不少挑戰性
不過面對職業棋手了不起就是被讓四~六顆,然後看看在爆掉之前能撐多久


接下來要進入阿法狗了,阿法狗那絕妙的圍棋演算法大概是:
(我的形容還是會簡化很多很多,不過重點是和過往在「暴力」上的差異)

將二十五個參數排成5x5方陣的形狀
阿法狗不想解釋這二十五個參數是哪來的,但主人把他推出去比賽時已經幫他填好了

把一之一~五之五的5x5區域框起來,把黑棋當作+1,白棋當作-1,空白當作0
將每個數字都乘上方陣中對應位置的參數,結果全部加起來,記在一張表格的角落

把一之二~五之六的5x5區域框起來,把黑棋當作+1,白棋當作-1,空白當作0
將每個數字都乘上方陣中對應位置的參數,結果全部加起來,記在前一個數字的旁邊

...

把整個棋盤都跑過一遍後,表格上就會有一堆計算好,同樣排成方陣的數字
先把這張表格放在一旁,掏出另外二十五個排成5x5方陣的參數出來
同樣的,阿法狗也不知道他們是怎麼來的,總之就是已經填好了

重複一次同樣的流程後,因為第二組參數和第一組不同,所以會產生另外一張表格
這些表格雖然也差不多是棋盤的規模,但因為用來乘的數字可以是任意範圍
所以他們的內容已經無法用任何圍棋知識去理解了

現在阿法狗的腦內有一大堆數字了,接下來他要做一件很重要的事情:
對這些表格上的數字執行同一種「粗暴動作」
最簡單的一種粗暴動作就是把所有負數變成0,正數保留原本的值
這個動作其實非常關鍵,但不適合在我這篇文章內說明關鍵的原因
想知道為什麼的讀者可以參考這個教學影片:
https://www.youtube.com/watch?v=bHcJCp2Fyxs

接下來,阿法狗會掏出更多來歷不明的參數
然後把先前計算得到的數字,和這些參數依照特定的規律兩兩相乘
再重複相加取總和,執行粗暴動作等流程,得到更多新的表格
類似的步驟會重複很多輪,這些表格排列而成的結構就是所謂的「深度」
最後會計算出到一張和棋盤一樣大的表格,每個位置各有一個數字

接下來,阿法狗照著最大的數字所在的位置下棋,然後人類就被幹爆了


這些「來路不明的參數」就是阿法狗的腦袋
除去這些參數的數值變化,參數要怎麼使用的規則其實是完全固定的
所以如果參數全部亂填,那這個阿法狗可能就是個白癡
實際上,如果隨機產生100000000隻這種阿法狗,那100000000隻應該都是白癡

不過人類就是有辦法找到一組參數,讓這隻狗贏了李世石四盤
尋找這些參數的方法其實也不是完全的暴力,因為這複雜度其實比圍棋棋盤還要高
這方面的技術屬於數學上最佳化的主題,還是有許多明確的方向可尋

為什麼在某種特定層層相疊的使用規則下,一組好的參數就能幹爆人類?
這是類神經網路上一個無解的問題,目前沒有辦法給出明確的原因
只有「這結構就是模擬人類大腦運作原理,所以他可以很厲害」這種解釋方法
實際上這結構早在1940年代就被提出,1970年代就有人實作過
不過在顯示卡能力提升,深度學習崛起之前
在計算量上的巨大門檻,往往讓其淪為吃飽太閒的等級


如果將過去的AI和現在的AI進行類比,可以發現這樣的相似性:

過去的AI:有天文數字種下棋的方法,找出一種最好的棋路
現在的AI:有天文數字種參數的組合,找出一種最好的參數

這兩者之間當然有許多差異,但其中有一種最為明顯:

過去的AI雖然在「找出最佳棋路」這件事上很辛苦
但是他所尋找的標的,是一個人類在圍棋規則內完全能看得動的棋路
現在的AI所尋找的標的......如果我在十幾年後被打臉就算了
不過我現在至少敢說,這他媽是什麼東西人類永遠都不可能看懂


然而,雖然人類看不懂參數本身,但是人類知道一件事實
就是這種模型在幾乎任何競爭類的主題上,都能明確地幹爆人類
(創作方面的問題還有點爭議,至少幹爆龍宮有點困難)
在許多的成功案例出現後,現代AI技術就開始爆炸性的加速發展了

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.240.232.168 (臺灣)
PTT 網址

medama04/04 15:44看不懂

wenku8com04/04 15:48難怪龍王的工作會說人類很難理解AI的下法

wenku8com04/04 15:48但只要成功學會AI的下法就能幹爆所有人

lightdogs04/04 15:51其實跟跑模擬有點像 參數有一定經驗參考性 但為什麼是

lightdogs04/04 15:51這個參數才能跑出吻合實驗的結果 不知道

killerj466v204/04 15:52也就是說過去的方法 是在人類能理解的情況下

killerj466v204/04 15:52用窮舉法硬幹

peterturtle04/04 15:53實質上仍然是一種求最大勝利期望值的方法,差別在於

peterturtle04/04 15:53,這種方法代表人類放棄控制電腦的思考方式,而是把

killerj466v204/04 15:53但狗狗的方法,是用一套多重參數疊加下的最佳路徑

peterturtle04/04 15:53所有不管有沒有用的變數都灌進去然後讓電腦自己去撞

peterturtle04/04 15:53牆,最終頭破血流的電腦有機會找出一個 It Just Work

peterturtle04/04 15:53 的結果。

killerj466v204/04 15:54而這多重參數無法用人類下棋的方式理解

lightdogs04/04 15:56其實訂立獎勵機制應該算最重要的一部分 很多設計模擬

ZMTL04/04 15:56以這篇玩紅版,就是想辦法引導出能玩遊戲的參數吧,AI會慢慢

lightdogs04/04 15:56也是用這種方式去做優化 但神經網路目前的問題是 模擬

lightdogs04/04 15:56能用物理及數學公式解釋這樣的設計結構 但神經網路的

lightdogs04/04 15:56那些參數是真的無法理解的一堆參數

ZMTL04/04 15:57找到該怎麼做,但推文的暴力破解感覺就跟猴子沒兩樣只是可以

ZMTL04/04 15:57很多很多

Nitricacid04/04 16:00https://i.imgur.com/ZEYajIF.jpg

none04904/04 16:00問題在「來路不明的參數」是怎麼生出來的吧?

Nitricacid04/04 16:01恭喜各界精英理解了碼農們的生活

peterturtle04/04 16:01這個方法除了讓人因人腦的極限感到挫折之外其實蠻有

peterturtle04/04 16:01效的,而之所以叫類神經網路是因為我們大腦裡也幹著

peterturtle04/04 16:01差不多的事情:能用的迴路強化、沒用的迴路消失掉,

peterturtle04/04 16:01而等到我們年老大腦神經元增生速度趨緩、舊有迴路也

peterturtle04/04 16:01被強化過頭時就很難學新東西了。

lightdogs04/04 16:03來路不明的參數是藉由獎勵機制去做變化的 但問題是我

lightdogs04/04 16:03們不知道這些參數的變化到底代表什麼

none04904/04 16:03如果這種可以幹爆人類的參數其實也是訓練出來的

none04904/04 16:03那也只是等於用人類辦不到的實戰訓練以結果篩選出一個

none04904/04 16:03教不了人也不知道該怎麼解釋自己招式的我流棋士?

lightdogs04/04 16:04可以這麼說 他就是全憑直覺去下棋還屌打棋王得人

peterturtle04/04 16:05to none 意思差不多

kirimaru7304/04 16:05開發現代圍棋AI有一個很重要的差異 就是人類放棄去思

kirimaru7304/04 16:05考「圍棋要怎麼下」這件事情,因為數學上已經證明你就

kirimaru7304/04 16:06就是沒有那麼高的複雜度去思考,科技在強也不行

kirimaru7304/04 16:06所以人類就告訴模型 我不去管圍棋的事了 幹爆對面就好

none04904/04 16:07to以前的AI:身為你的人類老師,我要你理解這些

none04904/04 16:07to現在的AI:不用理解,去感覺吧!

peterturtle04/04 16:07而就在這個莫門AI統治人類的可能性誕生了 www

kirimaru7304/04 16:10雖然原文是寶可夢,但這方面也是一樣

kirimaru7304/04 16:10人類壓根就沒有想教AI「怎麼」玩寶可夢

kirimaru7304/04 16:10人類只是想教AI「會」玩寶可夢 然後他就會了

lightdogs04/04 16:13而且基本上都是從獎勵機制下手 死掉一個寶可夢 bad -1

lightdogs04/04 16:13分 升級了 good +1分 然後這種機制其實對扣分更敏感

lightdogs04/04 16:13所以設立錯誤的話會發現ai卡住 因為他完全不敢去做會

lightdogs04/04 16:13扣分的事

kirimaru7304/04 16:13很多玩遊戲的強化學習都會有一個非零參數

kirimaru7304/04 16:13活著什麼都不動每frame扣多少分

lightdogs04/04 16:13某方面來說跟人類大腦運作機制真的很類似

kirimaru7304/04 16:13因為不加這個很容易卡住

kirimaru7304/04 16:14一個趣談 人類一開始養阿法狗時有灌輸人類圍棋知識的

kirimaru7304/04 16:14最高結晶 結果養出來的這條爛狗竟然還被李世石一比四

lightdogs04/04 16:14對 譬如說最簡單的乒乓球或者flappy bird

kirimaru7304/04 16:15後來人類撤除了所有圍棋的文化,狗就六十比零了

lightdogs04/04 16:15那就是alphago 跟alphago zero 的差別了

staristic04/04 16:16古力:原來在神乎棋技的路上我是多餘的

lightdogs04/04 16:18加強式學習是我覺得最沒效率的精神網路 但只要時間夠

lightdogs04/04 16:18長 運算效率夠快 它又是表現最好的 但又因為前期的低

lightdogs04/04 16:18效率實在難以評估獎勵機制的優劣 所以很不適合自己研

lightdogs04/04 16:18

kirimaru7304/04 16:21加強式學習的最強王牌:不用微分也能訓練

kirimaru7304/04 16:21但是掏出這張王牌之後就是獎懲函數的責任了

kirimaru7304/04 16:25不用微分的意思就是我他媽真的什麼都能學,甚至連交友

kirimaru7304/04 16:25感情外交戰爭都可能學得會 但是我說那個獎懲函數呢

lightdogs04/04 16:26不知道 天上會掉下來吧?ww

lightdogs04/04 16:26從一個玄學進到另一個玄學

kirimaru7304/04 16:27自駕車研究的地獄笑話:

kirimaru7304/04 16:28你是強化學習工程師,請問撞死一個小孩扣多少分?

lightdogs04/04 16:28xddd

csvt3274504/04 16:40硬train一發.jpg

abc736039304/04 16:44這邊是有多少李宏毅老師的學生XD

teps310504/04 16:50用猴子打莎士比亞的概念來看的話,以前的方法就是叫猴

teps310504/04 16:50子自己打英文字母,現在的方法就是把所有莎士比亞出現

teps310504/04 16:50過的英文單字都組合好叫猴子排列組合

danielqwop04/04 16:51電車難題IN AI,想想就好玩,別發生在自己身上的話

Ariadust04/04 17:00光是你這篇文我就有點看不懂了

weltschmerz04/04 17:30類神經的參數就是這樣 多跑幾層 你就不知道那些鬼參

weltschmerz04/04 17:30數是對應什麼物理要素了

TeamFrotress04/04 17:40科普推

j02201504/04 20:29笑死 我開始理解銃夢中行星級AI的恐怖了

chejps310504/04 20:47「前阿法狗時代的圍棋AI有沒有用這種方法來進行估算」

chejps310504/04 20:47,其實蒙地卡羅法拿來下圍棋最早是1993年的Brugman做

chejps310504/04 20:47的Gobble,只是當時硬體沒跟上又沒結合後續包含機器

chejps310504/04 20:47學習在內的演算法,所以成績極爛,爛到好幾年沒人理他

chejps310504/04 20:47,直到2000年Bouzy發表蒙地卡羅下圍棋的論文,而且取

chejps310504/04 20:47得不錯的成績,電腦圍棋界才開始有人投入改良蒙地卡

chejps310504/04 20:47羅法