<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能 正文
      發私信給隔壁王大喵
      發送

      0

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

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

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      代碼傳送門:GitHub

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

      強化學習之進化策略

      雖然強化學習算法需要在每個時間步都給予智能代理一個獎勵信號,但是進化策略算法只關心智能體在特定環境中展示(rollout)階段結束之后所獲得的最終累積獎勵。在許多問題中,我們只知道任務結束時的結果,比如智能體是贏還是輸、機器人手臂是否拿起了物體、或者智能體是否存活了下來,而這些方面的問題都是進化策略可能優于傳統強化學習的點。下面是一段偽代碼,它將智能體的展示階段封裝在一個 OpenAI Gym 環境中,在這個環境下我們只關心累積獎勵:

      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 定義成目標函數,因為目標函數可以將智能代理的模型參數映射到最合適的分數,然后正如上一篇文章所講解的,再使用一個進化策略求解器去找到一組合適的模型參數:

      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

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

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

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

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

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

      隨機策略網絡在強化學習的研究中也非常流行。例如,在近端策略優化(PPO)算法中,最后一層是 μ 和 σ 的參數集合,并且動作是從 N(μ, σ I) 中進行采樣的。為參數增加噪音的操作也被稱為鼓勵智能代理探索環境并逃離局部最優。我發現對于需要智能代理進行探索的許多任務,我們并不需要整個 W 都是隨機的,而僅僅只有偏置項滿足隨機性就足夠了。對于具有挑戰性的運動任務,例如 roboschool 環境中的運動任務,我通常使用進化策略來找到一個隨機策略,其中只有偏置項的參數才符合正態分布。

      雙足步行者的健壯演進策略

      我發現健壯策略研究是另一個可以應用進化策略算法的領域。我想控制數據效率之間的平衡,以及該策略在多個隨機實驗中的健壯程度。為了證明這一點,我在一個叫做 BipedalWalkerHardcore-v2 的環境中測試了進化策略,該環境是由 Oleg Klimov 使用 Box2D 物理引擎創建的,該引擎曾被用于開發《憤怒的小鳥》

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

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

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

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      早期階段,學習如何行走

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      學習如何糾正錯誤,不過還是很慢

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

      另一種對待這種事件的方法是,即使我們正在對智能體進行超過 100 次試驗的測試,我們通常會在單次試驗中對其進行訓練,所以測試任務和我們正在優化的訓練任務并不一樣。通過在隨機環境中對所有智能代理進行多次平均,我們縮小了訓練集和測試集之間的差距。如果我們可以對訓練集進行過度訓練,那么也可能會對測試集進行過度訓練,因為這在強化學習中是一件好事情

      當然,我們算法的數據效率比現在差 16 倍,但最終的策略卻要健壯得多。當我在超過 100 次連續隨機試驗中測試最終策略時,我順利通過了這個環境,并得到了一個超過 300 點的平均分數。如果沒有這種平均方法,最好的智能體在超過 100 次試驗中智能的平均分數大約只有 220 到 230。據我所知,截止 2017 年 10 月,這是解決該環境問題的第一個解決方案。

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      獲勝的解決方案,使用 PEPG 演變,每個分組平均運行 16 次

      我還使用了 PPO,這是一種針對強化學習的最先進的策略梯度算法,然后我試圖將其進行調整以最佳化應用到這項任務中。最后,我在 100 次隨機試驗中只能讓 PPO 取得大約 240 到 250 的平均成績。但是我確信將來其他人可以使用 PPO 或其它強化學習算法來解決這個環境挑戰。

      后續更新(2018 年 1 月):

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

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

      以下是進化策略發現的一些其它解決方案:

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      CMA-ES 解決方案

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      OpenAI-ES 解決方案

      我還使用具有高初始噪音參數的隨機策略網絡對智能體進行訓練,因此智能體可以在任何地方看到噪音,以至于它的行為也有點混亂。它導致了智能體在沒有對其輸入和輸出信息的準確性進行確認的情況下也依然學習任務(這個智能體無法獲得 300 以上的分數):

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      采用隨機策略的雙足步行者

      Kuka 機械抓臂

      我還試圖在簡化的 Kuka 機器人手臂抓取任務中使用帶有該項平均技術的進化策略。這個環境在 pybullet 環境中可以獲得。仿真中使用的 Kuka 模型被設計為類似于真正的 Kuka 機器人手臂。在這個簡化的任務中,智能體被告知了物體的坐標

      更高級的強化學習環境可能需要智能體直接從像素輸入中推理出一個動作,但是在原則上,我們可以將此簡化版模型與預訓練好的卷積網絡組合在一起,通過卷積網絡給出坐標的估計值。

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      使用隨機策略訓練的機器人手臂抓取任務

      如果智能體成功抓取物體,它將獲得 10000 分,否則為 0。然后再扣除一些能源消耗的分數。通過對 16 個隨機試驗的稀疏獎勵進行平均,我們可以讓進化策略對健壯性進行優化。然而最終,我得到確定性策略或者隨機策略只能在 70% 至 75% 的時間內抓取物體。這里還有提升的空間。

      讓 Minitaur 學習多項任務

      學習同時執行多項復雜任務使得我們能更好地執行單一任務。例如,少林寺的僧侶站在樹樁上舉重可以使得他們在沒有舉重的情況下更好地維持平衡。學習如何在山上以 80 英里/小時的速度駕駛汽車,并且還要保證不把杯子里的水灑出來,這會使得司機成為一個更好的非法街頭賽車手。我們還可以訓練智能代理去執行多項任務,以使得它們學習到更加穩定的策略。

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用
      少林和尚

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      學習漂移

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用
      pybullet 中以 CMAES 策略運行的 Minitaur

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      來自 Ghost Robotics 公司的真實 Minitaur 機器人

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      只訓練了簡單前進任務的策略上面放一只鴨子
      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用
      以帶著鴨子前進為任務訓練的策略

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      CMA-ES 學到了一種作弊策略

      然而,用球代替鴨子并不會立即產生穩定的平衡策略。相反,CMA-ES 發現了一項策略,首先將球滑入其腿部形成的孔中,然后將球帶入該孔內,從而以取巧的方式把球帶出了房間。這里學到的教訓是,一個目標驅動(Objective-driven)的搜索算法將學會利用環境中的任何設計缺陷,并利用它們以實現自己的目標。

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      帶著小球訓練的 CMA-ES

      在將球縮小之后,CMA-ES 能夠找到一個隨機策略,它能夠同時實現前行和保持平衡。這項策略也可以轉移到更容易的鴨子任務中。在未來,我希望這類任務增強技術對于真實機器人的遷移學習能發揮重要作用。

      ESTool

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      Roboschool 中的單足、雙足、螞蟻機器人
      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用
      Roboschool 中的觸碰臂

      在各式各樣的 roboschool 任務中,智能代理借助 estool 實現演進

      我實現了一個名為 estool 的簡單工具,它使用前一篇文章中介紹的 es.py 庫來訓練簡單的前饋策略網絡,以執行用 gym 接口編寫的連續控制強化學習任務。我已經使用 estool 工具輕松訓練了前面所述的所有實驗,以及 gym 和 roboschool 內部提供的各種各樣其它的連續控制任務。estool 使用 MPI 進行分布式處理,因此不需要太多工作就可以將工作器分配到多臺機器上。

      ESTool 與 pybullet

      GitHub 倉庫

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

      作為近期遷移學習研究中令人興奮的成果,pybullet 中的許多模型和環境,例如 Kuka 機器人手臂和 Minitaur,都在最大的程度上模擬了真實機器人。事實上,這些最新的尖端研究論文(1234)中有很多都使用 pybullet 來進行遷移學習實驗。

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

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

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

      訓練的進度以及模型參數將被保存在日志子目錄中。我們可以運行這個命令來可視化環境中智能代理所找到的最佳策略:

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      pybullet 賽車環境,基于 MIT 賽車實現

      在這個仿真中,我們可以使用鼠標來移動圓球,如果有需要的話,甚至也可以用來移動賽車。

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      標準運動任務類似于 roboschool 中的運動任務,例如 Inverted Pendulum、Hopper、Walker、HalfCheetah、Ant 和 Humanoid 也可以在 pybullet 中使用。我發現了一個策略,在 pybullet 的螞蟻任務中獲得了 3000 分,我是使用 PEPG 在智能代理數為 256 的多核機器上花費幾個小時完成訓練的。

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      總結

      在本文中,我討論了如何使用進化策略來尋找前饋神經網絡智能體的策略,以執行由 gym 環境接口定義的各式各樣的連續控制強化學習任務。我介紹了 estool,它允許我使用 MPI 框架在分布式處理環境中快速嘗試不同配置的進化策略算法。

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

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      最終,智能代理選擇將所有的絆腳石當做墊腳石

      趣味擴展

      “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,雷鋒網 AI 科技評論編譯

      雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知

      多圖見證模擬機器人的逆天成長:論進化策略在強化學習中的應用

      分享:
      相關文章

      知情人士

      我也是個旅途的浪人
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 亚洲成人性爱网站| 国产精品熟女乱色一区二区| 久久综合免费一区二区三区| 久久人人爽人人爽人人片av | 婷婷91| 精品国产一区二区三区四区色| 成人av中字手机在线播放| 66av在线| 欧美激情精品久久久久久| 成人无码在线视频网站| 日本精品视频| wwwww黄| 国产老熟女狂叫对白| 中文字幕三四区男人| 国产又黄又硬又粗| 97精品伊人久久久大香线蕉| 亚洲自拍天堂| 国产精品老熟女免费视频| 亚洲VA不卡一区| 99热这里只有精品2| 成人毛片18女人毛片免费| 中文有无人妻VS无码人妻激烈| 亚洲制服中文字幕| 久久亚洲精品人成综合网| 强开少妇嫩苞又嫩又紧九色| 国精产品999国精产| 无码专区无码专区视频网址| 亚洲欧美综合| 人妻体验按摩到忍不住哀求继续| 一本一本久久a久久精品综| 忘忧草日本在线播放www| 人妻av一区二区三区精品| 无码簧片| 三年高清在线观看全集下载| 无码中文幕熟AⅤ一区二区| 99精品国产在热久久婷婷| 91网站免费| 国产精品欧美一区二区三区| 伊人久久人妻| 国产精品久久777777| 五月香蕉网|