AI 學會你最拿手的小遊戲之後

本文由公眾號 “把科學帶回家” 提供

給孩子最好的科學教育

作者 美圖君

一個懂寫代碼的程序員平常是怎麼玩遊戲的?想知道嗎,一個網名叫做 Code Bullet 的澳大利亞程序員就經常自己在家制造和訓練 AI 幫他打遊戲。

看過他訓練出的 AI 玩的遊戲,感覺…再也不想玩遊戲了呢。

先來看 AI 玩 Flappy bird 會怎樣。

小哥使用的是NEAT(neuro evolution of augmenting topologies)算法,也就是增強拓撲的神經演化算法。

NEAT 是一種結合神經網絡和遺傳算法(genetic algorithm)的好算法。

遺傳算法是什麼?

遺傳算法類似於一個代碼進化系統,它是一種優勝劣汰 AI 的算法。

你要做的,就是告訴計算機,什麼是“成功”的標準,還要告訴AI,它可以看到什麼,可以做什麼。成功的AI可以進行一次繁殖,留下後代,不成功的 AI 就當場去世了。

為了模擬演化,子代 AI 還會和爸爸/媽媽有一點點的不同,類似於遺傳突變。

神經網絡則是一種具有學習能力的算法,它模擬的是生物神經網絡的結構,可以根據經驗不斷調整。

在 Flappy bird 裡,小哥設定 AI 可以看到鳥鳥和柱子的距離、鳥鳥相對於柱子的速度等信息。剩下的該怎麼玩 AI 自便。

在每一代的 AI 裡,玩得最好的可以進行繁殖,並把自己的優秀基因遺傳給下一代。當然了,下一代也不會照單全收,還是會有小小的突變。

第六代目就可以妥妥地拿下2000分了...

好的,小哥用 NEAT 玩壞的第二個遊戲,就是 Chrome 瀏覽器連不上網時候出現的彩蛋小遊戲——跳跳恐龍。

你還不知道有這個遊戲?

你能玩到第幾關呢?

好的,發現自己技術太差以後,小哥就自行復製出了遊戲,並開始無情的 AI 模式了。

第一代AI有500只,每一隻控制著一隻恐龍。發揮最好的 AI 可以進入繁殖階段,不行的AI就莫得繁殖。而且下一代的策略會和上一代有一點點不同,類似於遺傳突變。

上面的那些網絡就是控制這些 AI 的神經網絡,它會一代代地發生變化。

這個神經網絡的輸入信號就是每個 AI 看到的東西,輸出就是每個AI的動作。新的神經網絡連接的出現代表著 AI 學會了某種特定的策略。

第一代的基本設定很簡單,就是不停地隨便亂跳。就和你一開始玩的時候一樣。如果你仔細看上面的圖,會發現有隻AI是一直趴著前進的。

_(:з」∠)_

就這樣,傻 fufu 的 AI 被一代代刷掉之後,終於有隻 AI 搞明白要看清楚距離再跳了。

好的,玩過這個遊戲的人知道,到了一定時間,速度會變得飛快,而且一些鳥鳥飛得太高踩不到,所以在大鳥鳥面前要主動彎腰。

利用遺傳算法訓練到第八代 AI 的時候,它們看起來就已經很聰明瞭。

但是第八代還是沒學會在踩不扁的大鳥鳥面前低頭。

到了25代,AI 終於學會了,如果你不能碾壓別人,那就要立刻向大佬低頭,晚0.1秒都不行。

到了第40代AI,見識一下什麼叫做恐怖。

第25代 AI 妥妥地拿下了2萬分。後來因為小哥的電腦實在吃不消了才沒有繼續刷出高分。

還有這個世界最難遊戲。

小哥也是因為自己玩得太爛,於是決定用遺傳算法算法來海選 AI 幫自己刷分。

每個 AI 依照一套指令(術語叫做 vector)。

和自然選擇理論一致,適合度最高的 AI 可以繁殖,做不到的 AI 就只能去死了。小哥規定,AI 要在有限的步數之內完成特定的指令。完成的指令越多,就可以獲得更多的步數。

一夥 AI 衝上場的畫面。有不怕死的已經當場去世了。

注意到頭是綠的 AI 嗎?它們是上一代 AI 裡最優秀的後代。

終於到了第50代,第50代啊同志們,有一個AI來到了終點。

老母親的淚目。

也是用 NEAT 算法訓練的 AI 玩越野賽車。

從沒眼看的個位數代目——

再到彪悍的十七代目——

再來看看 AI 玩貪吃蛇。

小哥先利用遺傳算法和深度學習(deep learning)訓練出了幾條優秀的 AI 貪吃蛇,然後利用融合(fusion)的方法把它們的“大腦”合體。相當於一個貪吃蛇的身體裡藏著好幾條蛇。人類是不是管這個叫做精分?

小哥另外讓高級版的貪吃蛇 AI 在不同貪吃蛇 AI 附體時對外展現出不同的顏色。

比如,在發現食物,並且確定能夠吃到的時候變成綠色,藍色表示它確定能離食物越來越近,白色表示它看不到食物在哪裡,只能儘量不讓自己死掉。

這個精分版的貪吃蛇 AI 是這樣玩的。

總之,小哥用 NEAT 算法的套路玩轉了各種你耳熟能詳的小遊戲。效果都是槓槓的。

除了 NEAT 算法,他還用其他算法破解了另一些遊戲。

比如,小哥還教 AI 玩55 x 55 x 55的魔方。

小哥說不能做更大的魔方了,它電腦要中風了。

小哥用Q學習(Q-Learning)練的玩鋼琴塊遊戲的 AI。

Q學習屬於增強學習算法,增強學習算法就是要記錄學習過的策略,並且根據獎勵(目標)來調整策略的算法。

AI 的目標是找到屏幕上的黑框,然後使勁地摁就好了。一鍵玩到電腦中風的樣子——

你玩過掃雷吧。小哥也造了一個掃雷 AI。看 AI 玩 64 x 36 的掃雷覺得莫名舒爽有木有?

好的,看完了上面這些 AI 打遊戲的精彩片段我們知道,永遠也不要嘲笑一個會繁殖的 AI 和一個玩不好遊戲的程序員。

不過癮,請戳

掉入地下一萬米

盯了270萬學生50年,哈佛斯坦福學者發現成績的貧富差距高達4年

把科學帶回家

ID:steamforkids

給孩子最好的科學教育

轉載請聯繫 kids@huanqiukexue.com

長按二維碼關注我們

圖片非特別註明均來自網絡。

https://shimo.im/docs/TubAO2hZeXYfRSk5/