Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PPO(Proximal Policy Optimization)近端策略优化算法

PPO(Proximal Policy Optimization)近端策略优化算法

作者头像
狼啸风云
修改于 2022-09-02 11:58:33
修改于 2022-09-02 11:58:33
13.2K0
举报

强化学习可以按照方法学习策略来划分成基于值和基于策略两种。而在深度强化学习领域将深度学习与基于值的Q-Learning算法相结合产生了DQN算法,通过经验回放池与目标网络成功的将深度学习算法引入了强化学习算法。其中最具代表性分别是Q-Learning与Policy Gradient算法,将Q-Learning算法与深度学习相结合产生了Deep Q Network,而后又出现了将两种方式的优势结合在一起的更为优秀Actor Critic,DPG, DDPG,A3C,TRPO,PPO等算法。而本文所采用的是目前效果较好的近端策略优化算法PPO。

PPO算法思想

PPO算法是一种新型的Policy Gradient算法,Policy Gradient算法对步长十分敏感,但是又难以选择合适的步长,在训练过程中新旧策略的的变化差异如果过大则不利于学习。PPO提出了新的目标函数可以再多个训练步骤实现小批量的更新,解决了Policy Gradient算法中步长难以确定的问题。其实TRPO也是为了解决这个思想但是相比于TRPO算法PPO算法更容易求解。

PolicyGradient回顾

重新回顾一下PolicyGradient算法,Policy Gradient不通过误差反向传播,它通过观测信息选出一个行为直接进行反向传播,当然出人意料的是他并没有误差,而是利用reward奖励直接对选择行为的可能性进行增强和减弱,好的行为会被增加下一次被选中的概率,不好的行为会被减弱下次被选中的概率。 策略如下图方式定义,详细公式信息接下来会介绍。

公式推导

PolicyGradient算法原来是On-Policy的,(感谢指正,更正:PPO也是on-policy)。

important sampling不能算是off-policy,PPO里面的 important sampling 采样的过程仍然是在同一个策略生成的样本,并未使用其他策略产生的样本,因此它是on-policy的。而DDPG这种使用其他策略产生的数据来更新另一个策略的方式才是off-policy

  • On-Policy:只与相同的环境下进行交互学习
  • off-Policy:可以与学习自己环境下的经验也可以获得其他环境下的经验

策略τ的回报期望如下\nabla R=E_{\tau p_{\theta}(\tau)}\left[R(\tau) \nabla \log p_{\theta}(\tau)\right] ,原来是使用\pi_\theta与环境交互,当\theta 更新时就对训练数据重新采样,那要变成off-policy根据之前的经验就需要使用另外一个网络来帮助采样,就像DQN里的targetNet,现在目标是使用\pi_{\theta^{\prime}} 采样来训练\theta, \theta^{\prime} 被固定所以重新使用采样数据。

上图中所示,PolicyGradient是model-free的所以不知道模型的概率,所以只能通过与真实环境数据的分布P(x)中去采样加和平均求期望。但现在我们为了把它变成offpolicy,就不能直接从P(x)中去直接采样。这时候把期望等价写成\int f(x) p(x) d x 然后引入新的采样分布q(x)进行变换\int f(x) \frac{p(x)}{q(x)} q(x) d x ,这时候我们发现这和最大熵模型引入隐含变量的套路有点相似,然后就可以把原来x~p的期望改写成x~q的期望。所以最终可以得到E_{x p}[f(x) p(x)]=E_{x q}\left[f(x) \frac{p(x)}{q(x)}\right]上述推导就是important sample的技巧。在这个式子中其中的\frac{p(x)}{q(x)} ​就是important weight。通过这个公式我们也可以想象得到,如果采样的分布p与真实的分布q差得很多,那么肯定会导致两个期望不一致。下图通过举了一个例子来讲解

上图的p(x)与q(x)差异很大左边为负右边为正,当采样次数很少右边采样很多的情况,就会得出与右边为正的错误结果,但是如果在左边也被采样到一个样本时这个这个时候因为\frac{p(x)}{q(x)} ​作为权重修正就相当于给左边的样本一个很大的权重,就可以将结果修正为负的。所以这就是 important weight的作用。但是我们也能看出来,采样次数要足够多,万一采样次数少只采到了一边那就凉凉了。 所以有了上述的 Important Sampling的技巧我们就可以将原来的on-policy变成off-policy了。

