日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DDPG-强化学习算法

發布時間:2024/9/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DDPG-强化学习算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Background
  • Quick Facts
  • Key Equations
    • DDPG的Q-learning部分
    • DDPG的策略學習部分
    • Exploration vs. Exploitation(探索vs.利用)
    • Documentation
  • References
    • Why These Papers?

Background

DDPG是一種同時學習Q-函數和策略的算法。它使用off-policy的數據以及bellman方程去學習Q函數,然后用Q函數去學習策略。

這種方法與Q-learning聯系密切,源于那么一種思路:如果你知道最優的動作值函數Q?(s,a)Q^*(s,a)Q?(s,a), 則當給定狀態,最優動作a?(s)a^*(s)a?(s)可以通過解決一下問題而找出:a?(s)=arg?max?aQ?(s,a).a^*(s) = \arg \max_a Q^*(s,a). a?(s)=argamax?Q?(s,a).
DDPG將學習Q?(s,a)Q^*(s,a)Q?(s,a)的近似與學習a?(s)a^*(s)a?(s)的近似進行交織,并且這樣做的方式特別適合于具有連續動作空間的環境。但是,DDPG特別適合具有連續動作空間的環境是什么意思? 這關系到我們如何計算maxaQ?(s,a)max_aQ^*(s,a)maxa?Q?(s,a)中的最大動作.

當離散動作數量有限時,最大值沒有問題,因為我們可以分別計算每個動作的Q值并直接比較它們。 (這也立即為我們提供了最大化Q值的操作。)但是,當操作空間是連續的時,我們無法詳盡地評估該空間,并且解決優化問題并不是容易的事情。 使用普通的優化算法會使計算maxaQ?(s,a)max_aQ^*(s,a)maxa?Q?(s,a)成為昂貴的子程序。 而且由于每次代理要在環境中執行操作時都需要運行它,因此這是不可接受的。

因為動作空間是連續的,所以假設函數Q?(s,a)Q^*(s,a)Q?(s,a)關于動作自變量是可微的。 這使我們能夠為利用該事實的策略μ(s)\mu(s)μ(s)設置有效的基于梯度的學習規則。 然后,不必每次都希望計算maxaQ(s,a)max_aQ(s,a)maxa?Q(s,a)時運行昂貴的優化子過程,而是可以使用maxaQ(s,a)≈Q(s,μ(s))max_aQ(s,a)\approx Q(s,\mu(s))maxa?Q(s,a)Q(s,μ(s))對其進行近似。 請參閱“關鍵方程式”部分的詳細信息。

Quick Facts

  • DDPG是一個off-policy算法
  • DDPG僅能用于連續動作空間的環境
  • DDPG可以視為連續動作空間的Deep Q-learning
  • SpinningUP中的DDPG不支持并行運算

Key Equations

DDPG的Q-learning部分

首先,讓我們回顧一下描述最佳作用值函數的Bellman方程, Q?(s,a):Q^*(s,a):Q?(s,a):Q?(s,a)=Es′~P[r(s,a)+γmax?a′Q?(s′,a′)]Q^*(s,a) = \underset{s' \sim P}{{\mathrm E}}\left[r(s,a) + \gamma \max_{a'} Q^*(s', a')\right] Q?(s,a)=sPE?[r(s,a)+γamax?Q?(s,a)]其中s′~Ps'\sim PsP是簡稱,即下一個狀態s′s's是從一個分布為P(?∣s,a)P(\cdot|s,a)P(?s,a)的環境中采樣的。

Bellman方程是學習Q?(s,a)Q^*(s,a)Q?(s,a)的起點。假設近似器是一個神經網絡Q?(s,a)Q_\phi(s,a)Q??(s,a),參數為?,\phi,?,我們收集了一個轉移對(s,a,r,s′,d)(s,a,r,s',d)(s,a,r,s,d)集合D\mathcal DD(q其中ddd表示狀態s′s's是否終結)。我們設置一個均方Bellman誤差(MSBE)函數,它告訴我們Q?Q_\phiQ??滿足Bellman 方程的程度:L(?,D)=E(s,a,r,s′,d)~D[(Q?(s,a)?(r+γ(1?d)max?a′Q?(s′,a′)))2]L(\phi, {\mathcal D}) = \underset{(s,a,r,s',d) \sim {\mathcal D}}{{\mathrm E}}\left[ \Bigg( Q_{\phi}(s,a) - \left(r + \gamma (1 - d) \max_{a'} Q_{\phi}(s',a') \right) \Bigg)^2 \right]L(?,D)=(s,a,r,s,d)DE????(Q??(s,a)?(r+γ(1?d)amax?Q??(s,a)))2???這里,在評估(1?d)(1-d)(1?d), 我們用了一個python慣例,True:1,False:0。當"d==True"表示當s′s's是終結狀態的時候,Q函數應該顯示:代理不會得到額外獎勵在這個狀態之后。

