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

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

0

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

本文作者: 隔壁王大喵 2018-03-20 14:44
導(dǎo)語:進(jìn)化策略找到的策略不僅有效,而且有趣

雷鋒網(wǎng) AI 科技評(píng)論按:本文是 otoro.net 的系列技術(shù)博客之一,以通俗可視化的方法講解了進(jìn)化策略(Evolution Strategies)中的諸多概念。本篇介紹了如何使用進(jìn)化策略來尋找前饋神經(jīng)網(wǎng)絡(luò)智能代理的策略,以執(zhí)行由 gym 環(huán)境接口定義的各式各樣的連續(xù)控制強(qiáng)化學(xué)習(xí)任務(wù)。前一篇參見《進(jìn)化策略入門:最優(yōu)化問題的另一種視角》。雷鋒網(wǎng) AI 科技評(píng)論編譯。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

代碼傳送門:GitHub

上一篇文章中,我已經(jīng)介紹過了一些可以用于優(yōu)化函數(shù)參數(shù)而不用顯式地計(jì)算梯度的進(jìn)化策略(Evolution strategies, ES)算法。這些算法可以用于解決強(qiáng)化學(xué)習(xí)(Reinforcement learning, RL)問題,從而幫助神經(jīng)網(wǎng)絡(luò)智能體(Neural network agent)找到合適的模型參數(shù)。在本文中,我將探討如何將進(jìn)化策略應(yīng)用于某一些增強(qiáng)學(xué)習(xí)問題中,并重點(diǎn)介紹一些方法,以幫助我們找到更加穩(wěn)定和健壯的策略。

強(qiáng)化學(xué)習(xí)之進(jìn)化策略

雖然強(qiáng)化學(xué)習(xí)算法需要在每個(gè)時(shí)間步都給予智能代理一個(gè)獎(jiǎng)勵(lì)信號(hào),但是進(jìn)化策略算法只關(guān)心智能體在特定環(huán)境中展示(rollout)階段結(jié)束之后所獲得的最終累積獎(jiǎng)勵(lì)。在許多問題中,我們只知道任務(wù)結(jié)束時(shí)的結(jié)果,比如智能體是贏還是輸、機(jī)器人手臂是否拿起了物體、或者智能體是否存活了下來,而這些方面的問題都是進(jìn)化策略可能優(yōu)于傳統(tǒng)強(qiáng)化學(xué)習(xí)的點(diǎn)。下面是一段偽代碼,它將智能體的展示階段封裝在一個(gè) OpenAI Gym 環(huán)境中,在這個(gè)環(huán)境下我們只關(guān)心累積獎(jiǎng)勵(lì):

def rollout(agent, env):   

    obs = env.reset()   

    done = False   

    total_reward = 0   

    while not done:     

        a = agent.get_action(obs)     

        obs, reward, done = env.step(a)     

        total_reward += reward   

    return total_reward

我們可以將 rollout 定義成目標(biāo)函數(shù),因?yàn)槟繕?biāo)函數(shù)可以將智能代理的模型參數(shù)映射到最合適的分?jǐn)?shù),然后正如上一篇文章所講解的,再使用一個(gè)進(jìn)化策略求解器去找到一組合適的模型參數(shù):

env = gym.make('worlddomination-v0')


# use our favourite ES

solver = EvolutionStrategy()


while True:  


    # ask the ES to give set of params

    solutions = solver.ask()  


    # create array to hold the results  

    fitlist = np.zeros(solver.popsize)  


    # evaluate for each given solution  

    for i in range(solver.popsize):    

        

        # init the agent with a solution    

        agent = Agent(solutions[i])    


        # rollout env with this agent    

        fitlist[i] = rollout(agent, env)  


    # give scores results back to ES  

    solver.tell(fitness_list)  


    # get best param & fitness from ES  

    bestsol, bestfit = solver.result()  


    # see if our task is solved  

    if bestfit > MY_REQUIREMENT:    

        break

確定性策略和隨機(jī)策略(Deterministic and Stochastic Policies)

