Deep Learning專欄--強化學習之從 Policy Gradient 到 A3C(3)


 

在之前的強化學習文章里,我們講到了經典的MDP模型來描述強化學習,其解法包括value iteration和policy iteration,這類經典解法基於已知的轉移概率矩陣P,而在實際應用中,我們很難具體知道轉移概率P。伴隨着這類問題的產生,Q-Learning通過迭代來更新Q表擬合實際的轉移概率矩陣 P,實現了強化學習在大多數實際場景中的應用。但是,在很多情況下,諸多場景下的環境狀態比較復雜,有着極大甚至無窮的狀態空間,維護這一類問題的Q表使得計算代價變得很高,這時就有了通過Deep網絡來維護Q表的想法,也就是DQN。但在某些情況下,不僅狀態空間較大,某些場景的動作空間也非常大,例如學習機器人的動作等問題。對於這類問題,基於policy gradient的policy-based結合value-based的Actor-Critic,DDPG以及A3C等方法應運而生。

 

1. Policy Gradient

1.1 基本思想

Policy Gradient 就是通過更新 Policy Network 來直接更新策略的。那什么是 Policy Network?實際上就是一個神經網絡,輸入是狀態,輸出直接就是動作(不是Q值),且一般輸出有兩種方式:一種是概率的方式,即輸出某一個動作的概率;另一種是確定性的方式,即輸出具體的某一個動作。

如果要更新 Policy Network 策略網絡,或者說要使用梯度下降的方法來更新網絡,需要有一個目標函數,對於所有強化學習的任務來說,其實目標都是使所有帶衰減 reward 的累加期望最大。即如下式所示
$$ L(\theta) = \mathbb E(r_1+\gamma r_2 + \gamma^2 r_3 + …|\pi(,\theta)) $$
這個損失函數和 Policy Network 策略網絡簡直沒有什么直接聯系,reward是環境給出的,跟參數$ \theta $沒有直接運算上的關系。那么該如何能夠計算出損失函數關於參數的梯度$ \nabla_{\theta} L(\theta) $?

上面的問題沒法給出更新策略,我們不妨換一個思路來考慮問題。

假如我們現在有一個 Policy Network 策略網絡,輸入狀態,輸出動作的概率。然后執行完動作之后,我們可以得到reward,或者result。那么這個時候,我們有個非常簡單的想法:如果某一個動作得到reward多,那么我們就使其出現的概率增大,如果某一個動作得到的reward少,那么我們就使其出現的概率減小

