SAC算法解析

上一篇文章介紹了利用確定策略來解決連續(xù)控制問題的DDPG墨闲,現(xiàn)在再來介紹一種非常牛的用隨機(jī)策略來做連續(xù)控制的方法Soft Actor Critic (SAC) 。它是一種以off-policy的方式來優(yōu)化隨機(jī)策略的算法现喳,它的核心特點(diǎn)是熵正則化, 策略的訓(xùn)練在最大化預(yù)期回報和最大化熵之間作了個權(quán)衡教届,在這一點(diǎn)上實(shí)際也跟exploration還是exploitation有重大關(guān)系橙困,增加熵會導(dǎo)致更多探索,這可以加速之后的學(xué)習(xí)奋献,還可以防止策略過早地收斂到一個糟糕的局部最優(yōu)健霹。

熵和隨機(jī)策略

為了防止有些人不太清楚熵的概念旺上,在正式開始講SAC之前,我稍微介紹一下熵的概念糖埋,以及隨機(jī)策略的好處宣吱。

這里的熵指的是信息熵H(X),它代表一個隨機(jī)變量X所有可能取值的自信息I(x) 的加權(quán)求和:
H(X) = \int_X I(x) dx = \int_X -log(P(x))P(x) dx
正如上式所示瞳别,隨機(jī)變量越是隨機(jī)征候,熵就越大。根據(jù)熱力學(xué)第二定律祟敛,自然界本身無時無刻不處在于一個熵增的過程之中疤坝,即不斷走向混沌,而人類的奮斗進(jìn)程則是對抗自然的熵減過程馆铁,他期望變得明確和有序跑揉,強(qiáng)化學(xué)習(xí)的過程也是如此。

一般的埠巨,強(qiáng)化學(xué)習(xí)的目標(biāo)在于最大化獎勵历谍,即最大化動作狀態(tài)價值Q_\pi(s,a) ,確定策略可以直接選擇最大Q_\pia 來行動,但是這樣就會使得操作模式是固化的辣垒,比如訓(xùn)練一個機(jī)械臂去撿東西望侈,實(shí)際運(yùn)動軌跡可以多種多樣,而確定策略就會使這個動作變得很單調(diào)勋桶。 并且如果是在對抗的環(huán)境中甜无,這種固定化的操作也容易被對手利用而存在漏洞,而基于策略\pi(a|s) 隨機(jī)采樣的動作 a 來行動就可以有效避免這一點(diǎn)哥遮,并且 \pi 的熵越大岂丘,也便代表動作越隨機(jī),越能在同一情況下做出不同的動作眠饮,讓對手無法輕易預(yù)測奥帘,當(dāng)然在訓(xùn)練時鼓勵熵增帶來的探索優(yōu)化的好處也是不言而喻的。

隨機(jī)策略的Actor Critic方法

actor-critic方法依賴于策略梯度仪召,目標(biāo)是利用梯度上升來讓J(\theta) = \mathbb{E_S}[V_\pi(S)]最大化寨蹋,因?yàn)槠谕缓们螅谑蔷陀妹商乜宸椒▉斫疲?br> \begin{align} \frac {\partial~J(\theta)}{\partial~\theta} =& \mathbb{E} [\frac {\partial~ log ~\pi(A|s;\theta)}{\partial ~ \theta} · Q_\pi(s, A)] \\ \approx & \frac{\partial~log ~\pi(a|s;\theta)}{\partial~\th} · Q_\pi(s, a) \end{align}
假設(shè)動作an 維的扔茅,那么策略\pi 使用n個高斯分布N(\mu, \sigma) 連乘的方式來近似\pi
\pi(a|s) = \prod^n_{i=1} \frac{1}{\sqrt {2\pi} \sigma_i} · exp(-\frac{(a_i-\mu_i)^2}{2\sigma_i^2})
而其中的\sigma\mu 使用神經(jīng)網(wǎng)絡(luò)來近似:

近似高斯分布參數(shù)

然后根據(jù)得到的n個高斯分布來采樣得到行動a已旧, 將其代入上面的\pi, 便可以得到 \frac{\partial~log ~\pi(a|s;\theta)}{\partial~\th} , 現(xiàn)在還剩下 Q_\pi(s, a) 需要求。這個我們使用actor-critic中的critic對應(yīng)的價值網(wǎng)絡(luò)q(s, q; w) 來近似,于是整個網(wǎng)絡(luò)可以表示為:
連續(xù)控制問題的隨機(jī)策略actor-critic

然后用td算法來最小化target-q 和 q的差距來優(yōu)化價值網(wǎng)絡(luò)的參數(shù)召娜,整個訓(xùn)練過程就算跑通了运褪。

熵正則化

