Policy-based Deep Reinforcement Learning -- Policy Gradient

Policy-based Deep Reinforcement Learning -- Policy Gradient

先佔個坑,立志於寫一個簡單易懂又符合邏輯的深度強化學習教程吧。這篇文章適合知道Reinforcement Learning是啥,稍稍有些理解,最好是對DQN有些理解的小夥伴們閱讀。如果你還不知道強化學習的基本概念,Q Learning是什麼,DQN是什麼的話,那可以先去有個了解再回來哦。然後的話這篇文章裡面部分數學方面的推導將直接給結論,因為有點太複雜了,感興趣的朋友可以去原paper里去找。這個教程的話只是本小菜鳥個人見解,希望大家可以多多指點,指出錯誤之處。

強化學習這一塊主要分為兩個大的部分,一個是value-based,其中以 Q-Learning,SARSA,DQN為代表,這一類的話網上教程比較多,也比較詳細,也比較簡單,效果也相對比較差,就不寫這一塊了;另一個部分是policy-based,以A3C(Asynchronous Advantage Actor-Critic)(也可以被認為是value-based和policy-based的結合),DDPG(Deep Deterministic Policy Gradient) , TRPO(Trust Region Policy Optimization),PPO(Proximal Policy Optimization)為代表, 這一部分的話理解起來會稍微難一些,但是是現在的主流方法,尤其是PPO,DeepMind 和 OpenAI 最近都以它作為默認使用的最有方法了。那我們接下來就開始吧!

首先的話在整個教程開始之前,在這裡先把所需要用的一些基本元素和概念簡單羅列介紹一下。一般來說,policy-based 強化學習的目的就是建立一個policy π,這個policy可以被認為是一個神經網路(neural network),它的輸入是State s,輸出是Action a。可以想像一下,當這個policy或者說是network訓練成功以後,把任意一個state(s可以是這一時刻的圖片,或agent所處的位置等等)輸入到policy中,都可以得到一個應該採取的action(a在policy中一般被設定為某一行為,比如說向上走,被採用的概率),從而使agent得到最多的Reward r。這裡就把強化學習中重要的要素policy π,State s,Action a,Reward r解釋了一下,當然,使用強化學習的最終目的,就是要構建一個非常棒的策略,也就是policy π, 從而使得在agent在任意state情況下,可以做出最優action,然後得到儘可能多的reward。

這一切的一切都要從這篇 Policy Gradient Methods for Reinforcement Learning with Function Approximation 說起,這一篇論文可以被認為是如今這方面方法的奠基之作,非常的經典。首先要關注的是這一個公式:

在這裡,ρ可以被認為是performance,也就是這個policy的表現;而θ則是policy中的參數,現在常用做法是把policy用神經網路表示出來,那麼這裡的參數就是要學習的神經元之間的連接參數啦,w,b什麼的;α的話則是梯度更新時步子的大小,幾乎可以被認定為learning rate。根據這個公式,policy也就是神經網路的參數更新梯度就可以被計算出來了,也就是說整個神經網路將會朝著ρ的最大化的方向更新。好了,現在我們只需要找出方程右邊那一塊怎麼算,那麼就可以不斷的優化policy了。

這時候,文章中給出了一個定理:

這個公式給出了梯度的計算方法。一項一項來看,首先這裡的d被看作是在policy π下的state的穩態分布,文章中提到這個分布可以被假定為對於所有不同的policy來說,獨立於初始狀態s0;然後再來看第二項π,這裡的話毫無疑問指的就是這個policy,也就是在DRL里的神經網路了;再來看第三項Q,它指的是每一對state-action所對應的value,這裡與Q-Learning中的Q value是幾乎一樣的概念,這個值越大的話,就說明在這個特定state的情況下這個特定的action越好。

那麼到了這裡之後,文章中又證明了我們可以用一個方程f(s,a)去近似代替Q(s,a),從而達到求解梯度的目的,詳細的推到和證明這裡就不給出了。之後文章中又提到:

這樣的話,那麼這個function approximator f(s,a)實際上就可以認為是advantage function的近似了。那麼advantage function一般可以認為是這個東西:

這裡Q的意義和前文一樣,而V指的是當前state的value,也就是評價當前state的好壞(比如說能獲得reward的state所對應的V一般來說就會大一些)。

到了這裡,我們就可以得到梯度的計算方式了:

這時候我們對這個方程進行進一步的操作,可以得到:

然後就可以得到:

最後前兩項的話實際上就可以被認為是在一些有限的採樣後得到的期望,這裡不知道怎麼具體解釋,可以參考PPO的論文。最終的話我們就可以得到policy gradient的究極形態了:

這個公式出自於PPO(Proximal Policy Optimization),g表示的就是梯度。個人感覺這個表達方式十分清晰易懂,於是就放在這裡。到這裡,policy gradient的思路已經介紹完了。下一篇文章將從這裡繼續,講解A3C演算法。


推薦閱讀:

機器學習筆記-支持向量機(SVM)(一)
TensorFlow.js發布:使用JS進行機器學習並在瀏覽器中運行
CapsNet入門系列番外:基於TensorFlow實現膠囊網路
2.5 聯合概率分布

TAG:強化學習ReinforcementLearning | 機器學習 |