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