用於深度強化學習的結構化控制網絡(ICML 論文講解)

本文爲 AI 研習社編譯的技術博客,原標題 :

Structured Control Nets for Deep Reinforcement Learning Tutorial (ICML Published Long Talk Paper)

作者 | Mario Srouji

翻譯 | 永恆如新的日常、召喚神龍              

校對 | 斯蒂芬·二狗子        審覈 | 醬番梨       整理 | 立魚王

原文鏈接:

https://medium.com/@mariosrouji/structured-control-nets-for-deep-reinforcement-learning-tutorial-icml-published-long-talk-paper-2ff99a73c8b


論文鏈接:https://arxiv.org/abs/1802.08311

摘要近年來,深度強化學習在解決序列決策的幾個重要基準問題方面取得了令人矚目的進展。許多控制應用程序使用通用多層感知器(MLP),用於策略網絡的非視覺部分。在本工作中,我們爲策略網絡表示提出了一種新的神經網絡架構,該架構簡單而有效。所提出的結構化控制網(Structured Control Net ,SCN)將通用多層感知器MLP分成兩個獨立的子模塊:非線性控制模塊和線性控制模塊。直觀地,非線性控制用於前視角和全局控制,而線性控制圍繞全局控制以外的局部動態變量的穩定。我們假設這這種方法具有線性和非線性策略的優點:可以提高訓練效率、最終的獎勵得分,以及保證學習策略的泛化性能,同時只需要較小的網絡並可以使用不同的通用訓練方法。我們通過OpenAI MuJoCo,Roboschool,Atari和定製的2維城市駕駛環境的模擬驗證了我們的假設的正確性,其中包括多種泛化性測試,使用多種黑盒和策略梯度訓練方法進行訓練。通過將特定問題的先驗結合到架構中,所提出的架構有可能改進更廣泛的控制任務。我們採用生物中心模擬生成器(CPG)作爲非線性控制模塊部分的結構來研究運動任務這個案例,結果了表面的該運動任務的性能被極大提高。

 介紹

在本教程中,我想介紹一下我們在ICML上發表的工作中提出的結構化控制網絡的簡單實現,並在最後展示了案例研究的介紹。 我鼓勵您在完成本教程之前先閱讀本文。

這項工作是我在Apple AI Research實習時完成的,是我實習工作的一部分,擊敗了衆多強化學習控制環境中最先進的技術,包括MuJoCo,Roboschool,Atari,OpenAI Gym,甚至自動駕駛。 我們計劃將這項工作擴展到包含機器人環境和高級操作。

以下是該論文的一些結果。 在採樣效率,最終獎勵和魯棒性方面,我們擊敗了當前在衆多環境中最先進的MLP網絡。 此外,我將通過一個研究案例,逐步展示如何根據特定任務量身定製結構化控制網絡模型,以進一步提高性能!

使用PPO作爲訓練算法,訓練結構化控制網絡(藍色)與多層感知器(橙色),在2M時間步長time steps下的訓練曲線。與現有的先進技術相比,我們在最終獎勵和採樣效率方面都顯示出了顯着的提高。

上圖是消融測試ablation tests的訓練曲線。 我們展示了結構化控制網絡(藍色SCN),其中包含16個隱藏單元的多層感知器作爲非線性模型,以及線性反饋控制模塊,對比相同大小的單獨訓練的多層感知器(綠色)及線性反饋控制模塊(橙色)。 上圖結果表明正是由於這樣的框架結構,可以使結構化控制網絡高效地學習到更好的策略。

我希望這個介紹能夠解開您復現本工作時遇到的困惑,併爲該領域的深入研究提供良好的開端。 我將略過底層的細節,正如文中所述。 讓我們開始吧!

 問題描述

我們在標準的強化學習設置中描述問題。 在t時刻,智能體根據策略π(在我們的設置中,該策略是結構化控制網絡),在給定當前觀測序列o的情況下選擇動作a。 r爲該環境中提供的獎勵,並返回下一個狀態。

該架構概述非常簡單; 它從環境中獲取狀態編碼並將其提供給兩個獨立的流:線性控制流和非線性控制流。 這兩個流可以被視爲獨立的子策略,其輸出被融合爲強化學習的策略網絡。

此體系結構概述的目的是證明這兩個模塊可以使用策略實現,這些策略在策略網絡上強制執行特定於任務的先驗條件,以更好地提高採樣效率和最終性能。

 線性控制

在實現中,線性控制器由K * s + b表示,其中,K是學習的線性控制增益矩陣,b是學習的偏置(s是當前狀態)。

要實現線性控制器,這裏給出了模型設置的代碼片段。 input_size是抽象狀態向量的大小,而output_size是特定環境的動作向量的大小。 我將以OpenAI Gym的walker2d環境爲例。 這裏的偏置b被忽略(僅使用增益矩陣K)。

當你設置好增益矩陣K,就可以使用任何強化學習訓練算法來學習權重(爲簡單起見,權重被初始化爲0)。 增益矩陣K在環境的每個完整迭代之後更新,甚至可以使用延遲更新(例如每10次迭代進行一次更新)。 我將使用Evolutionary Strategies作爲本教程中的訓練算法。

以下示例代碼段給出如何得到線性模塊的動作輸出。 這裏介紹一個輔助函數,用於剪切輸出操作向量以保持在環境的定義範圍內(對於walker2d,這是[-1,1])。

生成動作輸出的線性模塊(U_l):

我將K增益矩陣向量調整爲(input_size x output_size)大小的矩陣。 轉置這個結果矩陣產生動作矩陣,大小爲(output_size x input_size。)。這個動作矩陣乘以(input_size x 1)大小的狀態向量後,可以得到一個(output_size x 1).大小的動作輸出向量。

