近端策略优化算法 (PPO) 详解
PPO 算法介绍
近端策略优化(PPO,Proximal Policy Optimization)是一种强化学习算法,设计的目的是在复杂任务中既保证性能提升,又让算法更稳定和高效。
1. 背景
PPO 是 OpenAI 在 2017 年提出的一种策略优化算法,专注于简化训练过程,克服传统策略梯度方法(如 TRPO)的计算复杂性,同时保证训练效果。
- 问题:在强化学习中,直接优化策略会导致不稳定的训练,模型可能因为过大的参数更新而崩溃。
- 解决方案:PPO 通过限制策略更新幅度,使得每一步训练都不会偏离当前策略太多,同时高效利用采样数据。
2. PPO 的核心思想
PPO 的目标是通过以下方式改进策略梯度优化:
- 限制策略更新幅度,防止策略过度偏离。
使用优势函数 $$ A(s, a) $$ 来评价某个动作的相对好坏。
优化目标
PPO 的目标函数如下:
$$ L^{CLIP}(\theta) = \mathbb{E}_t \left[ \min \left( r_t(\theta) A_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t \right) \right] $$
其中:
- 剪辑操作:将 $$ r_t(\theta) $$ 限制在区间 $$ [1-\epsilon, 1+\epsilon] $$ 内,防止策略变化过大。
- $$ A_t $$:优势函数,通过以下公式计算: $$ A_t = Q(s_t, a_t) - V(s_t) $$ 或者用广义优势估计(GAE)的方法近似。
- $$ r_t(\theta) $$:概率比率,表示新策略和旧策略在同一状态下选择动作的概率比值。 $$ r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)} $$
3. 为什么 PPO 很强?
- 简洁性:比 TRPO(Trust Region Policy Optimization)更简单,无需二次优化。
- 稳定性:使用剪辑机制防止策略更新过度。
- 高效性:利用采样数据多次训练,提高样本利用率。
4. PPO 的直观类比
假设你是一个篮球教练,训练球员投篮:
- 如果每次训练完全改变投篮动作,球员可能会表现失常(类似于策略更新过度)。
- 如果每次训练动作变化太小,可能很难进步(类似于更新不足)。
- PPO 的剪辑机制就像一个'适度改进'的规则,告诉球员在合理范围内调整投篮动作,同时评估每次投篮的表现是否优于平均水平。
PPO 算法的流程推导及数学公式
PPO(Proximal Policy Optimization)也是一种策略优化算法,它的核心思想是对策略更新进行限制,使训练更加稳定,同时保持效率。以下是其数学公式推导和整体流程:
1. 算法目标
强化学习的核心目标是优化策略 $$ \pi_\theta $$,最大化累积奖励 R。策略梯度方法(如 REINFORCE)直接优化策略,但更新过大可能导致不稳定。为了解决这个问题,PPO 通过引入限制更新幅度的机制,保证策略的稳定性。
目标是优化以下期望:
$$ J(\theta) = \mathbb{E}{\pi\theta} \left[ R \right] $$
通过梯度上升法更新策略。
2. PPO 的概率比率
PPO 在优化过程中引入了概率比率,用于衡量新旧策略的差异:
$$ r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)} $$
- $$ \pi_{\theta_{\text{old}}}(a_t | s_t) $$:旧策略对动作 $$ a_t $$ 的概率。


