成人av在线资源一区,亚洲av日韩av一区,欧美丰满熟妇乱XXXXX图片,狠狠做五月深爱婷婷伊人,桔子av一区二区三区,四虎国产精品永久在线网址,国产尤物精品人妻在线,中文字幕av一区二区三区欲色
    您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
    人工智能開發(fā)者 正文
    發(fā)私信給汪思穎
    發(fā)送

    0

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

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

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

    1 前言

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

    為了讓更多的朋友了解SC2LE研究環(huán)境,我們在第一時間對其進(jìn)行安裝測試,并對DeepMind發(fā)布的pysc2代碼進(jìn)行分析,初步了解基于pysc2的RL開發(fā)方法。下面我們將一一進(jìn)行介紹。

    2 測試使用設(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

    程序會自動安裝各種依賴:

     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)然后在國服下載mac版的星際爭霸客戶端:https://www.battlenet.com.cn/account/download/ ,mac版的,然后安裝,30個G,3.16.1版本。

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

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

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

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

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

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

    下面為示意圖:

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

    《星際爭霸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-protohttps://github.com/deepmind/pysc2/releases/download/v1.0/mini_games.zip。將文件解壓到~/StarCraft2/Maps 下。

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

    下面為兩個不同地圖的示意圖:

    Linux下沒有原始游戲畫面。

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

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

    4 測試

    (1)基本測試

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

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

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

    注意天梯的Map 名稱沒有LE!

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

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

    (4)使用特定agent來玩(比如MoveToBeacon這個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開發(fā)

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

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

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

    那么如何來編寫這個agent呢?

    pysc2的代碼中為什么構(gòu)建了一個BaseAgent,我們只需要在BaseAgent的基礎(chǔ)上,構(gòu)造一個新的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í)行動作actions等信息。step這個函數(shù)的目標(biāo)是輸出動作給環(huán)境執(zhí)行。RL算法需要處理obs然后輸出action。

    我們來看一下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),從而直接給出動作。但是為了使用RL算法,我們需要獲取feature map的圖像信息。然后我發(fā)現(xiàn)上面代碼中的player_relative就是圖像信息,可以直接通過opencv或者plt輸出顯示。如下圖最右邊的顯示:

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

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

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

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

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

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

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

    5 小結(jié)

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

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

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

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

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

    5. 提供了Mini Game,方便大家從簡單入手。

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

    總的來說,SC2LE真的是非常友好的一個研究平臺,值得大家入手研究,也相信未來會有越來越多的人工智能玩星際2的成果出來!

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

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

    分享:

    編輯

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