騰訊 「絕悟」論文披露技術細節。

【論文閱讀】Mastering Complex Control in MOBA Games with Deep Reinforcement Learning

其論文首頁圖

  這個演算法運用強化學習框架,在多人在線戰術競技遊戲(MOBA)中 1v1 擊敗職業選手。

絕悟難在哪裡?

  Google DeepMind 早在 2015 年用深度 Q 網路就攻破了 Ataria 遊戲,在 2016 年更是基於監督學習和強化學習自我博弈訓練 AlphaGo 攻破了人類最後一道防線圍棋。而這次騰訊 AILab 提出來的演算法在 1v1 的 MOBA 中戰勝人類頂級職業選手,也是在像即時策略遊戲這種高度複雜的控制遊戲中的一個突破吧。

  為了對比圍棋和 MOBA 1v1 有啥不同,其論文在動作空間狀態空間、以及收集的人類數據電競筆電身特性方面做了對比,如表 1 所示:

圍棋與MOBA 1v1對比圖

  在 MOBA 中智慧體還得學會規劃運營攻擊防禦連招等等。這一系列的問題需要智慧體在長期的序貫決策過程中必須學會精確的動作控制響應。

  並且在王者榮耀中你控制的英雄會有不同的技能屬性不同的攻擊屬性不同的控制對象智慧體要有不同的玩法,這就需要你的演算法具備充分的魯棒性。

  最後說一下,這裡騰訊做的是 1v1,這將比 5v5 更難獲得監督的數據資源,因為大家玩王者榮耀好像都是玩的 5v5 的吧。

絕悟怎麼做到的呢?

設計了多模態的編碼輸入、關聯動作的解耦、探索剪枝機制和攻擊注意機制。

  所作出的貢獻如下:

  • 設計了一個大規模、Off-Policy 訓練方法。
  • 設計了一個神經網路用於 MOBA 動作控制,也就是設計了一個屬於 MOBA 控制的神經網路。
  • 神經網路的優化目標是一個多標籤的 proximal policy algorithm(PPO)目標。輸入給神經網路的特徵必須具備支援動作解耦的特性,注意力機制用於目標選擇,LSTM 網路學連招,並且把 PPO 改進了,改成了 dual-clip PPO 來確保其收斂。
  • 最終的結果就是用不同類型的英雄可以在王者榮耀中擊敗職業選手。

絕悟系統設計

  動作空間太大方差會比較大,騰訊設計了一個 scalable and loosely-coupled(高可擴展低耦合)結構,主要由四塊組成:Reinforcement Learning (RL) Learner (強化學習智慧體), Artificial Intelligence Server(人工智慧伺服器), Dispatch Module(調度模組) and Memory Pool(記憶庫)。

系統設計

  在 AI 伺服器裡面智慧體與環境進行交互,分發模組簡單地收集、壓縮、傳輸數據。

   AI server generates episodes via self-play with mirrored policies (Silver et al. 2017). The opponent policy sampling is similar to (Bansal et al. 2017). Based on the features extracted from game state, hero action is predicted using Boltzman exploration (Cesa-Bianchiet al. 2017), i.e., sampling based on softmax distribution

   為了加快每回合的推理速度,它們採用了 FeatherCNN^{2}。官方介紹如下:

   FeatherCNN is a state-of-the-art inference engine for mobile devices: //github.com/Tencent/FeatherCNN

  分發模組就從 AI 伺服器裡面拿數據,組成獎勵、特徵、和動作概率送給記憶庫。之後用於訓練。 The gradients in the RL learners are averaged through the ring allreduce algorithm (Sergeev and Balso 2018)。智慧體使用分享記憶體而不用 Socket 與記憶庫通訊,減少 IO 開銷,提速。

絕悟演算法設計

絕悟演算法設計流程圖

  • target attention mechanism機制用於幫助神經網路選擇目標。
  • LSTM用於幫助 AI 學習連招造成有效的高傷害。
  • 控制端輸出解耦,形成了一個多標籤 PPO 優化目標
  • 一種game-knowledge-based的剪枝演算法action mask被設計出來用於交互過程中更好地探索。
  • dual-clipped PPO 演算法用於保證收斂。

PPO演算法對比圖

  這裡動作解耦這一塊感覺還是可以,感興趣的可以閱讀原文,仔細揣摩,看個熱鬧的到這就可以了,基本思想以及演算法大概框架也差不多了。

絕悟訓練細節概要

  • a total number of 600,000 CPU cores encapsulated in Dockers。
  • 1,064 Nvidia GPUs (a mixture of Tesla P40 and V100)。
  • 1600 vector features containing observable unit attributions and game information, and 2 channels of image features read from gamecore (the obstacle channel and the hero position channel).
  • we have experiences collected per day per hero is about 500 years human data in the 1v1 mode of Honor of Kings.
  • We use generalized advantage estimation (GAE) (Schulman et al. 2015) for reward calculation

訓練過程的Elo分數

  文章中還有更多細節,這裡我也不一一摳了,以後要是這篇文章程式碼開源了(官方說要開源),有空了再說吧,我複習考試去了,哭了。

訓練過程中一些指標的變化

  看完的感覺就是,沒有預期想像感覺中的那樣精妙絕倫,那種感覺還是保留在 AlphaZero 那。但是這個多目標 PPO 優化感覺還可以。具體的訓練細節沒扣,準備考試了去了,哭了。

原論文鏈接://arxiv.org/abs/1912.09729

微信公眾號