為了創(chuàng)建游戲中的AI機器人,游戲開發(fā)者通常會根據(jù)規(guī)則手工編寫一系列代碼。在大多數(shù)情況下,這種方法能使機器人在模仿人上做到極盡逼真,但它們本質(zhì)上和人還是有較大區(qū)別,大部分玩家還是一眼就能分辨出這個隊友/敵人究竟是真人還是AI。
那么,除了手動寫規(guī)則,或是寫一些硬編碼,我們還有別的方式能使游戲AI更仿真嗎?如果我們想讓AI通過觀察人類行為學會打游戲,我們該怎么做?
為了探索這些問題,我們首先需要一個能提供大量比賽數(shù)據(jù)的游戲,比如《FIFA》。所以接下來我們就以《FIFA》系列的最新版《FIFA 18》為例,用記錄了玩家行為和決定的大量游戲錄像訓(xùn)練一個端到端的深度學習機器人。需要注意一點是,我們不會針對單個游戲規(guī)則編寫硬編碼。
Github地址:github.com/ChintanTrivedi/DeepGamingAI_FIFA.git
玩游戲的機制
因為我們不能訪問游戲的內(nèi)部代碼,所以為機器人構(gòu)建基本的游戲機制是一個首要任務(wù)。這其實也是種優(yōu)勢,這個項目的一個前提就是不依賴任何游戲內(nèi)部信息。因此,我們的機器人只會看到簡單的游戲窗口屏幕截圖,玩家看到的是什么,它看到的就是什么。它會通過處理這些視覺信息輸出想要采取的動作,并用手柄模擬器把指令傳達給游戲。之后不斷刷新圖像,重復(fù)循環(huán)。
如上圖所示,現(xiàn)在我們建立了一整個為機器人提供輸入,并由它輸出操控游戲角色的指令的框架。這時我們就來到了一個有趣的環(huán)節(jié):學習游戲智能。它可以被分為兩個步驟:(1)用卷積神經(jīng)網(wǎng)絡(luò)理解截圖;(2)用長短期記憶網(wǎng)絡(luò)理解圖像內(nèi)容并做出決策。
第1步:訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)
CNN以其能高精度檢測圖像中物體的能力而聞名。在它的基礎(chǔ)上,我們輔之以高性能的GPU、更智能的神經(jīng)網(wǎng)絡(luò)架構(gòu),我們就能獲得一個可以實時運行的CNN模型。
為了讓我們的機器人了解輸入的圖像,我們可以使用這個名為MobileNet的輕量級、高速CNN。該網(wǎng)絡(luò)能在高度理解截圖的前提下從圖中抓取特征圖,例如玩家或玩家關(guān)注的角色在屏幕上的位置。之后再結(jié)合物體檢測模型SSD檢測球場上的球員、球以及球門。
第2步:訓(xùn)練長期短期記憶網(wǎng)絡(luò)(LSTM)
現(xiàn)在我們已經(jīng)理解了圖像,也就是說機器人擁有了進行決策的能力。但是我們不希望只讓它看到一個個檢測框然后采取行動,我們希望它能看到圖像的短序列。這就是為什么引入LSTM的原因——它們能夠模擬視頻數(shù)據(jù)中的時間序列。我們把連續(xù)的幀用作時間步長,并用CNN模型從每一幀中提取特征映射,再把這些同時饋入兩個LSTM網(wǎng)絡(luò)。
第一個LSTM負責了解玩家需要做什么動作,因此,這就是一個多類分類模型。第二個LSTM得到的輸入和第一個相同,但它必須決定采取什么動作來實現(xiàn)橫傳、直塞、短傳、射門:另一個多類分類模型。我們把這兩個分類問題的輸出轉(zhuǎn)換為按鍵,以此達到控制游戲的目的。
評估機器人的性能
除了讓AI機器人直接上賽場,其實我們也找不出任何測試性能的方法。在訓(xùn)練了400分鐘后,機器人學會了向?qū)Ψ角蜷T靠近、向前方傳球并在發(fā)現(xiàn)球門時射門。在《FIFA 18》的新手模式下,我們的機器人在6常比賽中打進了4粒球,比17/18賽季的Paul Pogba還多出1球。
(口音聽不太清,請自己練聽力)
小結(jié)
這只是一種創(chuàng)建機器人的方法,就結(jié)果來看,它還是挺積極的。訓(xùn)練中也曾出現(xiàn)兩個問題,一是機器人分不清敵我雙方,另一個則是它把球踢過半場就開始往回跑。關(guān)于第一點,作者的解決方案是把截圖和按鍵信息作為監(jiān)督學習的訓(xùn)練數(shù)據(jù),并始終用相同的主隊和不同的客隊比賽,久而久之,機器人就能分出哪些是自己人,哪些是對手。而關(guān)于第二點,一位網(wǎng)友提出了一種更為簡單的解決方案,就是以中線為界把球場分為兩部分,翻轉(zhuǎn)一側(cè)的截圖并調(diào)整方位,起到事半功倍的效果。
在有限的訓(xùn)練下,機器人已經(jīng)掌握了基本的比賽規(guī)則:朝球門移動并把球踢進網(wǎng)里。如果再經(jīng)過一段時間的訓(xùn)練,相信它能比現(xiàn)有的游戲AI更接近人類,而且更容易創(chuàng)建。此外,如果我們能擴展一下這個實驗,用真實的比賽數(shù)據(jù)來訓(xùn)練它,相信機器人的行為能更自然和現(xiàn)實。所以也許游戲開發(fā)商們可以換種方式來做AI了,你說對嗎,EA?
-
機器人
+關(guān)注
關(guān)注
211文章
28379瀏覽量
206913 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100712 -
AI
+關(guān)注
關(guān)注
87文章
30728瀏覽量
268886
原文標題:自制AI隊友:創(chuàng)建一個會玩《FIFA 18》的深度神經(jīng)網(wǎng)絡(luò)
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論