當然,用 reward 來評判動作的好壞是不准確的,甚至用 result 來評判也是不准確的(因為任何一個 reward,result 都依賴於大量的動作才導致的,不能只將功勞或過錯歸於當前的動作上。但是這樣給了我們一個新的思路:如果能夠構造一個好的動作評判指標,來判斷一個動作的好與壞,那么我們就可以通過改變動作的出現概率來優化策略

假設這個評價指標是$ f(s,a) $, 我們的 Policy Network 輸出的$ \pi(a|s,\theta) $是概率, 那么可以通過極大似然估計的方法來優化這個目標。比如說我們可以構造如下目標函數
$$ L(\theta) = \sum log\pi(a|s,\theta)f(s,a) $$

比如說,對於某局游戲,假如最終贏了,那么認為這局游戲中每一步都是好的,如果輸了,那么認為都是不好的。好的$ f(s,a) $就是1,不好的就是-1,然后極大化上面的目標函數即可。

實際上,除了極大化上面的目標函數,還可以直接對$ f(s,a) $進行極大化,如這篇博文 Deep Reinforcement Learning: Pong from Pixels 中直接最大化$ f(x) $也就是$ f(s,a) $的期望,可以看到,最后的結果跟上面的目標函數是一致的。

 

1.2 評判指標的選擇

從上面的推導也可知道,在 Policy Gradient 中,如何確定評價指標$ f(s,a) $是關鍵。 上面提到了一種簡單地根據回合的輸贏來判斷這個回合中的每一步到底是好是壞。但是其實我們更加希望的是每走一步就能夠獲取到這一步的具體評價,因此出現了很多其他的直接給出某個時刻的評估的評價方式。如這篇論文 High-dimensional continuous control using generalized advantage estimation 里就對比了若干種評價指標。


上面公式(1)中的$ \Psi_t $就是$ t $時刻的評價指標。從上圖可以看到我們可以使用reward,使用$ Q $、$ A $或者$ TD $來作為動作的評價指標。那這些方法的區別在哪里?

根據這篇文章 DRL之Policy Gradient, Deterministic Policy Gradient與Actor-Critic, 本質的區別在於 variance 和 bias 的問題

用reward來作為動作的評價是最直接的,采用上圖第3種做法reward-baseline是很常見的一種做法。這樣做bias比較低,但是variance很大,也就是reward值太不穩定,會導致訓練不會收斂。

那么采用Q值會怎樣呢?Q值是對reward的期望值,使用Q值variance比較小,bias比較大。一般我們會選擇使用A,Advantage。A=Q-V,是一個動作相對當前狀態的價值。本質上V可以看做是baseline。對於上圖第3種做法,也可以直接用V來作為baseline。但是還是一樣的問題,A的variance比較大。為了平衡variance和bias的問題,使用TD會是比較好的做法,既兼顧了實際值reward,又使用了估計值V。在TD中,TD(lambda)平衡不同長度的TD值,會是比較好的做法。

在實際使用中,需要根據具體的問題選擇不同的方法。有的問題reward很容易得到,有的問題reward非常稀疏。reward越稀疏,也就越需要采用估計值。

以上就是 Policy Gradient 的核心思想,通過 policy network 輸出的 softmax 概率和獲取的reward(通過評估指標獲取)構造目標函數,然后對 policy network 進行更新。從而避免了原來的 reward 和 policy network 之間是不可微的問題。也因為Policy Gradient的這個特點,目前的很多傳統監督學習的問題因為輸出都是softmax的離散形式,都可以改造成Policy Gradient的方法來實現,調節得當效果會在監督學習的基礎上進一步提升。

2. Actor-Critic

上面提到的多種評估指標其實已經涵蓋了 Actor-Critic 的思想,原始的 Policy Gradient 往往采用的回合更新,也就是要到一輪結束后才能進行更新。如某盤游戲,假如最后的結果是勝利了,那么可以認為其中的每一步都是好的,反之則認為其中的每一步都是不好的。其更新過程如下,圖片摘自 David Silver 的 Policy Gradient 課件 ,這種方法也叫 Monte-Carlo Policy Gradient.


圖中的$ \log \pi_{\theta}(s_t, a_t) $是 policy network 輸出的概率,$ v_t $是當前這一局的結果。這是 policy gradient 最基本的更新形式。但是這個方法顯然是有問題的,最后的結果好並不能說明其中每一步都好。因此一個很直觀的想法就是能不能拋棄回合更新的做法,而采用單步更新?Actor-Critic 干的就是這個事情。

要采用單步更新,意味着我們需要為每一步都即時做出評估。Actor-Critic 中的 Critic 負責的就是評估這部分工作,而 Actor 則是負責選擇出要執行的動作。這就是 Actor-Critic 的思想。從上面論文中提出的各種評價指標可知,看到 Critic 的輸出有多種形式,可以采用 Q值、V值 或 TD 等。

因此 Actor-Critic 的思想就是從 Critic 評判模塊(采用深度神經網絡居多)得到對動作的好壞評價,然后反饋給 Actor(采用深度神經網絡居多) 讓 Actor 更新自己的策略。從具體的訓練細節來說,Actor 和 Critic 分別采用不同的目標函數進行更新, 如可參考這里的代碼 Actor-Critic (Tensorflow),下面要說的 DDPG 也是這么做的。

3. Deep Deterministic Policy Gradient(DDPG)

上面提到的的 Policy Gradient 處理問題其實還是局限在動作個數是離散和有限的情況,但是對於某些輸出的值是連續的問題,上面的方法就不管用了,比如說自動駕駛控制的速度,機器人控制移動的幅度等。

最開始這篇論文 Deterministic Policy Gradient Algorithms 提出了輸出連續動作值的 DPG(Deterministic Policy Gradient) ; 然后 論文 Continuous control with deep reinforcement learning 基於 DPG 做了改進,提出了 DDPG(Deep Deterministic Policy Gradient)。

這里 DPG 不詳細展開說了,簡而言之,主要就是證明了 deterministic policy gradient不僅存在,而且是model-free形式且是action-value function的梯度。因此 policy 不僅僅可以通過 概率分布表示,也就將動作空間推到了無限大的。具體的理論課參考這篇文章 深度增強學習(DRL)漫談 - 從AC(Actor-Critic)到A3C(Asynchronous Advantage Actor-Critic)

DDPG 相對於 DPG 的核心改進是引入了 Deep Learning,采用深度神經網絡作為 DPG 中的策略函數 μ 和 Q 函數的模擬,即 Actor 網絡和 Critic 網絡;然后使用深度學習的方法來訓練上述神經網絡。兩者的關系類似於 DQN 和 Q-learning 的關系。

DDPG 的網絡結構為 Actor 網絡 + Critic 網絡,對於狀態$ s $, 先通過 Actor 網絡獲取 action $ a $, 這里的$ a $是一個向量;然后將$ a $輸入 Critic 網絡,輸出的是$ Q $值,目標函數就是極大化$ Q $值,但是更新的方法兩者又有一些區別。論文中顯示 DDPG 算法流程如下

從算法的流程可知,Actor網絡和Critic網絡是分開訓練的,但是兩者的輸入輸出存在聯系,Actor網絡輸出的 action 是 Critic 網絡的輸入,同時 Critic 網絡的輸出會被用到 Actor 網路進行反向傳播。

原始論文沒有給出兩個網路的具體示意圖,這里給出一張這篇文章畫的示意圖,可以看到,Critic 跟之前提到的 DQN 有點類似,但是這里的輸入是 state + action,輸出是一個 Q 值而不是各個動作的 Q 值。

由於在 DDPG 中,我們不再用單一的概率值表示某個動作,而是用向量表示某個動作,由於向量空間可以被認為是無限的,因此也能夠跟無限的動作空間對應起來

4. Asynchronous Advantage Actor-Critic(A3C)

在提出 DDPG 后,DeepMind 在這個基礎上提出了效果更好的 Asynchronous Advantage Actor-Critic(A3C),詳見論文 Asynchronous Methods for Deep Reinforcement Learning 

A3C 算法和DDPG類似,通過 DNN 擬合 policy function 和 value function的估計。但是不同點在於

  1. A3C 中有多個 agent 對網絡進行 asynchronous update,這樣帶來了樣本間的相關性較低的好處,因此 A3C 中也沒有采用 Experience Replay 的機制;這樣 A3C 便支持 online 的訓練模式了
  2. A3C 有兩個輸出,其中一個 softmax output 作為 policy $ \pi(a_t|s_t;\theta) $,而另一個linear output為 value function $ V(s_t;\theta_v) $
  3. A3C 中的Policy network 的評估指標采用的是上面比較了多種評估指標的論文中提到的 Advantage Function(即A值) 而不是 DDPG 中單純的 Q 值。

整體的結構如下所示,圖片摘自這篇文章

 

從上面的圖可知,輸出包含兩部分,value network 的部分可以用來作為連續動作值的輸出,而 policy network 可以作為離散動作值的概率輸出,因此能夠同時解決前面提到的兩類問題。

兩個網絡的更新公式如下

A3C 通過創建多個agent,在多個環境實例中並行且異步的執行和學習,有個潛在的好處是不那么依賴於GPU或大型分布式系統,實際上A3C可以跑在一個多核CPU上,而工程上的設計和優化也是這篇文章的一個重點。

綜上,本文主要介紹了 Policy Gradient 這一類的方法,最基礎的 Policy Gradient 是回合更新的,通過引入 Critic 后變成了單步更新,而這種結合了 policy 和 value 的方法也叫 Actor-Critic,Critic 有多種可選的方法。對於輸出動作為連續值的情形,前面那些輸出動作概率分布的方法無能為力,因此提出了 DPG 和 DDPG,DDPG 對 DPG 的改進在於引入深度神經網絡去擬合 policy function 和 value function。在 DDPG 基礎上又提出了效果更好的 A3C,這個方法在 DDPG 上引入了多個 agent 對網絡進行 asynchronous update,不僅取得了更好的效果,而且降低了訓練的代價

 

 


 

參考

  1. 強化學習筆記(3)- 從 Policy Gradient 到 A3C
  2. 深度增強學習之Policy Gradient方法1
  3. Deep Reinforcement Learning: Pong from Pixels
  4. 深度增強學習(DRL)漫談 - 從AC(Actor-Critic)到A3C(Asynchronous Advantage Actor-Critic)
  5. 深度強化學習(Deep Reinforcement Learning)入門:RL base & DQN-DDPG-A3C introduction


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM