欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)

【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)

2024/12/24 8:52:46 来源:https://blog.csdn.net/IT_ORACLE/article/details/144574736  浏览:    关键词:【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)

Policy Gradient(策略梯度)是强化学习中基于策略的优化方法,通过直接优化策略函数来最大化累积回报。与基于值的强化学习方法(如 Q-Learning 或 DQN)不同,Policy Gradient 不显式地学习状态值函数 V(s) 或动作值函数 Q(s, a),而是直接优化策略 \pi(a|s; \theta)的参数 θ。


核心思想

  1. 直接建模策略
    • 策略 \pi(a|s; \theta) 是一个概率分布函数,描述了在状态 s 下采取动作 a 的概率。
    • 策略函数可以是任何可微的函数(如神经网络)。
  2. 目标函数
    • 目标是最大化累积期望回报 J(θ):

                                               J(\theta) = \mathbb{E}_{\pi_\theta} \left[ \sum_{t=0}^{T} \gamma^t R_t \right]
    • 通过梯度上升更新策略参数 θ。
  3. 策略梯度定理
    • 策略梯度的形式: 

                                     \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a|s) \cdot G_t \right]
    • 其中 G_t​ 是从时间步 t 开始的累积回报,用于指导更新方向。

策略梯度算法

基本步骤
  1. 采样轨迹
    • 通过当前策略 \pi_\theta(a|s) 与环境交互,生成一批轨迹(状态、动作、奖励序列)。
  2. 计算回报
    • 对每条轨迹计算累积回报 G_t,例如:

                                                G_t = \sum_{k=0}^\infty \gamma^k R_{t+k}
  3. 计算梯度
    • 对于每个状态-动作对,计算策略梯度:

                            \nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \sum_{t=0}^{T_i} \nabla_\theta \log \pi_\theta(a_t^i | s_t^i) \cdot G_t^i
  4. 更新策略参数
    • 使用梯度上升(或梯度下降的负值)更新策略参数 θ:

                                               \theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)

伪代码

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(θ)

优势与不足

优势
  1. 连续动作空间适用性
    • 可直接处理连续动作空间,而基于值的方法需要离散化动作空间。
  2. 策略随机性
    • 随机策略可以自然地处理探索与利用的权衡问题。
  3. 易于扩展
    • 可以扩展到 Actor-Critic 方法(结合值函数的策略梯度)。
不足
  1. 高方差
    • 策略梯度估计的方差较高,需要大量采样来稳定更新。
  2. 收敛性较慢
    • 对于复杂环境,单纯的策略梯度方法收敛较慢。
  3. 数据利用效率低
    • 每次更新策略仅利用采样到的轨迹,未充分使用历史数据。

改进方法

  1. REINFORCE
    • 使用完整的累积回报 G_t 代替真实环境奖励。
  2. 基线(Baseline)
    • 减少梯度方差的一种方法是引入基线函数 b(s),更新规则变为:

                       \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a|s) \cdot (G_t - b(s)) \right]
  3. Actor-Critic
    • 结合值函数,使用 Q(s,a) 或 V(s) 来引导策略梯度更新。
  4. Trust Region Policy Optimization (TRPO)
    • 限制策略更新的幅度,防止策略更新过大导致性能退化。
  5. Proximal Policy Optimization (PPO)
    • 提高更新效率的同时,确保策略更新的稳定性。

应用场景

  1. 机器人控制
    • 连续动作控制问题,如机械臂操作和移动机器人导航。
  2. 游戏 AI
    • 策略梯度适用于具有复杂动作的游戏场景。
  3. 推荐系统
    • 动态地为用户提供推荐,优化长期回报。
  4. 金融交易
    • 策略优化股票交易中的买卖时机。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com