用於深度強化學習的結構化控制網絡(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研習社每日更新精彩內容,觀看更多精彩內容:雷鋒網雷鋒網雷鋒網

盤點圖像分類的竅門

深度學習目標檢測算法綜述

生成模型:基於單張圖片找到物體位置

注意力的動畫解析(以機器翻譯為例)


等你來譯:

如使用深度學習玩Pong遊戲 

教程:使用iPhone相機和openCV來完成3D重建(第三部分)

高級DQNs:利用深度強化學習玩吃豆人遊戲

深度強化學習新趨勢:谷歌如何把好奇心引入強化學習智能體 



想在手機閱讀更多iPhone App資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems