Policy Gradient Methods for Reinforcement Learning with Function Approximation(PG)
在強化學習的算法中存在兩種算法,一個是基于價值函數的算法,另一個是基于政策梯度的算法。為什麼要提出政策梯度算法呢?
- 基于政策的學習可能會具有更好的收斂性,這是因為基于政策的學習雖然每次隻改善一點點,但總是朝着好的方向在改善;而在基于值函數的算法中,價值函數在後期會一直圍繞最優價值函數持續小的震蕩而不收斂。
- 在對于那些擁有高次元或連續狀态空間來說,使用基于價值函數的學習在得到價值函數後,制定政策時,需要比較各種行為對應的價值大小。這樣如果行為空間次元較高或者是連續的,則從中比較得出一個有最大價值函數的行為這個過程就比較難了,這時候使用基于政策的學習就高效的多。
- 基于價值函數的學習通常是學不到随機政策的,使用政策梯度算法可以直接輸入轉态,得到對應動作或者動作的機率分布。
在PG這篇論文中探讨了RL中函數逼近的另一種方法。我們不是近似一個值函數并用它來計算一個确定性政策,而是直接用一個獨立的函數逼近器用它自己的參數來近似一個随機政策。例如,政策可以由一個神經網絡來表示,該神經網絡的輸入是狀态的表示,其輸出是動作選擇機率,其權值是政策參數。讓