我們的智能體將環(huán)境給予它的觀察結(jié)果作為輸入,然后在環(huán)境內(nèi)部展示期間的每個(gè)時(shí)間步輸出一個(gè)動(dòng)作。我們可以根據(jù)需要對(duì)代理進(jìn)行建模,并使用硬編碼規(guī)則、決策樹、線性函數(shù)以及遞歸神經(jīng)網(wǎng)絡(luò)中的方法。在這篇文章中,我使用一個(gè)帶有兩個(gè)隱含層的簡(jiǎn)單前饋網(wǎng)絡(luò),將智能體的觀測(cè)結(jié)果(向量 x)直接映射到相應(yīng)的動(dòng)作(向量 y):

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

其中的激活函數(shù) fh、fout 可以是 tanh、sigmoid、relu 或是其它你想要使用的函數(shù)。而對(duì)我而言,我喜歡使用 tanh。對(duì)于輸出層而言,有時(shí)我們可能希望 fout 是一個(gè)不含非線性變換的傳遞函數(shù)。如果我們將所有的權(quán)重和偏置項(xiàng)連接成一個(gè)向量 W,我們可以看到上述神經(jīng)網(wǎng)絡(luò)是一個(gè)確定性函數(shù) y=F(x, W),然后我們可以使用進(jìn)化策略,結(jié)合之前介紹的搜索循環(huán)來找到一個(gè)解決方案 W

但是如果我們不希望我們的智能體是確定性的呢?對(duì)于特定的某些任務(wù),即使像石頭剪刀布一般簡(jiǎn)單,最優(yōu)策略也是一種隨機(jī)行為,所以我們希望智能代理能夠?qū)W習(xí)到一種隨機(jī)策略。將 y=F(x, W) 轉(zhuǎn)換為隨機(jī)策略的一種方法是使得 W 隨機(jī)。模型中的每個(gè)參數(shù) wiW 都是符合正態(tài)分布的隨機(jī)變量 N(μi, σi)。

這種隨機(jī)網(wǎng)絡(luò)被稱為貝葉斯神經(jīng)網(wǎng)絡(luò)。貝葉斯神經(jīng)網(wǎng)絡(luò)是一個(gè)權(quán)重帶有先驗(yàn)分布的神經(jīng)網(wǎng)絡(luò)。在這種情況下,我們想要求解的模型參數(shù)是 μ 和 σ 的向量集,而不是權(quán)重 W。在網(wǎng)絡(luò)每一次前向傳播的過程中,生成一個(gè)全新的符合 N(μ, σ I) 分布的 W。文獻(xiàn)中有許多有趣工作將貝葉斯網(wǎng)絡(luò)應(yīng)用于許多問題中,并解決了許多訓(xùn)練網(wǎng)絡(luò)的挑戰(zhàn)。通過設(shè)置解空間為 μ 和 σ,而不是 W,進(jìn)化策略也可以用于直接找到隨機(jī)策略的解。

隨機(jī)策略網(wǎng)絡(luò)在強(qiáng)化學(xué)習(xí)的研究中也非常流行。例如,在近端策略優(yōu)化(PPO)算法中,最后一層是 μ 和 σ 的參數(shù)集合,并且動(dòng)作是從 N(μ, σ I) 中進(jìn)行采樣的。為參數(shù)增加噪音的操作也被稱為鼓勵(lì)智能代理探索環(huán)境并逃離局部最優(yōu)。我發(fā)現(xiàn)對(duì)于需要智能代理進(jìn)行探索的許多任務(wù),我們并不需要整個(gè) W 都是隨機(jī)的,而僅僅只有偏置項(xiàng)滿足隨機(jī)性就足夠了。對(duì)于具有挑戰(zhàn)性的運(yùn)動(dòng)任務(wù),例如 roboschool 環(huán)境中的運(yùn)動(dòng)任務(wù),我通常使用進(jìn)化策略來找到一個(gè)隨機(jī)策略,其中只有偏置項(xiàng)的參數(shù)才符合正態(tài)分布。

雙足步行者的健壯演進(jìn)策略

我發(fā)現(xiàn)健壯策略研究是另一個(gè)可以應(yīng)用進(jìn)化策略算法的領(lǐng)域。我想控制數(shù)據(jù)效率之間的平衡,以及該策略在多個(gè)隨機(jī)實(shí)驗(yàn)中的健壯程度。為了證明這一點(diǎn),我在一個(gè)叫做 BipedalWalkerHardcore-v2 的環(huán)境中測(cè)試了進(jìn)化策略,該環(huán)境是由 Oleg Klimov 使用 Box2D 物理引擎創(chuàng)建的,該引擎曾被用于開發(fā)《憤怒的小鳥》

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

