深度强化学习(DRL)算法 2 —— PPO 之 GAE 篇

这篇具有很好参考价值的文章主要介绍了深度强化学习(DRL)算法 2 —— PPO 之 GAE 篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在之前的文章里介绍了 PPO 之 Clipped Surrogate Objective 篇,提出了现有方法存在方差较大的缺点,今天我们介绍一下如何使用 GAE(Generalized Advantage Estimation)进行改进。

回顾

上文提到的 Surrogate Objective:

R ˉ θ ≈ E τ ∼ q θ ′ ( τ ) [ p θ ( a t ∣ s t ) q θ ′ ( a t ∣ s t ) R ( τ ) ] \bar{R}_{\theta} \approx E_{\tau\sim q_{\theta'}(\tau)}[\frac{p_\theta(a_{t}|s_{t})}{q_\theta'(a_{t}|s_{t})}R(\tau)] RˉθEτqθ(τ)[qθ(atst)pθ(atst)R(τ)]

我们的目标是使得这个期望回报最大。

算法描述

如果一次 rollout 的回报均值是 100,一次的是 90,我们就能说这两次 rollout 的效果都不错嘛?当然不能,如果理论上的最大期望回报是 1w,那么这两次 rollout 都有很大的提升空间,所以我们需要引入基准来做参考。

优势估计(AE)

如何引入基准呢?由深度强化学习(DRL)算法 附录1 —— 贝尔曼公式,期望回报实际上就是 Q,每次 rollout 是对 Q 的一次采样,那么我们可以定义优势 A = Q - V(Advantage)。
由于现在的 Q 使用的 MC 方法表示,所以方差大,可以引入 bootstrap 的方法减小方差,如 TD,那么对 Advantage 的一次采样为:

a d v a n t a g e = r + γ v ( s t + 1 ) − v ( s t ) advantage = r + γv(s_{t+1})- v(s_t) advantage=r+γv(st+1)v(st)

那么通过 PG 的方法,可以使得 advantage 大的
p θ ( a t ∣ s t ) p_\theta(a_{t}|s_{t}) pθ(atst)
增大,从而改进策略。但是注意这里
p θ ( a t ∣ s t ) p_\theta(a_{t}|s_{t}) pθ(atst)
使用的是神经网络,我们还需要一个神经网络来表示 v。所以 ppo 里有两个神经网络,一个扮演 actor 的角色决定 action,一个扮演 critic 的角色估计 v 值,来判定 actor 的好坏。
所以除了 Surrogate Objective 的 loss,我们还需要 critic 网络的 loss(使用最小二乘估计),直觉上我们希望模型的探索性得到提升,那么可以借助 actor 网络输出的交叉熵。
那么我么可以假设采样一次的 loss 是:pgloss - c1v_loss + c2entropy_loss,为了让 loss 最大,我们需要提高 pgloss,减小 v_loss,增大 entropy_loss,满足我们希望 A 越大
p θ ( a t ∣ s t ) p_\theta(a_{t}|s_{t}) pθ(atst)
越大,使得 v 值越来越准确,模型的探索性得到提升的视觉,实际上如果把 AE 替换成 GAE,那么这就是 PPO 论文里的 Loss function:
L t C L I P + V F + S ( θ ) = E ^ t [ L t C L I P ( θ ) − c 1 L t V F ( θ ) + c 2 S [ π θ ] ( s t ) ] L_t^{C L I P+V F+S}(\theta)=\hat{\mathbb{E}}_t\left[L_t^{C L I P}(\theta)-c_1 L_t^{V F}(\theta)+c_2 S\left[\pi_\theta\right]\left(s_t\right)\right] LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)c1LtVF(θ)+c2S[πθ](st)]

广义优势估计(GAE)

上面的 AE 算法采用 one-step TD 来描述 advantage,我们都知道 TD 算法虽然会减小方差,但是也增大了偏差,所以这就像两个极端,MC 方差最大,one-step TD 偏差最大,有没有一种方法,可以提供一种 trade-off,而且可以很方便的调节这种 trade-off 呢?
我们具体来看,用一些数学技巧:
one-step advantage:
δ t = r t + γ v ( s t + 1 ) − v ( s t ) \delta_t = r_t + γv(s_{t+1})- v(s_t) δt=rt+γv(st+1)v(st)

two-step advantage:
δ t + γ δ t + 1 = r t + γ r t + 1 + γ 2 v ( s t + 2 ) − v ( s t ) \delta_t + \gamma \delta_{t+1} = r_t + \gamma r_{t+1} +γ^2v(s_{t+2})- v(s_t) δt+γδt+1=rt+γrt+1+γ2v(st+2)v(st)

∞ \infty -step advantage: ∑ l = 0 ∞ γ l δ t + l = ∑ l = 0 ∞ γ l r t + l − v ( s t ) \sum_{l=0}^{\infty} \gamma^l \delta_{t+l} = \sum_{l=0}^{\infty} \gamma^l r_{t+l} - v(s_t) l=0γlδt+l=l=0γlrt+lv(st)
加下来我们尝试构造权重:
one-step 权重: 1 − λ 1 - \lambda 1λ
two-step 权重: λ \lambda λ (1 - λ \lambda λ)
three-step 权重: λ 2 λ^2 λ2 (1- λ \lambda λ)
然后进行加权平均则有 advantage 的 GAE 表示[3]:
a d v a n t a g e G A E = ∑ l = 0 ∞ ( γ λ ) l δ t + l \begin{aligned} advantage^{\mathrm{GAE}} = & \sum_{l=0}^{\infty}(\gamma \lambda)^l \delta_{t+l} \end{aligned} advantageGAE=l=0(γλ)lδt+l (ppo 使用时, ∞ \infty 变成 T)
λ \lambda λ= 0 时,advantage 的 GAE 表示退化成 one-step TD
λ \lambda λ= 1 时,advantage 的 GAE 表示退化成 MC
所以当 λ \lambda λ在 (0,1)区间时,表示在偏差和方差之间做出折衷。