\begin{array}{l} \nabla J(\theta)=E_{\pi_{\theta}}\left[R(s, a) \nabla \log \pi_{\theta}(s, a)\right] \\ \nabla J^{\theta^{\prime}}(\theta)=E_{\pi_{\theta^{\prime}}}\left[\frac{\pi_{\theta}(s, a)}{\pi_{\theta^{\prime}}(s, a)} R(s, a) \nabla \log \pi_{\theta^{\prime}}(s, a)\right] \end{array}

上文提到我们不希望\theta\theta' 的差距过大,所以要想办法约束它。KL散度也叫相对熵,可以用来衡量两个分布之间的差异性。所以最直接的办法,就是对目标函数增加一个约束条件让他的KL散度小于\delta 。这个办法其实就TRPO的思想啦~

\begin{array}{l} J_{T R P O}^{\theta^{\prime}}(\theta)=E_{\pi_{\theta^{\prime}}}\left[\frac{\pi_{\theta}(s, a)}{\pi_{\theta^{\prime}}(s, a)} A^{\theta^{\prime}}(s, a)\right] \\ \text { s.t. } K L\left(\theta, \theta^{\prime}\right)<\delta \end{array}

直接求解TRPO这种带约束的问题是十分复杂的,他与PPO算法的效果差不多,但是PPO将KL散度作为惩罚项,更加容易求解。

J_{P P O}^{\theta^{\prime}}(\theta)=E_{\pi_{\theta^{\prime}}}\left[\frac{\pi_{\theta}(s, a)}{\pi_{\theta^{\prime}}(s, a)} A^{\theta^{\prime}}(s, a)\right]-\beta K L\left(\theta, \theta^{\prime}\right)

另外还有一种PPO2算法效果比PPO要好一些,如下图所示

利用clip函数将其固定在了一定的范围之内,同样也可以起到限制约束\theta, \theta^{\prime} 的作用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
强化学习从基础到进阶–案例与实践[8]:近端策略优化(proximal policy optimization,PPO)算法
在介绍近端策略优化(proximal policy optimization,PPO) 之前,我们先回顾同策略和异策略这两种训练方法的区别。在强化学习里面,要学习的是一个智能体。如果要学习的智能体和与环境交互的智能体是相同的,我们称之为同策略。如果要学习的智能体和与环境交互的智能体不是相同的,我们称之为异策略。
汀丶人工智能
2023/10/11
1.2K0
强化学习从基础到进阶–案例与实践[8]:近端策略优化(proximal policy optimization,PPO)算法
近端策略优化算法(PPO)
策略梯度迭代,通过计算策略梯度的估计,并利用随机梯度上升算法进行迭代。其常用的梯度估计形式为: E^t[∇θlogπθ(at∣st)A^t] \hat{\mathbb{E}}_t[\nabla_\theta log \pi_\theta(a_t | s_t)\hat{A}_t] E^t​[∇θ​logπθ​(at​∣st​)A^t​] 其中πθ\pi_\thetaπθ​为随机策略,A^t\hat{A}_tA^t​是优势函数在时间步t的估计,其损失函数为: LPG(θ)=E^t[logπθ(at∣st)A^t] L^{PG}(\theta)=\hat{\mathbb{E}}_t[log_{\pi_\theta}(a_t|s_t)\hat{A}_t] LPG(θ)=E^t​[logπθ​​(at​∣st​)A^t​]
Steve Wang
2020/02/18
1.5K0
近端策略优化算法(PPO)
强化学习算法TD3论文的翻译与解读:延迟学习、软更新、策略噪声、梯度截取
强化学习算法 TD3 论文:Addressing Function Approximation Error in Actor-Critic Methods 2018.10. ,作者本人的 TD3 代码,PyTroch 实现
汀丶人工智能
2023/10/11
2.3K0
强化学习算法TD3论文的翻译与解读:延迟学习、软更新、策略噪声、梯度截取
强化学习从基础到进阶-常见问题和面试必知必答8:近端策略优化(proximal policy optimization,PPO)算法
经典策略梯度的大部分时间花在数据采样上,即当我们的智能体与环境交互后,我们就要进行策略模型的更新。但是对于一个回合我们仅能更新策略模型一次,更新完后我们就要花时间重新采样数据,然后才能再次进行如上的更新。
汀丶人工智能
2023/06/28
4620
强化学习系列(八)--PPO
回顾上文中的DDPG,DDPG是源于DQN,它使用神经网络替换maxQ(s',a')的功能来解决连续空间问题。也就是说DDPG的Actor网络输出的是一个动作,他的目标是输出一个动作,这个动作输入到Critic后,能过获得最大的Q值。和DQN一样,更新的时候如果更新目标在不断变化会使学习过程困难,所以需要固定目标网络,求target的网络更新后再赋值参数,所以需要四个网络。
languageX
2022/04/01
4.7K0
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
MAPPO 是一种多智能体强化学习算法,基于单智能体的 PPO (Proximal Policy Optimization) 算法进行了扩展,专门设计用于解决多智能体协作和竞争环境中的决策问题。
不去幼儿园
2024/12/03
9950
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
强化学习(十六) 深度确定性策略梯度(DDPG)
    在强化学习(十五) A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Critic难收敛的问题,这个算法就是是深度确定性策略梯度(Deep Deterministic Policy Gradient,以下简称DDPG)。