我們的智能代理解決了 BipedalWalkerHardcore-v2

在這種情況下,我們的智能代理必須學(xué)習(xí)到一個(gè)策略,以實(shí)現(xiàn)在有限時(shí)間內(nèi)能夠通過一個(gè)隨機(jī)生成的地形還不摔倒。這里涉及 24 個(gè)輸入,其中包括有 10 個(gè)雷達(dá)激光傳感器、角度參數(shù)和接觸器參數(shù)。智能體不知道自己在地圖中的絕對(duì)坐標(biāo)。動(dòng)作空間是 4 個(gè)連續(xù)值,控制著 4 臺(tái)電機(jī)的轉(zhuǎn)矩??偑?jiǎng)勵(lì)的計(jì)算則基于智能體走過的總路程。一般情況下,如果智能體順利走完整個(gè)地圖,它將得到 300多分。此外根據(jù)全程施加的電機(jī)扭矩情況,還要再減去少量的分?jǐn)?shù),因此這樣使得能量也成為了一個(gè)限制條件。

BipedalWalkerHardcore-v2 將任務(wù)完成定義為在超過 100 次連續(xù)的隨機(jī)試驗(yàn)中,智能代理的平均分達(dá)到 300 多。雖然使用強(qiáng)化學(xué)習(xí)算法訓(xùn)練智能體成功穿越地圖一兩次相對(duì)容易,但是要保證智能代理能始終如一且高效完成卻是很困難的,這使得該任務(wù)成為一項(xiàng)很有趣的挑戰(zhàn)。據(jù)我所知,到 2017 年 10 月為止,我的智能體是唯一已知能解決此問題的方案。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

早期階段,學(xué)習(xí)如何行走

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

學(xué)習(xí)如何糾正錯(cuò)誤,不過還是很慢

由于地形圖是針對(duì)每個(gè)實(shí)驗(yàn)隨機(jī)生成的,因此有時(shí)候地形也許會(huì)非常簡(jiǎn)單,而有時(shí)候地形也可能非常復(fù)雜。我們并不希望我們的自然選擇過程允許那些弱策略的智能體(通過簡(jiǎn)單的地形地圖)進(jìn)入下一代。另外我們也希望給那些擁有好策略的智能代理一個(gè)救贖的機(jī)會(huì)。所以我最終所做的是定義一個(gè)智能體分組(episode),作為 16 次隨機(jī)展示的平均值,并使用 16 次展示的累積獎(jiǎng)勵(lì)平均值作為其最適分?jǐn)?shù)(Fitness score)。

另一種對(duì)待這種事件的方法是,即使我們正在對(duì)智能體進(jìn)行超過 100 次試驗(yàn)的測(cè)試,我們通常會(huì)在單次試驗(yàn)中對(duì)其進(jìn)行訓(xùn)練,所以測(cè)試任務(wù)和我們正在優(yōu)化的訓(xùn)練任務(wù)并不一樣。通過在隨機(jī)環(huán)境中對(duì)所有智能代理進(jìn)行多次平均,我們縮小了訓(xùn)練集和測(cè)試集之間的差距。如果我們可以對(duì)訓(xùn)練集進(jìn)行過度訓(xùn)練,那么也可能會(huì)對(duì)測(cè)試集進(jìn)行過度訓(xùn)練,因?yàn)檫@在強(qiáng)化學(xué)習(xí)中是一件好事情

當(dāng)然,我們算法的數(shù)據(jù)效率比現(xiàn)在差 16 倍,但最終的策略卻要健壯得多。當(dāng)我在超過 100 次連續(xù)隨機(jī)試驗(yàn)中測(cè)試最終策略時(shí),我順利通過了這個(gè)環(huán)境,并得到了一個(gè)超過 300 點(diǎn)的平均分?jǐn)?shù)。如果沒有這種平均方法,最好的智能體在超過 100 次試驗(yàn)中智能的平均分?jǐn)?shù)大約只有 220 到 230。據(jù)我所知,截止 2017 年 10 月,這是解決該環(huán)境問題的第一個(gè)解決方案。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

