当前位置: 首页 > article >正文

【机器学习】机器学习的基本分类-强化学习-策略梯度(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 trajectories
    Compute 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. 金融交易
    • 策略优化股票交易中的买卖时机。

http://www.kler.cn/a/443377.html

相关文章:

  • Fastapi + vue3 自动化测试平台(1)--开篇
  • css出现边框
  • 无网络时自动切换备用网络环境
  • 优化提示词改善答疑机器人回答质量
  • Agent | Dify中的两种可选模式
  • 【博主推荐】 Microi吾码开源低代码平台,快速建站,提高开发效率
  • 在Ubuntu中配置mysql,并允许外部访问数据库
  • 在源码中编译c执行程序
  • C语言贪吃蛇项目
  • 虚拟机VMware的安装问题ip错误,虚拟网卡
  • Unity 组件学习记录:Aspect Ratio Fitter
  • .NET 9微软新平台 + FastReport .NET:如何提升报告生成效率
  • 鸿蒙Next合理使用状态管理总结
  • 谈一谈大数据流式处理,以Spark Streaming为例详细论述
  • arcgis for js实现地图截图、地图打印
  • react身份证回显
  • 前端:如何在静态目录下显示一张图片
  • OpenCV(python)从入门到精通——运算操作
  • C++ 只出现一次的数字 - 力扣(LeetCode)
  • Golang的向前兼容性和toolchain规则,Go1.21.0
  • SpringBoot3整合FastJSON2如何配置configureMessageConverters
  • RabbitMQ的工作模型
  • DataOps驱动数据集成创新:Apache DolphinScheduler SeaTunnel on Amazon Web Services
  • Spring Boot 中异常日志记录的最佳实践:实时示例
  • .NET Runtime 是什么?
  • DNS协议 是什么?说说DNS 完整的查询过程?