天天看點

政策梯度

Policy Gradient Methods for Reinforcement Learning with Function Approximation(PG)

在強化學習的算法中存在兩種算法,一個是基于價值函數的算法,另一個是基于政策梯度的算法。為什麼要提出政策梯度算法呢?

  1. 基于政策的學習可能會具有更好的收斂性,這是因為基于政策的學習雖然每次隻改善一點點,但總是朝着好的方向在改善;而在基于值函數的算法中,價值函數在後期會一直圍繞最優價值函數持續小的震蕩而不收斂。
  2. 在對于那些擁有高次元或連續狀态空間來說,使用基于價值函數的學習在得到價值函數後,制定政策時,需要比較各種行為對應的價值大小。這樣如果行為空間次元較高或者是連續的,則從中比較得出一個有最大價值函數的行為這個過程就比較難了,這時候使用基于政策的學習就高效的多。
  3. 基于價值函數的學習通常是學不到随機政策的,使用政策梯度算法可以直接輸入轉态,得到對應動作或者動作的機率分布。

在PG這篇論文中探讨了RL中函數逼近的另一種方法。我們不是近似一個值函數并用它來計算一個确定性政策,而是直接用一個獨立的函數逼近器用它自己的參數來近似一個随機政策。例如,政策可以由一個神經網絡來表示,該神經網絡的輸入是狀态的表示,其輸出是動作選擇機率,其權值是政策參數。讓

政策梯度

作為政策參數的向量表示,

政策梯度

表示政策的最終表現。然後,在政策梯度方法中,政策參數的更新與梯度近似成比例。

與價值函數方法不同,這裡θ

政策梯度

的微小變化隻會導緻政策和狀态分布的微小變化。定義政策的目标函數存在兩種,一種是平均報酬公式,另一種是從初始狀态

政策梯度

獲得的長期回報。

  1. 平均報酬
政策梯度
政策梯度
  1. 長期報酬回報
政策梯度

       對于上述兩種目标函數,梯度均為

政策梯度

       當我們使用函數逼近器fws,a

政策梯度

來模拟Qπs,a

政策梯度

時,上式可以改寫為:

政策梯度
政策梯度
政策梯度

Deterministic Policy Gradient Algorithms(DPG)

政策梯度算法廣泛應用于具有連續動作空間的強化學習問題。基本思想是代表政策參數機率分布

政策梯度

。在某個狀态下根據參數向量

政策梯度

随機選擇行動

政策梯度

。政策梯度算法通常是通過對這種随機政策進行抽樣,并根據累積收益的增加來調整政策參數。

在這篇文章中,考慮确定性政策為

政策梯度

。從實際的角度來看,随機政策梯度與确定性政策梯度存在着重要的差別。在随機的情況下,政策梯度在狀态空間和動作空間上積分,而在确定性的情況下,它隻在狀态空間上積分。是以,計算随機政策梯度可能需要更多的樣本,特别是在行動空間有多個次元的情況下。為了學習确定性目标政策(利用确定性政策梯度的效率)。我們利用确定性政策梯度推導出一種離線行為批評算法,該算法使用可微分函數逼近器估計行為價值函數,然後在近似行為價值梯度的方向上更新政策參數。

  1. Stochastic Policy Gradient 理論

評價表現目标方程為:

政策梯度
政策梯度

根據政策梯度理論(PG),最基本的政策梯度計算方程為如下

政策梯度
政策梯度

利用這個方程,可以通過政策梯度來調整參數

政策梯度

來以優化最終的表現。但是問題在于還需要估計

政策梯度

的值。

  1. Stochastic Actor-Critic 算法

Actor-Critic是基于政策理論的常用架構。Actor會通過計算上述方程來調整政策函數πθs

政策梯度

的參數θ

政策梯度

。由于真實的動作價值函數

政策梯度

是未知的,我們使用一個參數化的函數近似器

政策梯度

來代替,并且讓Critic使用政策評估算法來估量它。

由于是

政策梯度

是近似,使用它會造成與真實值

政策梯度

的偏差。為了消除偏差,

政策梯度

應滿足兩個條件:

政策梯度

參數w

政策梯度

應該最小化均方誤差

政策梯度
  1. Deterministic Policy Gradient理論

對于确定性政策

政策梯度

,定義機率分布

政策梯度

以及目标方程:

政策梯度
政策梯度

那麼确定性政策梯度可以推導出如下:

政策梯度
政策梯度
  1. On-Policy Deterministic Actor-Critic

和随機化政策Actor-Critic一樣,确定性政策也包含兩部分,Critic估計行為價值函數,Actor估計行為價值函數的梯度。Actor根據上面的方程調整

政策梯度

的參數

政策梯度

,并且用

政策梯度

來逼近真實值。例如,Critic使用Sarsa更新來評估動作價值函數:

政策梯度
政策梯度
政策梯度
  1. Off-Policy Actor-Critic

我們稱已探索過的軌迹為已知政策

政策梯度

,未探索過的為目标政策

政策梯度

。在off-policy中表現目标方程定義為:目标政策的狀态價值函數在已知政策上的狀态分布上取平均:

政策梯度
政策梯度

對其進行微分即得到off-policy政策梯度:

∇θJβπθ≈S A ρβs∇θπθa|sQπs,adads

政策梯度
政策梯度

這個近似式去掉了一個依賴動作價值梯度的項

政策梯度

  1. 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算法的步驟如下:

政策梯度
政策梯度