獲勝的解決方案,使用 PEPG 演變,每個(gè)分組平均運(yùn)行 16 次

我還使用了 PPO,這是一種針對(duì)強(qiáng)化學(xué)習(xí)的最先進(jìn)的策略梯度算法,然后我試圖將其進(jìn)行調(diào)整以最佳化應(yīng)用到這項(xiàng)任務(wù)中。最后,我在 100 次隨機(jī)試驗(yàn)中只能讓 PPO 取得大約 240 到 250 的平均成績(jī)。但是我確信將來其他人可以使用 PPO 或其它強(qiáng)化學(xué)習(xí)算法來解決這個(gè)環(huán)境挑戰(zhàn)。

后續(xù)更新(2018 年 1 月):

dgriff777 能夠使用帶有 4 個(gè)堆棧幀的 A3C+LSTM 連續(xù)版本作為輸入來訓(xùn)練 BipedalWalkerHardcore-v2,以在超過 100 次隨機(jī)試驗(yàn)中取得 300 分的成績(jī)。他在 GitHub 上開源了這個(gè)模型,由 pytorch 進(jìn)行編寫。

在現(xiàn)實(shí)世界中我們需要足夠安全的策略,所以控制數(shù)據(jù)效率和策略健壯性之間的權(quán)衡能力是非常有用和重要的。理論而言,如果有足夠的計(jì)算能力,我們甚至可以對(duì)所需的 100 次展示進(jìn)行平均,并將我們的雙足步行者直接優(yōu)化到滿足需求。專業(yè)工程師通常要求他們的設(shè)計(jì)滿足特定的質(zhì)量保證并滿足某些安全因素。當(dāng)我們訓(xùn)練智能代理去學(xué)習(xí)那些可能影響到現(xiàn)實(shí)世界的策略時(shí),我們需要考慮到這些安全因素。

以下是進(jìn)化策略發(fā)現(xiàn)的一些其它解決方案:

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

CMA-ES 解決方案

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

OpenAI-ES 解決方案

我還使用具有高初始噪音參數(shù)的隨機(jī)策略網(wǎng)絡(luò)對(duì)智能體進(jìn)行訓(xùn)練,因此智能體可以在任何地方看到噪音,以至于它的行為也有點(diǎn)混亂。它導(dǎo)致了智能體在沒有對(duì)其輸入和輸出信息的準(zhǔn)確性進(jìn)行確認(rèn)的情況下也依然學(xué)習(xí)任務(wù)(這個(gè)智能體無法獲得 300 以上的分?jǐn)?shù)):

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

采用隨機(jī)策略的雙足步行者

Kuka 機(jī)械抓臂

我還試圖在簡(jiǎn)化的 Kuka 機(jī)器人手臂抓取任務(wù)中使用帶有該項(xiàng)平均技術(shù)的進(jìn)化策略。這個(gè)環(huán)境在 pybullet 環(huán)境中可以獲得。仿真中使用的 Kuka 模型被設(shè)計(jì)為類似于真正的 Kuka 機(jī)器人手臂。在這個(gè)簡(jiǎn)化的任務(wù)中,智能體被告知了物體的坐標(biāo)。

更高級(jí)的強(qiáng)化學(xué)習(xí)環(huán)境可能需要智能體直接從像素輸入中推理出一個(gè)動(dòng)作,但是在原則上,我們可以將此簡(jiǎn)化版模型與預(yù)訓(xùn)練好的卷積網(wǎng)絡(luò)組合在一起,通過卷積網(wǎng)絡(luò)給出坐標(biāo)的估計(jì)值。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

使用隨機(jī)策略訓(xùn)練的機(jī)器人手臂抓取任務(wù)

如果智能體成功抓取物體,它將獲得 10000 分,否則為 0。然后再扣除一些能源消耗的分?jǐn)?shù)。通過對(duì) 16 個(gè)隨機(jī)試驗(yàn)的稀疏獎(jiǎng)勵(lì)進(jìn)行平均,我們可以讓進(jìn)化策略對(duì)健壯性進(jìn)行優(yōu)化。然而最終,我得到確定性策略或者隨機(jī)策略只能在 70% 至 75% 的時(shí)間內(nèi)抓取物體。這里還有提升的空間。

