打敗王者榮耀頂尖職業玩家的強化學習系統

AAAI2020接收了一篇來自騰訊的強化學習論文Mastering Complex Control in MOBA Games with Deep Reinforcement Learning[1],通過對系統架構的設計和算法的創新,騰訊改進的強化學習系統在王者榮耀1v1場景下能夠擊敗頂尖職業選手,本文,我們就來看一下這個強化學習系統的詳細內容吧!

摘要

多人在線競技遊戲( Multi-player Online Battle Aren,MOBA),是一個控制操作非常複雜的強化學習問題。在MOBA遊戲1 v 1場景下涉及的狀態和動作空間,要遠比傳統的1 v 1遊戲複雜的多,所以,這也導致在這個問題中很難搜索到達到人類水平的控制策略。因此,在這篇文章中騰訊AI Lab分別在系統設計算法方面都做了大量的優化。

系統設計方面:設計的強化學習系統具有低耦合且擴展性較高的優點,這樣他就可以實現在大規模問題上進行高效探索的可能性。

算法方面:在算法方面,加入了控制解耦、動作掩膜、目標註意力機制,同時對經典PPO算法進行了改進。

通過這些誒方面的改進,在王者榮耀1 v 1測試場景下,人工智能智能體能夠擊敗頂尖的職業玩家。

PPO:

Proximal Policy Optimization,中文翻譯為近端優化策略,它是一種基於Policy Gradient的強化學習算法。

系統設計

AAAI 2020 | 打敗王者榮耀頂尖職業玩家的強化學習系統

考慮到複雜的智能體控制會引起隨機梯度的高方差這個問題,較大的訓練批次有助於加速訓練過程。因此,在本文中,設計了一個可伸縮、松耦合的系統架構,這樣可以實現數據並行的功能。在這個系統中,包括4個模塊,

  • 強化學習的學習系統(RL Learner)
  • AI服務器(AI Server)
  • 調度模塊(Dispatch Module)
  • 內存池(Memory Pool)

系統概述

上圖中展示的就是完整的強化學習系統,它包括4個部分。其中,AI服務器(AI Server with Game Env)和調度模塊,本質上都是屬於硬件層面,都是由AI服務器組成(後續AI服務器指代AI Server with Game Env)。其中,AI服務器實現了AI模型與環境的交互功能。調度模塊是一個由多個AI服務器組成的工作站,它的功能是樣本的收集、壓縮、傳輸等。內存池是用於數據存儲,它為RL Learner提供了訓練樣例。

通過這樣的設計,這些模塊之間可以實現

解耦,可以靈活的配置,因此,研究人員就可以把注意力專注於算法設計方面。

各模塊詳細的介紹如下。

AI Server

AI Server包含了遊戲環境和AI模型之間的一種交互邏輯,AI Server首先基於softmax分佈進行採樣,然後探索一個策略,然後根據採樣的策略施加動作給遊戲核心。遊戲核心執行之後會連續返回獎懲值(Reward)和下一個狀態。

調度模塊

如同前面提到的那樣,調度模塊是由多個AI Server綁定到一起組成的工作站,它的功能是從AI服務器收集數據,這些數據包括獎懲值、特徵、動作概率。

這些數據首先會被壓縮並打包,然後傳輸給內存池。

內存池

內存池同樣也是服務器,其內部實現了內存高效的循環隊列,它用於數據的存儲,能夠支持各種長度的樣本,並且能夠根據生成時間進行數據採樣。

RL Learner

RL Learner是一個分佈式的訓練系統,為了使用加速策略更新,系統中集成多個RL Learner並行的從內存池中讀取數據。為了降低IO成本,RL Learner使用共享內存而不是socket來與內存池進行通信,這樣可以達到2-3倍的速度提升。

最終,RL Learner訓練的模型會被同步到AI Server中。

在這個系統中,經驗的生成和參數的學習是解耦的,這種靈活的機制可以讓AI Server和RL Learner具有很強的伸縮性。另外,為了解決AI Server和RL Learner之間的通信瓶頸,RL Learner訓練的模型會從主節點以點對點的方式同步到AI Server中。另外,調度模塊和內存池的加入,使得數據的存儲和傳輸更加流暢。

算法設計

AAAI 2020 | 打敗王者榮耀頂尖職業玩家的強化學習系統

為了更加高效的訓練網絡,提出了幾項新的策略,

  • 注意力機制
  • 應用LSTM
  • 改進PPO
  • action mask

注意力機制的引入能夠有助於在遊戲對戰中的目標選擇。

LSTM被用於英雄連擊時組合動作的學習,這對於造成傷害至關重要。

改進PPO包括兩個方面:第一,通過控制依賴項的結構,提出了多標籤PPO算法;第二,提出dual-clips PPO算法,這樣能夠保證大批量處理過程中的收斂性。

動作掩碼(action mask)是在先驗的遊戲知識上提出的一種指導算法,它能夠指導強化學習的探索過程。

到這裡先對算法部分有一個大概的認識,下面,對照上圖解釋一下詳細的算法流程。

輸入包括3個方面的特徵,

  • 圖像特徵​
  • 可觀測到的屬性特徵​,例如,玩家選擇的英雄、對手選擇的英雄、英雄的生命值等
  • 可觀測到的遊戲狀態信息​,例如,遊戲時間、被摧毀的塔

然後對這3種特徵分別運用卷積全連接+激活全連接進行編碼,生成​、​、​,這裡需要注意的是​經過一系列的全連接和激活運算之後被分割成了兩個部分:單元的表示​和目標的注意力鍵值​。

隨後利用全連接和LSTM對策略進行建模,​、​、​,這些編碼經過LSTM映射之後生成​,隨後通過全連接預測出一個動作a,動作按鈕包括移動、攻擊、技能釋放等。

到這裡,就把從觀測信息到施加動作整個流程給串起來了,但是,實際的訓練過程中遠不止這些,在很多細節處非常複雜,所以,需要進一步的詳細優化。

在MOBA遊戲中,一個動作往往有多個不同的標籤,因此,很難對不同標籤之間的關係進行建模,例如,技能類型與技能方向之間的相關性。

為了解決這個問題,文中提出一種獨立的對待每一個標籤的方式(控制關係依賴的解耦),這樣就能消除不同標籤之間的相關性(多標籤PPO)。

解耦之後就帶來兩個好處,

  • 簡化策略結構
  • 增加了動作的多樣性

然而,隨著它帶來優點的同時,它也帶來了一項弊端:由於MOBA遊戲中動作和狀態空間巨大,動作的解耦進一步增加了訓練的複雜性。

為了提高訓練的效率,動作掩碼(action mask)就被引用進了策略的輸出層。它是建立在人類玩家豐富先驗知識的基礎之上,加入了動作之間的相關性,這樣就可以減少強化學習中的探索過程。

簡而言之,action mask的應用能夠之間剔除一些不合理的地方,在一些不需要探索的地方就不去探索,這樣能夠減少訓練的複雜性,這裡不合理的地方 包括4個方面,

  • 物理禁區,例如,地圖中的障礙物
  • 技能和攻擊的可用性,例如,在冷卻時間內不可使用
  • 被對手英雄技能或者裝備控制•英雄和物品本身的一些限制

到了這裡,就還有一項沒有提及--dual-clips PPO算法

介紹這個改進算法之間首先要簡單介紹一些原始的PPO算法的思想:PPO算法是一種基於Policy Gradient的強化學習算法,根據OpenAI[2]的解釋,之前的Policy Gradient算法對步長非常敏感,策略更新過程中如果步長過小,那麼策略 更新的速度會非常緩慢。反之,如果策略更新步長過大,那麼策略更新波動會非常劇烈,很難收斂。

因此,PPO就應運而生了,它採用新策略與老策略之間的比值來限制策略的更新幅度,這樣策略的更新對步長就不再那麼敏感。簡而言之,PPO在原來Policy Gradient加入了一個關鍵的部分,策略比值,

但是,比值可能會非常大,這樣他就會導致最大化RL目標函數時產生過大的偏差。

雖然,近幾年針對這個問題提出了一些PPO算法的改進算法,但是大多數都屬於on-policy策略,而本文設計的架構是一種off-policy框架,所以,這些改進算法就不再適用於這樣的場景。因此,本文提出了一種支持大規模分佈式訓練的dual-clip PPO算法。

實驗結果

AAAI 2020 | 打敗王者榮耀頂尖職業玩家的強化學習系統

從上表中可以看出,分別用貂蟬、狄仁傑、露娜、韓信、花木蘭幾個不同類型的英雄對比了AI和專業級選手的結果,發現從各項指標方面AI都佔據絕對的優勢。

AAAI 2020 | 打敗王者榮耀頂尖職業玩家的強化學習系統

另外,在看一下多次比賽之後AI的勝率高達99.81%。


分享到:


相關文章: