【论文复现】一步步详解用TD3算法通关BipedalWalkerHardcore-v2环境
深度強化學習實驗室
作者:辛靖豪(DeepRL-Lab研究員)
編輯:DeepRL
熟悉強化學習Gym環境的小伙伴應該對 (BWH-v2環境)? BipedalWalkerHardcore-v2(如圖1)并不陌生。在這個環境里,這個Agent需要與Environment互動并學會在不同路況下奔跑行走。由于這個環境是的動作空間是4維連續動作空間,同時Agent需要掌握跑步、跨坑、越障、下階梯等一系列技能。很多小伙伴表示盡管用目前先進的TD3, SAC, PPO等RL算法進行各種頭鐵的訓練,也無法達到很好的效果。在Gym官方的Leaderboard上,有人用A3C+LSTM算法,在32核CPU和3個GPU上訓練了73小時后最終解決了該問題,還有人使用CMA-ES算法在64核的Google Compute Engine上訓練了100小時才最終解決了該問題,可見該環境的難度不一般。
一、簡介
圖1?BipedalWalkerHardcore-v2
一開始筆者用各種算法來攻克這個環境時也是沒有得到很好的結果,最終通過一些trick,才最終通關了這個環境(流下了老父親的淚水)。所以,今天就為大家帶來一篇用TD3通關BipedalWalkerHardcore-v2的攻略(在單核CPU上訓練大概3h左右收斂),希望能在大家的強化學習煉丹之路上給大伙添把火。代碼已放入文章末尾鏈接中,需要請自取~
?
廢話不多說,先讓我們來看看Agent的表現吧!
圖1 學習曲線(x-episode; y-reward)
二、BipedalWalkerHardcore-v2介紹
Hardcore version with ladders, stumps, pitfalls. Time limit is increased due to obstacles. Reward is given for moving forward, total 300+ points up to the far end. If the robot falls, it gets -100. Applying motor torque costs a small amount of points, more optimal agent will get better score. State consists of hull angle speed, angular velocity, horizontal speed, vertical speed, position of joints and joints angular speed, legs contact with ground, and 10 lidar rangefinder measurements. There's no coordinates in the state vector.
?
官方傳送門:http://gym.openai.com/envs/BipedalWalkerHardcore-v2/
- Goal:Agent需要學會克服各種障礙向前移動 
- State: ?24維向量,包括各部件角速度,水平速度,垂直速度,關節位置,腿與地面的接觸以及10個激光雷達測距儀的測量值 
- Action: ?4維連續動作空間,取值范圍為[-1,1],分別對應機器人胯下兩個關節的轉矩以及膝關節的轉矩 
- Reward:? 向前移動會獲得到正獎勵信號,摔倒會得到-100的獎勵信號,同時,驅動各關節轉動會得到一定的負獎勵信號 
- Done:? 摔倒或抵達地圖終點會結束當前回合 
三、TD3-Twin Delayed Deep Deterministic policy gradient algorithm算法介紹
TD3是一種確定性策略強化學習算法,適合于高維連續動作空間。它的優化目標很簡單:
用大白話來講,就是我要在不同的state下找到對應的action,使得我與環境互動的分數最高。這很直觀,有沒有~
?????? 為了做到這一件事情,我們分別需要一個Actor和一個Critic。Actor將不同的state映射到對應的action上去,大白話來講就是決定Agent在各個state下具體采取什么樣的動作。而Critic就是為了告訴Agent在不同的state下,采取不同action的最終到底會得多少分,這能幫助Agent選擇那些得分更高的action。Actor和Critic分別用不同的神經網絡實現。
?????? 那具體是怎么做的呢?我們現在先假定Critic已經學習到了在不同state下采取不同action最終到底會得多少分,看看Actor到底是怎么學習的。
這是原論文中用于更新Actor參數的梯度表達式,表示Actor網絡的參數,表示Critic網絡的參數。
看起來很頭禿有沒有。。。?不要慌!不要慌!我們分成紅、藍、綠三部分分別來看。
首先看藍色部分,根據我們之前說的,假定Critic已經學成大師,啥東西他都懂(學術一點就是網絡已經學好啦,不用再更新啦)。我們以一維動作空間為例,看看藍色部分到底在講什么。
就像這張圖展示的一樣,在當前狀態s下,Actor的輸出為圖中的黑色點,很明顯,Critic告訴我們在這個狀態下采取黑點所代表的動作的最終得分并不是最高的,得分最高的是紅點所代表的動作。因此,藍色部分的梯度說的就是當前的action應該怎么變化才能得到更高的得分。
?????? Actor在得到這一信息后,便根據它來調節自己的輸出值。就像圖4表示的一樣,綠色部分梯度說的就是Actor的參數應該怎么變化,才能使得在這個狀態下的輸出值是紅點所表示的動作。
至于紅色部分,就很簡單啦。我們的目標并不是某一個狀態下Actor能獲得較高的分數,而是希望Agent能在所有狀態下都能做到最好,因此我們希望Actor的梯度是根據所有狀態下的計算的,但實際上我們無法獲得所有數據,就算能獲得,數據量也非常龐大,不利于計算。因此我們選擇用Mini-batch的方式進行更新,每次從已有的與環境互動所獲得的數據中抽取筆來訓練我們的Actor。
到這里,Actor就已經說完啦。我相信這么一捋下來,這個式子也沒那么晦澀難懂了吧~ 其實這些數學表達式,看起來很復雜,但只要我們get到它的那個點,你會發現其實他就在說一件很簡單的事情啦~~
現在再回過頭來看一看Critic,之前我們的假設Critic已經學成大師,但實際上Actor和Critic是共同進步的,就是傳說中的策略改進和策略評估。實際上,為準確地估計Q-function一直是學術界各路大神所希望解決的問題。在TD3算法中,作者為了解決以上問題,主要用了以下幾個方法
Target Network.使用相對穩定目標網絡的輸出值來構造Critic學習的Target Value以保證Critic學習的穩定性。
Clipped Double-Q Learning. TD3算法獨立學習兩個Q-function(因此命名為“twin"),用兩個中較小的Q值去構造Critic學習的Target Value,以減緩Critic的Overestimation。
Target Policy Smoothing. TD3在構造Target Value時,對目標動作加入了噪聲,以幫助Critic學習。這個做法的啟發是,在同一狀態下采取相似的動作所獲得的分數應該沒有太大的差別。
?????? TD3算法的更多細節在這里就不多講啦,想要更深入學習的同學推薦精讀一下原始論文。這里附上算法流程圖
四、通關秘籍
?????? 好啦,終于到了我們的重頭戲—通關秘籍。如前文所說,直接用已有的強化學習主流算法(TD3,SAC,PPO等)去訓練,即使經過調參也幾乎沒有任何效果。這里為大家帶來幾個Trick和在代碼實現時的一些細節,幫助大家通關這個環境~? 奧利給!!!
?
Trick 1. Done or Dead
?????? 環境中觸發Done有三種情況,分別是機器人摔倒、到達回合最大時間和通關。根據貝爾曼方程,用于Critic更新的Target Value計算方式如下:
如果在到達回合最大時間或通關時設置,而舍棄掉的話,是不正確的,因為這是人為終止了本輪回合,實際上若將環境繼續運行下去,的值并不為0。而只有機器人摔倒(Dead)時,才等于0(因為該環境并不訓練機器人從地上爬起來,所以機器人一旦摔倒,回合便真正結束了,只有便再無獎勵信號)。若不對環境的Done狀態和Dead狀態加以區分,將會造成Critic學習振蕩,導致性能下降。實現方式:
下圖為Trick 1 對訓練的影響,x軸-episode, y軸-回合總Reward,紅色-不使用Trick1,橙色-使用Trick 1
Trick 2. Reward Shaping
原始環境在摔倒時r=-100,而正常情況下的r大概在[-1,1]區間里,兩者數量級相差較大,會導致Q-function突變,不利于學習。摔倒時,設置r=-1會明顯改善訓練效果。
結合Trick 1, 實現方式為:
下圖為Trick 2 對訓練的影響,x軸-運行時間, y軸-回合總Reward,粉色-不使用Trick2,橙色-使用Trick 2
Trick 3. Data Balance
?????? 在BipedalWalkerHardcore-v2環境下,Agent主要要學會跑步、跨坑、越障、下階梯等一系列技能。其中,最困難的技能是越障。筆者觀察發現,Agent在學習的中前期會出現學會越障這一復雜技能后忘記其他幾個簡單技能,而又重新學習簡單技能。在重拾簡單技能后,又忘記越障技能的問題。增大該環境中出現障礙物的概率可以有效幫助Agent同時掌握簡單和復雜的技能。具體實現方式為更改BipedalWalkerHardcore-v2源文件bipedal_walker.py
(路徑D:\Anaconda\envs\torch\Lib\site-packages\gym\envs\box2d\ bipedal_walker.py,找不到的話直接搜索bipedal_walker.py文件)
第252行如下圖所示:
下圖為Trick 3 對訓練的影響,x軸-episode, y軸-回合總Reward,藍色-不使用Trick3,橙色-使用Trick 3
Trick 3 也啟示我們強化學習中同樣存在數據不均衡的現象,看來解決強化學習的數據不均衡問題也是一個好方向~
?
Trick 4. Exploration Decay
TD3為確定性策略算法,為鼓勵Agent對環境進行探索,需要在Actor輸出的動作上加以一定噪聲。但噪聲對于訓練后期算法的收斂是不利的,隨著訓練的進行逐步減小噪聲是一個不錯的選擇。
?
Hyper-parameters
| Width of hidden layer | 200 | 
| Number of hidden layer | 2 | 
| Learning rate | 0.0001 | 
| γ | 0.99 | 
| Mini-batch size | 256 | 
| Actor activation function | tanh | 
| Critic activation function | relu | 
| ?????? tau? | 0.005 | 
| Actor delay frequency | 1 | 
| Policy_noise | 0.2*max_action | 
| Noise_clip | 0.5*max_action | 
| Explore_noise | 0.25 | 
| Noise_decay | 0.999 | 
?
終于寫完,以上就是和大家分享的所有內容啦~~
?
值得一提的是,這些Trick不僅僅對TD3有效,其他算法使用這些Trick也能獲得不錯的效果。讓我們來看看在PPO上使用這些Trick的結果吧(從我的實驗看來,如果不使用這些Trick,PPO幾乎無法學習)
總共訓練了147600個episode,運行22小時左右。
?
B站鏈接:
https://www.bilibili.com/video/BV1oa411F7e7?from=search&seid=3235450248292146996
Github代碼鏈接:?
https://github.com/XinJingHao/TD3-BipedalWalkerHardcore-v2
作者簡介:辛靖豪,上海交通大學在讀博士、深度強化學習實驗室研究員(學習者),主要研究方向為強化學習+自動化控制。
Github:https://github.com/XinJingHao
完
總結1:周志華 || AI領域如何做研究-寫高水平論文
總結2:全網首發最全深度強化學習資料(永更)
總結3:??《強化學習導論》代碼/習題答案大全
總結4:30+個必知的《人工智能》會議清單
總結5:2019年-57篇深度強化學習文章匯總
總結6:? ?萬字總結 || 強化學習之路
總結7:萬字總結 || 多智能體強化學習(MARL)大總結
總結8:深度強化學習理論、模型及編碼調參技巧
完
第90篇:Top-K Off-Policy? RL論文復現
第89篇:騰訊開源分布式多智能TLeague框架
第88篇:分層強化學習(HRL)全面總結
第87篇:165篇CoRL2020 accept論文匯總
第86篇:287篇ICLR2021深度強化學習論文匯總
第85篇:279頁總結"基于模型的強化學習方法"
第84篇:阿里強化學習領域研究助理/實習生招聘
第83篇:180篇NIPS2020頂會強化學習論文
第82篇:強化學習需要批歸一化(Batch Norm)嗎?
第81篇:《綜述》多智能體強化學習算法理論研究
第80篇:強化學習《獎勵函數設計》詳細解讀
第79篇:?諾亞方舟開源高性能強化學習庫“刑天”
第78篇:強化學習如何tradeoff"探索"和"利用"?
第77篇:深度強化學習工程師/研究員面試指南
第76篇:DAI2020 自動駕駛挑戰賽(強化學習)
第75篇:Distributional Soft Actor-Critic算法
第74篇:【中文公益公開課】RLChina2020
第73篇:Tensorflow2.0實現29種深度強化學習算法
第72篇:【萬字長文】解決強化學習"稀疏獎勵"
第71篇:【公開課】高級強化學習專題
第70篇:DeepMind發布"離線強化學習基準“
第69篇:深度強化學習【Seaborn】繪圖方法
第68篇:【DeepMind】多智能體學習231頁PPT
第67篇:126篇ICML2020會議"強化學習"論文匯總
第66篇:分布式強化學習框架Acme,并行性加強
第65篇:DQN系列(3):?優先級經驗回放(PER)
第64篇:UC Berkeley開源RAD來改進強化學習算法
第63篇:華為諾亞方舟招聘 || 強化學習研究實習生
第62篇:ICLR2020- 106篇深度強化學習頂會論文
第61篇:David Sliver 親自講解AlphaGo、Zero
第60篇:滴滴主辦強化學習挑戰賽:KDD Cup-2020
第59篇:Agent57在所有經典Atari 游戲中吊打人類
第58篇:清華開源「天授」強化學習平臺
第57篇:Google發布"強化學習"框架"SEED RL"
第56篇:RL教父Sutton實現強人工智能算法的難易
第55篇:內推 || ?阿里2020年強化學習實習生招聘
第54篇:頂會?|| 65篇"IJCAI"深度強化學習論文
第53篇:TRPO/PPO提出者John Schulman談科研
第52篇:《強化學習》可復現性和穩健性,如何解決?
第51篇:強化學習和最優控制的《十個關鍵點》
第50篇:微軟全球深度強化學習開源項目開放申請
第49篇:DeepMind發布強化學習庫 RLax
第48篇:AlphaStar過程詳解筆記
第47篇:Exploration-Exploitation難題解決方法
第46篇:DQN系列(2): Double DQN 算法
第45篇:DQN系列(1): Double Q-learning
第44篇:科研界最全工具匯總
第43篇:起死回生|| 如何rebuttal頂會學術論文?
第42篇:深度強化學習入門到精通資料綜述
第41篇:頂會征稿 || ?ICAPS2020:?DeepRL
第40篇:實習生招聘 || 華為諾亞方舟實驗室
第39篇:滴滴實習生|| 深度強化學習方向
第38篇:AAAI-2020 || 52篇深度強化學習論文
第37篇:Call For Papers# IJCNN2020-DeepRL
第36篇:復現"深度強化學習"論文的經驗之談
第35篇:α-Rank算法之DeepMind及Huawei改進
第34篇:從Paper到Coding, DRL挑戰34類游戲
第33篇:DeepMind-102頁深度強化學習PPT
第32篇:騰訊AI Lab強化學習招聘(正式/實習)
第31篇:強化學習,路在何方?
第30篇:強化學習的三種范例
第29篇:框架ES-MAML:進化策略的元學習方法
第28篇:138頁“策略優化”PPT--Pieter Abbeel
第27篇:遷移學習在強化學習中的應用及最新進展
第26篇:深入理解Hindsight Experience Replay
第25篇:10項【深度強化學習】賽事匯總
第24篇:DRL實驗中到底需要多少個隨機種子?
第23篇:142頁"ICML會議"強化學習筆記
第22篇:通過深度強化學習實現通用量子控制
第21篇:《深度強化學習》面試題匯總
第20篇:《深度強化學習》招聘匯總(13家企業)
第19篇:解決反饋稀疏問題之HER原理與代碼實現
第18篇:"DeepRacer" —頂級深度強化學習挑戰賽
第17篇:AI Paper | 幾個實用工具推薦
第16篇:AI領域:如何做優秀研究并寫高水平論文?
第15篇:DeepMind開源三大新框架!
第14篇:61篇NIPS2019DeepRL論文及部分解讀
第13篇:OpenSpiel(28種DRL環境+24種DRL算法)
第12篇:模塊化和快速原型設計Huskarl DRL框架
第11篇:DRL在Unity自行車環境中配置與實踐
第10篇:解讀72篇DeepMind深度強化學習論文
第9篇:《AutoML》:一份自動化調參的指導
第8篇:ReinforceJS庫(動態展示DP、TD、DQN)
第7篇:10年NIPS頂會DRL論文(100多篇)匯總
第6篇:ICML2019-深度強化學習文章匯總
第5篇:深度強化學習在阿里巴巴的技術演進
第4篇:深度強化學習十大原則
第3篇:“超參數”自動化設置方法---DeepHyper
第2篇:深度強化學習的加速方法
第1篇:深入淺出解讀"多巴胺(Dopamine)論文"、環境配置和實例分析
第14期論文:??2020-02-10(8篇)
第13期論文:2020-1-21(共7篇)
第12期論文:2020-1-10(Pieter Abbeel一篇,共6篇)
第11期論文:2019-12-19(3篇,一篇OpennAI)
第10期論文:2019-12-13(8篇)
第9期論文:2019-12-3(3篇)
第8期論文:2019-11-18(5篇)
第7期論文:2019-11-15(6篇)
第6期論文:2019-11-08(2篇)
第5期論文:2019-11-07(5篇,一篇DeepMind發表)
第4期論文:2019-11-05(4篇)
第3期論文:2019-11-04(6篇)
第2期論文:2019-11-03(3篇)
第1期論文:2019-11-02(5篇)
總結
以上是生活随笔為你收集整理的【论文复现】一步步详解用TD3算法通关BipedalWalkerHardcore-v2环境的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: ECS Windows服务器通过ie下载
- 下一篇: cmd打开时提示“系统找不到指定的路径”
