丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開(kāi)發(fā)者 正文
發(fā)私信給汪思穎
發(fā)送

0

《星際爭(zhēng)霸2》人工智能研究環(huán)境 SC2LE 初體驗(yàn)

本文作者: 汪思穎 2017-08-17 16:52
導(dǎo)語(yǔ):邊游戲邊做研究吧

雷鋒網(wǎng)按:本文原作者Flood Sung、杜克,原文載于作者的知乎專欄——智能單元,雷鋒網(wǎng)經(jīng)授權(quán)發(fā)布。

1 前言

2017年8月10號(hào),DeepMind聯(lián)合暴雪發(fā)布了星際爭(zhēng)霸2人工智能研究環(huán)境SC2LE,從而使人工智能的研究進(jìn)入到一個(gè)全新的階段。這次,研究人工智能的小伙伴們可以邊玩游戲邊做研究了。

為了讓更多的朋友了解SC2LE研究環(huán)境,我們?cè)诘谝粫r(shí)間對(duì)其進(jìn)行安裝測(cè)試,并對(duì)DeepMind發(fā)布的pysc2代碼進(jìn)行分析,初步了解基于pysc2的RL開(kāi)發(fā)方法。下面我們將一一進(jìn)行介紹。

2 測(cè)試使用設(shè)備

  • Macbook Pro 13inch (MacOS Sierra)

  • Alienware 13inch (Ubuntu 14.04)

3 安裝方法

3.1 Mac環(huán)境下的安裝

(1)安裝pysc2

pip install pysc2

如果權(quán)限不夠,就加上sudo:

sudo pip install pysc2

程序會(huì)自動(dòng)安裝各種依賴:

 Installing collected packages: google-apputils, pygame, future, pysc2
 Successfully installed future-0.16.0 google-apputils-0.4.2 pygame-1.9.3 pysc2-1.0

(2)然后在國(guó)服下載mac版的星際爭(zhēng)霸客戶端:https://www.battlenet.com.cn/account/download/ ,mac版的,然后安裝,30個(gè)G,3.16.1版本。

(3)下載完畢可以運(yùn)行游戲就OK

(4)下載Map Packs,mini-game和replay:Blizzard/s2client-proto,https://github.com/deepmind/pysc2/releases/download/v1.0/mini_games.zip

(5)進(jìn)入星際爭(zhēng)霸2的目錄

(6)創(chuàng)建Maps文件夾

(7)將Map Packs和mini-game壓縮包都解壓到Maps目錄下,密碼是iagreetotheeula

(8)打開(kāi)終端,輸入python -m pysc2.bin.agent --map Simple64進(jìn)行測(cè)試。

下面為示意圖:

《星際爭(zhēng)霸2》人工智能研究環(huán)境 SC2LE 初體驗(yàn)

《星際爭(zhēng)霸2》人工智能研究環(huán)境 SC2LE 初體驗(yàn)

大家可以看到在Mac下既顯示了原始的游戲畫面,又顯示了feature的畫面。

3.2 Ubuntu環(huán)境下安裝

(1)安裝pysc2 (和Mac相同)

sudo pip install pysc2

(2)下載Linux版本的星際2: Blizzard/s2client-proto  并解壓在Home目錄下,解壓密碼:iagreetotheeula

(3)下載Map Packs,mini-game:Blizzard/s2client-proto,https://github.com/deepmind/pysc2/releases/download/v1.0/mini_games.zip。將文件解壓到~/StarCraft2/Maps 下。

(4)打開(kāi)終端,輸入python -m pysc2.bin.agent --map Simple64進(jìn)行測(cè)試。

下面為兩個(gè)不同地圖的示意圖:

Linux下沒(méi)有原始游戲畫面。

《星際爭(zhēng)霸2》人工智能研究環(huán)境 SC2LE 初體驗(yàn)

《星際爭(zhēng)霸2》人工智能研究環(huán)境 SC2LE 初體驗(yàn)

4 測(cè)試

(1)基本測(cè)試

python -m pysc2.bin.agent --map Simple64

(2)更改Map如使用天梯的Map

python -m pysc2.bin.agent --map AbyssalReef

注意天梯的Map 名稱沒(méi)有LE!

(3)不使用agent,手動(dòng)玩!

python -m pysc2.bin.play --map MoveToBeacon

(4)使用特定agent來(lái)玩(比如MoveToBeacon這個(gè)mini game)

python -m pysc2.bin.agent --map MoveToBeacon --agent pysc2.agents.scripted_agent.MoveToBeacon

(5)播放replay

python --m pysc2.bin.play --replay <path-to-replay>

5 如何進(jìn)行RL開(kāi)發(fā)

前面只是安裝,到這里才是最關(guān)鍵的。要知道如何進(jìn)行RL開(kāi)發(fā),要首先知道pysc2的代碼是如何運(yùn)行的。

在上一小結(jié)測(cè)試中,我們看到第四種可以指定agent。所以,我們可以自己編寫一個(gè)agent文件,從而使得環(huán)境運(yùn)行我們自己的agent:

python -m pysc2.bin.agent --map<Map> --agent<Agent>

那么如何來(lái)編寫這個(gè)agent呢?

pysc2的代碼中為什么構(gòu)建了一個(gè)BaseAgent,我們只需要在BaseAgent的基礎(chǔ)上,構(gòu)造一個(gè)新的agent的類,然后在里面的step函數(shù)中實(shí)現(xiàn)我們的RL算法即可。

