Policy Gradient Ascent(策略梯度上升)是强化学习中直接优化策略参数的一类方法,核心思想是通过梯度上升调整策略网络的参数,使得智能体在环境中获得的期望累积回报最大化。它属于策略梯度(Policy Gradient)算法家族,适用于连续或高维动作空间场景(如机器人控制)。
核心思想:直接优化策略
与价值函数方法(如Q-learning,通过估计“状态-动作价值”间接优化策略)不同,策略梯度方法直接对策略参数$\theta$(如神经网络权重)进行优化。策略$\pi_\theta(a|s)$表示在状态$s$下选择动作$a$的概率(随机策略)或确定动作(确定性策略)。目标是最大化期望累积回报:
$$ J(\theta) = \mathbb{E}{\tau \sim \pi\theta} \left[ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] $$
其中$\tau$是状态-动作轨迹,$\gamma$是折扣因子。策略梯度上升通过计算$J(\theta)$关于$\theta$的梯度$\nabla_\theta J(\theta)$,并沿梯度方向更新参数($\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)$),最终找到最优策略。
数学基础:策略梯度定理
策略梯度的核心是计算目标函数的梯度$\nabla_\theta J(\theta)$。根据策略梯度定理,梯度可简化为:
$$ \nabla_\theta J(\theta) \approx \mathbb{E}{\tau \sim \pi\theta} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t \right] $$
其中:
- $\log \pi_\theta(a_t|s_t)$是动作$a_t$的对数概率(梯度方向表示“鼓励”该动作);
- $G_t$是时刻$t$的累积折扣回报($G_t = \sum_{k=t}^T \gamma^{k-t} r(s_k, a_k)$),衡量动作$a_t$的“好坏”。
算法步骤(以REINFORCE为例)
REINFORCE是最基础的策略梯度算法,流程如下:
1. 采样轨迹:用当前策略$\pi_\theta$与环境交互,收集一组轨迹$\tau = {s_0,a_0,r_1,s_1,\dots,s_T}$。
2. 计算回报:对每个时间步$t$,计算累积回报$G_t$。
3. 更新策略:计算梯度$\nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{n=1}^N \sum_{t=0}^{T_n} \nabla_\theta \log \pi_\theta(a_{t,n}|s_{t,n}) \cdot G_{t,n}$,并沿梯度方向更新参数$\theta$(梯度上升)。
关键特点
- 直接优化策略:无需估计价值函数,适用于连续动作空间(如机器人关节角度控制)。
- 探索性:随机策略天然支持探索(动作概率分布),而确定性策略需额外探索机制。
- 高方差问题:回报$G_t$的估计依赖单一样本轨迹,导致梯度估计方差大(可通过基线函数、优势函数等缓解)。
简单实现示例(PyTorch)
以下是策略梯度上升的基础代码示例(REINFORCE算法),展示策略网络的参数更新逻辑:
总结
策略梯度上升通过直接优化策略参数,解决了价值函数方法在连续动作空间的局限性,但其高方差问题需通过基线(如价值网络)、优势函数(如PPO中的$A(s,a)$)等技术优化。现代算法(如PPO、TRPO)均基于策略梯度框架,通过约束参数更新步长提升稳定性。