日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

利用Deep Reinforcement Learning训练王者荣耀超强AI

發布時間:2023/12/4 ChatGpt 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Deep Reinforcement Learning训练王者荣耀超强AI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mastering Complex Control in MOBA Games with Deep Reinforcement Learning

      • (一)知識背景
      • (二)系統架構
      • (三)算法結構
        • 3.1 Target Attention
        • 3.2 利用LSTM學習技能連招釋放
        • 3.3 Decoupling of Control Dependencies
        • 3.4 Action Mask
        • 3.5 Dual-Clip PPO
      • (四)實驗配置

????????2019年12月20號,騰訊AI Lab發布了一篇paper,稱他們利用深度強化學習技術訓練了出了一個超強AI,該AI能輕松擊敗頂尖水平的職業選手。在論文的最后貼出了AI與多名職業選手的交戰情況:

從上圖可知,每位選手使用自己最擅長的英雄與AI進行1V1對戰,無一例外都輸給了AI,除了TS的Nuan Yang使用韓信拿下了一個AI人頭外,其余玩家都沒能擊殺AI一次。那么騰訊到底是怎樣訓練自己AI的呢?在發布的這篇paper中介紹了整個訓練系統的框架以及算法流程,下面就來關注一下騰訊是如何完成自己超強AI訓練的吧。

(一)知識背景

