SAC

SAC:Soft Actor-Critic
原文:《Soft Actor-Critic:
Off-Policy Maximum Entropy Deep Reinforcement
Learning with a Stochastic Actor》

代碼:https://github.com/rail-berkeley/softlearning (原作者實(shí)現(xiàn))
其他代碼實(shí)現(xiàn): vitchyr/rlkit泡态、openai/spinningup嫉晶、hill-a/stable-baselines承绸、pytorch-soft-actor-critic(OAC作者的參考代碼)

簡介:

SAC屬于Continuous State Space吊圾、Continuous Action Space領(lǐng)域
而連續(xù)領(lǐng)域中最有效的三類方法:

  • TRPO,PPO:目標(biāo)都是在PG算法的優(yōu)化過程中拴还,使得性能單調(diào)上升,并使得上升的幅度盡量大略步。
  • DDPG及其拓展(D4PG,TD3等):DPG的critic用于尋找最優(yōu)策略(準(zhǔn)確度非常影響策略)阅畴,actor用于優(yōu)化當(dāng)前策略,因?yàn)樾枰猀對action求導(dǎo)筋帖,所以不適合用于離散動作空間的任務(wù)奸晴,引入critic可以更加off-poicy;D4PG引入分布式critic日麸,并使用多個actor共同與環(huán)境交互寄啼;TD3參考了double Q的思想來優(yōu)化ctitic,延緩actor的更新代箭,并計算critic的優(yōu)化目標(biāo)時在action上加一個小擾動使得Q(s,a)函數(shù)對a更平滑墩划。
  • Soft Q-Learning, Soft Actor-Critic

簡單說說PPO

  • 在傳統(tǒng)的PG算法中引入AC框架,但更接近PG嗡综,用于stochastic policy乙帮,本身就具有探索能力不需要加擾動,所以critic僅僅是預(yù)測狀態(tài)好壞的工具极景,影響policy調(diào)整的是真正的return察净,所以不需要求Q(s,a)對a的導(dǎo)數(shù),用V(s)來代替return即可盼樟,還便于計算單步?jīng)Q策的Advantage氢卡。
  • 引入 importance sampling技巧,使PG算法成為可以利用過往數(shù)據(jù)的off-policy的算法晨缴,但實(shí)際上嚴(yán)格約束了策略參數(shù)的更新速度译秦,更新步伐不能太大,所以學(xué)者們認(rèn)為PPO還是一種on-policy的算法,需保證訓(xùn)練的policy和生成數(shù)據(jù)的policy一致诀浪,對過往policy生成的數(shù)據(jù)難以再利用棋返,所以sample effciency這個指標(biāo)比較低(這個指標(biāo)是衡量RL的重要指標(biāo))
  • 使用了GAE,batch training雷猪,replay buffer 等提高算法性能的技巧
  • PPO在OpenAI Five上取得了巨大成功睛竣。

SAC

  • 出自BAIR和Google Brain,作者Tuomas Haarnoja是Pieter AbbeelSergey Levine的學(xué)生求摇。這是他們ICML2018工作的擴(kuò)展射沟。
  • SAC宣稱是第一個off-policy + actor critic + maximum entropy的RL算法。(最早應(yīng)該是ACER有結(jié)合所有這些概念)
  • SAC的基于最大熵強(qiáng)化學(xué)習(xí)框架MER与境,他的熵增目標(biāo)函數(shù)包含了策略和來自真實(shí)系統(tǒng)的動力學(xué)性能验夯,不僅優(yōu)化最大化期望(第一項(xiàng)),還優(yōu)化最大化期望的熵(第二項(xiàng)):
  • α=0就是傳統(tǒng)的預(yù)期匯報目標(biāo)函數(shù)
  • α>0可以將熵看做策略的先驗(yàn)摔刁,或者正則項(xiàng)挥转,或者探索和利用之間的平衡
  • 兩個網(wǎng)絡(luò):一個參數(shù)化高斯策略,一個參數(shù)化Q函數(shù)共屈。

SAC 特點(diǎn)

  • (1)Actor-critic框架(用兩個網(wǎng)絡(luò)分別近似policy和value function/Q function)
  • (2)Off-policy(提高樣本效率)绑谣。對標(biāo)on-policy效率低,對標(biāo)fully off-policy的DDPG很難應(yīng)用到高維任務(wù)中拗引,同時對超參很敏感難以泛用到大量具體問題也不用玉座AlphaStar借宵。而SAC結(jié)合了off-policy和stochastic actor。
  • (3)最大化entropy(熵)來保證穩(wěn)定性和exploration矾削。對標(biāo)A3C只是把entropy當(dāng)做正則項(xiàng)

