傳統的dqn只適用於離散動作控制,而ddpg和naf是深度強化學習在連續動作控制上的拓展。dqn是乙個面向離散控制的演算法,即輸出的動作是離散的。對應到atari 遊戲中,只需要幾個離散的鍵盤或手柄按鍵進行控制。
然而在實際中,控制問題則是連續的,高維的,比如乙個具有6個關節的機械臂,每個關節的角度輸出是連續值,假設範圍是0°~360°,歸一化後為(-1,1)。若把每個關節角取值範圍離散化,比如精度到0.01,則乙個關節有200個取值,那麼6個關節共有
2006
個取值,若進一步提公升這個精度,取值的數量將成倍增加,而且動作的數量將隨著自由度的增加呈指數型增長。所以根本無法用傳統的dqn方法解決。
解決方法
使用policy-based方法,通過各種策略梯度方法直接優化用深度神經網路引數化表示的策略,即網路的輸出就是動作。
隨機性策略和確定性策略:
確定性策略,策略輸出即是動作;優點,需要取樣的資料少,演算法效率高;缺點,無法探索環境。
然而使用確定性策略無法探索環境,如何解決?
利用off-policy學習方法。off-policy是指取樣的策略和改進的策略不是同乙個策略。類似於dqn,使用隨機策略產生樣本存放到經驗回放機制中,訓練時隨機抽取樣本,改進的是當前的確定性策略。整個確定性策略的學習框架採用ac的方法。
ddpg公式
在ddpg中,分別使用引數為 θμ
j(θμ
)=eθ
μ[r1
+γr2
+γ2r
3+⋯]
通過隨機梯度法對目標函式進行端對端的優化(注意,目標是提高總回報
j 的期望梯度: ∂j
(θμ)
∂θμ=
es[∂
q(s,
a|θq
)∂θμ
] 可得: ∂j
(θμ)
∂θμ=
es[∂
q(s,
a|θq
)∂a∂
π(s|
θμ)∂
θμ]沿著提公升q 值的方向更新策略網路的引數。∂l
(θq)
∂θq=
es,a
,r,s
′∼d[
(tar
getq
−q(s
,a|θ
q))∂
q(s,
a|θq
)∂θq
]其中 θμ
′ 分別表示目標策略網路和目標值網路的引數,用梯度下降方式更新值網路。
演算法偽**
區別於dqn,dqn每隔一定的迭代次數後,將mainnet引數複製給targetnet;而ddpg中targetnet的引數每次迭代都以微小量逼近mainnet的引數。
網路訓練流程圖
實驗表明, ddpg 不僅在一系列連續動作空間的任務中表現穩定,而且求得最優解所需要的時間步也遠遠少於 dqn。與基於值函式的 drl 方法相比, 基於 ac 框架的深度策略梯度方法優化策略效率更高、 求解速度更快。
ddpg缺點:
不適用於隨機環境的場景
shixiang等人的**中共有兩個演算法,第乙個是naf,第二個是基於模型(model-based)加速的naf。這裡只介紹簡單的naf。
ddpg的問題:
需要訓練兩個網路即策略網路和值網路
解決方法
歸一化優勢函式(normalized advantage functions ,naf)只需要訓練乙個網路。
naf公式:
naf的目的之一是要將深度神經網路q-learning應用於連續動作空間,而要用q-learing進行訓練必須要知道目標q值(targetq)。
和前面部落格dueling-ddqn介紹的dueling net思想類似,動作值函式可以表示為狀態值函式 v
其中 x
所對應的q值最大。
如果能使 ∀x
,ua(
x,u|
θa)⩽
0 p(
x|θp
)是對角線都是正數的下三角矩陣,且是唯一的。
最終演算法的loss function為 l(
θq)=
e[(t
arge
tq−q
(xt,
ut|θ
q))2
]使用dqn的訓練方式訓練。
演算法偽**
網路訓練流程圖
網路輸出的是下三角矩陣
l非同步naf訓練機械臂
shixiang等人還使用了非同步naf訓練機械臂開門。
該演算法具有乙個訓練執行緒(trainer thread)和多個收集樣本執行緒(collector thread),collector thread將收集到的樣本存於經驗回放機制中,供trainer thread訓練。
這個非同步naf演算法和a3c演算法的不同之處在於:
非同步naf是off-policy,collector thread不提供梯度資訊;
a3c是on-policy,每個執行緒agent都提供梯度資訊。
參考文獻[1]continuous control with deep reinforcement learning
[2]continuous deep q-learning with model-based acceleration
[3]deterministic policy gradient algorithm
[4]deep reinforcement learning for robotic manipulation with asynchronous off-policy updates
[5]深度強化學習綜述_劉全等
深度強化學習
這是寫給自己看的,大佬請忽略 深度學習和其他機器學習演算法最大的不同在於如何找到特徵,而特徵的抽取過程就是乙個抽象的全過程。以往機器學習演算法的特徵抽取都是對一類問題有解,比如k means等聚類。深度學習抽象模擬了人類神經元傳遞和連線方式,理論上可以解決多種分類問題和 問題,甚至研究未知領域。深度...
深度強化學習
一 簡介 1 深度強化學習出現的原因 傳統的強化學習中當狀態和動作空間是離散且維數不高時可使用q table儲存每個狀態動作對的q值。然而比較複雜的 更加接近實際情況的任務則往往有著很大的狀態空間和連續的動作空間,這種情況下使用q table不現實。同時實現端到端的控制也是要求能處理高維的,如影象 ...
深度強化學習
強化學習 reinforcement learning 與深度學習同屬機器學習的範疇,是其中 一 個重要的分支,主要用來解決連續決策的問題。強化不像無監督學習那樣完全沒有學習目標,也不像監督學習那樣有非常明確的目標 如影象分類問題中的label 強化學習的目標是不明確的,模型只會向著能夠得到更多獎勵...