刘建平Pinard
2019/03/05
5.8K0
强化学习(十三) 策略梯度(Policy Gradient)
    在前面讲到的DQN系列强化学习算法中,我们主要对价值函数进行了近似表示,基于价值来学习。这种Value Based强化学习方法在很多领域都得到比较好的应用,但是Value Based强化学习方法也有很多局限性,因此在另一些场景下我们需要其他的方法,比如本篇讨论的策略梯度(Policy Gradient),它是Policy Based强化学习方法,基于策略来学习。
刘建平Pinard
2018/12/27
1.4K0
【万字专栏总结】离线强化学习(OfflineRL)总结(原理、数据集、算法、复杂性分析、超参数调优等)
强化学习发展的特别早,但一直不温不火,其中Sutton老爷子早在1998年就写了强化学习领域的圣经书籍:An Introduction : Reinforcement Learning ,但也并未开启强化学习发展的新局面。直到2012年,深度学习广泛兴起,大规模的神经网络被成功用于解决自然语言处理,计算机视觉等领域,人工智能的各个方向才开始快速发展,强化学习领域最典型的就是2013年DeepMind公司的Volodymyr Mnih发表Playing Atari with Deep Reinforcement Learning(DQN技术),可以说开启了深度强化学习技术发展的新高潮,2015年该论文的加强版Human-level control through deep reinforcement learning 登上Nature, 以及2016年Nature上的AlphaGo: Mastering the game of Go with deep neural networks and tree search 充分证明了深度强化学习技术的发展潜力。
深度强化学习实验室
2022/09/23
10.9K0
【万字专栏总结】离线强化学习(OfflineRL)总结(原理、数据集、算法、复杂性分析、超参数调优等)
Hands on Reinforcement Learning Advanced Chapter
在第 5 章讲解的 Q-learning 算法中,我们以矩阵的方式建立了一张存储每个状态下所有动作值的表格。表格中的每一个动作价值Q(s,a)Q(s,a)Q(s,a)表示在状态sss下选择动作aaa然后继续遵循某一策略预期能够得到的期望回报。然而,这种用表格存储动作价值的做法只在环境的状态和动作都是离散的,并且空间都比较小的情况下适用,我们之前进行代码实战的几个环境都是如此(如悬崖漫步)。当状态或者动作数量非常大的时候,这种做法就不适用了。例如,当状态是一张 RGB 图像时,假设图像大小是210×160×3210\times 160\times 3210×160×3,此时一共有256(210×160×3)256^{(210\times 160\times 3)}256(210×160×3)种状态,在计算机中存储这个数量级的QQQ值表格是不现实的。更甚者,当状态或者动作连续的时候,就有无限个状态动作对,我们更加无法使用这种表格形式来记录各个状态动作对的QQQ值。
一只野生彩色铅笔
2023/04/24
7610
Hands on Reinforcement Learning Advanced Chapter
【总结】为什么对累积奖励减去baseline项能起到减小方差的作用?
很多论文的工作都专注于减少policy gradient的方差,以得到更加优质且稳定的policy。其中一项最经典的工作就是对policy gradient的累积奖励减去一个baseline,但为什么减去一个baseline就可以达到减小方差,同时又不引入偏差的效果呢?
深度强化学习实验室
2022/09/23
1.1K0
【总结】为什么对累积奖励减去baseline项能起到减小方差的作用?
Hands on Reinforcement Learning 11 Trust Region Policy Optimization
本书之前介绍的基于策略的方法包括策略梯度算法和 Actor-Critic 算法。这些方法虽然简单、直观,但在实际应用过程中会遇到训练不稳定的情况。回顾一下基于策略的方法:参数化智能体的策略,并设计衡量策略好坏的目标函数,通过梯度上升的方法来最大化这个目标函数,使得策略最优。具体来说,假设
一只野生彩色铅笔
2023/04/09
4180
Hands on Reinforcement Learning 12 Proximal Policy Optimization
第 11 章介绍的 TRPO 算法在很多场景上的应用都很成功,但是我们也发现它的计算过程非常复杂,每一步更新的运算量非常大。于是,TRPO 算法的改进版——PPO 算法在 2017 年被提出,PPO 基于 TRPO 的思想,但是其算法实现更加简单。并且大量的实验结果表明,与 TRPO 相比,PPO 能学习得一样好(甚至更快),这使得 PPO 成为非常流行的强化学习算法。如果我们想要尝试在一个新的环境中使用强化学习算法,那么 PPO 就属于可以首先尝试的算法。
一只野生彩色铅笔
2023/04/12
6040
Hands on Reinforcement Learning 12 Proximal Policy Optimization
强化学习方法小结
在介绍强化学习算法之前先介绍一个比较重要的概念,就是Bellman方程,该方程表示动作价值函数,即在某一个状态下,计算出每种动作所对应的value(或者说预期的reward)。
marsggbo
2019/12/23
7270
强化学习方法小结
【强化学习】理论知识整理汇总
本篇旨在总结强化学习相关术语,主要参考了邹伟等人所著的《强化学习》(清华大学出版社)这本书。
zstar
2022/06/14
9080
【强化学习】理论知识整理汇总
DeepSeek 背后的数学原理:深入探究群体相对策略优化 (GRPO)
群体相对策略优化 (GRPO,Group Relative Policy Optimization) 是一种强化学习 (RL) 算法,专门用于增强大型语言模型 (LLM) 中的推理能力。与严重依赖外部评估模型(价值函数)指导学习的传统 RL 方法不同,GRPO 通过评估彼此相关的响应组来优化模型。这种方法可以提高训练效率,使 GRPO 成为需要复杂问题解决和长链思维的推理任务的理想选择。
致Great
2025/02/12
2.2K0
DeepSeek 背后的数学原理:深入探究群体相对策略优化 (GRPO)
强化学习-5:Model-free control
贪婪策略梯度法如果用V(s),需要MDP已知 用Q(s,a),不需要已知MDP
列夫托尔斯昊
2020/08/25
7110
强化学习-5:Model-free control
强化学习读后感
此学习笔记基础来源于zhoubolei RL(https://github.com/zhoubolei/introRL),以基本概念,基本定理,问题建模,代码实现,新论文的阅读为逻辑展开写的。学习强化学习的过程,会相对漫长。比如:一个假想的学习过程,可能会包含sutton的 complete draft;一些RL基础课程,David Silver,伯克利RL或周博磊等;经典算法的复现;核心研究部门的学术文章(openAI,DeepMind,...);靠谱博士写的博文;会遇见公式符号,上下标,算法实现细节,问题优化,具体问题建模等问题。这里,只是个开始,代码框架可参考PARL。不太懂wx格式,建议wx对latex支持更友好,不要搞什么其他幺蛾子语法。
BBuf
2021/10/08
8030
Hands on Reinforcement Learning 09 Policy Gradient Algorithm
本书之前介绍的 Q-learning、DQN 及 DQN 改进算法都是基于价值(value-based)的方法,其中 Q-learning 是处理有限状态的算法,而 DQN 可以用来解决连续状态的问题。在强化学习中,除了基于值函数的方法,还有一支非常经典的方法,那就是基于策略(policy-based)的方法。对比两者,基于值函数的方法主要是学习值函数,然后根据值函数导出一个策略,学习过程中并不存在一个显式的策略;而基于策略的方法则是直接显式地学习一个目标策略。策略梯度是基于策略的方法的基础,本章从策略梯度算法说起。
一只野生彩色铅笔
2023/04/09
4470
Hands on Reinforcement Learning 09 Policy Gradient Algorithm
Policy Gradient - 策略梯度
在一个包含Actor、Env、Reward Function的强化学习的情景中,Env和Reward Function是你所不能控制的。
Steve Wang
2019/08/29
7130
Policy Gradient - 策略梯度
推荐阅读
相关推荐
强化学习从基础到进阶–案例与实践[8]:近端策略优化(proximal policy optimization,PPO)算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档