Q-learning算法作為函數近似,比如說DQN(及其變種)和DDPG,都極大基于最小化MSBE損失函數。這里有兩個主要的技巧值得說明,以及一個詳細的DDPG細節。

  • 技巧1:回放緩存。所有蓄念一個深度神經網絡其近似Q?(s,a)Q^*(s,a)Q?(s,a)的標準算法都能用經驗回放。這是一個先前經驗的集合D\mathcal DD。 未來讓算法有穩定的表現,緩存應該足夠大以包括一大范圍的經驗,但是任何經驗都保留不一定總是好的。如果你只用經常出現的數據,你就會過擬合;如果你用太多經驗,你可能會降低訓練的速度。

我們已經提到DDPG是一種off-policy算法:這一點與突出顯示原因和方式一樣重要。 請注意,重播緩沖區應包含舊的體驗,即使它們是使用過時的策略獲得的也是如此。 為什么我們完全可以使用這些? 原因是Bellman方程式并不關心使用了哪個轉換元組,或如何選擇動作,或在給定的轉移后會發生什么,因為對于所有可能的轉換,最佳Q函數都應滿足Bellman方程式。 因此,當嘗試通過MSBE最小化擬合Q函數時,我們經歷的任何轉移對都是公平的游戲。

  • 技巧2:目標網絡。 Q-learning算法使用目標網絡,式子r+γ(1?d)max?a′Q?(s′,a′)r + \gamma (1 - d) \max_{a'} Q_{\phi}(s',a')r+γ(1?d)amax?Q??(s,a)叫做目標,英文當我們最小化MSBE損失的時候,我們嘗試去使Q-函數更像目標。問題在于,目標取決于我們嘗試訓練的相同參數:?\phi?。 這使得MSBE最小化不穩定。 解決方案是使用一組參數,這些參數接近?\phi?,但是具有時間延遲,也就是說,第二個網絡(稱為目標網絡)之后于第一個網絡。 目標網絡的參數表示為?targ\phi_{\text{targ}}?targ?

在基于DQN的算法中,每隔一定數量的步驟,目標網絡就從主網絡復制一次。 在DDPG風格的算法中,通過每次主網絡通過polyak平均更新,就更新一次目標網絡:?targ←ρ?targ+(1?ρ)?,\phi_{\text{targ}} \leftarrow \rho \phi_{\text{targ}} + (1 - \rho) \phi,?targ?ρ?targ?+(1?ρ)?,其中ρ\rhoρ是一個在0,1之間的參數(通常接近1)。這個超參數在spoinningup叫做polyakpolyakpolyak

DDPG細節:計算目標動作的最大動作。在連續動作空間中計算這個是個難點。DDPG 解決這個問題通過用目標策略網絡計算一個動作,這個動作近似地最大化Q?targ.Q_{\phi_{targ}}.Q?targ??.目標策略網絡正如目標Q-function:在訓練過程中通過polyakpolyakpolyak平均化策略參數。

綜上,DDPG的Q-learning通過隨機梯度下降最小化下面的MSBE損失:L(?,D)=E(s,a,r,s′,d)~D[(Q?(s,a)?(r+γ(1?d)Q?targ(s′,μθtarg(s′))))2],L(\phi, {\mathcal D}) = \underset{(s,a,r,s',d) \sim {\mathcal D}}{{\mathrm E}}\left[ \Bigg( Q_{\phi}(s,a) - \left(r + \gamma (1 - d) Q_{\phi_{\text{targ}}}(s', \mu_{\theta_{\text{targ}}}(s')) \right) \Bigg)^2 \right],L(?,D)=(s,a,r,s,d)DE????(Q??(s,a)?(r+γ(1?d)Q?targ??(s,μθtarg??(s))))2???,其中μθtarg\mu_{\theta_{targ}}μθtarg??是目標策略。

DDPG的策略學習部分

DDPG的策略學習是相對簡單的。我們想去學習一個確定性網絡μθ(s)\mu_\theta(s)μθ?(s),它給出了最大化Q?(s,a)Q_\phi(s,a)Q??(s,a)的動作。因為動作空間是連續的,我們假設Q-function是關于動作可導的,我們用梯度上升(只針對策略參數)去解決:max?θEs~D[Q?(s,μθ(s))].\max_{\theta} \underset{s \sim {\mathcal D}}{{\mathrm E}}\left[ Q_{\phi}(s, \mu_{\theta}(s)) \right].θmax?sDE?[Q??(s,μθ?(s))].注意到Q-function參數在這里被視為常量。

Exploration vs. Exploitation(探索vs.利用)

DDPG訓練一個確定性策略以一個off-policy的方式。因為策略是確定的,如果代理要on-policy探索,一開始它可能不會嘗試足夠多分支的動作去找到有用的學習信號。為了讓DDPG策略探索得更好,我們加入了噪聲給它的那些動作在訓練的時候。原始DDPG的作者建議時間相關的 OU 噪聲,但是最近更多的結果表明,不相干的非0高斯噪聲也能很好起作用。因為這個形式更簡單,更被偏好。為了更好地得到高質量的訓練數據,你可以在訓練的時候減少噪聲的幅度。(我們在執行過程中不執行此操作,并且在整個過程中保持噪聲等級固定)

在測試時,要查看策略如何充分利用它所學到的知識,我們不會在操作中增加噪音。

我們的DDPG實施在培訓開始時使用了一個技巧來改進探索。 對于開始時有固定數量的步驟(使用start_steps關鍵字參數設置),代理將從有效動作的均勻隨機分布中采樣動作。 之后,它將返回到正常的DDPG探索。

Documentation

spinup.ddpg(env_fn, actor_critic=, ac_kwargs={}, seed=0, steps_per_epoch=5000, epochs=100, replay_size=1000000, gamma=0.99, polyak=0.995, pi_lr=0.001, q_lr=0.001, batch_size=100, start_steps=10000, act_noise=0.1, max_ep_len=1000, logger_kwargs={}, save_freq=1)
https://spinningup.openai.com/en/latest/_modules/spinup/algos/ddpg/ddpg.html#ddpg

Paramemeters:

  • env_fn – A function which creates a copy of the environment. The environment must satisfy the OpenAI Gym API.
  • actor_critic - A function which takes in placeholder symbols for state and action, and returns the main outputs from the agent’s computation
  • ac_kwargs (dict) – Any kwargs appropriate for the actor_critic function you provided to DDPG.
  • seed (int) – Seed for random number generators.
  • steps_per_epoch (int) – Number of steps of interaction (state-action pairs) for the agent and the environment in each epoch.
  • epochs (int) – Number of epochs to run and train agent.
  • replay_size (int) – Maximum length of replay buffer.
  • gamma (float) – Discount factor. (Always between 0 and 1.)
  • polyak (float) – Interpolation factor in polyak averaging for target networks. Target networks are updated towards main networks according to:θtarg←ρθtarg+(1?ρ)θ\theta_{targ}\leftarrow\rho\theta_{targ}+(1-\rho)\thetaθtarg?ρθtarg?+(1?ρ)θwhere ρ\rhoρ is polyak. (Always between 0 and 1, usually close to 1.)
  • pi_lr (float) – Learning rate for policy.
  • q_lr (float) – Learning rate for Q-networks.
  • batch_size (int) – Minibatch size for SGD.
  • start_steps (int) – Number of steps for uniform-random action selection, before running real policy. Helps exploration.
  • act_noise (float) – Stddev for Gaussian exploration noise added to policy at training time. (At test time, no noise is added.)
  • max_ep_len (int) – Maximum length of trajectory / episode / rollout.
  • logger_kwargs (dict) – Keyword args for EpochLogger.
  • save_freq (int) – How often (in terms of gap between epochs) to save the current policy and value function.

References

Deterministic Policy Gradient Algorithms, Silver et al. 2014
Continuous Control With Deep Reinforcement Learning, Lillicrap et al. 2016

Why These Papers?

Silver 2014 is included because it establishes the theory underlying deterministic policy gradients (DPG). Lillicrap 2016 is included because it adapts the theoretically-grounded DPG algorithm to the deep RL setting, giving DDPG.

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的DDPG-强化学习算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。