Zhangzhe's Blog

The projection of my life.

0%

Proximal Policy Optimization Algorithms

URL

TL;DR

  • 本文提出一种强化学习算法 PPOProximal Policy Optimization,近端策略优化),旨在解决传统策略梯度方法中存在的数据效率低、鲁棒性差等问题。
  • PPOTRPOTrust Region Policy Optimization,信任域策略优化)进行了简化。

Algorithm

1. 算法核心思想

策略梯度方法

  • PPO 基于策略梯度方法,通过估计策略的梯度并使用随机梯度上升来优化策略。

裁剪概率比

  • PPO 引入了裁剪概率比(clipped probability ratio)的概念,通过对概率比进行裁剪,限制策略更新的幅度,从而避免过大的策略更新导致的性能下降。

近端目标函数

  • PPO 使用近端目标函数(surrogate objective function),它是一个关于策略参数的函数,用于在策略更新时进行优化。

  • 这个目标函数考虑了策略更新前后的概率比和优势函数(advantage function)的乘积,并通过裁剪概率比来调整这个乘积,使得策略更新更加稳健。

多轮更新

  • 与传统的策略梯度方法每次只使用一个数据样本进行一次梯度更新不同,PPO 允许对每个数据样本进行多轮(epochs)的梯度更新,提高了数据的使用效率。

简化实现

  • 相比于 TRPO 等算法,PPO 的实现更加简单直观,易于与其他算法和框架集成。

2. 伪代码实现

PPO_1.png

  1. 在每次迭代中,多个 actor 并行地在环境中运行旧策略 πθold\pi_{\theta_{old}},收集数据并计算优势估计。
  2. 然后,使用这些数据来优化近端目标函数,通常使用 K epochs(重复使用收集到的数据更新 K 次) 和 SGDAdam 优化器来进行优化。
  3. 优化完成后,更新策略参数 θ\theta,并在下一次迭代中使用新的策略。

3. 公式分析

  • PPO 的目标函数公式分为三部分:
    • 裁剪的目标函数(CLIP),在时间步 t 的裁剪目标函数,用于优化策略参数 θ\theta
    • 价值函数损失(VF, value function
    • 策略熵(S, entropy bouns),用于鼓励探索。

PPO_2.png

裁剪概率比的优势

  • LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)c1LtVF(θ)c2S[πθ](st)]L_t^{CLIP+VF+S}(\theta)=\hat E_t[L_t^{CLIP}(\theta)-c_1L_t^{VF}(\theta)-c_2S[\pi_\theta](s_t)]
    • LtCLIP(θ)=E^t[min(rt(θ)A^t, clip(rt(θ),1ϵ,1+ϵ)A^t)]L_t^{CLIP}(\theta)=\hat E_t[\min(r_t(\theta)\hat A_t,\ clip(r_t(\theta), 1-\epsilon,1+\epsilon)\hat A_t)]rt(θ)=πθ(atst)πθold(atst)r_t(\theta)=\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}
      • r(θ)r(\theta) :概率比率表示新旧策略在状态 s 下采取动作 a 的概率之比
      • πθ(as)\pi_\theta(a|s) :在状态 s 下采取动作 a 的概率,有策略参数 θ\theta 决定的随机策略
      • πθold(as)\pi_{\theta_{old}}(a|s) :在策略更新前,状态 s 下采取动作 a 的概率
      • ϵ\epsilon :超参数,用于控制裁剪的严格程度
      • A^\hat A :优势函数(advantage function)的估计值,它估计了采取行动 a 相比于平均状况能带来多少额外回报
    • LtVF(θ)=(Vθ(st)Vttarget)2L_t^{VF}(\theta)=(V_\theta(s_t)-V_t^{target})^2
      • Vθ(s)V_\theta(s) :策略参数 θ\theta 下,状态 s 的期望回报,V 表示价值函数
      • VtargetV^{target} :折扣回报的估计
      • 价值函数损失有助于确保价值函数的预测尽可能接近真实回报,从而为策略提供准确的价值估计
    • S[πθ](st)=Eaπθ(st)[logπθ(ast)]S[\pi_\theta](s_t)=-\mathbb{E}_{a\sim \pi_\theta(\cdot|s_t)}[\log \pi_\theta(a|s_t)]
      • 表示在状态 s 下,根据策略 πθ\pi_\theta 采取动作的熵
      • 熵是衡量随机性的一个指标,策略的熵越高,表示策略在选择动作时越随机,这有助于算法探索更多的状态-动作空间

Thought

  • 对强化学习了解不够深,无法完全 getPPO 的精髓
  • InstructGPT / ChatGPT 使用了 PPO 强化学习策略,所以做 LLM 需要掌握此技能