本篇是我在CASIA實習結業(yè)報告珍手,另可參閱實習感受垦巴。
目錄
簡介
pysc2_maddpg 這個項目是我在中科院自動化所的實習代碼光绕,主要是利用深度強化學習的MADDPG算法得湘,應用到暴雪開源的SC2LE強化學習開發(fā)環(huán)境,來訓練星際爭霸2中一個簡單的對抗環(huán)境绷耍。
功能
利用Open AI的MADDPG多智體聯(lián)合算法吐限,訓練了星際爭霸2——sc2le環(huán)境中最基本5v5對抗中的收割者鲜侥。
- 當動作空間為3褂始,初始態(tài)為攻擊態(tài)時,勝率達到90%描函。
- 通過訓練崎苗,收割者能夠實現(xiàn)索敵靠近。
- 能夠基本協(xié)同作戰(zhàn)舀寓,以獲得更高勝率胆数。
- 考慮血量和己方的攻擊力,選擇作戰(zhàn)攻略(目前還未實現(xiàn))互墓。
項目
Papers
papers是項目的理論支撐必尼,包括項目的參考的論文。
Document
Document是前人文檔券盅。
maddpg
maddpg是代碼的核心部分,包含maddpg算法和pysc2環(huán)境兩個部分膛檀。
- sc2_env是項目對于pysc2環(huán)境的接口锰镀,包含combined_action.py和runner.py兩個文件。其中combined_action.py是動作空間文件咖刃,規(guī)定了動作個數泳炉,在在3動作空間會有更好的表現(xiàn)。runner.py將我們的agent接入了pysc2環(huán)境嚎杨。
- maddpg是項目調用的maddpg算法的部分花鹅,包含trainer,common和agent.py文件磕潮。其中trainer和common是MADDPG自帶的部分翠胰,用于規(guī)定算法容贝;agent.py文件是我們自己實現(xiàn)的agent類,具體可以實現(xiàn)一些特殊的動作之景,如選擇單元斤富、選擇控制組、獲得當前狀態(tài)等等锻狗。
csv文件
項目的csv文件是數據記錄文件满力,記錄了實驗的相關數據。
load文件
項目的load文件將會顯示試驗的結果轻纪。
- load_win.py顯示了勝率隨著局數的變化油额。
- load_loss.py顯示了訓練的loss曲線。
train_maddpg.py
train_maddpg.py訓練總文件刻帚,配置好環(huán)境之后運行的文件潦嘶。
設計思路
游戲采用最簡單的5v5場景,為了讓收割者們通過學習學到好的策略崇众,設計采用condition-strategy-rewards的基本構架掂僵。
condition
為了讓收割者們有更好的表現(xiàn),我們需要讓收割者們上場殺敵顷歌。殺敵的時候就需要考慮血量和攻擊力兩個方面锰蓬。condition暫時還未實現(xiàn),是未來工作的一部分眯漩。
假設我方還有m個幸存的收割者芹扭,血量分別是,收割者的攻擊力大體上相同赦抖,所以我方此時的攻擊力為
舱卡,μ是常數。同理摹芙,對方還剩下n個幸存者灼狰,血量分別是
,攻擊力為
浮禾。那么敵我雙方團滅時間大致為
和
交胚。當我方團滅時間大于對方時候,
時盈电,攻擊蝴簇。
考慮pysc2內置的reward是當前幀減去前一幀的score,為了獲得更大score匆帚,我們應該讓號收割者遠離熬词,并派遣其他收割者攻擊。
其余情況均遠離。
Github上可能無法加載condition互拾,condition圖片版點擊此處歪今。
strategy
采取攻擊策略有助于提升勝率,但是盲目攻擊又將帶來損失颜矿,因此我們制定了一套該場景下的策略寄猩。
- 主動參兵有獎:設置distance,當我方收割者與離之最近的敵方收割者拉近距離時候會有獎勵骑疆;若已經進入戰(zhàn)場田篇,不再通過distance增加reward。
- 支援隊友有獎:當拉近距離之后箍铭,孤軍奮戰(zhàn)是不好的策略泊柬,因此當我們所有的收割者都執(zhí)行攻擊動作的時候,有一個相應的獎勵诈火。
- 戰(zhàn)場殺敵有獎:此項由于涉及到score兽赁,是pysc2內設的,因此不予考慮柄瑰。
rewards
rewards在agent.py闸氮,runner.py和train_maddpg.py中都有涉及,范圍較廣教沾,暫時考慮了兩種rewards,分別是pysc2內置的score帶來的reward
和距離拉近帶來的rew_d译断。
項目結果
代碼截圖
對戰(zhàn)截圖
結果截圖
- 在初始化為攻擊狀態(tài)授翻,動作空間為3個動作時,勝率可以達到90%多孙咪。
- 在初始化為任意狀態(tài)堪唐,動作空間為3個動作時,勝率可以達到50%多翎蹈。
- 在初始化為任意狀態(tài)淮菠,動作空間為7個動作時,勝率只有20%左右荤堪。
參考
前人工作
【1】星際爭霸2人工智能研究環(huán)境SC2LE初體驗
【2】邁向通用人工智能:星際爭霸2人工智能研究環(huán)境SC2LE完全入門指南
參考網頁
【1】強化學習基本介紹
【2】DNQ介紹
【3】Intel——DNQ
【4】MADDPG論文翻譯
【5】MADDPG官方文檔
【6】MADDPG簡介
【7】DDPG詳解
【8】深度學習A3C