基本的程序架構(gòu)如下:

from __future__ import absolute_import

from __future__ import division

from __future__ import print_function


import numpy

from pysc2.agents import base_agent

from pysc2.lib import actions

from pysc2.lib import features


class OurAgent(base_agent.BaseAgent):



    def step(self, obs):
        super(OurAgent, self).step(obs)
        #----------------------------------#
        RL Algorithm Here
        #----------------------------------#
        return action

其中obs包含所有的觀察信息,包括feature maps,reward及可執(zhí)行動(dòng)作actions等信息。step這個(gè)函數(shù)的目標(biāo)是輸出動(dòng)作給環(huán)境執(zhí)行。RL算法需要處理obs然后輸出action。

我們來(lái)看一下pysc2提供的MoveToBeacon的非智能算法:

from __future__ import absolute_import

from __future__ import division

from __future__ import print_function


import numpy


from pysc2.agents import base_agent

from pysc2.lib import actions

from pysc2.lib import features


_PLAYER_RELATIVE = features.SCREEN_FEATURES.player_relative.index

_PLAYER_FRIENDLY = 1

_PLAYER_NEUTRAL = 3  # beacon/minerals

_PLAYER_HOSTILE = 4

_NO_OP = actions.FUNCTIONS.no_op.id

_MOVE_SCREEN = actions.FUNCTIONS.Move_screen.id

_ATTACK_SCREEN = actions.FUNCTIONS.Attack_screen.id

_SELECT_ARMY = actions.FUNCTIONS.select_army.id

_NOT_QUEUED = [0]

_SELECT_ALL = [0]


class MoveToBeacon(base_agent.BaseAgent):

    """An agent specifically for solving the MoveToBeacon map."""


    def step(self, obs):

      super(MoveToBeacon, self).step(obs)

      if _MOVE_SCREEN in obs.observation["available_actions"]:

         player_relative = obs.observation["screen"][_PLAYER_RELATIVE]

         neutral_y, neutral_x = (player_relative == _PLAYER_NEUTRAL).nonzero()

         if not neutral_y.any():

            return actions.FunctionCall(_NO_OP, [])

         target = [int(neutral_x.mean()), int(neutral_y.mean())]

         return actions.FunctionCall(_MOVE_SCREEN, [_NOT_QUEUED, target])

      else:

         return actions.FunctionCall(_SELECT_ARMY, [_SELECT_ALL])

我們可以看到,上面的代碼直接獲取了beacon的位置信息(neutral_y,neutral_x),從而直接給出動(dòng)作。但是為了使用RL算法,我們需要獲取feature map的圖像信息。然后我發(fā)現(xiàn)上面代碼中的player_relative就是圖像信息,可以直接通過(guò)opencv或者plt輸出顯示。如下圖最右邊的顯示:

《星際爭(zhēng)霸2》人工智能研究環(huán)境 SC2LE 初體驗(yàn)

下面總結(jié)一下state , action, reward的獲取方式:

(1)state,也就是各種feature map,通過(guò)obs.observation["screen"][feature_map_name] 獲取

(2)action,可以使用的action,通過(guò)obs.observation["available_actions"] 獲取

(3)reward,通過(guò)obs.reward獲取。

知道這些RL關(guān)鍵信息的獲取,我們也就可以編寫RL代碼來(lái)玩星際2的小任務(wù)了。

值得注意的是,星際2的動(dòng)作actions非常復(fù)雜,pysc2把動(dòng)作封裝成帶參數(shù)的函數(shù)。比如上面的Move動(dòng)作,需要target目標(biāo)位置的2維參數(shù)。所以,如果輸出動(dòng)作是一個(gè)復(fù)雜的問(wèn)題。官方的論文中使用了auto-regressive自回歸的方式,也就是先輸出Move這個(gè)動(dòng)作,然后在此基礎(chǔ)上再輸出target,從而形成完整的動(dòng)作,最后輸出。

5 小結(jié)

本文對(duì)SC2LE進(jìn)行了初體驗(yàn),包括安裝,測(cè)試和RL開(kāi)發(fā)的代碼研究。整體來(lái)看,DeepMind這次聯(lián)合暴雪確實(shí)做了非常精良的代碼工作,SC2LE有以下幾個(gè)優(yōu)點(diǎn):

  1. 對(duì)于API封裝得很好,可以非常方便的進(jìn)行RL開(kāi)發(fā)

  2. 直接提供了Feature Map信息方便卷積神經(jīng)網(wǎng)絡(luò)CNN的使用。

  3. 跨平臺(tái)支持,特別是對(duì)Linux平臺(tái)的支持,非常方便廣大深度學(xué)習(xí)開(kāi)發(fā)者的使用。

  4. 提供Replay數(shù)據(jù)庫(kù)及Replay接口,為進(jìn)行imitation learning模仿學(xué)習(xí)的研究提供了極大的方便。

  5. 提供了Mini Game,方便大家從簡(jiǎn)單入手。

  6. 提供了天梯地圖,滿足大家挑戰(zhàn)高難度的欲望!

總的來(lái)說(shuō),SC2LE真的是非常友好的一個(gè)研究平臺(tái),值得大家入手研究,也相信未來(lái)會(huì)有越來(lái)越多的人工智能玩星際2的成果出來(lái)!

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

《星際爭(zhēng)霸2》人工智能研究環(huán)境 SC2LE 初體驗(yàn)

分享:

編輯

關(guān)注AI學(xué)術(shù),例如論文
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)