讓 Minitaur 學(xué)習(xí)多項(xiàng)任務(wù)

學(xué)習(xí)同時(shí)執(zhí)行多項(xiàng)復(fù)雜任務(wù)使得我們能更好地執(zhí)行單一任務(wù)。例如,少林寺的僧侶站在樹樁上舉重可以使得他們?cè)跊]有舉重的情況下更好地維持平衡。學(xué)習(xí)如何在山上以 80 英里/小時(shí)的速度駕駛汽車,并且還要保證不把杯子里的水灑出來,這會(huì)使得司機(jī)成為一個(gè)更好的非法街頭賽車手。我們還可以訓(xùn)練智能代理去執(zhí)行多項(xiàng)任務(wù),以使得它們學(xué)習(xí)到更加穩(wěn)定的策略。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用
少林和尚

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

學(xué)習(xí)漂移

最近關(guān)于自我控制(Self-playing)智能體的研究工作表明,學(xué)習(xí)諸如 Sumo 摔跤(需要許多技巧的運(yùn)動(dòng))等艱巨任務(wù)的智能代理也能用于執(zhí)行更簡(jiǎn)單的任務(wù),例如迎著風(fēng)行走,而不需要額外的訓(xùn)練。Erwin Coumans 最近嘗試讓 Minitaur 在上方放著一只玩具鴨的情況下學(xué)會(huì)行走。如果鴨子掉下來,Minitaur 也就失敗了,其中所蘊(yùn)含的想法是期望這些類型的任務(wù)增強(qiáng)能夠有助于將學(xué)習(xí)策略從模擬轉(zhuǎn)移到真正的 Minitaur。我取用了他的一個(gè)例子,并嘗試使用進(jìn)化策略訓(xùn)練 Minitaur 和玩具鴨子的組合。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用
pybullet 中以 CMAES 策略運(yùn)行的 Minitaur

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

來自 Ghost Robotics 公司的真實(shí) Minitaur 機(jī)器人

pybullet 中的 Minitaur 模型旨在模仿真實(shí)的物理 Minitaur。然而,在完美的模擬環(huán)境下訓(xùn)練出來的策略往往不適用于真實(shí)世界。它甚至無法泛化到模擬環(huán)境內(nèi)部的小小任務(wù)增強(qiáng)。例如,在上圖中有一個(gè) Minitaur 被訓(xùn)練用于朝前走(使用 CMA-ES),但是我們看到,當(dāng)把一只鴨子放在它上面的時(shí)候,這個(gè)策略并不總是能夠保持鴨子不掉而走出房間。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

只訓(xùn)練了簡(jiǎn)單前進(jìn)任務(wù)的策略上面放一只鴨子
多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用
以帶著鴨子前進(jìn)為任務(wù)訓(xùn)練的策略

額外把鴨子放到 Minitaur 上的時(shí)候,從單純的步行任務(wù)中學(xué)到的策略在某種程度上依然可以發(fā)揮作用,這也意味著添加玩具鴨子并沒有增加太多的難度。玩具鴨子有一個(gè)較為平穩(wěn)的底部,所以 Minitaur 不會(huì)讓鴨子從背部脫落。我試圖用一個(gè)球去代替鴨子,從而讓任務(wù)變得更加困難。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

CMA-ES 學(xué)到了一種作弊策略

然而,用球代替鴨子并不會(huì)立即產(chǎn)生穩(wěn)定的平衡策略。相反,CMA-ES 發(fā)現(xiàn)了一項(xiàng)策略,首先將球滑入其腿部形成的孔中,然后將球帶入該孔內(nèi),從而以取巧的方式把球帶出了房間。這里學(xué)到的教訓(xùn)是,一個(gè)目標(biāo)驅(qū)動(dòng)(Objective-driven)的搜索算法將學(xué)會(huì)利用環(huán)境中的任何設(shè)計(jì)缺陷,并利用它們以實(shí)現(xiàn)自己的目標(biāo)。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

帶著小球訓(xùn)練的 CMA-ES

在將球縮小之后,CMA-ES 能夠找到一個(gè)隨機(jī)策略,它能夠同時(shí)實(shí)現(xiàn)前行和保持平衡。這項(xiàng)策略也可以轉(zhuǎn)移到更容易的鴨子任務(wù)中。在未來,我希望這類任務(wù)增強(qiáng)技術(shù)對(duì)于真實(shí)機(jī)器人的遷移學(xué)習(xí)能發(fā)揮重要作用。

