强化学习中的策略梯度算法(Policy Gradient)原理与优化过程
题目描述
策略梯度算法是一类直接优化策略函数的强化学习方法,其目标是通过梯度上升最大化期望累积奖励。与基于价值的方法(如Q-learning)不同,策略梯度直接学习策略的概率分布(例如选择动作的概率),适用于连续动作空间和随机策略。核心问题是如何计算策略性能的梯度并更新策略参数。
解题过程
- 目标函数定义
策略梯度算法的目标是最大化期望累积奖励 \(J(\theta)\):
\[ J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} [R(\tau)] \]
其中:
- \(\theta\) 是策略参数(如神经网络权重);
- \(\tau = (s_0, a_0, s_1, a_1, \dots)\) 表示一条轨迹;
- \(R(\tau) = \sum_{t=0}^{T} \gamma^t r_t\) 是轨迹的累积折扣奖励;
- \(\pi_\theta(a|s)\) 是参数化的策略函数(如Softmax输出动作概率)。
- 梯度推导
通过对数似然技巧,将梯度转化为可计算的期望形式:
\[ \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot R(\tau) \right] \]
- \(\nabla_\theta \log \pi_\theta(a_t|s_t)\) 是动作概率的对数梯度(评分函数);
- \(R(\tau)\) 作为权重,高奖励轨迹的梯度更新幅度更大。
- 蒙特卡洛估计
实际中通过采样 \(N\) 条轨迹近似计算梯度:
\[ \nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t^{(i)}|s_t^{(i)}) \cdot R(\tau^{(i)}) \]
每条轨迹的梯度更新方向由累积奖励 \(R(\tau^{(i)})\) 决定。
- 降低方差技巧
- 基线(Baseline):引入与动作无关的基准值 \(b(s_t)\)(如状态价值函数),避免梯度被绝对奖励值主导:
\[ \nabla_\theta J(\theta) = \mathbb{E} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot (R(\tau) - b(s_t)) \right] \]
- 时序差分残差:用优势函数 \(A(s_t, a_t) = Q(s_t, a_t) - V(s_t)\) 替代 \(R(\tau)\),更精确评估动作的相对价值。
- 策略更新
使用梯度上升更新参数:
\[ \theta \leftarrow \theta + \alpha \nabla_\theta J(\theta) \]
\(\alpha\) 为学习率,需谨慎选择以保证训练稳定性。
- 算法扩展
- Actor-Critic框架:用价值网络(Critic)估计优势函数,策略网络(Actor)更新参数,实现更高效的梯度估计(如A2C、PPO算法)。
- 重要性采样:允许使用旧策略的样本更新新策略(如TRPO、PPO),提高数据利用率。
关键点
策略梯度通过直接优化策略概率分布,避免了基于价值方法的贪婪动作选择问题,但依赖蒙特卡洛估计可能导致高方差。通过基线、优势函数及Actor-Critic结构可显著提升算法性能。