PPO损失函数 Loss
PPO简介¶
Proximal Policy Optimization (PPO) 是一种广泛应用于强化学习中的策略优化算法。它旨在通过有效且稳定的策略更新,优化agent的行为策略,从而最大化累积回报。PPO结合了策略梯度方法的优点,同时避免了传统方法中可能出现的不稳定性和高方差问题。
PPO的核心机制¶
PPO 的关键创新在于其**剪切机制(Clipping Mechanism)**,该机制通过限制新旧策略之间的变化幅度,确保策略更新的稳定性。下面详细介绍PPO的剪切机制及其工作原理。
策略更新的基本思想¶
在策略梯度方法中,我们通过最大化期望回报来优化策略参数 \(\theta\)。具体来说,目标是最大化以下目标函数:
其中: - \(\pi_\theta(a_t | s_t)\) 是当前策略在状态 \(s_t\) 下采取动作 \(a_t\) 的概率。 - \(\pi_{\theta_{\text{old}}}(a_t | s_t)\) 是上一次策略更新后的策略。 - \(\hat{A}_t\) 是优势函数,表示在状态 \(s_t\) 下采取动作 \(a_t\) 相对于平均表现的优势。
引入剪切机制¶
直接最大化上述目标函数可能导致策略更新过大,导致训练不稳定。为此,PPO 引入了剪切机制,通过以下修正后的目标函数来限制策略更新的幅度:
其中: - \(r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)}\) 是新旧策略在当前状态和动作下的概率比率。 - \(\epsilon\) 是一个超参数,通常设定为 \(0.1\) 到 \(0.3\) 之间,用于控制允许的策略更新幅度。 - \(\text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon)\) 将 \(r_t(\theta)\) 限制在 \([1 - \epsilon, 1 + \epsilon]\) 范围内。
剪切机制的工作流程¶
-
计算概率比率 \(r_t(\theta)\): $$ r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)} $$
-
定义剪切后的比率: $$ \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) $$
-
最小化两个目标: $$ \min \left( r_t(\theta) \cdot \hat{A}_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) \cdot \hat{A}_t \right) $$
这一操作确保了: - 当优势 \(\hat{A}_t > 0\) 时,如果 \(r_t(\theta)\) 尝试变得过大(即策略过度偏向该动作),则目标函数被限制在 \((1 + \epsilon) \cdot \hat{A}_t\)。 - 当优势 \(\hat{A}_t < 0\) 时,如果 \(r_t(\theta)\) 尝试变得过小(即策略过度减少该动作的概率),则目标函数被限制在 \((1 - \epsilon) \cdot \hat{A}_t\)。
- 优化目标函数: 最大化 \(L^{\text{CLIP}}(\theta)\),即期望的最小代理目标,从而在保证策略变化不剧烈的前提下,逐步优化策略。
为什么使用 \(\min\) 操作?¶
使用 \(\min\) 操作的目的是在两种情况下都能有效地限制策略的更新幅度,无论优势函数 \(\hat{A}_t\) 是正还是负。
- 正优势(\(\hat{A}_t > 0\)):
- 当 \(r_t(\theta) > 1 + \epsilon\) 时,\(\text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) = 1 + \epsilon\)。
-
因此,目标函数为 \(\min(r_t(\theta) \cdot \hat{A}_t, (1 + \epsilon) \cdot \hat{A}_t) = (1 + \epsilon) \cdot \hat{A}_t\),限制了策略更新的正向幅度。
-
负优势(\(\hat{A}_t < 0\)):
- 当 \(r_t(\theta) < 1 - \epsilon\) 时,\(\text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) = 1 - \epsilon\)。
- 因此,目标函数为 \(\min(r_t(\theta) \cdot \hat{A}_t, (1 - \epsilon) \cdot \hat{A}_t) = \text{较大的值}\)(因为 \(\hat{A}_t\) 为负),这实际上限制了 \(r_t(\theta)\) 不会过小,防止策略过度减少动作的概率。
通过这种设计,\(\min\) 操作确保了无论是增加还是减少动作概率,策略更新都不会超过预设的范围,从而保持训练的稳定性。
选择剪切参数 \(\epsilon\)¶
剪切参数 \(\epsilon\) 控制了策略更新的敏感度和稳定性: - 较小的 \(\epsilon\): - 优点:策略更新更加保守,训练过程更稳定。 - 缺点:可能导致收敛速度较慢,难以快速适应环境变化。
- 较大的 \(\epsilon\):
- 优点:允许更快的策略更新,加快训练过程。
- 缺点:可能导致训练不稳定,增加策略更新过大的风险。
通常,\(\epsilon\) 被设置在 \(0.1\) 到 \(0.3\) 之间,以在更新幅度和训练稳定性之间取得平衡。
PPO剪切机制的优点¶
- 提高稳定性:
-
通过限制策略更新幅度,避免了大幅度更新导致的训练不稳定或性能骤降。
-
保持有效性:
-
在允许的范围内,策略仍然能够进行有效的改进,避免陷入局部最优或震荡。
-
简化超参数调整:
- 相较于其他复杂的约束方法,剪切机制简单有效,减少了超参数调节的复杂性。
示例说明¶
假设剪切参数 \(\epsilon = 0.2\):
- 正优势情境(\(\hat{A}_t > 0\)):
-
如果 \(r_t(\theta) = 1.1\): $$ \text{clip}(1.1, 0.8, 1.2) = 1.1 $$ $$ \min(1.1 \cdot \hat{A}_t, 1.1 \cdot \hat{A}_t) = 1.1 \cdot \hat{A}_t $$ 此时,策略更新未超过剪切范围,允许继续更新。
-
如果 \(r_t(\theta) = 1.3\): $$ \text{clip}(1.3, 0.8, 1.2) = 1.2 $$ $$ \min(1.3 \cdot \hat{A}_t, 1.2 \cdot \hat{A}_t) = 1.2 \cdot \hat{A}_t $$ 通过剪切,限制了策略更新的幅度,防止过度偏向该动作。
-
负优势情境(\(\hat{A}_t < 0\)):
- 如果 \(r_t(\theta) = 0.6\): $$ \text{clip}(0.6, 0.8, 1.2) = 0.8 $$ $$ \min(0.6 \cdot \hat{A}_t, 0.8 \cdot \hat{A}_t) = 0.8 \cdot \hat{A}_t $$ 这里,由于 \(\hat{A}_t < 0\),较小的 \(r_t(\theta)\) 被限制为 \(1 - \epsilon = 0.8\),避免了过度减少该动作的概率。
总结¶
**PPO的剪切机制**通过引入剪切目标函数,有效地限制了策略更新的幅度,确保了在优化策略时的稳定性和有效性。具体来说:
- 限制策略变化:通过控制概率比率 \(r_t(\theta)\),避免了策略更新过大或过小。
- 双向约束:无论优势函数是正还是负,剪切机制都能有效地限制策略的调整方向。
- 训练稳定性:防止了由于大幅度策略更新导致的训练不稳定或性能下降。
- 实现简洁:剪切机制简单高效,易于实现和调试。
这些特性使得PPO在强化学习领域中成为一种非常受欢迎且广泛应用的优化算法,尤其适用于复杂的环境和需要稳定训练的任务。