• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于優(yōu)先級經(jīng)驗回放的SAC強化學習算法

      2021-04-22 09:19:06劉慶強劉鵬云
      吉林大學學報(信息科學版) 2021年2期
      關鍵詞:經(jīng)驗誤差樣本

      劉慶強, 劉鵬云

      (東北石油大學 電氣信息工程學院, 黑龍江 大慶 163318)

      0 引 言

      相對于有監(jiān)督學習需要人工標注數(shù)據(jù)集標簽進行學習, 強化學習算法通過自行與環(huán)境(Environment)交互, 嘗試最大化從環(huán)境中得到的獎勵(Reward)獲得最優(yōu)的策略。在DQN(Deep Q-Learning)算法[1]之后, 強化學習與深度神經(jīng)網(wǎng)絡相結合, 使強化學習算法能處理更復雜, 維度更高的問題, 其表現(xiàn)效果得到了迅速提升, 并在圍棋[2-3]、 游戲[4-5]、 投資交易[6-8]、 推薦系統(tǒng)[9-10]以及導航規(guī)劃[11-12]上得到了廣泛應用。

      強化學習算法[13]總體可被分為三大類: Actor方法, Critic方法和Actor-Critic方法。Actor方法直接嘗試學習出最優(yōu)決策過程; Critic方法通過評估當前狀態(tài)采取不同動作可得到的累計回報期望, 選擇期望最大的動作間接學習最優(yōu)策略; Actor-Critic是兩種算法的結合, 算法的Critic部分學習以更好的誤差擬合值函數(shù), Actor與環(huán)境交互并根據(jù)Critic的反饋迭代自身參數(shù), 嘗試學習出最優(yōu)策略。

      近期, 深度強化學習領域獲得了顯著的研究進展, OpenAI提出基于隱式課程學習模式[14]的強化學習算法, 使智能體可以不斷找到新任務, 學習新策略。Mendonca等[15]提出基于監(jiān)督學習的元強化學習算法, 能有效幫助探索, 利于在稀疏獎勵環(huán)境中有效學習。Efroni等[16]提出基于有限時域前瞻策略(Finite-Horizon Lookahead Policies)的強化學習算法, 利用最佳樹路徑返回值備份根節(jié)點后代值, 取得了良好的效果。Ciosek等[17]提出OAC(Optimistic Actor Critic)算法, 使用兩個置信區(qū)間估計value值, 高的指導探索, 低的防止過擬合。Haarnoja等[18]提出SAC(Soft Actor Critic)算法, 通過引入最大熵增強了Actor Critic算法的探索能力和穩(wěn)定性, 并在隨后的升級算法[19]中加入了熵權重的自動調(diào)整, 在訓練前期熵部分的權重較大, 引導Agent更主動探索環(huán)境, 并在后期逐漸衰減熵的權重, 讓Agent收斂更加穩(wěn)定。

      針對SAC算法中經(jīng)驗池所有樣本都以等概率隨機采樣, 忽略不同樣本具有不同重要性的信息, 造成訓練速度慢, 訓練過程不穩(wěn)定的缺點, 筆者提出基于優(yōu)先級經(jīng)驗采樣的SAC算法(PER-SAC: Prioritized Experience Replay Soft Actor Critic), 通過在訓練過程中引入優(yōu)先級經(jīng)驗采樣機制, 同時根據(jù)Critic和Actor的誤差計算TD(Temporal-Difference)誤差, 使TD誤差較大的樣本有更大的概率被采樣及訓練, 并使網(wǎng)絡優(yōu)先訓練估值誤差較大和策略表現(xiàn)不好的樣本。實驗結果表明, 所提PER-SAC(Prioritized Experience Replay Soft Actor Critic)算法訓練效率和穩(wěn)定性相較于原始SAC算法有明顯提升, 具有較好的性能。

      1 強化學習, SAC算法及優(yōu)先經(jīng)驗回放

      1.1 強化學習

      (1)

      其動作值Qπ(s,a)=E[Rt|st=s,a], 則最優(yōu)策略為始終選擇當前狀態(tài)下Q值最大的動作, 可表示為

      (2)

      通過Bellman方程迭代動作值函數(shù)可表示為

      Q*(st,at)=E[rt+γmaxQ*(st+1,at+1)]

      (3)

      在引入深度神經(jīng)網(wǎng)絡后, 強化學習算法中動作值函數(shù)Q和狀態(tài)值函數(shù)V都可以使用多層神經(jīng)網(wǎng)絡近似, 深度神經(jīng)網(wǎng)絡理論上可以擬合任意復雜度的函數(shù), 該特性使強化學習算法能被用于解決更加復雜的控制和決策問題。但神經(jīng)網(wǎng)絡具備的“黑盒”復雜特性, 也使深度強化學習算法面臨訓練效率低, 穩(wěn)定性差, 對超參數(shù)敏感等問題。

      1.2 SAC算法

      SAC算法通過在原有的直接最大化獎勵期望的基礎上, 引入了最大熵, 此時算法的目標變成同時最大化獎勵期望和熵, 可表示如下

      (4)

      其中H是策略π在狀態(tài)st時的動作的熵,α是權重系數(shù)。通過引入熵鼓勵策略探索更多動作, 與PPO(Proximal Policy Optimization)[20], A3C(Asynchronous Advantage Actor-Critic)[21]等算法將動作熵作為正則項不同, SAC直接將最大化熵內(nèi)置于目標函數(shù)中。SAC算法分為2部分: 策略評估和策略提升。

      策略評估。SAC算法定義SoftQ值如下

      Qsoft(st,at)=r(st,at)+γE[Vsoft(st+1)]

      (5)

      Soft版本狀態(tài)值函數(shù)V定義如下

      Vsoft(st)=E[Q(st,at)]-logπ(at|st)

      (6)

      策略提升。使用KL散度(Kullback-Leibler Divergence)優(yōu)化策略

      (7)

      其中Zπold(st)是歸一化分布配分函數(shù)。策略πφ的輸出是一個概率分布, SAC算法中使用了重參數(shù)技巧(Reparameterization Trick), 將策略πφ重新定義為

      at=fφ(εt;st)

      (8)

      其中εt是重參數(shù)技巧中隨機變量。根據(jù)上述定義, 訓練過程中, Soft Q函數(shù)的更新梯度為

      (9)

      φJπ(φ)=φlogπφ(at,st)+(atlogπφ(at,st)-atQ(at,st))φfφ(εt;st)

      (10)

      SAC算法還支持自動調(diào)整熵的溫度系數(shù)α, 算法初始溫度系數(shù)較大, 鼓勵智能體進行探索, 隨著智能體慢慢收斂, 溫度系數(shù)能自適應衰減。

      1.3 優(yōu)先經(jīng)驗回放

      SAC算法訓練時, 隨機從經(jīng)驗池(Replay Buffer)中抽取一批樣本訓練, 不同樣本間被選中的概率相等。優(yōu)先經(jīng)驗回放通過賦予更重要的樣本較大的權重, 訓練采樣時權重較大的樣本能以更大的概率被抽取到, 因此, 如何確定樣本的權重是關鍵問題。強化學習算法通過TD誤差衡量算法修正幅度, TD誤差的絕對值越大, 說明該樣本對網(wǎng)絡的校正效果越大。另外, TD誤差較大的樣本, 可能是該狀態(tài)出現(xiàn)的次數(shù)較少, 智能體對該狀態(tài)不熟悉故而表現(xiàn)不佳, 提高此類樣本的出現(xiàn)概率能提高樣本利用率, 加快智能體的學習速度。在優(yōu)先級經(jīng)驗回放DQN[22]算法中, TD誤差δj定義為

      δj=r(st,at)+λQ′(st+1,at+1)-Q(st,at)

      (11)

      其中Q,Q′分別是Q網(wǎng)絡和targetQ網(wǎng)絡。樣本j的采樣概率

      (12)

      其中參數(shù)λ是優(yōu)先級控制系數(shù),δj是樣本j的權重系數(shù)。使用概率采樣機制能保證TD誤差較小的樣本仍然可以被采樣, 保證了算法訓練時樣本的多樣性。優(yōu)先級回放改變了樣本的采樣頻率, 因此需要引入重要性采樣更新樣本計算梯度時的誤差權重

      (13)

      2 基于優(yōu)先經(jīng)驗回放的SAC算法

      PER-SAC算法通過將優(yōu)先經(jīng)驗回放機制引入SAC算法提高算法的訓練速度和穩(wěn)定性。算法在訓練時, 不再以等概率隨機從經(jīng)驗池中抽取數(shù)據(jù), 而是給重要的樣本更大的權重, 增大其被采樣概率, 同時隨著訓練的進行, 動態(tài)調(diào)整不同樣本的權重, PER-SAC算法定義樣本權重為樣本訓練時的TD誤差。

      2.1 綜合全網(wǎng)絡誤差

      值得注意的是, 在優(yōu)先級經(jīng)驗回放DQN算法中只有一個Q網(wǎng)絡, 其TD誤差的計算方式也僅為單個Q網(wǎng)絡的誤差統(tǒng)計。而SAC算法為了減少值函數(shù)的估計偏差, 提高訓練穩(wěn)定性, 使用了兩個Q網(wǎng)絡, 訓練時使用較小的Q值用于梯度計算, 加上策略π網(wǎng)絡, SAC算法一共有3個網(wǎng)絡, 分別為Q1,Q2,π網(wǎng)絡。PER-SAC算法中的TD誤差因此需要同時考慮3個網(wǎng)絡的誤差, 一個簡單的方式是將3個誤差直接相加

      δj=abs(Td(Q1))+abs(Td(Q2))+abs(Td(π))

      (14)

      2.2 帶調(diào)整系數(shù)的綜合TD誤差

      直接將3個網(wǎng)絡各自的絕對誤差相加得到一個總誤差。但由于Q網(wǎng)絡與策略π網(wǎng)絡的輸出意義有著本質(zhì)區(qū)別:Q網(wǎng)絡的輸出是對當前狀態(tài)采取動作后得到累計回報的期望, 該值因不同環(huán)境差異很大, 通常遠大于1。而策略π網(wǎng)絡的輸出是當前環(huán)境Agent采取不同動作的概率, 概率值不超過1。直接將3個網(wǎng)絡的誤差絕對值相加將導致策略π網(wǎng)絡的誤差部分對總體誤差評估的影響較小, 降低算法的性能。PER-SAC算法通過在策略π網(wǎng)絡的誤差部分引入調(diào)整參數(shù)β將其適當放大, 解決了這個問題, 引入調(diào)整參數(shù)β后的總TD誤差計算方法為

      δj=abs(Td(Q1))+abs(Td(Q2))+βabs(Td(π))

      (15)

      在PER-SAC算法中, 前期探索階段時網(wǎng)絡還未訓練, 因此誤差信息未知, 默認設置所有樣本TD誤差為1, 此時算法退化為原始SAC算法。當網(wǎng)絡開始從經(jīng)驗池抽取樣本訓練時, 以TD誤差值統(tǒng)計每個樣本的被采樣概率。當某個批次樣本訓練完成后, 將其最新的TD誤差更新回經(jīng)驗池。隨著訓練進行, 整個經(jīng)驗池的樣本的TD誤差都將被替換為真實的TD誤差, 能最大程度發(fā)揮算法性能。圖1給出了PER-SAC算法的結構及訓練流程圖, 在探索階段Policy與環(huán)境交互得到樣本并存儲至經(jīng)驗池, 并將TD誤差設置為1。當經(jīng)驗池樣本滿足訓練要求后算法即可開始訓練; 以TD誤差統(tǒng)計各樣本的采樣概率進行采樣。Q1和Q2分別計算其TD誤差并更新梯度; 為降低訓練偏差, 使用較小的Q值計算策略網(wǎng)絡的誤差; 根據(jù)式(15)計算總的TD誤差, 并更新經(jīng)驗池中對應樣本的TD誤差。

      PER-SAC算法的結構如圖1所示。PER-SAC算法首先使用Actor與環(huán)境交互, 并通過重參數(shù)引入隨機噪聲加大網(wǎng)絡對新狀態(tài)和動作的探索力度, 然后將樣本存儲至經(jīng)驗池中。在訓練階段, 算法從經(jīng)驗池中根據(jù)權重進行概率采樣, 更新兩個Critic網(wǎng)絡的參數(shù), 同時選取輸出值較小的Q網(wǎng)絡指導Policy網(wǎng)絡更新。最終根據(jù)3個網(wǎng)絡的誤差重新計算TD誤差, 并將其更新至經(jīng)驗池中對應的樣本。

      圖1 PER-SAC算法網(wǎng)絡結構圖Fig.1 PER_SAC algorithm network structure diagram

      PER-SAC算法步驟如下。

      2) for each iteration do

      3) for each environment step do

      4) 根據(jù)狀態(tài)st, 策略πφ采樣得到動作at

      5) 執(zhí)行動作at, 獲得立即獎勵rt和下一狀態(tài)st+1

      6) 將經(jīng)驗樣本(st,at,rt,st+1)存入經(jīng)驗池B中, 樣本的TD誤差初始化為1

      7) 在經(jīng)驗池B, 根據(jù)樣本的TD誤差歸一化作為概率pj進行樣本采樣用于訓練

      8) end for

      9) for each gradient step do

      10) 更新Critic網(wǎng)絡參數(shù)

      θi←θi-λθiJQ(θi) fori∈{1,2}

      11) 更新Policy網(wǎng)絡參數(shù)

      φ←φ-λπφJπ(φ)

      12) 更新溫度系數(shù)α←α-λαJ(α)

      13) 計算各個樣本的TD誤差, 更新到經(jīng)驗池B

      14) 更新各個target網(wǎng)絡參數(shù)

      15) end For

      16) end For

      3 實 驗

      為驗證PER-SAC算法對比SAC算法的優(yōu)越性, 在2個不同的連續(xù)強化學習訓練環(huán)境分別進行訓練與測試, 并繪圖觀察兩種算法在訓練及測試中不同網(wǎng)絡的誤差更正情況。為了顯示算法對優(yōu)化算法的魯棒性及對比其他強化學習算法的優(yōu)越性, 在不同優(yōu)化算法和環(huán)境中, 將PER-SAC算法與雙延遲確定性策略算法(TD3: Twin Delayed Deep Deterministic policy), DDPG(Deep Deterministic Policy Gradient), SAC(Soft Actor Critic)算法進行了實驗比較。實驗證明PER-SAC算法在收斂速度, 訓練穩(wěn)定性, 智能體測試期間表現(xiàn)上均具有優(yōu)異的表現(xiàn)。

      3.1 實驗環(huán)境

      筆者分別選擇強化學習Gym的鐘擺環(huán)境(Pendulum-v0)和小車爬山環(huán)境(Mountain Car Continuous), 在不同的任務環(huán)境, 優(yōu)化算法下分別將PER-SAC算法與SAC算法進行對比。實驗使用的操作系統(tǒng)為Win10, 使用Python 3.7語言開發(fā), Pytorch1.3-CPU版本搭建神經(jīng)網(wǎng)絡及訓練。

      鐘擺環(huán)境(Pendulum-v0)是一個經(jīng)典的強化學習訓練和評估環(huán)境,圖2給出了鐘擺環(huán)境圖。 該環(huán)境的目標是將鐘擺保持垂直向上的姿態(tài), 智能體需要通過觀察鐘擺的角速度、 正弦、 余弦值, 同時輸出[-2, 2]間的連續(xù)值控制電機扭矩。

      小車爬山環(huán)境也是一個連續(xù)空間的強化學習環(huán)境,圖3給出了小車爬山環(huán)境圖。該環(huán)境是一個一維的山坡, 目標是控制一輛動力不足的小車爬山坡, 小車自身動力無法直接完成該任務, 因此需要控制小車反復助跑蓄力沖上山坡, 在到達山頂前環(huán)境每一步的獎勵反饋都是-1。該環(huán)境中智能體需要觀察小車的位置和速度, 并輸出[-1,1]間的連續(xù)值控制小車前進后退的力度。

      圖2 鐘擺環(huán)境 圖3 小車爬山環(huán)境Fig.2 Pendulum environment Fig.3 Mountain car environment

      3.2 實驗參數(shù)

      為對比PER-SAC算法的改進效果, PER-SAC算法的參數(shù)與SAC算法完全一致, 實驗部分環(huán)境將分別嘗試鐘擺環(huán)境和小車爬山環(huán)境; 優(yōu)化算法分別嘗試Adam和SGD。同時與TD3和DDPG算法進行了對比試驗, 其他實驗參數(shù)為SAC算法默認參數(shù)(見表1)。

      表1 實驗參數(shù)設置Tab.1 Experimental parameter setting

      3.3 實驗結果與分析

      與有監(jiān)督學習算法直接計算預測值與標簽值衡量模型效果的方法不同, 強化學習以自身與環(huán)境不斷探索試錯逐步迭代出更優(yōu)決策模型, 筆者將分別從Critic誤差, Actor的誤差及回合的累計獎勵等角度評價算法性能。

      圖4給出了在鐘擺環(huán)境下, 采用Adam優(yōu)化算法, 批次大小設置為32時PER-SAC算法(綠色)與SAC(橙色)在訓練及測試期間的表現(xiàn)情況。由圖4a可以看出, 在整個訓練過程中, PER-SAC的Q1網(wǎng)絡的估計誤差收斂比SAC算法更迅速, 更穩(wěn)定。在訓練至15 000次時PER-SAC算法的Q1誤差已經(jīng)接近1, 而SAC算法的Q1誤差表現(xiàn)得更為震蕩且紊亂, 在訓練至15 000次時誤差震蕩上升至接近10。造成Q1和Q2網(wǎng)絡訓練誤差先由小變大再由大變小的原因主要為網(wǎng)絡隨機初始化時神經(jīng)元參數(shù)都比較小。隨著訓練參數(shù)逐漸增大, 其輸出值也變大, 由于強化學習算法高方差和高偏差的特性, Critic的誤差也在逐漸增大; 隨著訓練的繼續(xù), Critic對環(huán)境的評估越來越精準, 誤差又逐漸下降, 值函數(shù)逐漸收斂。圖4b中Q2網(wǎng)絡的訓練估計誤差也表現(xiàn)出和Q1類似的特性, 這說明PER-SAC算法的兩個值網(wǎng)絡的訓練效率和穩(wěn)定性都得到了提高。圖4c代表策略網(wǎng)絡在訓練期間的誤差情況, 策略網(wǎng)絡的誤差描述的是策略網(wǎng)絡與值網(wǎng)絡分布的KL散度。在訓練初期由于值網(wǎng)絡和策略網(wǎng)絡參數(shù)都比較小, KL散度的值也比較小。隨著訓練的進行, 值網(wǎng)絡對狀態(tài)的評估更加準確, 此時值網(wǎng)絡與策略網(wǎng)絡的KL散度會逐漸增大, 然而隨著策略網(wǎng)絡在不斷根據(jù)KL散度的反饋迭代參數(shù), 策略網(wǎng)絡與值網(wǎng)絡之間的KL散度接著又會逐漸減小, 在總體訓練期間策略誤差表現(xiàn)出先增大后減小。由圖4c可觀察出PER-SAC算法的策略誤差收斂更加迅速, 加入優(yōu)先經(jīng)驗回放使策略網(wǎng)絡修正誤差更加迅速, 同時由于PER-SAC算法的2個Q網(wǎng)絡收斂比SAC算法更加快速穩(wěn)定, 其對策略網(wǎng)絡的梯度反饋在全局角度也更加精確, 能減少策略網(wǎng)絡無意義的更新次數(shù), 這使PER-SAC算法的策略的收斂效率相比于SAC算法有了較大提升。圖4d和圖4e分別代表了算法在訓練期間的回合累計獎勵, PER-SAC算法的表現(xiàn)優(yōu)于SAC算法, 不僅增長更快速而且更加穩(wěn)定。圖4f表示熵的權重(溫度系數(shù))在訓練期間的衰減情況, 總體兩個算法都能使溫度系數(shù)保持穩(wěn)定的衰減, 利于策略的收斂, 引入優(yōu)先經(jīng)驗回放并不會明顯影響該過程。

      圖4 PER-SAC與SAC在訓練及測試期間誤差收斂及獎勵增長情況Fig.4 Error convergence and reward growth of PER-SAC and SAC during training and testing

      表2給出了在兩個環(huán)境, 不同的優(yōu)化算法下, PER-SAC與其他3個比較算法在訓練15 000步的測試表現(xiàn), 采用的指標是指數(shù)平滑后的回合累計獎勵, 采用指數(shù)平滑的方式能綜合策略前面的回合的表現(xiàn), 降低隨機干擾。表格前兩行是鐘擺環(huán)境下的算法表現(xiàn), 在Adam優(yōu)化算法下, TD3,DDPG與SAC算法的表現(xiàn)較為接近, 在-700~-800范圍內(nèi)波動, 而PER-SAC算法表現(xiàn)明顯優(yōu)于前幾個算法, 達到了-259.2。而在SGD優(yōu)化算法中, SAC與PER-SAC算法較為接近, 而TD3與DDPG算法表現(xiàn)則差于Adam算法的結果。在小車爬山連續(xù)環(huán)境中, 無論在Adam還是SGD環(huán)境下, 4個算法均未能爬到山頂, 而選擇了降低油耗的策略, 但通過其獎勵仍然能反映出算法收斂的速度。TD3與DDPG算法在2種優(yōu)化算法下的獎勵均小于-2, 而SAC算法與PER-SAC算法均大于-1。在所有的試驗中, SAC類算法表現(xiàn)都優(yōu)于TD3和DDPG算法, 證明其最大熵策略的有效性。本次實驗設置的步數(shù)為15 000, 相對普通強化學習實驗的次數(shù)更低, 更能體現(xiàn)算法前期的收斂性能與學習速度, 而PER-SAC算法表現(xiàn)均優(yōu)于SAC算法, 說明引入優(yōu)先級回放機制能給SAC算法帶來穩(wěn)定的性能提升, 證明了PER-SAC算法的有效性。

      表2 算法在不同環(huán)境及配置下訓練最終回合平滑累計獎勵(平滑系數(shù)為0.8)Tab.2 Cumulative reward of algorithm training in different environments and configurations (smoothing coefficientis 0.8)

      4 結 語

      筆者提出了PER-SAC算法, 通過將優(yōu)先級經(jīng)驗回放機制引入SAC算法, 提升了算法的訓練速度和穩(wěn)定性, 并在不同環(huán)境, 不同優(yōu)化算法等情況下與其他強化學習算法做了對比實驗, 驗證了所提算法的有效性。PER-SAC算法在衡量樣本優(yōu)先級時, 直接將3個網(wǎng)絡的TD誤差的絕對值相加, 樣本重要性的評估方式較為簡單, 引入的訓練信息不夠充分, 下一步的研究方向可以考慮引入更多環(huán)境獎勵信息或訓練信息幫助更好地評估樣本優(yōu)先級, 進一步優(yōu)化算法訓練性能。

      猜你喜歡
      經(jīng)驗誤差樣本
      2021年第20期“最值得推廣的經(jīng)驗”評選
      黨課參考(2021年20期)2021-11-04 09:39:46
      用樣本估計總體復習點撥
      角接觸球軸承接觸角誤差控制
      哈爾濱軸承(2020年2期)2020-11-06 09:22:26
      Beidou, le système de navigation par satellite compatible et interopérable
      經(jīng)驗
      壓力容器制造誤差探究
      2018年第20期“最值得推廣的經(jīng)驗”評選
      黨課參考(2018年20期)2018-11-09 08:52:36
      推動醫(yī)改的“直銷樣本”
      隨機微分方程的樣本Lyapunov二次型估計
      九十億分之一的“生死”誤差
      山東青年(2016年2期)2016-02-28 14:25:41
      北辰区| 阳山县| 万荣县| 汉中市| 兰溪市| 登封市| 屯留县| 织金县| 大同市| 资兴市| 当涂县| 西充县| 莱西市| 攀枝花市| 京山县| 沈丘县| 深水埗区| 黄陵县| 庐江县| 修武县| 古丈县| 兴山县| 马边| 项城市| 宕昌县| 孝义市| 丰镇市| 兴宁市| 夏津县| 崇礼县| 将乐县| 九寨沟县| 斗六市| 洞口县| 长乐市| 收藏| 望都县| 安徽省| 吐鲁番市| 陵川县| 长治市|