強化學習算法僞代碼對比

在這裏插入圖片描述
在這裏插入圖片描述

基礎公式

來源
累計回報:
在t時刻狀態下選擇行爲所獲得累計回報,其中每個R都是個隨機變量。
在這裏插入圖片描述
狀態價值函數:
狀態s下的累計回報是多維隨機變量,服從pi分佈,因此使用期望累計回報表示該狀態的價值。
在這裏插入圖片描述
其貝爾曼方程爲:
在這裏插入圖片描述
狀態-行爲價值函數:
狀態行爲價值函數相比狀態價值函數其區別在於行爲已經選定。
在這裏插入圖片描述
其貝爾曼方程爲:
在這裏插入圖片描述
狀態價值與狀態-行爲價值聯繫:
狀態-行爲價值只是狀態價值確定一個行爲後的分支。
在這裏插入圖片描述
狀態-行爲價值選定行爲後會得到reward,此外該行爲下有多種可能的下一狀態。
在這裏插入圖片描述
互相代入後得到:
在這裏插入圖片描述

在這裏插入圖片描述
最優價值函數:
在這裏插入圖片描述
在價值函數更新時目標值構建有所不同:
在這裏插入圖片描述
在這裏插入圖片描述
因爲A已經確定,回報因此確定:
在這裏插入圖片描述
在這裏插入圖片描述
Value-Based解決方案:
動態規劃方法(DP)使用了上述的推導,使用bootstrapping(利用後繼狀態的價值估計當前價值),不過動態規劃方法需要知道模型的狀態轉移概率P,因此需要模型可知。
在這裏插入圖片描述
但模型未知時可考慮蒙特卡羅方法(MC)利用經驗平均估計期望的值函數。即原本的狀態價值是累計回報的期望,可以使用多次實驗的累計回報均值來代表。不過因爲G是實驗的累計回報,需要實驗結束(回合更新)後才能學習。
在這裏插入圖片描述
時序差分方法(TD)綜合二者優點(單步更新+無模型)。使用R+rV(目標值)代替G。
在這裏插入圖片描述
三種方法的區分可以以下公式分析,對於DP算法,其更新的目標值在公式(3)中,因爲狀態轉移概率P已知,所以可以求解出期望。不過v(st+1)v(s_{t+1})使用的是舊的價值函數的估計;而MC算法,其更新的目標值在公式(1)中,因爲狀態轉移概率P未知,無法求解期望,所以使用採樣Return值的均值來代替期望值,且需要一次episode結束後才能計算Return值。而TD算法利用二者優點,利用採樣均值來代替期望,同時利用舊的價值函數和單次回報來構建目標值。
在這裏插入圖片描述
前面三種方法都是基於值函數的,迭代計算的是值函數,然後根據值函數優化策略。最終得到貪婪策略(選擇當前狀態下最大狀態-行爲價值對應的動作):
在這裏插入圖片描述
Policy-Based解決方案:
策略搜索是直接對策略進行參數化建模π(a|s),尋找最優參數使得累計回報最大。其學習目標是:
在這裏插入圖片描述
使用log-derivative技巧對目標函數求導:
在這裏插入圖片描述
REINFORCE方法基於MC使用經驗平均替代期望求解目標函數的梯度。
在這裏插入圖片描述
在策略梯度方法中參數的更新需要確定步長,如果步長不正確,那模型越學習越差。TRPO方法(Trust region policy optimization)將新策略的回報函數拆分成舊策略的回報函數+其他項。從而保證回報函數的單調不減。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
AC解決方案:
policy-gradient類的方法直接對策略建模,因爲梯度求導公式存在R(累計回報),需要回合制更新。而觀察導數公式會發現常量R其實類似於一個梯度放大縮小的係數。actor-critic方法中actor【行爲策略】是policy-gradient策略,而critic【評估策略】則是利用價值函數對R進行替代,從而可以單步更新。
梯度公式中的R可以採用以下形式:
在這裏插入圖片描述
式中1-3只是回報的不同累計形式,因爲使用的是軌跡的累計回報,因此計算的策略梯度是無偏的,但是多步的累計會導致方差較大。
式中4-5是使用價值函數來替代R,優點是方差小,但由於使用價值逼近函數,存在一定偏差。而當採用4-5時,此時稱爲AC類算法。結構圖如下所示:
在這裏插入圖片描述

Value-Based方案僞代碼

Q-learning:
在這裏插入圖片描述
1、在迭代模型時Q-learning算法目標值的計算是選取下一狀態最大的動作價值。
2、下一狀態的動作選取使用的是e-greedy算法,因此產生數據的策略(e-greedy)【行爲策略】和迭代模型的價值函數(貪心:選取最大動作價值)【評估策略】不同,屬於off-policy。
3、由於價值的目標值計算選取的是最大動作價值,因此價值更新的目標方向其實是朝着最優qq^*的,與agent的行爲策略無關。