总结

到这里,PPO 算法相关的细节就讲完了,但是 PPO 的代码实现上还有许多细节,可以参考 cleanrl 是目前我看过的可读性最好的 ppo 代码实现,对具体实现感兴趣的可以看下这个 repo。接下来的文章会介绍 DRL 其他的常用算法,如 DDPG、SAC 等。
感谢阅读。文章来源地址https://www.toymoban.com/news/detail-849541.html

参考

  1. https://github.com/DLR-RM/stable-baselines3/pull/375
  2. https://arxiv.org/abs/1707.06347
  3. https://arxiv.org/abs/1506.02438

到了这里,关于深度强化学习(DRL)算法 2 —— PPO 之 GAE 篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (9-8)基于深度强化学习的量化交易策略(OpenAI Baselines +FinRL+DRL+PyPortfolioOpt):最小方差投资组合分配

    1.1.11  最小方差投资组合分配 最小方差投资组合分配是一种通过优化投资组合权重,以最小化整个投资组合的方差(波动性)的方法。这种方法旨在构建一个投资组合,使其在给定一组资产的情况下,具有最小的风险。通过调整不同资产在投资组合中的权重,以达到整体风险

    2024年02月22日
    浏览(39)
  • 【深度强化学习】(6) PPO 模型解析,附Pytorch完整代码

    大家好,今天和各位分享一下深度强化学习中的 近端策略优化算法 (proximal policy optimization, PPO ),并借助 OpenAI 的 gym 环境完成一个小案例,完整代码可以从我的 GitHub 中获得: https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model PPO 算法之所以被提出,根本原因在于 Polic

    2023年04月08日
    浏览(34)
  • ChatGPT强化学习大杀器——近端策略优化(PPO)

    近端策略优化 ( P roximal P olicy O ptimization)来自 Proximal Policy Optimization Algorithms (Schulman et. al., 2017)这篇论文,是当前最先进的强化学习 (RL) 算法。这种优雅的算法可以用于各种任务,并且已经在很多项目中得到了应用,最近火爆的ChatGPT就采用了该算法。 网上讲解ChatGPT算法

    2024年01月21日
    浏览(34)
  • ML-Agents与自己的强化学习算法通讯——PPO篇

    在上一篇文章ML-Agents与python的Low Level API通信中,我简要介绍了Python与Unity端的ML-Agents插件的通讯代码,如何正确运行一个能够进行强化学习训练的Unity环境,并获取到响应的信息,接下来将介绍如何利用自己的强化学习算法进行训练。 这里我利用了强化学习库PARL来训练ML-Ag

    2023年04月18日
    浏览(33)
  • DQN,DDPG,PPO 等强化学习算法在人工智能中的未来发展方向:从大规模到小规模部署

    作者:禅与计算机程序设计艺术 随着近年来人工智能领域的蓬勃发展,强化学习(Reinforcement Learning, RL)被越来越多的人认可并应用于人工智能领域。如今,RL已经可以处理许多复杂的问题,如自动驾驶、机器人控制等。在过去的一段时间里,我一直想和各位分享一下RL在人工

    2024年02月09日
    浏览(32)
  • 强化学习PPO从理论到代码详解(2)---PPO1和PPO2

    在线或离线学习   上一节我们了解了什么是策略梯度,本节开始讲PPO理论之前,我们先提出一个概念,什么在线学习,什么离线学习。 On-policy : Then agent learned and the agent interacting with Environment is the same Off-policy : Then agent learned and the agent interacting with Environment is not the same 英语

    2023年04月12日
    浏览(24)
  • 强化学习 Proximal Policy Optimization (PPO)

    参考: 李宏毅老师课件 PPO: Default reinforcement learning algorithm at OpenAI PPO = Policy Gradient 从 On-policy 到 Off-policy, 再加一些constraint Actor: 动作执行者(智能体) Env: 环境 Reward Function: 奖励函数 Policy (pi) : a network with parameter (theta) . Input: 当前的 Env. Output: actor 要采取的下一个 action 的分

    2024年02月11日
    浏览(32)
  • MindSpore强化学习:使用PPO配合环境HalfCheetah-v2进行训练

    本文分享自华为云社区《MindSpore强化学习:使用PPO配合环境HalfCheetah-v2进行训练》,作者: irrational。 半猎豹(Half Cheetah)是一个基于MuJoCo的强化学习环境,由P. Wawrzyński在“A Cat-Like Robot Real-Time Learning to Run”中提出。这个环境中的半猎豹是一个由9个链接和8个关节组成的2D机

    2024年04月29日
    浏览(30)
  • 强化学习PPO从理论到代码详解(1)--- 策略梯度Policy gradient

    Proximal Policy Optimization(PPO) 近端策略优化,可以说是目前最稳定,最强的强化学习算法之一了,也是openAI默认的强化学习算法,有多叼不用我说了吧。 笔者在强化学习的道路上看来很多书,看了很多代码,和很多大佬的博客,只是很多都是侧重一个方面,所以我在吸取百家之

    2024年02月07日
    浏览(30)
  • 深度强化学习——DQN算法原理

    一、DQN算法是什么 DQN,即深度Q网络(Deep Q-network),是指基于深度学习的Q-Learing算法。 回顾一下Q-Learing:强化学习——Q-Learning算法原理 Q-Learing算法维护一个Q-table,使用表格存储每个状态s下采取动作a获得的奖励,即状态-价值函数Q(s,a),这种算法存在很大的局限性。在现实

    2024年02月02日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包