强化学习基础巩固(十一)——PPO vs SAC

最近面试高频谈到PPO和SAC的区别,在这里做一个总结和复习。

从优化目标函数看PPO同策略与SAC异策略的本质区别

从数学公式角度分析能更清晰地看出同策略与异策略算法的本质差异。

同策略算法(PPO)的目标函数

PPO的目标函数:

JPPO(θ)=Es,aπθold[min(πθ(as)πθold(as)Aπθold(s,a),clip(πθ(as)πθold(as),1ϵ,1+ϵ)Aπθold(s,a))]J^{PPO}(\theta) = \mathbb{E}_{s,a \sim \pi_{\theta_{old}}} \left[ \min \left( \frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} A^{\pi_{\theta_{old}}}(s,a), \text{clip}\left(\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)}, 1-\epsilon, 1+\epsilon\right) A^{\pi_{\theta_{old}}}(s,a) \right) \right]

关键特征:

  1. 期望操作中的分布: s,aπθolds,a \sim \pi_{\theta_{old}} 表明数据来自当前策略
  2. 重要性采样比率: πθ(as)πθold(as)\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} 显式地将新旧策略联系起来
  3. 优势函数: Aπθold(s,a)A^{\pi_{\theta_{old}}}(s,a) 是基于当前策略评估的

异策略算法(SAC)的目标函数

SAC的策略优化目标:

Jπ(θ)=EsD[Eaπθ(s)[Qϕ(s,a)αlogπθ(as)]]J^{\pi}(\theta) = \mathbb{E}_{s \sim \mathcal{D}} \left[ \mathbb{E}_{a \sim \pi_\theta(\cdot|s)} [Q_\phi(s,a) - \alpha \log \pi_\theta(a|s)] \right]

其中Q函数的目标:

JQ(ϕ)=E(s,a,r,s)D[(Qϕ(s,a)(r+γEaπθ(s)[Qϕˉ(s,a)αlogπθ(as)]))2]J^Q(\phi) = \mathbb{E}_{(s,a,r,s') \sim \mathcal{D}} \left[ \left( Q_\phi(s,a) - \left( r + \gamma \mathbb{E}_{a' \sim \pi_\theta(\cdot|s')} [Q_{\bar{\phi}}(s',a') - \alpha \log \pi_\theta(a'|s')] \right) \right)^2 \right]

关键特征:

  1. 期望操作中的分布: s,a,r,sDs,a,r,s' \sim \mathcal{D} 表明数据来自经验回放缓冲区
  2. 无重要性采样: 没有显式的策略比率项
  3. 值函数建模: 通过贝尔曼方程直接学习Q函数

核心数学差异

1. 数据分布显式表示

  • PPO: Es,aπθold\mathbb{E}_{s,a \sim \pi_{\theta_{old}}} - 明确指定数据来自当前策略
  • SAC: Es,a,r,sD\mathbb{E}_{s,a,r,s' \sim \mathcal{D}} - 数据可来自任何策略(缓冲区)

2. 策略评估机制

  • PPO: 通过重要性采样 πθ(as)πθold(as)\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} 直接比较新旧策略
  • SAC: 通过Q函数间接评估策略,无需知道生成数据的策略

3. 值函数与策略的关系

  • PPO: 优势函数 AπθoldA^{\pi_{\theta_{old}}} 特定于生成数据的策略
  • SAC: Q函数 QϕQ_\phi 学习评估任何策略的动作价值

4. 目标函数的时序依赖性

  • PPO: 目标函数依赖于特定时间点的策略 πθold\pi_{\theta_{old}}
  • SAC: 目标函数可应用于任何来源的数据,无时序依赖

数学视角下的本质区别

从优化理论角度看:

  1. PPO的目标函数构造:

    • 依赖于策略梯度定理: θJ(θ)=Eπθ[θlogπθ(as)Qπθ(s,a)]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} [\nabla_\theta \log \pi_\theta(a|s) \cdot Q^{\pi_\theta}(s,a)]
    • 使用重要性采样将期望从 πθ\pi_\theta 转换为 πθold\pi_{\theta_{old}}: Eπθ[X]=Eπθold[πθπθoldX]\mathbb{E}_{\pi_\theta} [X] = \mathbb{E}_{\pi_{\theta_{old}}} [\frac{\pi_\theta}{\pi_{\theta_{old}}} \cdot X]
    • 对梯度估计的有效性有严格要求: 需要 πθ\pi_\thetaπθold\pi_{\theta_{old}} 足够接近
  2. SAC的目标函数构造:

    • 基于贝尔曼最优性方程: Q(s,a)=E[r+γmaxaQ(s,a)]Q^*(s,a) = \mathbb{E}[r + \gamma \max_{a'} Q^*(s',a')]
    • 软Q学习将最大化替换为期望: Eaπ[Q(s,a)αlogπ(as)]\mathbb{E}_{a' \sim \pi} [Q(s',a') - \alpha \log \pi(a'|s')]
    • Q函数学习对数据分布的假设更宽松: 只需样本覆盖相关状态-动作空间

实际意义

这些数学差异直接导致了同策略和异策略算法的实际特性:

  1. 样本效率:

    • PPO数学上要求新数据来自当前策略 → 数据利用率低
    • SAC数学上允许重用任何数据 → 数据利用率高
  2. 更新步长:

    • PPO通过裁剪项 clip(,1ϵ,1+ϵ)\text{clip}(\cdot, 1-\epsilon, 1+\epsilon) 显式限制策略变化
    • SAC通过熵正则化 αlogπθ(as)\alpha \log \pi_\theta(a|s) 隐式控制策略变化

从优化目标函数的形式可以清晰看出: 同策略算法(如PPO)的目标函数显式依赖于生成数据的特定策略,而异策略算法(如SAC)的目标函数与数据生成策略无关,这是二者最本质的数学区别。

比较维度 PPO (同策略) SAC (异策略)
目标函数 JPPO(θ)=Es,aπθold[min(πθ(as)πθold(as)Aπθold(s,a),clip(...)Aπθold(s,a))]J^{PPO}(\theta) = \mathbb{E}_{s,a \sim \pi_{\theta_{old}}} \left[ \min \left( \frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} A^{\pi_{\theta_{old}}}(s,a), \text{clip}(...) A^{\pi_{\theta_{old}}}(s,a) \right) \right] Jπ(θ)=EsD[Eaπθ(s)[Qϕ(s,a)αlogπθ(as)]]J^{\pi}(\theta) = \mathbb{E}_{s \sim \mathcal{D}} \left[ \mathbb{E}_{a \sim \pi_\theta(\cdot|s)} [Q_\phi(s,a) - \alpha \log \pi_\theta(a|s)] \right]
数据来源 s,aπθolds,a \sim \pi_{\theta_{old}} (当前策略生成) s,a,r,sDs,a,r,s' \sim \mathcal{D} (经验回放缓冲区)
重要性采样 使用 πθ(as)πθold(as)\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} 显式连接新旧策略 不使用重要性采样,无需知道生成数据的策略
值函数类型 优势函数 Aπθold(s,a)A^{\pi_{\theta_{old}}}(s,a) 特定于当前策略 Q函数 Qϕ(s,a)Q_\phi(s,a) 可以评估任何策略的动作
时序依赖 目标函数依赖特定时间点的策略 πθold\pi_{\theta_{old}} 目标函数可应用于任何来源的数据
理论基础 策略梯度定理 贝尔曼最优性方程
样本效率 低 (只能使用当前策略生成的数据) 高 (可重用任何历史数据)
策略更新限制 显式裁剪 clip(,1ϵ,1+ϵ)\text{clip}(\cdot, 1-\epsilon, 1+\epsilon) 通过熵正则化隐式控制

PPO与SAC中熵正则化的作用范围差异

熵正则化的作用范围比较

PPO中的熵正则化

数学形式

JPPO(θ)=E[LCLIP(θ)]+c1LVF(θ)c2S[πθ](s)J^{PPO}(\theta) = E[L^{CLIP}(\theta)] + c_1 · L^{VF}(\theta) - c_2 · S[\pi_θ](s)

其中 S[πθ](s)S[\pi_θ](s) 是当前状态下策略的熵

关键特征

  1. 局部性质:熵项只考虑单个状态下的动作分布
  2. 即时效应:每个决策步骤独立最大化熵
  3. 无记忆性:不考虑策略在整个轨迹上的熵累积效应
  4. 辅助角色:通常作为次要项,重要性系数c2c_2较小

SAC中的熵正则化

数学形式

JSAC(θ)=Eτπθ[tr(st,at)+αH(πθ(st))]J^{SAC}(\theta) = E_{τ∼π_θ}[∑_t r(s_t,a_t) + α·H(π_θ(·|s_t))]

其中轨迹ττ是从策略πθπ_θ生成的完整状态-动作序列

关键特征

  1. 全局性质:熵项被整合到轨迹累积回报中
  2. 长期效应:在整个轨迹上优化熵-回报权衡
  3. 有记忆性:优化过程考虑了所有未来决策的熵影响
  4. 核心组件:作为目标函数的主要部分,αα通常自动调节

深入解析策略熵的作用机制差异

PPO:步级熵正则化

  1. 数学解释

    • PPO的策略更新针对每个状态s单独最大化:r(s,a)+c2H(π(s))r(s,a) + c_2·H(π(·|s))
    • 熵项仅影响当前状态的策略分布,不影响下一步决策
  2. 计算实现

    • 在PPO的损失函数中,熵项简单地加和到策略梯度损失
    • 不通过Q函数或值函数传播熵的影响
  3. 优化目标的本质

    maxθEπold[min(ratioA,clipped_ratioA)]+c2Es[H(πθ(s))]max_θ E_{π_{old}}[min(\text{ratio}·A, \text{clipped\_ratio}·A)] + c_2·E_s[H(π_θ(·|s))]

    • 熵项与优势函数A分离,二者不相互影响

SAC:轨迹级熵正则化

  1. 数学解释

    • SAC实质上优化的是熵增强回报:E[tγt(rt+αHt)]E[∑_t γ^t(r_t + αH_t)]
    • 熵通过软Q函数传播到整个决策链
  2. 计算实现

    • 熵项被整合到软贝尔曼方程中
    • 通过软Q函数反向传播熵的长期影响

    Q(st,at)=r(st,at)+γE[Q(st+1,at+1)αlogπ(at+1st+1)]Q(s_t,a_t) = r(s_t,a_t) + γE[Q(s_{t+1},a_{t+1}) - α·log π(a_{t+1}|s_{t+1})]

  3. 优化目标的本质

    maxθEs[Ea πθ[Q(s,a)αlogπθ(as)]]max_θ E_s[E_a~π_θ[Q(s,a) - α·log π_θ(a|s)]]

    • 熵直接内置于Q函数的定义中,影响所有未来状态的评估

为什么这种差异很重要

理论影响

  1. 探索机制

    • PPO:鼓励策略在每个状态下保持一定的随机性
    • SAC:优化策略在整个轨迹上的熵-回报权衡
  2. 优化目标

    • PPO:最大化回报是主要目标,熵是次要正则化项
    • SAC:显式优化熵增强回报,将探索融入回报定义
  3. 长期影响

    • PPO中的熵没有"前瞻性",不考虑当前动作对未来探索的影响
    • SAC中的熵具有"前瞻性",当前动作不仅考虑即时熵,还考虑其对未来状态熵的影响
熵正则化特征 PPO SAC
数学形式 JPPO(θ)=E[LCLIP(θ)]+c1LVF(θ)c2S[πθ](s)J^{PPO}(\theta) = E[L^{CLIP}(\theta)] + c_1 · L^{VF}(\theta) - c_2 · S[\pi_θ](s) JSAC(θ)=Eτπθ[tr(st,at)+αH(πθ(st))]J^{SAC}(\theta) = E_{τ∼π_θ}[∑_t r(s_t,a_t) + α·H(π_θ(·|s_t))]
作用范围 步级 (局部) 轨迹级 (全局)
熵的性质 无记忆性,仅影响当前状态的策略 有记忆性,影响整个决策链
实现方式 熵项简单加和到策略梯度损失 熵项整合到软贝尔曼方程中
优化目标 熵作为次要正则化项 熵作为核心目标的一部分
前瞻性 无 (不考虑当前动作对未来熵的影响) 有 (通过Q函数传播熵的长期影响)

"Soft"的本质:从最大熵强化学习到SAC

"Soft"这一术语在Soft Actor-Critic和Soft Q-Learning中指的是相同的基础理念。

"Soft"的数学本质

"Soft"指的是软最大化(softmax)操作取代了传统强化学习中的硬最大化(hardmax)操作。

传统RL vs 最大熵RL

传统Q学习的贝尔曼方程:

Q(s,a)=r(s,a)+γEs[maxaQ(s,a)]Q^*(s,a) = r(s,a) + \gamma \cdot \mathbb{E}_{s'}\left[\max_{a'} Q^*(s',a')\right]

Soft Q学习的贝尔曼方程:

Qsoft(s,a)=r(s,a)+γEs[αlogaexp(Qsoft(s,a)/α)]Q_{\text{soft}}(s,a) = r(s,a) + \gamma \cdot \mathbb{E}_{s'}\left[\alpha \log\sum_{a'} \exp(Q_{\text{soft}}(s',a')/\alpha)\right]

或等价地:

Qsoft(s,a)=r(s,a)+γEs[maxa(Qsoft(s,a)+αH(π(s)))]Q_{\text{soft}}(s,a) = r(s,a) + \gamma \cdot \mathbb{E}_{s'}\left[\max_{a'}\left(Q_{\text{soft}}(s',a') + \alpha \cdot H(\pi(\cdot|s'))\right)\right]

"Soft"体现在三个关键层面

1. 贝尔曼方程的软化

硬贝尔曼方程采用确定性的最大化,选择值最高的动作:

V(s)=maxaQ(s,a)V(s) = \max_a Q(s,a)

软贝尔曼方程采用期望形式,考虑所有动作的概率加权:

Vsoft(s)=αlogaexp(Q(s,a)/α)=Eaπ[Q(s,a)αlogπ(as)]V_{\text{soft}}(s) = \alpha \cdot \log\sum_a \exp(Q(s,a)/\alpha) = \mathbb{E}_{a\sim\pi}\left[Q(s,a) - \alpha \cdot \log \pi(a|s)\right]

这种软化使值函数考虑了动作分布的整体,而不仅是最优动作。

2. 策略改进的软化

传统策略改进:贪婪地选择最大Q值的动作

πnew(as)=δ(a=argmaxaQ(s,a))// δ是狄拉克函数\pi_{\text{new}}(a|s) = \delta(a = \arg\max_a Q(s,a)) \quad \text{// $\delta$是狄拉克函数}

软策略改进:按Q值的指数权重选择动作

πnew(as)exp(Q(s,a)/α)\pi_{\text{new}}(a|s) \propto \exp(Q(s,a)/\alpha)

这种软化使策略保持了探索性,即使在训练后期。

3. 优化目标的软化

传统RL目标:最大化累积回报

J(π)=Eπ[tγtrt]J(\pi) = \mathbb{E}_{\pi}\left[\sum_t \gamma^t r_t\right]

最大熵RL目标:最大化回报与熵的组合

Jsoft(π)=Eπ[tγt(rt+αH(π(st)))]J_{\text{soft}}(\pi) = \mathbb{E}_{\pi}\left[\sum_t \gamma^t (r_t + \alpha \cdot H(\pi(\cdot|s_t)))\right]

这种软化使探索成为优化目标的内在部分。

Soft AC与Soft Q-Learning中的"Soft"

Soft Q-Learning

Soft Q-Learning是最大熵强化学习的直接实现:

  1. 学习软Q值:

Qsoft(s,a)=r+γE[Vsoft(s)]Q_{\text{soft}}(s,a) = r + \gamma \cdot \mathbb{E}[V_{\text{soft}}(s')]

  1. 从软Q值推导策略:

π(as)exp(Qsoft(s,a)/α)\pi(a|s) \propto \exp(Q_{\text{soft}}(s,a)/\alpha)

Soft Actor-Critic

SAC将Soft Q-Learning的思想扩展到Actor-Critic框架:

  1. Actor:显式参数化策略网络πθ(as)\pi_\theta(a|s)
  2. Critic:学习软Q函数Qsoft(s,a)Q_{\text{soft}}(s,a)
  3. 策略优化目标:

maxθEsD[Eaπθ[Qsoft(s,a)αlogπθ(as)]]\max_\theta \mathbb{E}_{s\sim\mathcal{D}}\left[\mathbb{E}_{a\sim\pi_\theta}[Q_{\text{soft}}(s,a) - \alpha \cdot \log \pi_\theta(a|s)]\right]

SAC的"soft"体现在它保留了相同的软贝尔曼方程和熵增强目标。

"Soft"的理论意义与实际优势

理论意义

  1. 解决探索-利用困境:将探索直接整合到优化目标
  2. 改进学习稳定性:避免策略过早收敛到次优解
  3. 提供隐式正则化:通过熵最大化防止过拟合

实际优势

  1. 鲁棒性增强:对超参数变化不那么敏感
  2. 样本效率提高:更快速地探索状态空间
  3. 性能上限提升:找到更多样化的高回报策略

"Soft"的核心思想

"Soft"本质上代表了从"确定性最优控制"向"概率最优控制"的范式转变:这一转变带来了更稳健的学习算法,尤其是在探索要求高、环境随机性强或奖励信号稀疏的场景中。在SAC和Soft Q-Learning中,"soft"统一体现为:将熵最大化作为强化学习的内在组成部分,而不仅仅是一个外部探索策略。

特征 传统RL 最大熵RL/Soft方法
贝尔曼方程 Q(s,a)=r(s,a)+γEs[maxaQ(s,a)]Q^*(s,a) = r(s,a) + \gamma \cdot \mathbb{E}_{s'}[\max_{a'} Q^*(s',a')] Qsoft(s,a)=r(s,a)+γEs[αlogaexp(Qsoft(s,a)/α)]Q_{\text{soft}}(s,a) = r(s,a) + \gamma \cdot \mathbb{E}_{s'}[\alpha \log\sum_{a'} \exp(Q_{\text{soft}}(s',a')/\alpha)]
状态值函数 V(s)=maxaQ(s,a)V(s) = \max_a Q(s,a) Vsoft(s)=αlogaexp(Q(s,a)/α)=Eaπ[Q(s,a)αlogπ(as)]V_{\text{soft}}(s) = \alpha \cdot \log\sum_a \exp(Q(s,a)/\alpha) = \mathbb{E}_{a\sim\pi}[Q(s,a) - \alpha \cdot \log \pi(a|s)]
策略改进 πnew(as)=δ(a=argmaxaQ(s,a))\pi_{\text{new}}(a|s) = \delta(a = \arg\max_a Q(s,a)) πnew(as)exp(Q(s,a)/α)\pi_{\text{new}}(a|s) \propto \exp(Q(s,a)/\alpha)
优化目标 J(π)=Eπ[tγtrt]J(\pi) = \mathbb{E}_{\pi}[\sum_t \gamma^t r_t] Jsoft(π)=Eπ[tγt(rt+αH(π(st)))]J_{\text{soft}}(\pi) = \mathbb{E}_{\pi}[\sum_t \gamma^t (r_t + \alpha \cdot H(\pi(\cdot|s_t)))]
控制范式 确定性最优控制 概率最优控制
探索机制 外部机制 (如ϵ\epsilon-贪婪) 内在组成部分 (熵最大化)

强化学习基础巩固(十一)——PPO vs SAC
http://dufolk.github.io/2025/03/12/rl-11/
作者
Dufolk
发布于
2025年3月12日
许可协议