SARSA(State Action Reward State Action):
在這裏插入圖片描述
1、在迭代模型時Q-learning算法目標值的計算是選取e-greedy算法產生的下一狀態的動作價值,且該動作會作爲下一動作的選取動作。
2、下一狀態的動作選取使用的是e-greedy算法,因此產生數據的策略(e-greedy)和迭代模型的價值函數(e-greedy)相同,屬於on-policy。
3、由於前後策略一致,當q值收斂時,策略也會收斂。
NIPS 2013版DQN:
在這裏插入圖片描述
1、使用DNN來逼近Q-learning的table式價值函數,解決狀態和動作的連續、高維輸入問題。
2、使用經驗回放訓練模型來避免序列的相關性且獲得batch信息,並在一定程度上保持訓練數據的靜態分佈。
Nature 2015版DQN:
在這裏插入圖片描述
1、在計算y時使用target網絡,保證在一定時間內Q值的穩定。避免不斷更新帶來的y和q的強相關性。
Double-DQN
在這裏插入圖片描述
1、Nature DQN的y計算存在一個問題,y中的a是使用target net網絡計算出來的。這會導致y的高估(因爲取target net中最優行爲),因此使用原net來計算a,target net只用來計算q值。
Prioritised replay
在這裏插入圖片描述
1、經驗回放在學習時,如果樣本的獎勵十分少就會導致稀疏問題,學習速度非常慢。Prioritised replay使用TD-error對樣本賦權(error越大,樣本越要學習),並使用SumTree結構從分佈中採樣。
Dueling Network
在這裏插入圖片描述
在這裏插入圖片描述
1、同以前的DQN相比,Dueling Network將狀態-動作價值Q(s,a)拆分成狀態價值Q(s)+優勢函數A(s,a) ,優勢函數A的含義就是採取動作a所帶來的附加價值。

Policy-Based方案僞代碼

TRPO(Trust Region Policy Optimization):
在這裏插入圖片描述REINFORCE:
在這裏插入圖片描述
1、非單步更新,需要知道完整的episode才能計算出vt。
2、注意關於動作的概率,如果是離散型很容易得到,對於連續動作,一般假設動作服從高斯分佈,模型輸出均值和方差,然後採樣得到動作。這屬於隨機性策略,由於是從分佈中採樣得到動作,具有一定的探索性。
3、on-policy方式

PPO(Proximal Policy Optimization):
在這裏插入圖片描述

AC方案僞代碼

A3C(Asynchronous Advantage Actor-Critic):
在這裏插入圖片描述
1、使用多個子agent學習,利用子agent來更新主agent參數,避免訓練數據的相關性。
DPG(Deterministic Policy Gradient)
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
目標函數爲:J(θ)=1mj=1mQ(si,ai,w)J(θ)=-\frac{1}{m}∑_{j=1}^mQ(s_i,a_i,w),求導公式使用了鏈式法則。

1、隨機性策略目標是對狀態s和行爲a的期望,這需要對動作空間進行大量的探索。DPG思想就是不輸出行爲的分佈,直接輸出行爲(確定性策略)。直接輸出行爲,那如何優化策略網絡?思考下在value-based網絡中如何將q值轉成策略的:選取狀態的最大q值。那可以利用q值網絡來間接優化策略網絡。
2、value-based方法是根據q值網絡選取價值最大行爲的策略,現在我們的行爲產生是由確定性策略模型產生的,那麼相應的該策略產生的行爲所對應的q值也是最大的,也就是q = DQN(s,a)最大。
3、、隨機策略將探索和改進集成到一個策略中,確定性策略的優點:不需要探索動作空間,需要採樣的數據少,算法效率高。強化學習進階 第八講 確定性策略方法
DDPG(Deep Deterministic Policy Gradient)
在這裏插入圖片描述
在這裏插入圖片描述
1、Deterministic指的是確定性策略。以前的隨機策略在面對連續動作或者高維離散動作時需要較大的計算量來計算所有動作的概率或價值。而確定性策略則直接選擇概率最大的動作,簡化掉了動作的分佈。
2、看懂DDPG的critic部分,首先需理解Double-DQN,主要在於y的計算上。y的兩個因素a和q的計算在DDPG中分別使用target policy網絡和target value網絡計算。從而保證y值得穩定性。
3、看懂DDPG的actor部分,需要明白其目標函數J(θ)=1mj=1mQ(si,ai,w)J(θ)=-\frac{1}{m}∑_{j=1}^mQ(s_i,a_i,w),也就是想要在s狀態下選擇動作a,那麼a的Q值就要儘可能的大。再對目標函數採用鏈式法則求導(對行爲a,對參數theta)即可優化actor模型。

其他

幾個比較經典的強化學習算法,以及在NLP中的應用
深度強化學習落地方法論
reward設計:
請問:強化學習中對於reward獎勵值設定,對算法有什麼影響,有沒有相關的論文或者資料?
強化學習獎勵函數塑形簡介(The reward shaping of RL)
強化學習中reward稀疏和無法獲取問題解決方案

trick:
強化學習領域有哪些巧妙的想法?
深度強化學習落地方法論(7)—— 訓練篇

疑問

強化學習中,對於連續的動作,value-based是無能爲力的?
強化學習,DPG是首次處理連續動作空間的論文嗎,PG本身還只是輸出動作而不是連續動作對吧?
深度強化學習(六):連續動作空間的問題

策略迭代算法包括策略評估和策略改進兩個步驟。
策略評估:給定策略,通過數值迭代算法不斷計算該策略下的值函數,直至收斂。
策略改進:利用收斂的值函數和貪婪策略得到新的策略;

幾個概念:
對於REINFORCE方法,鏈接
1、如果採用均值方差的方式則爲隨機性策略,如果對輸出分佈採樣,則爲on-policy的方法;如果行爲策略和評估策略不同則爲off-policy的方法(需要重要性權重)。
2、如果採用輸出行爲值的方式則爲確定性策略,由於確定性策略無法採樣,因此需要用off-policy的方法解決探索問題。
3、上述兩種方法前一種可以添加AC結構,後一種由於使用到q值網絡,必須是AC結構。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章