「實戰」重現DeepMind星際爭霸強化學習演算法
新智元推薦
Github 鏈接: https://github.com/XHUJOY/pysc2-agents
關於PySC2環境簡介的文章已經有許多了,在這裡我們不再詳細介紹了。給大家一個傳送門:邁向通用人工智慧:星際爭霸2人工智慧研究環境SC2LE完全入門指南(https://zhuanlan.zhihu.com/p/28434323),按照教程相信大家可以對PySC2的API有一個詳細的了解。
SC2強化學習演算法隨著PySC2環境公布的同時,DeepMind在他們的論文中介紹了3種不同的強化學習智能體,分別為Atari-net Agent、FullyConv Agent和FullyConv LSTM Agent。由於這三種智能體具有相似的學習演算法和參數,只是使用了不同架構的神經網路來提取特徵。所以接下來的內容我們都是以FullyConv Agent為例進行介紹。
在原論文中,作者使用了經典的A3C演算法,即非同步的actor-critic演算法,在這類演算法中actor作為策略函數生成要執行的動作,critic作為價值函數負責評估策略函數的好壞。在SC2強化學習演算法中,作者使用了神經網路去擬合策略函數和價值函數,具體網路架構為:
我們按照論文給出的細節簡單重現了論文中的演算法,並達到了基準的80%左右。接下來將詳細介紹實現的過程與使用方法。
演算法輸入與輸出
我們使用了所有的Screen特徵圖和Minimap特徵圖,以及可執行動作作為非空間特徵作為演算法的輸入;輸出為所有非空間動作和空間動作的概率。筆者發現,由於輸出的動作空間巨大,所以這也是星際2的難點所在。
直接運行測試代碼
首先,從Github上拷貝源代碼並從這裡下載預訓練好的模型,並安裝依賴庫pysc2和tensorflow,就可以運行測試代碼了:
git clone https://github.com/xhujoy/pysc2-agents && cd pysc2-agents python -m main --map=MoveToBeacon --training=False
你將會得到類似下面的效果圖,下面效果圖為windows下結果:
運行訓練代碼
python -m main --map=MoveToBeacon
訓練代碼對機器性能要求較高,筆者是在Nvidia K40上進行訓練的,並且訓練存在較大隨機性,在原論文中DeepMind每個模型進行了100次試驗(望塵莫及)選擇最好的模型。
總結這篇文章主要向大家介紹了SC2的強化學習演算法,並基本重現了論文中的方法。筆者在重現過程發現,星際2的動作空間巨大獎勵卻很稀疏,總結一句話,完全基於學習的星際2智能體真的好難啊。
代碼已經開源,歡迎一起討論學習。
(本文經授權轉載自作者知乎專欄,特此感謝)
點擊閱讀原文可查看職位詳情,期待你的加入~


※「李航確認加入今日頭條」微軟華為BAT,最新一輪AI掌門人爭奪
※一文讀懂量子機器學習:量子演算法基石已經奠定
※大神Hinton:深度學習要另起爐灶,徹底拋棄反向傳播
※李航確認加入今日頭條:微軟華為BAT,最新一輪AI掌門人爭奪
※「AI學會「以牙還牙」」OpenAI發布多智能體深度強化學習新演算法LOLA
TAG:新智元 |