最大化熵強(qiáng)化學(xué)習(xí)(Maximum Entropy Reinforcement Learning)MERL

  • 什么是entropy:SAC中的熵可以理解為混亂度壤玫,無序度,隨機(jī)程度哼凯,熵越高就表示越混亂欲间,其包含的信息量就更多。比如硬幣正反面概率分別為0.1和0.9断部,那么結(jié)果的確定性高一些括改,熵就低一些,正反面概率分別為0.5和0.5家坎,那么結(jié)果就很不確定嘱能,熵就相對較高。引入熵可以讓策略(policy)盡可能隨機(jī)虱疏,agent可以更充分地探索狀態(tài)空間惹骂,避免早早落入局部最優(yōu)。
  • 這是一種嘗試讓預(yù)期回報最大化(標(biāo)準(zhǔn)的強(qiáng)化學(xué)習(xí)目標(biāo))做瞪,同時也讓策略熵最大化的框架对粪。熵更高的策略具有更高的隨機(jī)性右冻,這意味著最大熵強(qiáng)化學(xué)習(xí)更偏向取得高回報策略中隨機(jī)性最高的策略。
  • 為什么這種方法用在機(jī)器人學(xué)習(xí)中很好呢著拭?最重要的原因是纱扭,最大熵優(yōu)化的策略魯棒性更高(更穩(wěn)定):如果策略在訓(xùn)練過程中能夠允許高度隨機(jī)的動作,那么它在測試時候也就更有可能順利地應(yīng)對預(yù)期之外的擾動儡遮。不過更機(jī)智的是乳蛾,最大熵訓(xùn)練不僅可以提高算法對超參數(shù)的魯棒性(穩(wěn)定性),也可以提高采樣效率鄙币。
  • 引入熵之前肃叶,普通RL算法目標(biāo):
  • 引入熵之后,SAC算法目標(biāo):
  • α是溫度參數(shù)十嘿,控制優(yōu)化目標(biāo)更關(guān)注獎勵還是熵因惭,好處1:鼓勵exploration,好處2:學(xué)到near-optimal行為

Energy Based Policy(EBP)
MERL采用了獨(dú)特的策略模型绩衷。為了適應(yīng)更復(fù)雜的任務(wù)蹦魔,MERL中的策略不再是以往的高斯分布形式,而是用基于能量的模型(energy-based model)來表示策略咳燕。讓EBP與值函數(shù)聯(lián)系起來勿决,設(shè)定能量函數(shù)

,所以策略

  • 基于能量的模型在面對多模態(tài)(multimodal)的值函數(shù)Q(s,a)時迟郎,具有更強(qiáng)的策略表達(dá)能力,而一般的高斯分布只能將決策集中在Q值更高的部分聪蘸,忽略其他次優(yōu)解宪肖。
  • 曲線很明顯的說明了stochastic policy的重要性,面對多模的(multimodal)的Q function健爬,傳統(tǒng)的RL只能收斂到一個選擇(左圖)控乾,而更優(yōu)的辦法是右圖,讓policy也直接符合Q的分布娜遵。


    高斯分布策略(左)與基于能量的策略(右)的區(qū)別

理論推導(dǎo)思路

  • soft policy iteration再tabular情況下的收斂性理論推導(dǎo):先證明Qk會收斂到policy的soft Q,再證明π_new比π_old有改進(jìn),最后證明重復(fù)交替使用soft policy ecaluation和soft policy improvement测摔,最終policy會收斂到最優(yōu)浴井。
  • tabular可以收斂,那么使用神經(jīng)網(wǎng)絡(luò)去近似 soft Q-function和 policy 也能有比較好的收斂性質(zhì)纳胧。
  • 實(shí)現(xiàn)思路和EM算法很像镰吆,先固定policy去提升Q,再固定Q去優(yōu)化policy

SAC更新方式

  • soft Q function的更新和普通Q learning的方法一樣是更新Bellman殘差跑慕,只不過V(s)包含了entropy項(xiàng)万皿,有點(diǎn)像 one-step sarsa加了個entropy


    Q網(wǎng)絡(luò)

    Policy網(wǎng)絡(luò)的更新方法是最小化上面提到的KL-散度摧找。


    Policy 網(wǎng)絡(luò)
  • Policy網(wǎng)絡(luò)輸出的是高斯分布的均值和協(xié)方差,但只是根據(jù)均值和協(xié)方差去采樣action是不可導(dǎo)的牢硅,這里用到一個variational autoencoder里常用的reparameterization trick蹬耘。簡單來說就是不直接根據(jù)均值和協(xié)方差采樣,而是先從一個高斯分布里采樣减余,然后再把采樣值乘于協(xié)方差再加上均值(如下圖)综苔。這樣網(wǎng)絡(luò)就變成可導(dǎo)的了。


    reparameterization trick
  • 所以佳励,近似梯度就是

