當前位置:編程學習大全網 - 源碼下載 - DDPG算法解析

DDPG算法解析

直接看名字就能看出DDPG(Deep Deterministic Policy Gradient )其實就是DPG(Deterministic Policy Gradient )的深度神經網絡版本,它采用Actor-Critic架構,用來解決連續控制問題。

其實當初在我剛學了解決離散控制問題的方法的時候,就思考過如果換成連續控制問題該怎麽辦,然後再看DPG所使用的方法之後,發現跟我想的是壹模壹樣....

所以,DDPG解決強化學習問題的思路跟那些解決離散問題的AC架構方法並沒多大區別,就是做了點微小的改動以適應連續問題罷了。因此,有離散控制問題經驗的妳,並且比較懂深度學習的話,在理解DDPG的時候可以說是非常簡單,甚至覺得不值壹提...

如圖,假如我們想用強化學習訓練壹個策略來控制機械手臂,上面的軸可以在 之間轉動, 下面的軸可以在 之間轉動,那麽它的動作空間將會是壹個多維的連續空間:

在有無窮多個action的時候,我們要怎麽來實現策略網絡呢?

回想壹下在離散AC框架下的策略網絡,它是輸入狀態 , 輸出 的概率分布 :

因為連續控制問題有無數個action, 顯然像離散問題那樣通過輸出層softmax後的n個有限action的概率的方式是行不通的。

因為我太了解深度學習這壹套東西了,所以面對這個問題的時候,直接就想到了兩個解決方案:

就這樣兩個我想當然就想到的方法,然後發現業界就是這麽玩的....

既然本文是講DDPG,自然,我們就沿著第壹個想法來實現。

於是我們可以把上面的策略網絡改造成這樣:

價值網絡擬合的目標壹般跟 DQN 網絡壹樣是最大動作價值函數 , 期望顯然沒法求,於是通過蒙特卡洛方法,使用觀測值 來近似,再通過 TD 算法來改進 :

於是 TD error為:

然後通過TD error 梯度下降來更新網絡參數 :

Critic 輸出的價值代表了Actor預測動作的好壞,因此策略網絡的目標是最大化價值 ,自然就想到了用梯度上升法來最大化 ,於是,我們可以對 求 的梯度,讓我們將策略網絡記作 :

然後用梯度上升更新 :

觀察上面的推導過程,我們容易發現,這玩意跟 DQN 類似,因為bootstraping的通病,壹開始低估了就會不斷低估,壹開始高估了就會不斷高估,將會使得估計誤差壹邊倒,導致學習的效果不好。為了處理這個問題,有很多種解決方案,大概就是跟 DQN 差不多,DDPG就是這麽做的。

其實就是加入壹個延遲更新策略,分別用兩個網絡來分別估計 時刻和 時刻的值,即:

這樣壹來就隔斷了用自己的估計來估計自己,避免了不斷被強化的傾向。但是,實際更新target network參數的過程采用的是這樣壹種方式:

因為target net的參數還是依賴於原來的網絡參數,這種傳遞無法完全避免。

通常經驗回放可以使算法更加穩定,因為僅僅使用新數據容易導致網絡過擬合使得訓練終止,這給了樣本有了更多的學習機會,當然如果使用過多的經驗也會降低學習速度,這需要壹定程度上進行權衡。

當然,還有很多常見的方法都可以... 根據需要來。

  • 上一篇:c語言快速排序源代碼error? 回答的好,本人會另贈財富值,非常感謝。
  • 下一篇:學習編程好不好?
  • copyright 2024編程學習大全網