赞
踩
PPO(Proximal Policy Optimization,近端策略优化)是一种强化学习算法,由John Schulman等人在2017年提出。PPO属于策略梯度方法,这类方法直接对策略(即模型的行为)进行优化,试图找到使得期望回报最大化的策略。PPO旨在改进和简化以前的策略梯度算法,如TRPO(Trust Region Policy Optimization,信任域策略优化),它通过几个关键的技术创新提高了训练的稳定性和效率。
PPO的主要特点包括:
裁剪的概率比率:PPO使用一个目标函数,其中包含了一个裁剪的概率比率,这个比率是旧策略和新策略产生动作概率的比值。这个比率被限制在一个范围内,防止策略在更新时做出太大的改变。
多次更新:在一个数据批次上可以安全地进行多次更新,这对于样本效率非常重要,尤其是在高维输入和实时学习环境中。
简单实现:与TRPO相比,PPO更容易实现和调整,因为它不需要复杂的数学运算来保证策略更新的安全性。
平衡探索与利用:PPO尝试在学习稳定性和足够的探索之间取得平衡,以避免局部最优并改进策略性能。
PPO已被广泛应用于各种强化学习场景,包括游戏、机器人控制以及自然语言处理中的序列决策问题。它是目前最流行的强化学习算法之一。
PPO算法的具体步骤是基于对策略梯度方法的改进,它主要包括以下几个关键的步骤:
收集数据:通过在环境中执行当前策略(policy)来收集一组交互数据。这些数据包括状态(state)、动作(action)、奖励(reward)以及可能的下一个状态。
计算优势估计:为了评价一个动作相对于平均水平的好坏,需要计算优势函数(advantage function)。这通常是通过某种形式的时间差分(TD)估计或者广义优势估计(GAE)来完成的。
优化目标函数:PPO算法使用一个特殊设计的目标函数,这个函数涉及到概率比率
r
t
(
θ
)
=
π
θ
(
a
t
∣
s
t
)
π
θ
old
(
a
t
∣
s
t
)
r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)}
rt(θ)=πθold(at∣st)πθ(at∣st),其中
π
θ
\pi_\theta
πθ表示新策略,
π
θ
old
\pi_{\theta_{\text{old}}}
πθold表示旧策略。目标函数的形式通常为:
L
(
θ
)
=
E
^
[
min
(
r
t
(
θ
)
A
^
t
,
clip
(
r
t
(
θ
)
,
1
−
ϵ
,
1
+
ϵ
)
A
^
t
)
]
L(\theta) = \hat{\mathbb{E}}\left[\min(r_t(\theta)\hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t)\right]
L(θ)=E^[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
其中,
A
^
t
\hat{A}_t
A^t是优势函数的估计,
ϵ
\epsilon
ϵ是一个小的正数(如0.1或0.2),clip
函数限制了概率比率
r
t
(
θ
)
r_t(\theta)
rt(θ)的变化范围,防止更新步骤过大。
更新策略:使用梯度上升方法来更新策略参数 θ \theta θ,即 θ ← θ + α ∇ θ L ( θ ) \theta \leftarrow \theta + \alpha \nabla_\theta L(\theta) θ←θ+α∇θL(θ),其中 α \alpha α是学习率。
重复步骤:使用新的策略参数重复以上步骤,直到满足某些停止准则,比如策略性能不再提升或者已经达到了一定的迭代次数。
PPO算法的关键之处在于它通过限制策略更新的幅度,使得学习过程更加稳定。在每次更新时,概率比率 r t ( θ ) r_t(\theta) rt(θ)被限制在 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon, 1+\epsilon] [1−ϵ,1+ϵ]范围内,防止由于单个数据点导致的极端策略更新,这有助于避免策略性能的急剧下降。同时,PPO允许在每次迭代中使用相同的数据多次进行策略更新,这提高了数据效率。
在PPO(Proximal Policy Optimization)算法中,概率比率(probability ratio)是一个关键的概念。它表示在新策略下采取某个动作的概率与在旧策略下采取同一动作的概率之比。
具体地,如果用 π θ \pi_\theta πθ表示策略,其中 θ \theta θ是策略的参数,那么对于一个特定的状态 s s s和动作 a a a,概率比率 r t ( θ ) r_t(\theta) rt(θ)定义为:
r t ( θ ) = π θ ( a ∣ s ) π θ old ( a ∣ s ) r_t(\theta) = \frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} rt(θ)=πθold(a∣s)πθ(a∣s)
这里, π θ old \pi_{\theta_{\text{old}}} πθold是旧策略,在这个策略下,数据最初被采集;而 π θ \pi_\theta πθ是在参数 θ \theta θ下的新策略。概率比率反映了策略参数更新后动作选择概率的变化。
这个比率在PPO的目标函数中被用来权衡每个动作的重要性。当这个比率接近1时,说明新旧策略对这个动作的偏好程度相似;如果比率大于1,说明新策略相比于旧策略更倾向于选择这个动作;如果比率小于1,新策略则相对不太倾向于这个动作。
在PPO中,通过裁剪(clipping)这个比率来防止策略更新步骤过大,从而在稳定学习和鼓励探索之间寻求平衡。通过限制概率比率的变化范围,PPO算法避免了因策略更新太过激进而导致的训练不稳定,这有助于改进模型性能和收敛速度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。