我們知道,無論是深度學習還是深度增強學習,都是一種表示經驗的辦法,都需要通過樣本獲取和表達經驗。但是,深度增強學習DRL的樣本獲取比一般的深度學習(比如收集圖片、打標簽,當然也很費勁,很多實際的工程問題第一個難題就是收集樣本)還要昂貴的多,不僅僅是費時費力,還要昂貴。這也就是為什么deepmind要從游戲玩起的原因。因此最近幾年,如何利用在仿真環境中學習到的知識提高真實世界學習效率變成深度增強學習熱點之一也就很容易理解了。前一段時間,李飛飛實驗室發表了一篇論文,基本功能是在房間里找東西,也涉及到從仿真到真實的一個過程,主要是用的fine-tuning的辦法。
今天這篇論文也是deepmind出品,作者在6月份的icml大會上講了一篇叫progressive nets的論文,主要是利用很特殊的一種transfer learning的方法實現不同任務間的經驗借鑒,其中提到可以應用到從仿真到實際機器人。今年10月份,作者有單獨寫了一篇論文來說明這個應用,就是這篇論文了Sim-to-Real Robot Learning from Pixels with Progressive Nets。
我們(論文)提出了一種叫progressive networks來橋接模擬和現實世界,把模擬環境中學習到的策略轉移到現實世界中。Progressive network是一個可以重用把從low-level的視覺特征到high-level的策略轉移到新任務上,而且能簡單組合實現復雜的技巧的通用框架。
先看一下網絡結構吧:
應該比較容易理解的,每一列是一個任務,第一個任務沒啥特別的,老老實實訓練就行了,訓練好了之后參數就凍結了(這點是不同于fine-tuning的),第二個任務在隨機初始化參數后,訓練中每層的輸入除了自己上一層的輸出外,還有前面任務的對應層的輸出(要經過adapter function,圖中標記為a)。所以每層的函數如下:
k表示本任務,j<k表示之前的任務,i表示層。
因為都是應用于模擬到現實,progressive network表現出了不同于fine-tuning的特點。首先不用因為fine-tuning改變任務的參數。其次每一列任務都是不同的,不同的輸入,顯然更能適應實際的機器人。最后,后面任務可以任意改變自己的網絡連接,單獨的層次之間的轉移學習也是可以的,適應性更廣。
論文自己做的測試是真實的Jaco機器臂和The MuJoCo physics simulator模擬環境,效果如下:
兩個都用了圖像輸入,但是差別也是顯而易見的。
測試的網絡如下:
模擬環境測試結果如下:
轉移到真實環境的測試效果如下:
效果還是相當驚人的。論文還通過改變物體的顏色或者透視變化、各種不同的參數來影響學習效果,從下圖可以看到progressive比fine-tuning要魯棒的多。
最后一個測試,在機器人中增加傳感器輸入(模擬環境是沒有的),效果如下(第三列是僅僅訓練了傳感器輸入的):