前言
DeepMind 發表 DQN 演算法在 Atari 遊戲上超過人類之後,遊戲 AI 研究迅速成為了研究熱點。遊戲 AI 研究火熱的一個側面是遊戲 AI 環境推陳出新,層出不窮。OpenAI Gym/Universe、ELF 和 SC2LE 等高水準的遊戲 AI 環境相繼問世。
1. 遊戲 AI 環境簡介
遊戲 AI 環境包括遊戲和適應 AI 呼叫的 API 介面。現在的遊戲 AI 環境可以分為兩類:單一遊戲 AI 環境和整合遊戲 AI 環境。單一遊戲 AI 環境是指標對一個遊戲構建的遊戲 AI 環境。因為針對星際爭霸的實在太有名了,我將之單獨作為一類。其中 TorchCraft 是 FaceBook 基於星際爭霸 I 的做的,後來阿里在上面加了 Python 介面推出了 TorchCraft-py。SC2LE 則是 DeepMind 和暴雪合作,基於星際爭霸 II 推出的。另外 Malmo 是基於 MineCraft,ViDoom 是第一人稱射擊類,Maze 是一個簡單的即時策略遊戲 (RTS),TorCS 是賽車模擬遊戲。整合遊戲 AI 環境則是指遊戲 AI 環境擁有多款遊戲,比較有名的整合遊戲 AI 環境有 OpenAI Gym/Universe 和 ELF。
除了這種劃分標準,我們還有一種劃分標準——遊戲目的。1)大部分遊戲 AI 環境是對現有遊戲進行改造;這些現有遊戲是專業遊戲團隊建立的,遊戲目的是人們的娛樂。2)但是也有少部分研究者認為,現有遊戲並不適合做 AI 訓練,因此自己設計和實現遊戲從而建立遊戲 AI 環境;Maze 和 ELF 就是這種思路的代表;遊戲目的是研究。
2. OpenAI Gym/Universe
OpenAI Gym 是 OpenAI 釋出的對比測試深度強化學習的框架,其框架是標準強化學習的框架,如下所示。
OpenAI Gym 的用法簡單明瞭。
後來 OpenAI 又釋出了一套工具,方便開發人員將世界上的遊戲移植到 OpenAI Gym 上,並使用這套工具移植超過 1 千款遊戲。這便是 Universe。OpenAI 的官博宣稱:Universe 是一個能在世界上所有的遊戲、網站和其他應用中,衡量和訓練 AI 通用智慧的軟體平臺。這樣宣稱是基於有了這套工具,就有了將世界上所有遊戲移植到 OpenAI Gym 的潛力。。。
OpenAI Gym/Universe 有一些問題。其中一個就是現有演算法能夠在大部分 OpenAI Gym/Universe 遊戲超過人類。換而言之,OpenAI Gym/Universe 大部分遊戲在學術上處於 Solved 狀態。這讓 OpenAI Gym/Universe 的學術價值沒有那麼大了。不過,OpenAI Gym/Universe 遊戲依然能夠為新演算法提供測試場景。畢竟新演算法在 Solved 的問題上比舊演算法高效很多,也很有學術價值。但遊戲 AI 研究的兩大重鎮:DeepMind 和 FaceBook 都自己搞一套,沒在 OpenAI Gym/Universe 做實驗。
3. ELF
ELF 是 FaceBook 推出的遊戲 AI 環境,包括圍棋和 ALF(一個 Atari 遊戲集)。除此之外,ELF 還實現了一個 RTS 遊戲引擎,在這個引擎的基礎上實現了一個奪旗遊戲、一個塔防遊戲和一個 mini-RTS。圍棋和 ALF 是點綴,ELF 的重心是 RTS 遊戲引擎上的 mini-RTS。
ELF 用 C++ 將許多並行的遊戲執行緒和每個執行緒的歷史資料封裝進去,每次 Python 迴圈時都可以得到一批次的遊戲狀態。這樣做有兩個好處:Python 操作簡便,不需要考慮分散式多執行緒的問題;同時 C ++ 實現的遊戲引擎效率高。
在 ELF 的 mini-RTS 中,作者內建了一款基於規則的 AI, 同時實現了基於 A3C 強化學習的演算法基線。從下面的對比圖,我們可以看出 A3C 的效果要比基於規則的 AI。
ELF 作者關心重點是 ELF 的效率,強調高速的遊戲 AI 環境對提升遊戲 AI 研究的迭代有重要意義。從下面對比圖來看,ELF 的效率非常高,速度比其他遊戲 AI 環境高了不少。ELF 為了研究去設計和實現遊戲,可以控制遊戲複雜,並且做很多框架和實現上的優化,從而實現極高的執行效率。
4. SC2LE
2017 年 8 月 10 號,DeepMind 聯合暴雪釋出了星際爭霸 II 遊戲 AI 環境 SC2LE, 其框架如下所示。
這是標準的遊戲 AI 環境的框架。對於一個複雜的遊戲 AI 環境框架來說,三個問題需要得到解決:怎麼抽象狀態,怎麼處理獎勵和怎麼抽象動作。對於怎麼處理狀態,SC2LE 使用三個部分的資訊,分別是小地圖、全地圖和非空間資訊。所謂非空間資訊包括資源擁有量、科技樹和建造佇列等資訊。
SC2LE 有兩種獎勵函式。一種是依照最終結果(1/勝,0/平,-1/負);另一種是基於暴雪給的 Bllizzard 分(資源採集量、科技樹升級、單位、建築的加權和),通過API可以實時獲取。顯而易見,第一種獎勵和我們的目標一致,但太稀疏了;第二種則反之。
因為星際爭霸的動作實在太多太雜,怎麼抽象動作是 SC2LE 的一個重點。SC2LE 將星際爭霸的動作空間整理成近 300 個動作函式,每個函式有相應的引數,引數一共有 13 種型別。比如在下圖中,圈選一部分單位的函式為 select_rect, 兩個整數參數列示選擇矩陣的兩個座標點。
遊戲 AI 打星際爭霸是非常難的任務,因此除了完整 1v1 遊戲之外,SC2LE 還很貼心地提供了 7 種迷你遊戲,包括指定位置移動、兩個機槍兵收集水晶礦碎片、擊敗小狗、擊敗小狗和爆蟲、收集資源、造機槍兵。雖然這種貼心到最後除了進一步證明了現有演算法的渣,並沒有什麼卵用。。。
為了驗證 SC2LE 的效果並提供基線,SC2LE 提供了三個基於深度強化學習的基線方法。其中兩個方法的網路結構分別是 Atari-net 和 FullyConv,第三個方法是 FullyConv 加 LSTM。
我們可以看到三種方法都被人打成狗了。。
完整遊戲打不過人,那試一試迷你遊戲模式。從下圖可以看出,稍微複雜一點的迷你遊戲上,這三種方法被人遠遠地超越了。圖中 DeepMind Human Player 是 DeepMind 的一位員工,而 StarCraft Grand Master 是一名專業選手。
從上面的結果來看,現有演算法對於 RTS 無解,RTS 遊戲是學術上 Un-Solved 的問題。在這裡,我們可以看出 “為了研究設計和實現遊戲” 做法的缺陷了:ELF 論文裡面有實現基於規則和基於 A3C 的遊戲 AI, 並報告了實驗對比;但我們還是會困惑現有演算法到底達到什麼水平,和人類相比怎麼樣; ELF 中的 mini-RTS 本身比較簡單同時沒有大量人類玩的經驗和技巧,因此無法給我們解答這些困惑。但 SC2LE 不一樣,星際爭霸 II 是被廣泛接受,並有大量人類體驗的實際遊戲。在星際爭霸上,演算法和人類對弈,人們對演算法的水平立馬就有一個直觀的感知。
5. 總結
遊戲 AI 環境推陳出新,層出不窮,得利於如火如荼的遊戲 AI 研究。現在遊戲 AI 環境極大豐富,就看遊戲 AI 演算法是在短期突破,還是長久守望了。
最後有一點私貨:目前我在和小夥伴們開發非完美資訊遊戲 AI 環境:RoomAI ( github.com/roomai/Room… )。RoomAI 的目標是提供一些非完美資訊遊戲環境和一些基線模型演算法,方便 AI 開發人員快速地構建、測試和對比自己的非完美資訊遊戲 AI 演算法。目前 RoomAI 已經支援德州、梭哈和七鬼,基本流程如下所示:玩家 AI 獲得遊戲環境給出的資訊,當前玩家 AI 選擇合適的動作,遊戲環境根據該動作推進遊戲邏輯;重複上述過程,直到分出勝負。
RoomAI 的用法也是簡單明瞭,下面是一個隨機玩家的示例。
from roomai.kuhn import *;
import roomai.common
import random
#### Define your player Bot ####
class KuhnPokerExamplePlayer(roomai.common.AbstractPlayer):
def receive_info(self, info):
if info.person_state.available_actions is not None:
self.actions = info.person_state.available_actions
def take_action(self):
idx = int(random.random() * len(self.actions))
return self.available_actions.values()[idx]
def reset(self):
pass
if __name__ == "__main__":
#### init ####
env = KuhnPokerEnv()
players = [KuhnPokerExamplePlayer() for i in range(2)]
#### playing ####
scores = KuhnPokerEnv.compete(env, players)
print (scores)
複製程式碼
如果對 RoomAI ( github.com/roomai/Room… )專案有興趣,歡迎同學們關注並 Star。
相關閱讀
機器學習能在遊戲開發中做什麼
格鬥類幀同步遊戲的優化
最快速的視野管理演算法
此文已由作者授權騰訊雲技術社群釋出,轉載請註明原文出處
原文連結:cloud.tencent.com/community/a…
海量技術實踐經驗,盡在騰訊雲社群!