SAC的自動熵調(diào)整(Automating Entropy Adjustment)

  • SAC 借鑒了一些前人的trick來提升性能休里,比如 double Q network, target network。但最重要的一個改進(jìn)是自動熵調(diào)整
  • 熵應(yīng)該在不同的狀態(tài)下有不一樣大小的熵:
    (1)比如在最優(yōu)動作還沒確定的狀態(tài)熵應(yīng)該比較大
    (2)在最優(yōu)動作已經(jīng)能確定的狀態(tài)下熵應(yīng)該取比較小的值赃承。
  • 作者把優(yōu)化問題構(gòu)造為一個帶約束的優(yōu)化問題:最大化Returns的同時妙黍,保持策略的熵大于一個閾值。用到了拉格朗日乘子法和動態(tài)規(guī)劃來求解最好的溫度系數(shù)α
  • 雖然理論上要精確地解決這個問題需要迭代優(yōu)化上面提到的帶約束優(yōu)化問題瞧剖∈眉蓿可是實(shí)際中,他們還是通過函數(shù)近似和隨機(jī)梯度下降來近似求解抓于。

SAC的實(shí)際算法

  • 為了減少policy improvement時的偏差做粤,他們采用了一個常用的trick,兩個網(wǎng)絡(luò)去近似Soft Q-function
  • 在優(yōu)化Actor參數(shù)的時候捉撮,使用Q值比較小的網(wǎng)絡(luò)作為Critic來減少偏差和高估
  • 溫度參數(shù) (也就是上一節(jié)優(yōu)化問題中的拉格朗日乘子)怕品,則通過最小化下式求解:
SAC偽代碼
  • 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
  • SAC同時學(xué)習(xí)幾個網(wǎng)絡(luò):
    (1)action value Q:采用TD3的double Q方法,選取最小值供V和π使用肉康,減弱高估計
    (2)state value V 和 target V灼舍,供Q學(xué)習(xí)使用
    (3)policy π:學(xué)習(xí)分布的高斯參數(shù)骑素,實(shí)際產(chǎn)出action需要從分布中采樣献丑。
    https://nervanasystems.github.io/coach/components/agents/policy_optimization/sac.html

SAC總結(jié)

  • 細(xì)究之前创橄,可以認(rèn)為SAC是RL+熵正則項(xiàng)筐摘,讓動作更隨機(jī),熵再PPO和A3C里都有見過
  • 但是SAC有完備的理論作為支撐柳畔,加上了熵的L2正則項(xiàng)和不加是兩類問題郭赐,但理想的基于能量的策略模型依然沒有在實(shí)際上實(shí)現(xiàn),只能用復(fù)雜的方式去近似EBP,最終實(shí)際的策略模型還是用的高斯分布式俘陷。

SAC表現(xiàn)

  • 谷歌在兩個任務(wù)中對算法進(jìn)行了評估:1)Ghost Robotics 環(huán)境中 Minitaur 四足機(jī)器人的行走观谦;2)用一個三指Dynamixel Claw轉(zhuǎn)動閥門。
  • 要求:高樣本學(xué)習(xí)捉偏,魯棒性強(qiáng)(遇到擾動也穩(wěn)定)

參考資料

https://zhuanlan.zhihu.com/p/52526801
https://zhuanlan.zhihu.com/p/85003758
推導(dǎo)細(xì)節(jié)和實(shí)現(xiàn)細(xì)節(jié):https://zhuanlan.zhihu.com/p/70360272
https://spinningup.openai.com/en/latest/algorithms/sac.html
SAC實(shí)驗(yàn)任務(wù)和表現(xiàn):https://blog.csdn.net/jiawoxuexiqq30294961/article/details/87304961
強(qiáng)化學(xué)習(xí)算法SAC的學(xué)習(xí)探究及基于百度PARL的實(shí)戰(zhàn)(非常簡潔):https://www.huaweicloud.com/articles/1d0333fd58123a05695ddcc8b4532c86.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夭禽,一起剝皮案震驚了整個濱河市谊路,隨后出現(xiàn)的幾起案子缠劝,更是在濱河造成了極大的恐慌剩彬,老刑警劉巖喉恋,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異氓鄙,居然都是意外死亡抖拦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來复颈,“玉大人绩聘,你說我怎么就攤上這事≡淦校” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵衅谷,是天一觀的道長。 經(jīng)常有香客問我舒帮,道長,這世上最難降的妖魔是什么玩郊? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任肢执,我火速辦了婚禮,結(jié)果婚禮上译红,老公的妹妹穿的比我還像新娘。我一直安慰自己侦厚,他們只是感情好耻陕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般篮灼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诅诱,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天娘荡,我揣著相機(jī)與錄音干旁,去河邊找鬼。 笑死炮沐,一個胖子當(dāng)著我的面吹牛疤孕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播央拖,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼祭阀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鲜戒?” 一聲冷哼從身側(cè)響起专控,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遏餐,沒想到半個月后伦腐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡失都,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年柏蘑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粹庞。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡咳焚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庞溜,到底是詐尸還是另有隱情革半,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布流码,位于F島的核電站又官,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏漫试。R本人自食惡果不足惜六敬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驾荣。 院中可真熱鬧外构,春花似錦、人聲如沸秘车。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叮趴。三九已至,卻和暖如春权烧,著一層夾襖步出監(jiān)牢的瞬間眯亦,已是汗流浹背伤溉。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妻率,地道東北人乱顾。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像宫静,于是被迫代替她去往敵國和親走净。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容