伯克利和谷歌大腦的研究人員近日發表了全新的強化學習算法:柔性致動/評價(soft actor-critic,SAC)。作者表示,作為目前高效的model-free算法,十分適用于真實世界中的機器人任務學習。在這篇文章中,將詳細比較SAC與前沿強化學習算法的性能,并利用多個實際任務作為例子來展示最新算法的能力。這一算法還包含完整詳細的源碼實現供研究者學習和使用。
適用于真實機器人的深度強化學習
真實世界中理想的強化學習算法應該具有什么樣的特性呢?與虛擬和實驗室環境相比,真實情況將為算法帶來一系列挑戰。包括通信和數據流連續中斷、低延時的推理、為避免設備機械損傷需要盡可能平滑連續的運動等,這些都為算法本身及其實現帶來了更多的要求。研究人員通常希望應用在真實世界中的算法具有以下優點:
·樣本效率。在真實世界中學習技能是耗時的任務,對于每一個新任務的學習都需要多次試錯,學習一個新技能所需的總時間會十分可觀,所以良好的樣本復雜度是一個優秀算法的先決條件。
·對超參數不敏感。真實世界中研究人員希望避免參數調整,而最大化交叉熵的強化學習提供了一個魯棒的學習框架來最小化超參數調節的需求。
·Off-policy學習。解耦策略(off-policy)學習意味著可以使用其他任務場景收集的數據來學習,例如在準備新任務時只需要調整參數和獎勵函數,而解耦策略則允許復用已經收集好的數據來訓練算法。SAC是一個解耦策略(off-policy)和自由模型(model-free)深度強化學習算法。它不僅涵蓋了上述優點,同時其樣本效率足夠在幾小時內解決真實世界的機器人學習問題。此外其超參數十分魯棒,只需要單一的超參數集就可以在不同的模擬環境中獲得良好的表現。更為重要的是這一算法的實現還包含了以下特點,為真實世界的機器人學習提供了重要的作用:
·異步采樣;需要足夠快的推理來最小化控制環中的延時,同時也希望在執行過程中進行訓練。所以在實際情況中數據采樣和實際訓練應該由獨立的線程或進程運行;
·停止/假設訓練;真實硬件中將會面臨一系列錯誤情況,需要考慮數據流連續中斷的情況;
·運動平滑.典型的高斯探索(exploration)將會導致致動器產生抖動,這會對硬件造成不利的影響甚至損傷驅動器和機械結構,所以在實際中研究人員使用了探索的時域相關性來有效緩解這一問題。
SAC
SAC基于最大熵強化學習框架,其中的熵增目標如下所示:
其中s和a是狀態和行動,期望則包含了策略和來自真實系統的動力學性能。換句話說,優化策略不僅最大化期望(第一項),同時還最大化期望的熵(第二項)。其中的參數α平衡了這兩項對于結果的影響,當α為0時上式就退化為傳統的預期回報目標函數。研究人員認為可以將上述目標函數視為熵約束的最大化預期回報,通過自動學習α參數來代替超參數。我們可以從多個角度解釋這一目標函數。既可以將熵看作是策略的先驗,也可以將其視為正則項,同時也可以看作是探索(最大化熵)和利用(最大化回報)間的平衡。SAC通過神經網絡參數化高斯策略和Q函數來最大化這一目標函數,并利用近似動力學編程來進行優化。基于這一目標函數研究人員推導出了更好的強化學習算法,使其性能更加穩定,并且達到足夠高的樣本效率來應用到真實機器人中。
模擬基準
為了評價新型算法的表現,研究人員首先在仿真環境中利用標準的基準任務來對SAC進行了評測,并與深度確定性策略梯度算法(DDPG),孿生延遲深度確定性策略梯度算法(TD3),鄰近策略優化(PPO)等算法進行了比較。幾種算法在三種基本的模擬移動任務上進行了性能比較,分別是豹,螞蟻和人形。
三種移動仿真任務
下圖描述了幾個算法在三個不同任務中的表現,其中實線表示算法的平均回報而陰影則描述了算法表現的范圍,包含了最好和最壞的表現。SAC算法在下圖中由藍色表示,可以看到它的效果最好。更重要的是在最壞的情況下,它還可以保持較好的表現(這意味著在某些極端糟糕的情況下還能保持魯棒性)。
真實世界中的深度強化學習
為了檢驗算法在真實世界中的能力,研究人員在不依賴仿真或者試教的情況下從零開始讓機器人學習解決三個任務。第一個任務中利用了小型四足機器人米諾陶,它擁有八個直驅致動器。其運動空間由擺角和每條腿的延伸部分構成,將運動映射到期望的電機位置,并利用PD控制器進行跟蹤。其觀測數據包括電機角度、滾轉角度、俯仰角度以及基體的角速度。這一任務中欠驅動的機器人需要精巧地平衡腿部接觸力大小來實現移動。沒有訓練過的機器人將會失去平衡并摔倒,摔倒太多次的試錯將會損壞機器人,所以樣本效率是算法的關鍵。下面展示了學習后的算法表現,雖然在平面上對機器人進行的訓練,但在測試時的不同崎嶇、動態的地形上也獲得的較好的結果。這主要來源于SAC學習到了魯棒的策略,訓練時的熵最大化使得策略可以很好地泛化這些地形的擾動而無需額外的訓練過程。
適應多種路況的米諾陶
第二個項目是利用三指靈巧手來旋轉一個閥門的任務。其中機械手有9個自由度,由9個舵機控制。學習出的策略將向PID控制器發送關節的目標角度來實現控制。為了感知到閥的位置,機器人需要機遇下圖中右下角的原始RGB圖像來獲取信息。機器人的目標是將閥帶有顏色的一邊旋轉到下圖所示的位置。閥由一個獨立的電機控制,并按照均勻分布每次初始化到不同的位置(電機的位置同時也為訓練提供了基準)。這將強制策略從原始的RGB中學習到閥當前的朝向。這一任務也由于需要同時感知RGB圖像和對九個自由度的控制而增加了難度。
轉動閥門的靈巧手
在最后的任務中,研究人員將訓練7自由度的Sawyer來堆疊樂高塊。策略接收的信號包括關節的角度的速度以及末端執行器的力作為輸入,同時輸出每個關節的力矩來控制機器人。這個任務中最大的挑戰在于需要先準確的對好積木間的位置,隨后再用力克服插入的摩擦來安放積木。
堆樂高的Sawyer
SAC算法對于上面三個任務都給出了較快的解決:其中米諾陶全地形行走和Sawyer碼積木只用了兩個小時的訓練時間,而靈巧手擰閥門則使用了20個小時。如果直接把閥門的角度告訴機器人而不是通過圖像去學習,則只需要三個小時就能學會。而之前的PPO算法則需要7.4小時才能通過角度學會擰閥門。
實用化的DeepRL
SAC算法是深度強化學習實用化的關鍵一步,雖然在更具挑戰的場景和更大規模的情況下使用還需要很多的工作和研究,但SAC給出的結果已經讓真實世界中的機器人向期待的目標邁出了關鍵的一步,這對于強化學習在機器人領域的實用化具有十分重要的意義。如果小伙伴們想了解更多,請移步項目主頁:https://sites.google.com/view/sac-and-applications同時,研究人員們還將大部分著名的機器人強化學習算法打包成了一個工具包rlkit,其中就包含了本文的SAC算法。開源不久目前已經在git上收獲了384顆星。
可以直接利用conda運行配置環境就可以直接開始愉快的玩耍了。https://github.com/vitchyr/rlkit此外還有一個利用PyTorch實現SAC的版本:https://github.com/rail-berkeley/softlearning以及:https://github.com/haarnoja/sac
-
機器人
+關注
關注
210文章
28205瀏覽量
206534 -
神經網絡
+關注
關注
42文章
4762瀏覽量
100541 -
強化學習
+關注
關注
4文章
266瀏覽量
11215
原文標題:Soft Actor-Critic——用于真實機器人的高效深度強化學習算法
文章出處:【微信號:thejiangmen,微信公眾號:將門創投】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論