相對于A3C之類的算法只給策略網(wǎng)絡(luò)增加了熵正則,SAC給價值網(wǎng)絡(luò)也增加了熵正則,這樣鼓勵產(chǎn)生更多的狀態(tài)空間秸讹,進(jìn)一步增加了探索性檀咙,使得模型更具魯棒性。它的做法是通過修改了普通策略學(xué)習(xí)的目標(biāo)函數(shù)璃诀,在每一步的回報中增加了策略的熵弧可,于是目標(biāo)就變成了
J(\theta) = \mathbb{E} [ V_\pi(S) + \alpha H(\pi (·|S)) ]
于是策略梯度就變成了:
\begin{align} \frac {\partial~J(\theta)}{\partial~\theta} =& \mathbb{E} [\frac {\partial~ log ~\pi(A|s;\theta)}{\partial ~ \theta} · Q_\pi(s, A)] \\ \approx & \frac{Q_\pi(s, a) - \alpha ·log~\pi(a|s; \theta ) - \alpha }{\partial~\th} · log~ \pi(a|s; \theta ) \end{align}
然后訓(xùn)練方式基本和普通的actor-critic架構(gòu)一致...

處理高估問題

如果只是像上面那樣的網(wǎng)絡(luò)來訓(xùn)練,很明顯會存在高估的問題劣欢,在最大化Q值時會導(dǎo)致高估棕诵,而在通過自身網(wǎng)絡(luò)來計算TD目標(biāo)的時候又將高估無限傳導(dǎo)進(jìn)一步導(dǎo)致了高估。因此凿将,為了解決高估問題年鸳,我們必須要斬斷這種傳導(dǎo)以及最大化帶來的高估。SAC采用了一個一個類似TD3算法中的clipped double-Q 技巧丸相。


SAC網(wǎng)絡(luò)結(jié)構(gòu)

如上圖所示,SAC使用兩個Q網(wǎng)絡(luò)彼棍,并通過取最小的Q值的方式來避免最大化帶來的高估灭忠,并且使用延遲的價值網(wǎng)絡(luò)(通過Polyak平均)來緩解bootstraping帶來的高估無限傳遞。具體是這樣一個訓(xùn)練過程:

  • 通過策略網(wǎng)絡(luò)采樣動作進(jìn)行游戲座硕,記錄transition(state,action,reward,next_state)到 play buffer中
  • 從play buffer獲取訓(xùn)練數(shù)據(jù)弛作,計算策略網(wǎng)絡(luò)和兩個Q網(wǎng)絡(luò),通過td算法來更新Q網(wǎng)絡(luò)华匾,使用Q值中較小的那個來更新V網(wǎng)絡(luò)映琳,再得到的V值后再使用梯度上升來更新策略網(wǎng)絡(luò),最后再用使用Polyak平均更新目標(biāo)V網(wǎng)絡(luò)蜘拉。

另外萨西,注意一點(diǎn),上面提到的那個策略熵平衡系數(shù)\alpha 可以手工設(shè)置超參數(shù)旭旭,也可以使用自動的方式調(diào)整的谎脯,工業(yè)上傾向于自動的方式。

參考資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末持寄,一起剝皮案震驚了整個濱河市源梭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稍味,老刑警劉巖废麻,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異模庐,居然都是意外死亡烛愧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屑彻,“玉大人验庙,你說我怎么就攤上這事∩缟” “怎么了粪薛?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長搏恤。 經(jīng)常有香客問我违寿,道長,這世上最難降的妖魔是什么熟空? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任藤巢,我火速辦了婚禮,結(jié)果婚禮上息罗,老公的妹妹穿的比我還像新娘掂咒。我一直安慰自己,他們只是感情好迈喉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布绍刮。 她就那樣靜靜地躺著,像睡著了一般挨摸。 火紅的嫁衣襯著肌膚如雪孩革。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天得运,我揣著相機(jī)與錄音膝蜈,去河邊找鬼。 笑死熔掺,一個胖子當(dāng)著我的面吹牛饱搏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播置逻,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼窍帝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了诽偷?” 一聲冷哼從身側(cè)響起坤学,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎报慕,沒想到半個月后深浮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡眠冈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年飞苇,在試婚紗的時候發(fā)現(xiàn)自己被綠了菌瘫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡布卡,死狀恐怖雨让,靈堂內(nèi)的尸體忽然破棺而出膜蠢,到底是詐尸還是另有隱情岸霹,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布设凹,位于F島的核電站贸街,受9級特大地震影響庵寞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜薛匪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一捐川、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逸尖,春花似錦古沥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逞频,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間栋齿,已是汗流浹背苗胀。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓦堵,地道東北人基协。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像菇用,于是被迫代替她去往敵國和親澜驮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

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