一、存在的問題
DQN是一個面向離散控制的算法,即輸出的動作是離散的。對應到Atari 游戲中,只需要幾個離散的鍵盤或手柄按鍵進行控制。
然而在實際中,控制問題則是連續的,高維的,比如一個具有6個關節的機械臂,每個關節的角度輸出是連續值,假設范圍是0°~360°,歸一化后為(-1,1)。若把每個關節角取值范圍離散化,比如精度到0.01,則一個關節有200個取值,那么6個關節共有20062006個取值,若進一步提升這個精度,取值的數量將成倍增加,而且動作的數量將隨着自由度的增加呈指數型增長。所以根本無法用傳統的DQN方法解決。
解決方法
使用Policy-Based方法,通過各種策略梯度方法直接優化用深度神經網絡參數化表示的策略,即網絡的輸出就是動作。
二、DDPG
深度確定性策略梯度(Deep Deterministic Policy Gradient, DDPG)算法是Lillicrap 等人利用 DQN 擴展 Q 學習算法的思路對確定性策略梯度(Deterministic Policy Gradient, DPG)方法進行改造,提出的一種基於行動者-評論家(Actor-Critic,AC)框架的算法,該算法可用於解決連續動作空間上的 DRL 問題。
隨機性策略和確定性策略:
- 隨機性策略,策略輸出的是動作的概率,比如上一篇A3C博客提到的連續動作控制,使用的是一個正態分布對動作進行采樣選擇,即每個動作都有概率被選到;優點,將探索和改進集成到一個策略中;缺點,需要大量訓練數據。
- 確定性策略,策略輸出即是動作;優點,需要采樣的數據少,算法效率高;缺點,無法探索環境。
在真實場景下機器人的操控任務中,在線收集並利用大量訓練數據會產生十分昂貴的代價, 並且動作連續的特性使得在線抽取批量軌跡的方式無法達到令人滿意的覆蓋面, 這些問題會導致局部最優解的出現。
然而使用確定性策略無法探索環境,如何解決?
利用off-policy學習方法。off-policy是指采樣的策略和改進的策略不是同一個策略。類似於DQN,使用隨機策略產生樣本存放到經驗回放機制中,訓練時隨機抽取樣本,改進的是當前的確定性策略。整個確定性策略的學習框架采用AC的方法。
DDPG公式
在DDPG中,分別使用參數為 θμθμ 和 θQθQ 的深度神經網絡來表示確定性策略 a=π(s|θμ)a=π(s|θμ) 和動作值函數 Q(s,a|θQ)Q(s,a|θQ)。其中,策略網絡用來更新策略,對應 AC 框架中的行動者;值網絡用來逼近狀態動作對的值函數, 並提供梯度信息, 對應 AC 框架中的評論家。目標函數被定義為帶折扣的總回報:
通過隨機梯度法對目標函數進行端對端的優化(注意,目標是提高總回報 JJ)。Silver等人證明了目標函數關於 θμθμ 的梯度等價於Q值函數關於 θμθμ 的期望梯度:
根據確定性策略 a=π(s|θμ)a=π(s|θμ) 可得:
沿着提升 Q 值的方向更新策略網絡的參數。
通過 DQN中更新值網絡的方法來更新評論家網絡,梯度信息為:
其中 θμ′θμ′ 和 θQ′θQ′ 分別表示目標策略網絡和目標值網絡的參數,用梯度下降方式更新值網絡。
算法偽代碼
區別於DQN,DQN每隔一定的迭代次數后,將MainNet參數復制給TargetNet;而DDPG中TargetNet的參數每次迭代都以微小量逼近MainNet的參數。
網絡訓練流程圖
實驗表明, DDPG 不僅在一系列連續動作空間的任務中表現穩定,而且求得最優解所需要的時間步也遠遠少於 DQN。與基於值函數的 DRL 方法相比, 基於 AC 框架的深度策略梯度方法優化策略效率更高、 求解速度更快。
DDPG缺點:
不適用於隨機環境的場景
三、NAF
Shixiang等人的論文中共有兩個算法,第一個是NAF,第二個是基於模型(Model-based)加速的NAF。這里只介紹簡單的NAF。
DDPG的問題:
需要訓練兩個網絡即策略網絡和值網絡
解決方法
歸一化優勢函數(normalized advantage functions ,NAF)只需要訓練一個網絡。
NAF公式:
NAF的目的之一是要將深度神經網絡Q-Learning應用於連續動作空間,而要用Q-Learing進行訓練必須要知道目標Q值(TargetQ)。
和前面博客Dueling-DDQN介紹的dueling net思想類似,動作值函數可以表示為狀態值函數 VV 與動作價值函數 AA 的和,即
其中 xx 表示狀態State,uu 表示動作Action,θθ 是對應的網絡參數,A(x,u|θA)A(x,u|θA) 可以看成動作 uu 在狀態 xx 下的優勢。我們的目的就是要使策略網絡輸出的動作 uu 所對應的Q值最大。
如果能使 ∀x,uA(x,u|θA)⩽0∀x,uA(x,u|θA)⩽0,則 ∀x,uQ(x,u|θQ)⩽V(x|θV)∀x,uQ(x,u|θQ)⩽V(x|θV)。在狀態 xx 下最優的動作 uu 的動作優勢函數 A(x,u|θA)=0A(x,u|θA)=0,所以對應最優動作的值函數Q(x,u|θQ)=V(x|θV)Q(x,u|θQ)=V(x|θV),這樣就很容易構造出TargetQ值了。具體的做法是令
P(x|θP)P(x|θP)是一個關於狀態的正定矩陣,因為正定矩陣可以進行楚列斯基(Cholesky)分解,即
L(x|θP)L(x|θP)是對角線都是正數的下三角矩陣,且是唯一的。
最終算法的Loss Function為
使用DQN的訓練方式訓練。
算法偽代碼
網絡訓練流程圖
網絡輸出的是下三角矩陣LL,動作 uu,狀態值函數 VV
異步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]深度強化學習綜述_劉全等