ESTool

進(jìn)化策略最大的賣點(diǎn)在于,可以使用在 CPU 不同核心上的不同線程或者甚至是不同的機(jī)器來運(yùn)行多個(gè)工作器,以輕松實(shí)現(xiàn)并行化。Python 的多重處理機(jī)制使得啟動(dòng)并行進(jìn)程變得簡(jiǎn)單。我更喜歡在 mpi4py 中使用消息傳遞接口(MPI)為每個(gè)作業(yè)啟動(dòng)單獨(dú)的 python 進(jìn)程。這讓我們可以繞過全局解釋器鎖的限制,并且讓給我確信每個(gè)進(jìn)程都有自己的沙盒化 numpy 以及 gym 實(shí)例,這一點(diǎn)對(duì)于播種隨機(jī)數(shù)生成器非常重要。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

Roboschool 中的單足、雙足、螞蟻機(jī)器人
多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用
Roboschool 中的觸碰臂

在各式各樣的 roboschool 任務(wù)中,智能代理借助 estool 實(shí)現(xiàn)演進(jìn)

我實(shí)現(xiàn)了一個(gè)名為 estool 的簡(jiǎn)單工具,它使用前一篇文章中介紹的 es.py 庫來訓(xùn)練簡(jiǎn)單的前饋策略網(wǎng)絡(luò),以執(zhí)行用 gym 接口編寫的連續(xù)控制強(qiáng)化學(xué)習(xí)任務(wù)。我已經(jīng)使用 estool 工具輕松訓(xùn)練了前面所述的所有實(shí)驗(yàn),以及 gym 和 roboschool 內(nèi)部提供的各種各樣其它的連續(xù)控制任務(wù)。estool 使用 MPI 進(jìn)行分布式處理,因此不需要太多工作就可以將工作器分配到多臺(tái)機(jī)器上。

ESTool 與 pybullet

GitHub 倉庫

除了 gym 和 roboschool 自帶的環(huán)境之外,estool 還適用于多數(shù) pybullet gym 環(huán)境。通過修改現(xiàn)有的環(huán)境來構(gòu)建自定義 pybullet 環(huán)境也很容易。例如,我可以毫不費(fèi)力地在球場(chǎng)環(huán)境中制作 Minitaur(在該倉庫的 custom_envs 目錄下),并且也能夠?qū)Νh(huán)境進(jìn)行修改以使得更加容易實(shí)現(xiàn)新想法。另外如果你想將其它軟件包(例如 ROS 或者 Blender)的 3D 模型納入進(jìn)來,你可以嘗試構(gòu)建新的有趣的 pybullet 環(huán)境,為其他人提供新的挑戰(zhàn)。

作為近期遷移學(xué)習(xí)研究中令人興奮的成果,pybullet 中的許多模型和環(huán)境,例如 Kuka 機(jī)器人手臂和 Minitaur,都在最大的程度上模擬了真實(shí)機(jī)器人。事實(shí)上,這些最新的尖端研究論文(1,2,34)中有很多都使用 pybullet 來進(jìn)行遷移學(xué)習(xí)實(shí)驗(yàn)。

因此你不需要購買昂貴的 Minitaur 或 Kuka 機(jī)器人手臂來嘗試從仿真到真實(shí)的實(shí)驗(yàn)。pybullet 內(nèi)部有一個(gè)賽車模型,它是參照 MIT 開源賽車硬件工具包進(jìn)行建模的。甚至還有一個(gè) pybullet 環(huán)境,可以將虛擬攝像機(jī)安裝到虛擬賽車上,為智能代理提供虛擬屏幕的像素作為觀察結(jié)果輸入。

