0
本文作者: 岑大師 | 2017-11-07 06:06 |
雷鋒網(wǎng)消息,最近,Youtube 上的知名游戲博主 SethBling 訓(xùn)練了一個(gè)叫 MariFlow 的神經(jīng)網(wǎng)絡(luò)來玩 Mario Kart 游戲。在進(jìn)行15個(gè)小時(shí)的游戲訓(xùn)練并做了一些針對(duì)性的改進(jìn)后,這個(gè)神經(jīng)網(wǎng)絡(luò)在 50cc Mushroom Cup 中獲得了金牌。
這并不是 SethBling 第一次在游戲中應(yīng)用神經(jīng)網(wǎng)絡(luò)“通關(guān)”。此前 SethBling 曾經(jīng)創(chuàng)建了另一個(gè)神經(jīng)網(wǎng)絡(luò)MarI/O,通過訓(xùn)練,這個(gè)神經(jīng)網(wǎng)絡(luò)自己演變成玩“超級(jí)馬里奧世界”(Super Mario World)的高手。SethBling還拍攝了一個(gè)六分鐘的視頻來解釋通過神經(jīng)網(wǎng)絡(luò)來進(jìn)行游戲的原理。他設(shè)計(jì)了一個(gè)四層的神經(jīng)網(wǎng)絡(luò),通過計(jì)算,程序會(huì)給出它認(rèn)為在某個(gè)點(diǎn)上應(yīng)該按下什么鍵的預(yù)測(cè)。通過這個(gè)視頻,或許你也可以舉一反三,做出更好的應(yīng)用例子(例如賽車游戲)。
和雷鋒網(wǎng)來看一下構(gòu)建這個(gè)神經(jīng)網(wǎng)絡(luò)中 SethBling 的思路吧:
游戲當(dāng)中,我們可以看到Mario在一直全速奔跑,全程沒有任何停頓,并能快速躲開類似上圖這樣高難度的子彈襲擊,最終到達(dá)終點(diǎn)的時(shí)候剩余時(shí)間為354秒。
讓我們重頭開始看看神經(jīng)網(wǎng)絡(luò)是如何進(jìn)行決策的:如上圖所示,這是一個(gè)只有4層的神經(jīng)網(wǎng)絡(luò)模型,通過對(duì)最左側(cè)的輸入圖像的計(jì)算(紅色的短線代表Mario、白色方塊代表不會(huì)移動(dòng)的物體如地面,黑色方塊代表會(huì)移動(dòng)的物體如敵人,等等),最終得出最右側(cè)的8個(gè)按鍵的輸出狀態(tài)(SethBling解釋說,神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元和神經(jīng)樹突并不總是被亮起的,這也是我們所說的只使用到了我們一小部分的大腦)。
而在一開始的時(shí)候,機(jī)器的表現(xiàn)非常笨拙,甚至不會(huì)按任何鍵。在這樣的過程中,系統(tǒng)會(huì)嘗試切換不同的模擬狀態(tài),通過嘗試了很久后才學(xué)會(huì)了向右移動(dòng);
在遇到子彈的時(shí)候也不會(huì)跳躍躲避;
那么神經(jīng)網(wǎng)絡(luò)是如何學(xué)習(xí)的呢?還是從最初的簡(jiǎn)單狀況開始,綠色線代表正激勵(lì)連接,而紅色表示負(fù)激勵(lì)連接。只要從目前的狀態(tài)所激活的是綠色的正激勵(lì)連接,那么Mario就只管一直按右鍵狂奔;
當(dāng)紅色的負(fù)激勵(lì)連接被激活時(shí),則切換到相應(yīng)的狀態(tài),如上圖中按下A鍵做一個(gè)跳躍動(dòng)作;
如果沒有任何鏈接被激活,那么Mario就站在那里。這只是一個(gè)簡(jiǎn)單的示意:如果神經(jīng)網(wǎng)絡(luò)中的節(jié)點(diǎn)和連接越復(fù)雜,系統(tǒng)能做出的選擇也更多,最終做出最合適的選擇;
那么神經(jīng)網(wǎng)絡(luò)是如何從簡(jiǎn)單進(jìn)化到復(fù)雜的呢?我們?cè)O(shè)定一個(gè)函數(shù)Fitness,這個(gè)函數(shù)值取決于Mario奔跑的距離以及所用的時(shí)間,奔跑距離越大、所用時(shí)間越短,F(xiàn)itness值越大,而只有獲得最大值的模型才能被選為下一代演化的基礎(chǔ)模型,而在下一代演化中在關(guān)鍵節(jié)點(diǎn)上(如上圖吃到子彈游戲結(jié)束)會(huì)產(chǎn)生隨機(jī)突變(雷鋒網(wǎng)注:這和生物進(jìn)化的過程非常相似,只有最適應(yīng)環(huán)境的種類才能生存繁衍),在這樣不斷演變中達(dá)到最優(yōu)解。
在上圖的34代演化得分圖中,我們可以看到機(jī)器在進(jìn)化過程中也遇到了一些瓶頸,但最終克服了這些瓶頸取得了好成績(jī)。
這一方法,SethBling稱之為NEAT(Neuro Evolution of Augmenting Topologies,增強(qiáng)拓?fù)渖窠?jīng)演化),在 Kenneth Stanley 和 Ari 的論文中也有講述。
完整視頻見此。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。