0
本文作者: AI研習(xí)社-譯站 | 2019-02-21 10:52 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :
Structured Control Nets for Deep Reinforcement Learning Tutorial (ICML Published Long Talk Paper)
作者 | Mario Srouji
翻譯 | 永恒如新的日常、召喚神龍
校對(duì) | 斯蒂芬·二狗子 審核 | 醬番梨 整理 | 立魚(yú)王
原文鏈接:
https://medium.com/@mariosrouji/structured-control-nets-for-deep-reinforcement-learning-tutorial-icml-published-long-talk-paper-2ff99a73c8b
論文鏈接:https://arxiv.org/abs/1802.08311
摘要:近年來(lái),深度強(qiáng)化學(xué)習(xí)在解決序列決策的幾個(gè)重要基準(zhǔn)問(wèn)題方面取得了令人矚目的進(jìn)展。許多控制應(yīng)用程序使用通用多層感知器(MLP),用于策略網(wǎng)絡(luò)的非視覺(jué)部分。在本工作中,我們?yōu)椴呗跃W(wǎng)絡(luò)表示提出了一種新的神經(jīng)網(wǎng)絡(luò)架構(gòu),該架構(gòu)簡(jiǎn)單而有效。所提出的結(jié)構(gòu)化控制網(wǎng)(Structured Control Net ,SCN)將通用多層感知器MLP分成兩個(gè)獨(dú)立的子模塊:非線性控制模塊和線性控制模塊。直觀地,非線性控制用于前視角和全局控制,而線性控制圍繞全局控制以外的局部動(dòng)態(tài)變量的穩(wěn)定。我們假設(shè)這這種方法具有線性和非線性策略的優(yōu)點(diǎn):可以提高訓(xùn)練效率、最終的獎(jiǎng)勵(lì)得分,以及保證學(xué)習(xí)策略的泛化性能,同時(shí)只需要較小的網(wǎng)絡(luò)并可以使用不同的通用訓(xùn)練方法。我們通過(guò)OpenAI MuJoCo,Roboschool,Atari和定制的2維城市駕駛環(huán)境的模擬驗(yàn)證了我們的假設(shè)的正確性,其中包括多種泛化性測(cè)試,使用多種黑盒和策略梯度訓(xùn)練方法進(jìn)行訓(xùn)練。通過(guò)將特定問(wèn)題的先驗(yàn)結(jié)合到架構(gòu)中,所提出的架構(gòu)有可能改進(jìn)更廣泛的控制任務(wù)。我們采用生物中心模擬生成器(CPG)作為非線性控制模塊部分的結(jié)構(gòu)來(lái)研究運(yùn)動(dòng)任務(wù)這個(gè)案例,結(jié)果了表面的該運(yùn)動(dòng)任務(wù)的性能被極大提高。
在本教程中,我想介紹一下我們?cè)贗CML上發(fā)表的工作中提出的結(jié)構(gòu)化控制網(wǎng)絡(luò)的簡(jiǎn)單實(shí)現(xiàn),并在最后展示了案例研究的介紹。 我鼓勵(lì)您在完成本教程之前先閱讀本文。
這項(xiàng)工作是我在Apple AI Research實(shí)習(xí)時(shí)完成的,是我實(shí)習(xí)工作的一部分,擊敗了眾多強(qiáng)化學(xué)習(xí)控制環(huán)境中最先進(jìn)的技術(shù),包括MuJoCo,Roboschool,Atari,OpenAI Gym,甚至自動(dòng)駕駛。 我們計(jì)劃將這項(xiàng)工作擴(kuò)展到包含機(jī)器人環(huán)境和高級(jí)操作。
以下是該論文的一些結(jié)果。 在采樣效率,最終獎(jiǎng)勵(lì)和魯棒性方面,我們擊敗了當(dāng)前在眾多環(huán)境中最先進(jìn)的MLP網(wǎng)絡(luò)。 此外,我將通過(guò)一個(gè)研究案例,逐步展示如何根據(jù)特定任務(wù)量身定制結(jié)構(gòu)化控制網(wǎng)絡(luò)模型,以進(jìn)一步提高性能!
使用PPO作為訓(xùn)練算法,訓(xùn)練結(jié)構(gòu)化控制網(wǎng)絡(luò)(藍(lán)色)與多層感知器(橙色),在2M時(shí)間步長(zhǎng)time steps下的訓(xùn)練曲線。與現(xiàn)有的先進(jìn)技術(shù)相比,我們?cè)谧罱K獎(jiǎng)勵(lì)和采樣效率方面都顯示出了顯著的提高。
上圖是消融測(cè)試ablation tests的訓(xùn)練曲線。 我們展示了結(jié)構(gòu)化控制網(wǎng)絡(luò)(藍(lán)色SCN),其中包含16個(gè)隱藏單元的多層感知器作為非線性模型,以及線性反饋控制模塊,對(duì)比相同大小的單獨(dú)訓(xùn)練的多層感知器(綠色)及線性反饋控制模塊(橙色)。 上圖結(jié)果表明正是由于這樣的框架結(jié)構(gòu),可以使結(jié)構(gòu)化控制網(wǎng)絡(luò)高效地學(xué)習(xí)到更好的策略。
我希望這個(gè)介紹能夠解開(kāi)您復(fù)現(xiàn)本工作時(shí)遇到的困惑,并為該領(lǐng)域的深入研究提供良好的開(kāi)端。 我將略過(guò)底層的細(xì)節(jié),正如文中所述。 讓我們開(kāi)始吧!
我們?cè)跇?biāo)準(zhǔn)的強(qiáng)化學(xué)習(xí)設(shè)置中描述問(wèn)題。 在t時(shí)刻,智能體根據(jù)策略π(在我們的設(shè)置中,該策略是結(jié)構(gòu)化控制網(wǎng)絡(luò)),在給定當(dāng)前觀測(cè)序列o的情況下選擇動(dòng)作a。 r為該環(huán)境中提供的獎(jiǎng)勵(lì),并返回下一個(gè)狀態(tài)。
結(jié)構(gòu)化控制網(wǎng)絡(luò)體系結(jié)構(gòu)
該架構(gòu)概述非常簡(jiǎn)單; 它從環(huán)境中獲取狀態(tài)編碼并將其提供給兩個(gè)獨(dú)立的流:線性控制流和非線性控制流。 這兩個(gè)流可以被視為獨(dú)立的子策略,其輸出被融合為強(qiáng)化學(xué)習(xí)的策略網(wǎng)絡(luò)。
此體系結(jié)構(gòu)概述的目的是證明這兩個(gè)模塊可以使用策略實(shí)現(xiàn),這些策略在策略網(wǎng)絡(luò)上強(qiáng)制執(zhí)行特定于任務(wù)的先驗(yàn)條件,以更好地提高采樣效率和最終性能。
在實(shí)現(xiàn)中,線性控制器由K * s + b表示,其中,K是學(xué)習(xí)的線性控制增益矩陣,b是學(xué)習(xí)的偏置(s是當(dāng)前狀態(tài))。
要實(shí)現(xiàn)線性控制器,這里給出了模型設(shè)置的代碼片段。 input_size是抽象狀態(tài)向量的大小,而output_size是特定環(huán)境的動(dòng)作向量的大小。 我將以O(shè)penAI Gym的walker2d環(huán)境為例。 這里的偏置b被忽略(僅使用增益矩陣K)。
當(dāng)你設(shè)置好增益矩陣K,就可以使用任何強(qiáng)化學(xué)習(xí)訓(xùn)練算法來(lái)學(xué)習(xí)權(quán)重(為簡(jiǎn)單起見(jiàn),權(quán)重被初始化為0)。 增益矩陣K在環(huán)境的每個(gè)完整迭代之后更新,甚至可以使用延遲更新(例如每10次迭代進(jìn)行一次更新)。 我將使用Evolutionary Strategies作為本教程中的訓(xùn)練算法。
以下示例代碼段給出如何得到線性模塊的動(dòng)作輸出。 這里介紹一個(gè)輔助函數(shù),用于剪切輸出操作向量以保持在環(huán)境的定義范圍內(nèi)(對(duì)于walker2d,這是[-1,1])。
生成動(dòng)作輸出的線性模塊(U_l):
我將K增益矩陣向量調(diào)整為(input_size x output_size)大小的矩陣。 轉(zhuǎn)置這個(gè)結(jié)果矩陣產(chǎn)生動(dòng)作矩陣,大小為(output_size x input_size。)。這個(gè)動(dòng)作矩陣乘以(input_size x 1)大小的狀態(tài)向量后,可以得到一個(gè)(output_size x 1).大小的動(dòng)作輸出向量。
然后,您可以根據(jù)從環(huán)境接收的獎(jiǎng)勵(lì)信號(hào)更新K向量。 這就是線性控制的全部?jī)?nèi)容!
在本文的大部分實(shí)驗(yàn)中,我們使用一個(gè)簡(jiǎn)單的多層感知器(MLP)作為非線性控制模塊。與線性控制類似,MLP的權(quán)值在每一個(gè)完整的episode中得到更新。
本文主要使用有兩個(gè)隱藏層的MLP模型,其中每個(gè)隱藏層有16個(gè)隱藏單元,并使用tanh非線性作為激活函數(shù)。當(dāng)使用ES作為訓(xùn)練算法時(shí),由于訓(xùn)練算法固有的隨機(jī)性,MLP是直接輸出動(dòng)作向量。而當(dāng)采用PPO訓(xùn)練時(shí),輸出是一個(gè)具有可變標(biāo)準(zhǔn)差的高斯分布的均值。
為了簡(jiǎn)單起見(jiàn),我不展示MLP的設(shè)置。您可以使用任何ML框架(TensorFlow、PyTorch等)來(lái)創(chuàng)建MLP模型本身。我們使用OpenAI 作為我們的訓(xùn)練算法和模型: https://github.com/openai/baselines. 。
以下是在使用TensorFlow (tf) 無(wú)視覺(jué)輸入的環(huán)境中使用的SCN的模型設(shè)置代碼片段:
以下是使用Atari的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行視覺(jué)輸入的SCN模型設(shè)置的代碼片段:
當(dāng)你獲取了線性項(xiàng)和非線性項(xiàng)的輸出后,對(duì)這兩項(xiàng)的簡(jiǎn)單相加成為結(jié)構(gòu)控制網(wǎng)絡(luò)的輸出。
當(dāng)使用進(jìn)化策略作為訓(xùn)練算法時(shí),將輸出合并就像將線性和非線性分量相加一樣簡(jiǎn)單,可以直接產(chǎn)生輸出動(dòng)作(由于ES的固有隨機(jī)性和無(wú)梯度算法的特性)。
當(dāng)使用PPO或任何其他策略梯度訓(xùn)練算法時(shí),請(qǐng)參考非線性部分中上面的代碼片段,以了解輸出是如何連接/添加在一起的。
在我們的最后一組實(shí)驗(yàn)中,我們使用動(dòng)態(tài)腿移動(dòng)作為一個(gè)案例研究來(lái)演示如何使用特定于任務(wù)的先驗(yàn)來(lái)定制SCN以適應(yīng)特定的任務(wù)。
我們用一個(gè)中央模式生成器(CPG)的模擬代替了MLP來(lái)充當(dāng)非線性模塊。這種CPG模擬對(duì)于具有重復(fù)/循環(huán)運(yùn)動(dòng)類型(如散步、游泳、跳躍等)的任務(wù)非常有效。
在自然界中,用于運(yùn)動(dòng)的神經(jīng)控制器具有特定的結(jié)構(gòu),稱為中央模式發(fā)生器(Central Pattern generator, CPGs),這是一種能夠產(chǎn)生協(xié)調(diào)節(jié)奏模式的神經(jīng)回路。雖然一般前饋MLP網(wǎng)絡(luò)很難學(xué)習(xí)節(jié)律運(yùn)動(dòng),但通過(guò)使用傅立葉級(jí)數(shù)模擬生物CPGs并訓(xùn)練傅立葉系數(shù),我們能夠提高這些任務(wù)的最終性能和采樣效率。
因此,非線性項(xiàng)為:
需要馬上注意的是:我們不將狀態(tài)作為輸入提供給CPG仿真器。利用ES作為訓(xùn)練算法,我們可以非常有效地在沒(méi)有狀態(tài)信號(hào)的情況下對(duì)正弦信號(hào)進(jìn)行調(diào)優(yōu)。狀態(tài)通過(guò)如上所示的線性控制項(xiàng)輸入,然后根據(jù)SCN準(zhǔn)則與CPG輸出相結(jié)合。
在我們的實(shí)現(xiàn)中,我們學(xué)習(xí)了16個(gè)正弦波的振幅、頻率和相位(對(duì)應(yīng)于動(dòng)作輸出向量中的每個(gè)值)。動(dòng)作輸出是將所有16個(gè)正弦輸出組合在一起形成非線性項(xiàng)。
讓我們用python來(lái)完成這個(gè)模型的設(shè)置。
這里設(shè)置cpg_weights大小,對(duì)于每個(gè)正弦曲線的振幅、頻率和相位都是設(shè)為3倍,而這里的output_size是下一個(gè)動(dòng)作的向量大小(因?yàn)槲覀冊(cè)谶@個(gè)狀態(tài)下不再輸入)。
我將重用helper函數(shù)來(lái)在界限內(nèi)裁剪操作。讓我們?cè)偬砑右恍┖瘮?shù)來(lái)計(jì)算正弦輸出(我將在下面解釋它們的用法):
現(xiàn)在,為了生成操作輸出,我使用以下代碼:
花一分鐘來(lái)消化代碼。本質(zhì)上,這里所發(fā)生的是,對(duì)于output_size向量中的每個(gè)動(dòng)作值,我們通過(guò)提取輸入到正弦波中的振幅、頻率和相位來(lái)產(chǎn)生正弦輸出。我們對(duì)操作向量中的所有output_size項(xiàng)執(zhí)行此操作,對(duì)于每個(gè)迭代,將所有cpg_constant迭代組合在一起(因此在我們的示例中,對(duì)每個(gè)操作項(xiàng)值將16個(gè)正弦輸出相加)。最后,我們將輸出向量與線性控制項(xiàng)相同地裁剪,然后根據(jù)SCN將這兩項(xiàng)相加。
這種相當(dāng)簡(jiǎn)單的方法在非線性項(xiàng)上優(yōu)于MLP,在機(jī)車任務(wù)(如walker2d、swimmer、Ant等)上有顯著的優(yōu)勢(shì),因?yàn)樗軌驅(qū)⑦@種有節(jié)奏的特定于任務(wù)的先驗(yàn)施加在結(jié)構(gòu)化控制網(wǎng)絡(luò)上。這里再次對(duì)性能進(jìn)行了改進(jìn)!
上圖是采用ES訓(xùn)練運(yùn)動(dòng)神經(jīng)網(wǎng)絡(luò)(藍(lán)色為案例研究網(wǎng)絡(luò))、結(jié)構(gòu)控制網(wǎng)絡(luò)(橙色為SCN)、基線多層感知機(jī)(綠色為MLP) 在2M時(shí)間步長(zhǎng)的訓(xùn)練曲線。
我希望本教程能夠幫助您重現(xiàn)結(jié)果,并繼續(xù)在這個(gè)領(lǐng)域進(jìn)行研究。如果您想了解這方面討論內(nèi)容的更多信息,或者有任何疑惑,請(qǐng)?jiān)诒疚暮竺媪粝略u(píng)論。
我們鼓勵(lì)進(jìn)一步研究探索SCN的不同應(yīng)用(如案例研究所示),特別是在機(jī)器人控制領(lǐng)域。如果你發(fā)現(xiàn)任何有趣的東西,請(qǐng)告訴我們!
我們正繼續(xù)研究深層強(qiáng)化學(xué)習(xí)的策略網(wǎng)絡(luò)結(jié)構(gòu),希望在未來(lái)能有更多有趣的發(fā)現(xiàn)。下次再見(jiàn)!
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?
長(zhǎng)按鏈接點(diǎn)擊打開(kāi)或點(diǎn)擊【用于深度強(qiáng)化學(xué)習(xí)的結(jié)構(gòu)化控制網(wǎng)絡(luò)(ICML論文講解)】:
https://ai.yanxishe.com/page/TextTranslation/1383
AI研習(xí)社每日更新精彩內(nèi)容,觀看更多精彩內(nèi)容:雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
等你來(lái)譯:
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。