????????當前使用AI玩對抗性游戲的主要分兩種:以星際為首的RTS游戲,和以DOTA為首的MOBA游戲。兩種游戲側重的學習難點不同:對于星際類的游戲來說,單個unit的行為較為簡單,主要學習的是如何進行兵力組選擇和進攻策略;而對于DOTA類的游戲來說,對于一個英雄的操作來說是相當復雜的(涉及到技能連招,攻擊目標選擇,走位等等),因此這類游戲主要學習的是單英雄的操控。
論文中介紹,訓練AI的方法同樣也是基于actor-critc的神經網絡,但在此基礎上針對性的做出了一些改進:

  • 利用人類先驗知識來減少動作探索空間。
  • 將一個人為操作下的多個子操作獨立開來。
  • 設定攻擊目標選定網絡,用于選定攻擊目標。
  • 使用改進PPO算法,論文中稱為dual-clip PPO。
  • 使用LSTM來學習英雄技能連招的釋放。
  • 在系統設計方面,為了快速產生大規模的數據樣本,使用多個不同游戲場景同時產生數據并存到Memory Pool中,并使用多個RL學習器并行學習。
  • 在訓練完成后,期望訓練AI能夠完成進攻、誘導、防御、欺騙和技能連招釋放的能力。由于游戲中英雄之間技能相差非常大,因此對每個英雄來說都需要訓練一個獨立的控制AI。對于每一個英雄,AI Lab使用18,000個CPU核以及48張P40顯卡(¥14600一張)進行訓練學習。每張GPU每秒可訓練80000個樣本數據,算下來每天訓練的數據等于人類500年的學習量。

    (二)系統架構

    ????????為了加快訓練速度,這就需要加大batch size。針對這個問題,AI Lab設計了四個特別的模塊,這些模塊之間彼此獨立:Reinforcement Learning Learner、AI Server、Dispatch Module 和 Memory Pool。

    ? AI Server 是為了獲取樣本數據而設計的模塊,在Server中涵蓋了AI與環境之間交互的所有邏輯。Server會產生多組episodes,在這些episodes中我方AI使用來自RL Learner的行為策略,而對手的行為則是使用Boltzman 探索算法(一種基于游戲狀態特征提取的算法)進行預測。

    ? Dispatch Module 的用于對Server 產生的sample數據(回報、特征、行為選擇概率等)進行收集,將這些數據進行壓縮后存儲到Memory Pool中去。一個Dispatch Module可以連接多個AI Server以便于接收多個Server的輸出數據以增加Dispatch Moudule的利用率(畢竟壓縮加傳輸速度要遠遠快于Server生成一個episode的速度)。

    ? Memory Pool 主要用于對訓練數據的存儲。它使用一個循環隊列來存儲數據,根據數據生成時間進行排序。由于是循環隊列模式,因此支持變長樣本。

    ? RL learner 是一個分布式的訓練環境,由于需要大規模的batch size,多個RL learners分別去獲取Memory Pool中的樣本數據,并將這些Learners捆綁在一起(當成一個大的RL Learner)。那么每個Learner都會得到不同的梯度結果,如何去統一這些梯度結果呢?該論文使用 ring allreduce algorithm 對所有梯度值進行平均。將平均后的值當成每一個Leaner的梯度進行計算。

    (三)算法結構

    ????????訓練AI使用基于actor-critc的神經網絡,其輸入有3個:游戲畫面向量fif_ifi?,所有種類單位的狀態向量集fuf_ufu?和游戲狀態向量fgf_gfg?(包括游戲進行時間、炮臺數量等游戲環境信息);輸出動作有6個:技能按鈕的選擇、移動搖桿x偏移、移動搖桿y偏移、技能搖桿x偏移、技能搖桿y偏移和選擇哪一個目標對象。論文在普通actor-critic的基礎上針對性的做出了一些改進:

  • 設定攻擊目標選定網絡,用于選定攻擊目標。
  • 使用LSTM來學習英雄技能連招的釋放。
  • 將一個人為操作下的多個子操作獨立開來。
  • 利用人類先驗知識(action mask)來減少動作探索空間。
  • 使用改進PPO算法,論文中稱為dual-clip PPO。
  • 整個算法結構如下圖,下面針對每一個點進行闡述:

    3.1 Target Attention

    ????????為了實現任務目標的選取,算法中構建了一個目標選擇模塊(target attention)。整個算法流程如上圖所示:首先需要提取出圖片特征fif_ifi?、向量特征fuf_ufu?以及游戲狀態信息fgf_gfg?,其中fif_ifi?由卷積層hih_ihi?提取而得,fuf_ufu?fgf_gfg?都是由全連接層提取而得。其中,每個unit都有一個fuf_ufu?向量,但由于unit的數量是會變的(比如兵線和炮塔的數量都會隨著時間變化),因此通過max-pooling的方法將同一類的unit映射為一個定長向量。此外,每一個fuf_ufu?向量在經過若干層全連接層后都會被拆分成兩個輸出——一個輸出representation of unit用于代表該類單位的特征用于后面的action選擇,另一個輸出attention keys將被用于幫助target attention做決策。這里可以理解為:由于Attention模塊是直接接收了fuf_ufu?向量作為輸入的,因此可認為,在選擇哪一個敵方單位作為target的時候,目標選擇模塊會根據每一類unit的當前狀態信息attention keys作為參考來進行決策。

    3.2 利用LSTM學習技能連招釋放

    ????????當有了每類unit的表征信息representation of unit后,我們將所有的表征向量、圖片向量huh_uhu?fuf_ufu?經過了一個convolution層得到的結果)和游戲狀態向量hgh_ghg?fgf_gfg?經過一個全連接層后得到的結果)全部聯合起來,并輸入一個LSTM網絡,該網絡用于5個基本行為決策(包含了如何進行技能連招搭配):技能按鈕的選擇、移動搖桿x偏移、移動搖桿y偏移、技能搖桿x偏移、技能搖桿y偏移。由于LSTM具有處理時序信息的能力,因此它能夠學會釋放技能Button的選擇順序。

    3.3 Decoupling of Control Dependencies

    ????????這個部分主要功能是將一個人為操作分解為若干個獨立的子操作。這部分的思想和簡單:人為在釋放技能的時候不但要選擇釋放哪一個技能,還需要拖動技能按鈕來選擇釋放方向,這是一個人為操作。但如果把這個人為操作直接當作一個action的話,action space會非常大(技能按鈕和方向的組合),因此將一個人為操作分解為多個獨立的子行為(技能選擇是一個action,釋放方向又是另一個獨立的action),這樣就減少了動作空間。

    3.4 Action Mask

    ????????action mask的引入是為了對動作空間進行剪枝以降低探索收斂的難度。action mask是指利用一些人類的先驗知識來告訴AI"不應該"做什么。由于在王者的游戲環境中,動作空間非常巨大,因此探索空間也就很大,這時候加入人為只是的引導就能夠使AI在學習的時候進行"有效探索"。舉例來說,如果一個AI在靠近野區墻壁的時候,企圖探索"往墻壁里面行進"這個行為時,action mask會直接告訴AI這個action是不必要的,一定不會有好的reward效用,因此AI就會放棄這一次的"無用探索"。

    3.5 Dual-Clip PPO

    ????????在傳統的PPO算法中,為了避免計算出的修正系數πθ(a∣s)πθold(a∣s)\frac{\pi_{\theta}(a|s)}{\pi_{{\theta}old}(a|s)}πθold?(as)πθ?(as)?過大(下面用r(θ)r(\theta)r(θ)表示修正系數),會進行一個"上限"限定,當超過這個上限就直接被clip掉,公式如下:
    L(θ)=min(r(θ)A^t,clip(r(θ),1?ε,1+ε)A^t)L(\theta) = min(r(\theta)\hat{A}_t, clip(r(\theta), 1-\varepsilon, 1+\varepsilon)\hat{A}_t) L(θ)=min(r(θ)A^t?,clip(r(θ),1?ε,1+ε)A^t?)
    這樣是work的,但是卻忽略了A^t\hat{A}_tA^t?為負時的情況,由于取得是min()min()min(),因此若A^t\hat{A}_tA^t?為負時會變成梯度絕對值越大越被選擇,這樣就就違背了"梯度上限"的設計初衷。為此,該論文在原本的clip基礎上又做了一次負值的下限clip:
    L(θ)=max(min(r(θ)A^t,clip(r(θ),1?ε,1+ε)A^t),cA^)L(\theta) = max(\ min(r(\theta)\hat{A}_t,\ clip(r(\theta),\ 1-\varepsilon,\ 1+\varepsilon)\hat{A}_t),\ c\hat{A}) L(θ)=max(?min(r(θ)A^t?,?clip(r(θ),?1?ε,?1+ε)A^t?),?cA^)
    其中,ccc是一個超參數,用于限定clip下限,下圖(a)為原本的PPO算法,(b)為dual-PPO算法。

    (四)實驗配置

    ????????至此,算法和系統部分就介紹完了,最后我們來看一看王者訓練模型時的一些參數設置吧:

    • ε\varepsilonε in dual-PPO →\rightarrow 0.2
    • ccc in dual-PPO →\rightarrow 3
    • γ\gammaγ in actor-critic →\rightarrow 0.997
    • Learning rate of Adam Optimizer →\rightarrow 0.0001
    • Using GAE (generalized advantage estimator) to calculate the reward which λ\lambdaλ →\rightarrow 0.95

    其中,GAE是一種有效減少梯度估計方差的方法,現在已經被廣泛應用在各種策略梯度估計的方法上。以上便是這篇論文介紹的全部內容。

    總結

    以上是生活随笔為你收集整理的利用Deep Reinforcement Learning训练王者荣耀超强AI的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。