策略梯度算法

在强化学习中,策略梯度算法是一类直接优化策略的方法,与基于值函数的方法(如Q-learning)不同,它通过参数化策略并沿性能梯度方向更新参数来学习最优策略。策略梯度方法具有处理连续动作空间、收敛性保证等优点,已成为深度强化学习中的核心算法之一。本文将介绍策略梯度的基本定理、关键组件(如优势函数)以及Actor-Critic框架,并讨论其实际应用。

策略梯度定理

策略梯度定理是策略梯度算法的理论基础。它定义了策略性能指标 $J(\theta)$(如期望累积奖励)关于策略参数 $\theta$ 的梯度。具体来说,策略 $\pi_\theta(a|s)$ 是一个参数化的概率分布,表示在状态 s 下选择动作 a 的概率。策略梯度定理表明,梯度$\nabla_\theta J(\theta)$可以表示为:

$$\nabla_\theta J(\theta) = \mathbb{E}_{s \sim d^\pi, a \sim \pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a|s) \, Q^\pi(s, a) \right]$$

其中:

  • $d^\pi(s)$是策略 π 下的状态分布,
  • $Q^\pi(s, a)$是状态-动作值函数,表示在状态 s 执行动作 a 后的期望累积奖励。

这个公式允许我们通过采样轨迹来估计梯度,从而使用随机梯度上升优化策略。然而,直接使用$Q^\pi(s, a)$会导致高方差,因此通常引入基准函数(如状态值函数 $V^\pi(s)$)来减少方差。

优势函数

优势函数(Advantage Function)在策略梯度算法中起着关键作用,它用于衡量某个状态下采取某个动作相对于平均水平的优越性。优势函数定义为:

$$A(s, a) = Q(s, a) - V(s)$$

其中:

  • $Q(s,a)$ 是状态-动作值函数,
  • $V(s)$ 是状态值函数,表示在状态 s 下的期望累积奖励。

为什么使用优势函数

1. 方差减小: 直接使用总收益(如蒙特卡洛估计)的梯度估计可能会导致高方差,因为总收益是一个随机变量。优势函数通过减去基准值 V(s) 可以减小这种方差,使梯度估计更加稳定。在策略梯度中,使用优势函数后,梯度公式变为:

$$\nabla_\theta J(\theta) = \mathbb{E}_{s \sim d^\pi, a \sim \pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a|s) \, A(s, a) \right]$$

这显著提高了学习效率。

2. 消除基准: 优势函数的形式消除了基准项 V(s),这样可以减小梯度估计的偏差。在训练过程中,我们只关心动作相对于平均水平的优越性,而不是绝对的奖励值。通过减去基准,我们更关注哪些动作比平均水平更好,从而引导策略改进。

3. 更好的收敛性: 使用优势函数可以帮助算法更快地收敛。优势函数通常具有更平滑的梯度,这有助于避免训练过程中的不稳定性,提高学习的稳定性和效率。在实践中,优势函数常通过时间差分(TD)误差来估计,例如$A(s, a) \approx r + \gamma V(s') - V(s)$,其中 r 是即时奖励,γ 是折扣因子。

Actor-Critic框架

Actor-Critic并不是一个具体的算法,而是一个算法框架,结合了策略梯度(Actor)和值函数近似(Critic)的优点。在Actor-Critic中:

  • Actor 负责学习策略 $\pi_\theta(a|s)$,并通过策略梯度更新参数 θ 以最大化期望奖励 J(θ)。
  • Critic 负责学习价值函数(如 V(s) 或 Q(s,a)),并通过TD学习或其他方法更新参数,以评估Actor当前策略的性能。

Actor更新

Actor根据Critic提供的优势函数更新策略参数。具体来说,Actor的更新规则为:

$$\theta \leftarrow \theta + \alpha \nabla_\theta \log \pi_\theta(a|s) \, A(s, a)$$

其中 α 是学习率。这个更新方向使策略更倾向于选择具有正优势的动作(即比平均水平好的动作)。

Critic更新

Critic通过减少价值函数和TD target之间的差距来学习价值函数。例如,如果Critic学习状态值函数 $V_\phi(s)$,其中 ϕ 是参数,则更新目标是最小化TD误差:

$$\delta = r + \gamma V_\phi(s') - V_\phi(s)$$

Critic的更新规则为:

$$\phi \leftarrow \phi + \beta \delta \nabla_\phi V_\phi(s)$$

其中 β 是学习率。TD误差 δ 也常被用作优势函数的估计,即 $A(s, a) \approx \delta$。

优点

  1. 高效学习: Critic通过提供价值函数来引导Actor学习更好的策略。这比只依靠稀疏的环境奖励学习更有效,尤其是在部分观测或长期奖励场景中。
  2. 平滑梯度: 由于使用了值函数的引导,Actor-Critic方法通常具有更平滑的梯度方向。这有助于避免训练中的不稳定性,使得算法更容易收敛到一个好的策略。
  3. 在线学习: Actor-Critic可以在线更新,无需等待整个轨迹结束,这使得它适用于连续任务和高维空间。

常见策略梯度算法

基于Actor-Critic框架,衍生出多种策略梯度算法,包括:

  • REINFORCE: 一种蒙特卡洛策略梯度算法,使用整个轨迹的回报作为Q估计,但方差较高。
  • A2C(Advantage Actor-Critic): 使用优势函数减少方差,并采用多个线程并行学习。
  • A3C(Asynchronous Advantage Actor-Critic): A2C的异步版本,通过多个智能体异步更新全局模型。
  • PPO(Proximal Policy Optimization): 通过裁剪概率比来约束策略更新,提高稳定性。
  • TRPO(Trust Region Policy Optimization): 使用信任域方法确保策略更新不会过大。

这些算法在游戏AI、机器人控制等领域取得了显著成功。

总结

策略梯度算法通过直接优化策略来处理强化学习问题,优势函数和Actor-Critic框架是其核心组成部分。优势函数通过减小方差和提供相对评估来改进学习效率,而Actor-Critic结合了策略学习和值函数近似的优点,实现了稳定和高效的训练。尽管策略梯度算法在实践中仍面临挑战(如高方差和调参难度),但通过先进的技术(如PPO),它们已成为解决复杂决策任务的重要工具。

未来,随着对策略梯度理论的深入理解和计算资源的提升,策略梯度算法有望在更多领域发挥潜力,如自动驾驶、医疗诊断和自然语言处理。

posted @ 2025-11-04 20:19  黑冰5  阅读(39)  评论(0)    收藏  举报
runAll: function() { this.resetPreCode(); hljs.initHighlightingOnLoad(); // 重新渲染,添加语法高亮 hljs.initLineNumbersOnLoad(); // 为代码加上行号 }