然後,您可以根據從環境接收的獎勵信號更新K向量。 這就是線性控制的全部內容!

 非線性控制

在本文的大部分實驗中,我們使用一個簡單的多層感知器(MLP)作爲非線性控制模塊。與線性控制類似,MLP的權值在每一個完整的episode中得到更新。

本文主要使用有兩個隱藏層的MLP模型,其中每個隱藏層有16個隱藏單元,並使用tanh非線性作爲激活函數。當使用ES作爲訓練算法時,由於訓練算法固有的隨機性,MLP是直接輸出動作向量。而當採用PPO訓練時,輸出是一個具有可變標準差的高斯分佈的均值。

爲了簡單起見,我不展示MLP的設置。您可以使用任何ML框架(TensorFlow、PyTorch等)來創建MLP模型本身。我們使用OpenAI 作爲我們的訓練算法和模型:https://github.com/openai/baselines.  。

以下是在使用TensorFlow (tf) 無視覺輸入的環境中使用的SCN的模型設置代碼片段:

以下是使用Atari的卷積神經網絡進行視覺輸入的SCN模型設置的代碼片段:


 合併輸出

當你獲取了線性項和非線性項的輸出後,對這兩項的簡單相加成爲結構控制網絡的輸出。

當使用進化策略作爲訓練算法時,將輸出合併就像將線性和非線性分量相加一樣簡單,可以直接產生輸出動作(由於ES的固有隨機性和無梯度算法的特性)。

當使用PPO或任何其他策略梯度訓練算法時,請參考非線性部分中上面的代碼片段,以瞭解輸出是如何連接/添加在一起的。

 案例研究:用一個特定運動的先驗模型替換非線性模塊中的MLP

在我們的最後一組實驗中,我們使用動態腿移動作爲一個案例研究來演示如何使用特定於任務的先驗來定製SCN以適應特定的任務。

我們用一箇中央模式生成器(CPG)的模擬代替了MLP來充當非線性模塊。這種CPG模擬對於具有重複/循環運動類型(如散步、游泳、跳躍等)的任務非常有效。

在自然界中,用於運動的神經控制器具有特定的結構,稱爲中央模式發生器(Central Pattern generator, CPGs),這是一種能夠產生協調節奏模式的神經迴路。雖然一般前饋MLP網絡很難學習節律運動,但通過使用傅立葉級數模擬生物CPGs並訓練傅立葉係數,我們能夠提高這些任務的最終性能和採樣效率。

因此,非線性項爲:

需要馬上注意的是:我們不將狀態作爲輸入提供給CPG仿真器。利用ES作爲訓練算法,我們可以非常有效地在沒有狀態信號的情況下對正弦信號進行調優。狀態通過如上所示的線性控制項輸入,然後根據SCN準則與CPG輸出相結合。

在我們的實現中,我們學習了16個正弦波的振幅、頻率和相位(對應於動作輸出向量中的每個值)。動作輸出是將所有16個正弦輸出組合在一起形成非線性項。

讓我們用python來完成這個模型的設置。

這裏設置cpg_weights大小,對於每個正弦曲線的振幅、頻率和相位都是設爲3倍,而這裏的output_size是下一個動作的向量大小(因爲我們在這個狀態下不再輸入)。

我將重用helper函數來在界限內裁剪操作。讓我們再添加一些函數來計算正弦輸出(我將在下面解釋它們的用法):


現在,爲了生成操作輸出,我使用以下代碼:


花一分鐘來消化代碼。本質上,這裏所發生的是,對於output_size向量中的每個動作值,我們通過提取輸入到正弦波中的振幅、頻率和相位來產生正弦輸出。我們對操作向量中的所有output_size項執行此操作,對於每個迭代,將所有cpg_constant迭代組合在一起(因此在我們的示例中,對每個操作項值將16個正弦輸出相加)。最後,我們將輸出向量與線性控制項相同地裁剪,然後根據SCN將這兩項相加。

這種相當簡單的方法在非線性項上優於MLP,在機車任務(如walker2d、swimmer、Ant等)上有顯著的優勢,因爲它能夠將這種有節奏的特定於任務的先驗施加在結構化控制網絡上。這裏再次對性能進行了改進!

上圖是採用ES訓練運動神經網絡(藍色爲案例研究網絡)、結構控制網絡(橙色爲SCN)、基線多層感知機(綠色爲MLP) 在2M時間步長的訓練曲線。

 結論

我希望本教程能夠幫助您重現結果,並繼續在這個領域進行研究。如果您想了解這方面討論內容的更多信息,或者有任何疑惑,請在本文後面留下評論。

我們鼓勵進一步研究探索SCN的不同應用(如案例研究所示),特別是在機器人控制領域。如果你發現任何有趣的東西,請告訴我們!

我們正繼續研究深層強化學習的策略網絡結構,希望在未來能有更多有趣的發現。下次再見!

想要繼續查看該篇文章相關鏈接和參考文獻?

長按鏈接點擊打開或點擊【用於深度強化學習的結構化控制網絡(ICML論文講解)】:

https://ai.yanxishe.com/page/TextTranslation/1383

AI研習社精彩推薦:

李飛飛主講王牌課程,計算機視覺的深化課程,神經網絡在計算機視覺領域的應用,涵蓋圖像分類、定位、檢測等視覺識別任務,以及其在搜索、圖像理解、應用、地圖繪製、醫學、無人駕駛飛機和自動駕駛汽車領域的前沿應用。

加入小組免費觀看視頻:https://ai.yanxishe.com/page/groupDetail/19


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章