讓我們首先嘗試更簡(jiǎn)單的版本,賽車只需要學(xué)習(xí)一個(gè)跟蹤巨型球移動(dòng)的策略。在 RacecarBulletEnv-v0 環(huán)境中,智能代理獲取球的相對(duì)坐標(biāo)作為輸入,并輸出控制電機(jī)速度和轉(zhuǎn)向方向的連續(xù)動(dòng)作。該任務(wù)非常簡(jiǎn)單,在 2014 款 Macbook Pro(8 核 CPU)上只需要花費(fèi) 5 分鐘(50 次迭代)即可完成訓(xùn)練。使用 estool,下面的命令將啟動(dòng)一個(gè)含有 8 進(jìn)程的訓(xùn)練程序,每個(gè)進(jìn)程負(fù)責(zé) 4 項(xiàng)作業(yè),這樣總共就有 32 個(gè)工作器,然后使用 CMA-ES 來演進(jìn)策略:

python train.py bullet_racecar -o cma -n 8 -t 4

訓(xùn)練的進(jìn)度以及模型參數(shù)將被保存在日志子目錄中。我們可以運(yùn)行這個(gè)命令來可視化環(huán)境中智能代理所找到的最佳策略:

python model.py bullet_racecar log/bullet_racecar.cma.1.32.best.json

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

pybullet 賽車環(huán)境,基于 MIT 賽車實(shí)現(xiàn)

在這個(gè)仿真中,我們可以使用鼠標(biāo)來移動(dòng)圓球,如果有需要的話,甚至也可以用來移動(dòng)賽車。

IPython notebook plot_training_progress.ipynb 可用于可視化賽車智能代理每次迭代的訓(xùn)練記錄。每次迭代中,我們都可以獲得最高分、最低分、以及所有賽車的平均分?jǐn)?shù)。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

標(biāo)準(zhǔn)運(yùn)動(dòng)任務(wù)類似于 roboschool 中的運(yùn)動(dòng)任務(wù),例如 Inverted Pendulum、Hopper、Walker、HalfCheetah、Ant 和 Humanoid 也可以在 pybullet 中使用。我發(fā)現(xiàn)了一個(gè)策略,在 pybullet 的螞蟻任務(wù)中獲得了 3000 分,我是使用 PEPG 在智能代理數(shù)為 256 的多核機(jī)器上花費(fèi)幾個(gè)小時(shí)完成訓(xùn)練的。

python train.py bullet_ant -o pepg -n 64 -t 4

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

AntBulletEnv 的一個(gè)樣例展示。我們還可以使用 gym.wrappers.Monitor 將展示結(jié)果保存成一個(gè) mp4 格式的視頻

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

總結(jié)

在本文中,我討論了如何使用進(jìn)化策略來尋找前饋神經(jīng)網(wǎng)絡(luò)智能體的策略,以執(zhí)行由 gym 環(huán)境接口定義的各式各樣的連續(xù)控制強(qiáng)化學(xué)習(xí)任務(wù)。我介紹了 estool,它允許我使用 MPI 框架在分布式處理環(huán)境中快速嘗試不同配置的進(jìn)化策略算法。

到目前為止,我只討論了通過讓智能體在環(huán)境中反復(fù)試驗(yàn)來訓(xùn)練智能代理學(xué)習(xí)策略的方法。這種從頭開始訓(xùn)練的形式被稱為無模型強(qiáng)化學(xué)習(xí)。在下一篇文章中,我會(huì)更多地討論基于模型的學(xué)習(xí),我們的智能體將學(xué)習(xí)利用以前學(xué)習(xí)過的模型來完成一個(gè)給定任務(wù)。另外我仍然會(huì)采用進(jìn)化策略。

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

最終,智能代理選擇將所有的絆腳石當(dāng)做墊腳石

趣味擴(kuò)展

“Fires of a Revolution” Incredible Fast Piano Music (EPIC)

A Visual Guide to Evolution Strategies

ESTool

Stable or Robust? What’s the Difference?

OpenAI Gym Docs

Evolution Strategies as a Scalable Alternative to Reinforcement Learning

Edward, A library for probabilistic modeling, inference, and criticism

History of Bayesian Neural Networks

BipedalWalkerHardcore-v2

roboschool

pybullet

Emergent Complexity via Multi-Agent Competition

GraspGAN

Via Evolving Stable Strategies,雷鋒網(wǎng) AI 科技評(píng)論編譯

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

多圖見證模擬機(jī)器人的逆天成長(zhǎng):論進(jìn)化策略在強(qiáng)化學(xué)習(xí)中的應(yīng)用

分享:
相關(guān)文章

知情人士

我也是個(gè)旅途的浪人
當(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è)置 以后再說