从REINFORCE到PPO,看Policy Gradient的前世今生

本文深入介绍了Policy Gradient方法,从REINFORCE算法开始,讲解了其基本思想和优化过程,逐步引入Actor-Critic方法降低方差,最后详细阐述了PPO算法如何解决策略梯度更新的问题,确保策略空间的稳定变化。实验结果显示PPO在连续动作问题上表现出色,但学习速度相对较慢。
摘要由CSDN通过智能技术生成

从REINFORCE到PPO,看Policy Gradient的前世今生

Policy Gradient和Q-learning可以说是model-free RL的两大阵营。前者是off-line、on-policy的方法,后者是on-line、off-policy的方法。前者是策略迭代,关心的是策略网络的参数;后者是值迭代,关心的是值网络的输出。随着RL的不断发展,这两类方法在不断交错领跑的过程中交汇融合,不断给我们带来新的惊喜。

本文重点在介绍Policy Gradient方法,从其“初心”出发,通过一步步的推导来讲述新的算法。后半部分的重点将放在兼具漂亮理论基础和简洁代码实现的PPO方法上,欢迎RL入门级的小朋友们一起讨论学习!

Policy Gradient

如果你已经了解了DQN,也许会想到这样一个问题:为什么一定要用值函数来做决策(当然这个想法也是很自然的),为什么不绕过值函数直接用神经网络来表示策略呢?
当然,想要讨论清楚这个问题不是很容易,有很多不同的看法,感兴趣的小朋友可以看一下知乎上对问题RL两大类算法的本质区别?(Policy Gradient 和 Q-Learning)
南京大学俞杨老师的答案,很有启发性。

让我们再退一步,我们想要的东西到底是什么呢?其实就是让我们采取策略的期望收益最大化!

θ=argmaxθEτpθ(τ)r(τ)J(θ) θ ∗ = arg ⁡ max θ ⁡ E τ ∼ p θ ( τ ) r ( τ ) ⏟ J ( θ )

τ τ 表示一条样本轨迹,策略所影响的,是样本轨迹 τ τ 出现的概率,也就是 pθ(τ) p θ ( τ )

那么 r(τ) r ( τ ) pθ(τ) p θ ( τ ) 指的具体是什么呢?我们再进一步展开来写一下:

r(τ)=tr(st,at)pθ(τ)=p(s1)tπθ(at|st)p(st+1|st,at) r ( τ ) = ∑ t r ( s t , a t ) p θ ( τ ) = p ( s 1 ) ∏ t π θ ( a t | s t ) p ( s t + 1 | s t , a t )

注意,这里的 τ τ t t 的含义不同, τ 是样本轨迹, t t 是样本轨迹上的时间。仔细看 p θ ( τ ) 我们就会发现,将概率展开以后实际上我们的策略可以影响的只有 πθ(at|st) π θ ( a t | s t ) ,也就是在状态 st s t 下采取动作 at a t 的概率。这也就是我们策略的数学表示。

REINFORCE

现在我们就可以再向前走一步,按照机器学习的一般思路,我已经定义好了我的目标函数 J(θ) J ( θ ) ,如果可以求出它的梯度 θJ(θ) ∇ θ J ( θ ) ,我们就可以梯度下降了!为了求梯度,我们将 J(θ) J ( θ ) 改写成积分的形式:

J(θ)θJ(θ)=Eτpθ(τ)r(τ)=pθ(τ)r(τ)dτ=θpθ(τ)r(τ)dτ=pθ(τ)θlogpθ(τ)r(τ)dτ=Eτpθ(τ)θlogpθ(τ)r(τ) J ( θ ) = E τ ∼ p θ ( τ ) r ( τ ) = ∫ p θ ( τ ) r ( τ ) d τ ∇ θ J ( θ ) = ∫ ∇ θ p θ ( τ ) r ( τ ) d τ = ∫ p θ ( τ ) ∇ θ log ⁡ p θ ( τ ) r ( τ ) d τ = E τ ∼ p θ ( τ ) ∇ θ log ⁡ p θ ( τ ) r ( τ )

这里用到了一个小技巧, θpθ(τ)=pθ(τ)θpθ(τ)pθ(τ)=pθ(τ)θlogpθ(τ) ∇ θ p θ ( τ ) = p θ ( τ ) ∇ θ p θ ( τ ) p θ ( τ ) = p θ ( τ ) ∇ θ log ⁡ p θ ( τ ) ,这样做的目的是把 pθ(τ) p θ ( τ ) 重新拿到外边来,就可以再写成期望的形式了。

现在公式中的自变量仍然是 τ τ ,实际应用中我们不可能直接对 τ τ 求导,因此我们再把 pθ(τ) p θ ( τ ) 带进来看看能不能将 τ τ 给替换为我们可以操作的 st s t at a t

θlogpθ(τ)θJ(θ)=θlogp(s1)0+tθlogπθ(at|st)+θlogp(st+1|st,at)0=tθlogπθ(at|st)=Eτp
  • 16
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Deep Deterministic Policy Gradient(DDPG)是一种基于深度神经网络的强化学习算法。它是用来解决连续控制问题的,即输出动作的取值是连续的。DDPG是在DPG(Deterministic Policy Gradient)的基础上进行改进得到的,DPG是一种在连续动作空间中的直接求导策略梯度的方法。DDPG和DPG都属于策略梯度算法的一种,与其他策略梯度算法(如REINFORCE)的不同之处在于,DPG和DDPG都是基于偏微分方程的直接求导,而不是蒙特卡罗方法进行计算。DDPG使用一个确定性策略来生成动作,但同时使用一个噪声过程来扰动输出的动作,以产生更多的状态动作样本。这样一来,DDPG就具有了良好的探索能力,使得它在解决复杂的连续动作问题时能取得较好的效果。 ### 回答2: 深度确定性策略梯度(Deep Deterministic Policy Gradient,DDPG)是一种用于解决深度强化学习问题的方法。 DDPG是基于确定性策略梯度(Deterministic Policy Gradient,DPG)的算法,可以在连续动作空间下进行强化学习。与传统的策略梯度方法不同,DDPG直接学习确定性策略,在给定状态下选择最优的动作。 DDPG主要由两个网络组成:一个是Actor网络,用于学习确定性策略;另一个是Critic网络,用于估计状态-动作对的Q值。Actor网络根据当前状态选择动作,Critic网络根据当前状态和动作的组合估计其对应的Q值。通过不断地交互环境、收集数据和更新网络参数,DDPG算法逐渐优化确定性策略和Q值估计,以使得智能体在环境中获得更高的累积奖励。 DDPG算法的核心思想是通过使用Experience Replay和目标网络来提高学习的稳定性和收敛性。Experience Replay将智能体与环境的交互经验存储在一个经验回放缓冲区中,然后从中随机采样进行训练;目标网络通过延迟更新目标网络的方式,减小训练中的目标值变动,从而提高算法的稳定性。 DDPG算法在解决连续控制任务中表现出良好的性能和收敛性,可以应用于机器人控制、无人驾驶、金融交易等复杂任务中。然而,DDPG算法也存在一些挑战和问题,如对超参数的敏感性、样本效率较低等,这些问题是DDPG算法持续改进的方向之一。 ### 回答3: Deep Deterministic Policy Gradient(DDPG)是一种用于连续动作空间的深度强化学习算法。它结合了深度神经网络和确定性策略梯度的优势,可以应用于诸如机器人控制和金融投资等领域。 DDPG算法的核心思想是通过在连续动作空间中学习一个行动者-评论家系统。行动者使用确定性策略,即给定状态输出一个具体的动作,而评论家则评估行动者的动作质量。这两个网络都是用深度神经网络来表示,并通过梯度下降来进行优化。 在训练过程中,DDPG使用了经验回放缓冲区来存储之前的转换并随机采样进行训练。这样做可以解决样本相关性和非稳定性问题。同时,为了保持算法的探索性,DDPG采用了一个目标网络,用于与主网络进行定期的软更新。 DDPG的优点在于能够处理连续动作空间,通过近似价值函数和策略函数,对高维、非线性状态空间进行建模。此外,DDPG还有很好的收敛性和稳定性,可以在复杂任务中取得较好性能。 然而,DDPG也存在一些挑战。由于使用了神经网络近似值函数,对网络结构的选择和超参数的调整都非常重要。此外,训练过程中可能会出现训练不稳定的问题,需要进行合适的技巧和调整。 总结来说,DDPG是一种深度强化学习算法,适用于连续动作空间的问题。通过结合确定性策略梯度和深度神经网络的优势,DDPG能够解决高维、非线性状态空间的问题,并在复杂任务中取得好的性能。然而,对网络结构和超参数的选择需要仔细调整,且训练过程中可能存在稳定性问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值