使用 PyTorch 的策略梯度 – Hugging Face 深度强化学习课程 第5单元
TL;DR
Hugging Face 发布了一个动手教程,在 PyTorch 中实现 REINFORCE(蒙特卡罗策略梯度)算法,并在 CartPole‑v1、PixelCopter 和 Pong 上进行基准测试,标志着其免费深度强化学习课程第 5 单元的完成。
什么是策略梯度方法?
策略梯度方法属于更广泛的基于策略的强化学习算法类别,直接优化策略,而不学习中间的价值函数。它们通过在衡量期望回报的目标上进行梯度上升,来调整随机策略 (\pi_{\theta}(a\mid s)) 的参数 (\theta)。
策略梯度概述
强化学习的目标是找到能够最大化期望累计奖励的策略。在策略梯度方法中,策略为每个状态输出一个动作的概率分布。通过采样情节、计算总回报 (R(\tau)),并调整 (\theta) 以提升导致高回报的动作的对数概率,算法将策略引导向更有奖励的行为。
策略梯度方法的优势
- 简洁性 – 无需存储或估计动作价值表;算法直接更新策略。
- 随机策略 – 代理通过从动作分布中采样自然地进行探索,省去了手工设计的探索策略。
- 对感知别名的鲁棒性 – 在模糊状态下,随机策略可以随机化动作,避免确定性策略可能遇到的死胡同。
- 可扩展到高维或连续动作空间 – 与必须为每个离散动作评估 Q 值的深度 Q 学习不同,策略梯度输出的分布可以表示无限多个动作。
策略梯度方法的劣势
- 局部最优 – 梯度上升可能收敛到次优策略。
- 样本效率低 – 由于更新基于蒙特卡罗回报,训练可能需要大量情节。
- 高方差 – 梯度估计可能噪声大;通常需要方差降低技术(例如基线)。
想更深入了解优缺点,文章提供了指向 YouTube 解释的链接。
REINFORCE(蒙特卡罗策略梯度)
REINFORCE 使用整个情节的回报来更新策略参数:
- 收集一个情节 (\tau),通过执行当前策略 (\pi_{\theta})。
- 估计梯度 (\hat{g}=\nabla_{\theta} J(\theta)),其中 [ J(\theta)=\mathbb{E}{\tau\sim\pi{\theta}}[R(\tau)] ] 梯度通过每个时间步的 (\nabla_{\theta}\log \pi_{\theta}(a_t\mid s_t),R(\tau)) 近似。
- 使用学习率 (\alpha) 更新策略: [ \theta \leftarrow \theta + \alpha \hat{g} ]
项 (\nabla_{\theta}\log \pi_{\theta}(a_t\mid s_t)) 指向所采取动作的对数概率最大上升的方向,而回报 (R(\tau)) 对该方向进行缩放:高回报会提升观察到的状态‑动作对的概率,低回报则会降低它们。
使用 PyTorch 的动手实现
该教程提供了一个 Colab 笔记本,内容包括:
- 在 PyTorch 中定义随机策略网络。
- 从三个环境中采样完整情节 – CartPole‑v1、PixelCopter 和 Pong。
- 计算情节回报并应用 REINFORCE 更新规则。
- 将表现记录到公共排行榜,学习者可以比较分数。
资源
- 笔记本: https://colab.research.google.com/github/huggingface/deep-rl-class/blob/main/unit5/unit5.ipynb
- 排行榜: https://huggingface.co/spaces/chrisjay/Deep-Reinforcement-Learning-Leaderboard
教育背景与后续步骤
本单元结束了 深度强化学习课程 中的策略梯度章节——这是 Hugging Face 主办的免费、从入门到专家的课程体系。完成 REINFORCE 实现后,鼓励学习者:
- 尝试更多环境以巩固理解。
- 查看大纲中链接的补充阅读材料。
- 为下一单元做准备,下一单元将介绍结合策略和价值学习的 Actor‑Critic 方法。
通过 Google 表单收集反馈,以迭代改进课程。
要点
Hugging Face 的新教程为学习者提供了完整的、从零开始的 PyTorch REINFORCE 实现,展示了其在经典控制和 Atari 风格任务中的适用性,并作为通向更高级混合方法(如 Actor‑Critic)的入口。
Sources
- OriginalPolicy Gradient with PyTorch