Policy Gradient(策略梯度)是强化学习中基于策略的优化方法,通过直接优化策略函数来最大化累积回报。与基于值的强化学习方法(如 Q-Learning 或 DQN)不同,Policy Gradient 不显式地学习状态值函数 V(s) 或动作值函数 Q(s, a),而是直接优化策略 的参数 θ。
核心思想
-
直接建模策略
- 策略 是一个概率分布函数,描述了在状态 s 下采取动作 a 的概率。
- 策略函数可以是任何可微的函数(如神经网络)。
-
目标函数
- 目标是最大化累积期望回报 J(θ):
- 通过梯度上升更新策略参数 θ。
- 目标是最大化累积期望回报 J(θ):
-
策略梯度定理
- 策略梯度的形式:
- 其中 是从时间步 t 开始的累积回报,用于指导更新方向。
- 策略梯度的形式:
策略梯度算法
基本步骤
-
采样轨迹
- 通过当前策略 与环境交互,生成一批轨迹(状态、动作、奖励序列)。
-
计算回报
- 对每条轨迹计算累积回报 ,例如:
- 对每条轨迹计算累积回报 ,例如:
-
计算梯度
- 对于每个状态-动作对,计算策略梯度:
- 对于每个状态-动作对,计算策略梯度:
-
更新策略参数
- 使用梯度上升(或梯度下降的负值)更新策略参数 θ:
- 使用梯度上升(或梯度下降的负值)更新策略参数 θ:
伪代码
Initialize policy network with random weights θfor episode in range(max_episodes):Generate trajectories by interacting with the environment using policy πθCompute returns G_t for each step in the trajectoriesCompute policy gradient:∇θ J(θ) = (1/N) * Σ [∇θ log πθ(a_t | s_t) * G_t]Update policy network:θ ← θ + α * ∇θ J(θ)
优势与不足
优势
-
连续动作空间适用性
- 可直接处理连续动作空间,而基于值的方法需要离散化动作空间。
-
策略随机性
- 随机策略可以自然地处理探索与利用的权衡问题。
-
易于扩展
- 可以扩展到 Actor-Critic 方法(结合值函数的策略梯度)。
不足
-
高方差
- 策略梯度估计的方差较高,需要大量采样来稳定更新。
-
收敛性较慢
- 对于复杂环境,单纯的策略梯度方法收敛较慢。
-
数据利用效率低
- 每次更新策略仅利用采样到的轨迹,未充分使用历史数据。
改进方法
-
REINFORCE
- 使用完整的累积回报 代替真实环境奖励。
-
基线(Baseline)
- 减少梯度方差的一种方法是引入基线函数 b(s),更新规则变为:
- 减少梯度方差的一种方法是引入基线函数 b(s),更新规则变为:
-
Actor-Critic
- 结合值函数,使用 Q(s,a) 或 V(s) 来引导策略梯度更新。
-
Trust Region Policy Optimization (TRPO)
- 限制策略更新的幅度,防止策略更新过大导致性能退化。
-
Proximal Policy Optimization (PPO)
- 提高更新效率的同时,确保策略更新的稳定性。
应用场景
-
机器人控制
- 连续动作控制问题,如机械臂操作和移动机器人导航。
-
游戏 AI
- 策略梯度适用于具有复杂动作的游戏场景。
-
推荐系统
- 动态地为用户提供推荐,优化长期回报。
-
金融交易
- 策略优化股票交易中的买卖时机。