作為政策參數的向量表示,
表示政策的最終表現。然後,在政策梯度方法中,政策參數的更新與梯度近似成比例。
與價值函數方法不同,這裡θ
的微小變化隻會導緻政策和狀态分布的微小變化。定義政策的目标函數存在兩種,一種是平均報酬公式,另一種是從初始狀态
獲得的長期回報。
- 平均報酬
- 長期報酬回報
對于上述兩種目标函數,梯度均為
當我們使用函數逼近器fws,a
來模拟Qπs,a
時,上式可以改寫為:
Deterministic Policy Gradient Algorithms(DPG)
政策梯度算法廣泛應用于具有連續動作空間的強化學習問題。基本思想是代表政策參數機率分布
。在某個狀态下根據參數向量
随機選擇行動
。政策梯度算法通常是通過對這種随機政策進行抽樣,并根據累積收益的增加來調整政策參數。
在這篇文章中,考慮确定性政策為
。從實際的角度來看,随機政策梯度與确定性政策梯度存在着重要的差別。在随機的情況下,政策梯度在狀态空間和動作空間上積分,而在确定性的情況下,它隻在狀态空間上積分。是以,計算随機政策梯度可能需要更多的樣本,特别是在行動空間有多個次元的情況下。為了學習确定性目标政策(利用确定性政策梯度的效率)。我們利用确定性政策梯度推導出一種離線行為批評算法,該算法使用可微分函數逼近器估計行為價值函數,然後在近似行為價值梯度的方向上更新政策參數。
- Stochastic Policy Gradient 理論
評價表現目标方程為:
根據政策梯度理論(PG),最基本的政策梯度計算方程為如下
利用這個方程,可以通過政策梯度來調整參數
來以優化最終的表現。但是問題在于還需要估計
的值。
- Stochastic Actor-Critic 算法
Actor-Critic是基于政策理論的常用架構。Actor會通過計算上述方程來調整政策函數πθs
的參數θ
。由于真實的動作價值函數
是未知的,我們使用一個參數化的函數近似器
來代替,并且讓Critic使用政策評估算法來估量它。
由于是
是近似,使用它會造成與真實值
的偏差。為了消除偏差,
應滿足兩個條件:
參數w
應該最小化均方誤差
- Deterministic Policy Gradient理論
對于确定性政策
,定義機率分布
以及目标方程:
那麼确定性政策梯度可以推導出如下:
- On-Policy Deterministic Actor-Critic
和随機化政策Actor-Critic一樣,确定性政策也包含兩部分,Critic估計行為價值函數,Actor估計行為價值函數的梯度。Actor根據上面的方程調整
的參數
,并且用
來逼近真實值。例如,Critic使用Sarsa更新來評估動作價值函數:
- Off-Policy Actor-Critic
我們稱已探索過的軌迹為已知政策
,未探索過的為目标政策
。在off-policy中表現目标方程定義為:目标政策的狀态價值函數在已知政策上的狀态分布上取平均:
對其進行微分即得到off-policy政策梯度:
∇θJβπθ≈S A ρβs∇θπθa|sQπs,adads
這個近似式去掉了一個依賴動作價值梯度的項
。
- Off-Policy Deterministic Actor-Critic
現在要用off-policy的方法去讓智能體通過随機已知政策
生成的軌迹學習确定目标政策
。
定義目标方程以及政策梯度:
同樣确定性政策梯度中也丢棄了依賴于動作價值梯度的項:
。
這裡,用一個可微的動作價值函數
來代替真實的動作價值函數
,需要同時滿足兩個條件:
并且讓Critic通過已知政策生成的軌迹來評估它。比如使用Q-learning:
Asynchronous Methods for Deep Reinforcement Learning(A3C)
深度強化學習最近被人發現貌似不太穩定,有人提出很多改善的方法,這些方法有很多共同的地方:一個online的agent碰到的觀察到的資料序列是非靜态的,然後就是,online的RL更新是強烈相關的。通過将agent的資料存儲在一個 experience replay 單元中,資料可以從不同的時間步驟上,批處理或者随機采樣。這種方法可以降低不平穩性,然後去掉了更新的相關性,但是與此同時,也限制了該方法隻能是 off-policy 的 RL 算法。
Experience replay 有如下兩個缺點:
1. 每一次互動都會耗費更多的記憶體和計算;
2. 需要 off-policy 的學習算法從更老的政策中産生的資料上進行更新。
本文中我們提出了一種很不同的流程來做 DRL。不用 experience replay,而是以異步的方式,并行執行多個 agent,在環境中的多個示例當中。這種平行結構可以将 agent的資料“去相關(decorrelates)”到一個更加靜态的過程當中去,因為任何給定的時間步驟,并行的agent都會經曆不同的狀态。這個簡單的想法確定了一個更大的範圍,基礎的 on-policy RL 算法,如:Sarsa,n-step methods,以及 actor-critic 方法,以及 off-policy 算法,如:Q-learning,利用CNN可以更加魯棒和有效的進行應用。
本文的并行RL結構也提供了一些實際的好處,前人的方法都是基于特定的硬體,如GPUs或者大量分布式結構,本文的算法可以在單機上用多核 CPU 來執行。取得了比 之前基于 GPU 的算法 更好的效果,(A3C)算法的效果更優秀。
one-step Q-learning 是朝着one-step傳回
的方向去更新動作值函數
。但是利用one-step方法的缺陷在于:得到一個獎勵r
僅僅直接影響了 得到該獎勵的狀态動作對
的值。其他狀态動作對的值僅僅間接的通過更新
來影響。這就使得學習過程緩慢,因為許多更新都需要傳播一個獎賞值給相關進行的狀态和動作。
一種快速的傳播獎賞的方法是利用n-step returns。 在n-step Q-learning中,Qs,a
是朝向 n-step return
進行更新。這樣就使得一個獎賞
直接地影響了n個正在進行的狀态動作對的值。這也使得給相關 狀态動作對的獎賞傳播更加有效。
另外就是定義了“優勢函數”,即:利用Q值減去狀态值,定義為:
這種方法也可以看做是actor-critic結構,其中,政策π
可以看做是actor,bt
是critic。
我們在這裡介紹A3C算法,其中維持一個政策
以及一個估計值函數
。就像我們的n步q學習的變體一樣,我們的角色-批評家的變體也在前視圖中起作用并使用相同的n步傳回組合來更新政策和值函數。當疊代步數達到
或者到達終止狀态時,更新政策和值函數。我們通常使用一個卷積神經網絡有一個softmax輸出政策
和一個線性輸出的價值函數
,共享所有非輸出層參數。
下面簡單介紹一下使用n步回報的A3C算法步驟:
(1) 假設全局和線程内部的政策模型參數向量分别為'
;全局和線程内部的價值模型參數:
;設定全局變量
;
(2) 初始化線程步數計數器
;
(3)重新設定全局政策模型參數的梯度
,設定全局價值模型參數梯度
;
(4) 同步全局和線程内部的政策模型參數
,同步全局和線程内部的價值模型參數
;
(5)設定
,并獲得初始狀态
;
(6)在狀态
通過政策模型
選擇動作
,并執行該動作;
(7) 通過步驟(6)獲得對應的獎賞值
,并達到新的狀态
;
(8) 更新參數
,
:
;
(9) 判斷
是否為終止狀态或者
,如果滿足上述條件跳轉到步驟(6),否則跳出循環,執行步驟(10);
(10) 計算每一次采樣的價值:
(11)設定變量
;
(12)設定變量
,如果i
不等于
,進行下一步,否則跳轉到步驟(17);
(13) 設定
;
(14) 計算積累政策模型參數
的梯度:
;
(15) 計算積累價值模型參數
的梯度
;
(16) 跳轉到步驟(12);
(17) 對全局模型θ和
進行異步更新:
;
(19) 判斷
是否大于
,如果是則跳出循環,否則跳到步驟(3)。
Continuous Control With Deep Reinforcement Learning(DDPG)
雖然DQN算法目前在RL遊戲領域表現良好,但是DQN在解決高維觀測空間的問題時,隻能處理離散的低維動作空間。許多有趣的任務,尤其是身體控制任務,有連續的(實值)和高維的行動空間。DQN不能直接應用于連續域,因為它依賴于找到使動作值函數最大化的動作,而在連續值情況下,每一步都需要疊代優化過程。
我們稱之為深度DDPG (Deep DPG)的model-free方法可以為所有人學習競争政策,我們的任務使用低維觀測(例如笛卡爾坐标或關節角度)使用相同的超參數和網絡結構。在許多情況下,我們還能夠直接從像素中學習良好的政策,再次保持超參數和網絡結構不變。
以往的實踐證明,如果隻使用單個”Q神經網絡”的算法,學習過程很不穩定,因為Q網絡的參數在頻繁梯度更新的同時,又用于計算Q網絡和政策網絡的梯度。基于此,DDPG分别為政策網絡、Q網絡各建立兩個神經網絡拷貝,一個叫做online,一個叫做target:
在訓練完一個mini-batch的資料之後,通過SGA/SGD算法更新online網絡的參數,然後再通過soft update算法更新 target 網絡的參數。soft update是一種running average的算法:
DDPG算法的步驟如下: