AI與游戲的化學(xué)反應(yīng)
對(duì)于研究者而言,游戲是完美的 AI 訓(xùn)練環(huán)境,教會(huì)人工智能打各種電子游戲一直是很多人努力的目標(biāo)。
AlphaGo 在圍棋上戰(zhàn)勝人類頂尖選手之后,DeepMind 與暴雪合作開展星際爭(zhēng)霸 2 的人工智能研究。去年 8 月,OpenAI 的人工智能也曾在 Dota 2 上用人工智能打敗了職業(yè)玩家。
那么如果是手機(jī)上流行的多人在線戰(zhàn)術(shù)競(jìng)技游戲(MOBA 游戲)《王者榮耀》呢?最近,匹茨堡大學(xué)、騰訊 AI Lab 等機(jī)構(gòu)提交到 ICML 2018 大會(huì)的一篇論文揭開了王者榮耀 AI 研究的面紗。
案例分析:《王者榮耀》MOBA 游戲 AI
《王者榮耀》中,玩家被分為對(duì)立的兩隊(duì),每一隊(duì)有一個(gè)基地,分別在游戲地圖的相反角落。每條線上有防御塔來防御,它可以攻擊在一定范圍內(nèi)的敵人。每支隊(duì)伍的目標(biāo)是推塔并最終摧毀對(duì)方的水晶。
該實(shí)驗(yàn)中采用 1v1 模式,使用AI分析1V1對(duì)戰(zhàn)中的游該方式,不同英雄的對(duì)戰(zhàn)方法。結(jié)合模擬戰(zhàn)斗訓(xùn)練,分析出英雄的強(qiáng)弱。
實(shí)驗(yàn)設(shè)置
系統(tǒng)的狀態(tài)變量是一個(gè) 41 維的向量,包含直接從游戲引擎獲取的信息,包括英雄位置、英雄健康度(血量)、小兵健康度、英雄技能狀態(tài)和不同結(jié)構(gòu)的相對(duì)位置。有 22 個(gè)動(dòng)作,包括移動(dòng)、攻擊、治療術(shù)(heal)和特殊的技能動(dòng)作,包括(扇形)非指向技能。
獎(jiǎng)勵(lì)函數(shù)的目標(biāo)是模仿獎(jiǎng)勵(lì)形態(tài)(reward shaping),使用信號(hào)組合(包括健康、技能、傷害和靠近水晶的程度)。研究者訓(xùn)練了五個(gè)《王者榮耀》智能體,使用的英雄是狄仁杰:
1、FBTS 智能體使用基于反饋的樹搜索算法進(jìn)行訓(xùn)練,一共迭代 7 次,每次進(jìn)行 50 局游戲。搜索深度 d = 7,rollout 長度 h = 5。每次調(diào)用 MCTS 運(yùn)行 400 次迭代。
2、第二個(gè)智能體因?yàn)闆]有 rollout 被標(biāo)注為「NR」。它使用和 FBTS 智能體相同的參數(shù),除了未使用 rollout。總體來看,它在批量設(shè)置上與 AlphaGo Zero 算法有些相似。
3、DPI 智能體使用 Lazaric et al., 2016 的直接策略迭代技術(shù),進(jìn)行 K = 10 次迭代。沒有價(jià)值函數(shù)和樹搜索(因?yàn)橛?jì)算限制,不使用樹搜索就可能進(jìn)行更多次迭代)。
4、AVI 智能體實(shí)現(xiàn)近似價(jià)值迭代(De Farias & Van Roy, 2000; Van Roy, 2006; Munos, 2007; Munos & Szepesvari ´ , 2008),K = 10 次迭代。該算法可被認(rèn)為是 DQN 的批量版本。
5、最后是 SL 智能體,它通過在大約 100,000 個(gè)人類玩游戲數(shù)據(jù)的狀態(tài)/動(dòng)作對(duì)數(shù)據(jù)集上進(jìn)行監(jiān)督學(xué)習(xí)來訓(xùn)練。值得注意的是,此處使用的策略架構(gòu)與之前的智能體一致。
AI分析模型
事實(shí)上,策略和價(jià)值函數(shù)近似在所有智能體中都是一樣的,二者分別使用具備五個(gè)和兩個(gè)隱藏層的全連接神經(jīng)網(wǎng)絡(luò)和 SELU(scaled exponential linear unit)激活函數(shù)(Klambauer et al., 2017)。
初始策略 π0 采取隨機(jī)動(dòng)作:移動(dòng)(w.p. 0.5)、直接攻擊(w.p. 0.2)或特殊技能(w.p. 0.3)。除了將移動(dòng)方向挪向獎(jiǎng)勵(lì)方向之外,π0 不使用其他啟發(fā)式信息。MCTS 是 UCT 算法的變體,更適合處理并行模擬:研究者不使用 UCB 分?jǐn)?shù)的 argmax,而是根據(jù)對(duì) UCB 得分應(yīng)用 softmax 函數(shù)所獲得的分布進(jìn)行動(dòng)作采樣。
與理論不同,在算法的實(shí)際實(shí)現(xiàn)中,回歸使用 cosine proximity loss,而分類使用負(fù)對(duì)數(shù)似然損失。由于在該游戲環(huán)境中我們無法「倒帶」或「快進(jìn)」至任意狀態(tài),因此采樣分布 ρ0 由第一次采取的隨機(jī)動(dòng)作(隨機(jī)的步數(shù))來實(shí)現(xiàn)并到達(dá)初始狀態(tài),然后遵循策略 πk 直到游戲結(jié)束。
為了減少價(jià)值逼近中的相關(guān)性,研究者丟棄了在這些軌跡中遇到的 2/3 的狀態(tài)。對(duì)于 ρ1,研究者遵循 MCTS 策略,偶爾帶入噪聲(以隨機(jī)動(dòng)作和隨機(jī)轉(zhuǎn)向默認(rèn)策略的方式)來減少相關(guān)性。在 rollout 中,研究者使用游戲內(nèi)部 AI 作為英雄狄仁杰的對(duì)手。
實(shí)驗(yàn)結(jié)果
由于該游戲幾乎是確定性的,因此研究者的主要測(cè)試方法是對(duì)比智能體對(duì)抗內(nèi)部 AI 對(duì)手的有效性。研究者還添加了游戲內(nèi)建 AI 的狄仁杰作為「完整性檢查」基線智能體。
為了選擇測(cè)試對(duì)手,研究者使用內(nèi)建 AI 狄仁杰對(duì)抗其他內(nèi)建 AI(即其他英雄)并選擇六個(gè)內(nèi)建 AI 狄仁杰能夠打敗的射手類英雄。研究者的智能體每一個(gè)都包含內(nèi)建狄仁杰 AI,使用智能體對(duì)抗測(cè)試對(duì)手。
下圖顯示了每個(gè)智能體打敗測(cè)試對(duì)手的時(shí)間長度(單位為幀)(如果對(duì)手贏了,則顯示為 20,000 幀)。在與這些共同對(duì)手的戰(zhàn)斗中,F(xiàn)BTS 顯著優(yōu)于 DPI、AVI、SL 和游戲內(nèi)建 AI。
但是,F(xiàn)BTS 僅稍微超出 NR 的表現(xiàn)(這并不令人驚訝,因?yàn)?NR 是另外一個(gè)也使用 MCTS 的智能體)。研究者的第二組結(jié)果幫助可視化了 FBTS 和四個(gè)基線的對(duì)決(全部都是 FBTS 獲勝):下圖顯示了 FBTS 智能體及其對(duì)手的金幣比例,橫軸為時(shí)間。
王者榮耀游戲中英雄對(duì)敵人造成傷害或者戰(zhàn)勝敵人時(shí),都會(huì)得到金幣,因此金幣比例大于 1.0(高出紅色區(qū)域)表示 FBTS 的良好性能。如圖所示,每個(gè)游戲結(jié)束時(shí) FBTS 的金幣比例都在 [1.25, 1.75] 區(qū)間內(nèi)。
同時(shí)也展示出幾種智能體戰(zhàn)勝其他射手英雄所用時(shí)間(以幀為單位,即幀的數(shù)量),數(shù)字越小越好。其中 FBTS 為新研究提出的智能體。