使用 PyTorch 的策略梯度 – Hugging Face 深度强化学习课程 第5单元

TL;DR

Hugging Face 发布了一个动手教程,在 PyTorch 中实现 REINFORCE(蒙特卡罗策略梯度)算法,并在 CartPole‑v1、PixelCopter 和 Pong 上进行基准测试,标志着其免费深度强化学习课程第 5 单元的完成。


什么是策略梯度方法?

策略梯度方法属于更广泛的基于策略的强化学习算法类别,直接优化策略,而不学习中间的价值函数。它们通过在衡量期望回报的目标上进行梯度上升,来调整随机策略 (\pi_{\theta}(a\mid s)) 的参数 (\theta)。

策略梯度概述

强化学习的目标是找到能够最大化期望累计奖励的策略。在策略梯度方法中,策略为每个状态输出一个动作的概率分布。通过采样情节、计算总回报 (R(\tau)),并调整 (\theta) 以提升导致高回报的动作的对数概率,算法将策略引导向更有奖励的行为。

策略梯度方法的优势

  1. 简洁性 – 无需存储或估计动作价值表;算法直接更新策略。
  2. 随机策略 – 代理通过从动作分布中采样自然地进行探索,省去了手工设计的探索策略。
  3. 对感知别名的鲁棒性 – 在模糊状态下,随机策略可以随机化动作,避免确定性策略可能遇到的死胡同。
  4. 可扩展到高维或连续动作空间 – 与必须为每个离散动作评估 Q 值的深度 Q 学习不同,策略梯度输出的分布可以表示无限多个动作。

策略梯度方法的劣势

  • 局部最优 – 梯度上升可能收敛到次优策略。
  • 样本效率低 – 由于更新基于蒙特卡罗回报,训练可能需要大量情节。
  • 高方差 – 梯度估计可能噪声大;通常需要方差降低技术(例如基线)。

想更深入了解优缺点,文章提供了指向 YouTube 解释的链接。


REINFORCE(蒙特卡罗策略梯度)

REINFORCE 使用整个情节的回报来更新策略参数:

  1. 收集一个情节 (\tau),通过执行当前策略 (\pi_{\theta})。
  2. 估计梯度 (\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)) 近似。
  3. 使用学习率 (\alpha) 更新策略: [ \theta \leftarrow \theta + \alpha \hat{g} ]

项 (\nabla_{\theta}\log \pi_{\theta}(a_t\mid s_t)) 指向所采取动作的对数概率最大上升的方向,而回报 (R(\tau)) 对该方向进行缩放:高回报会提升观察到的状态‑动作对的概率,低回报则会降低它们。


使用 PyTorch 的动手实现

该教程提供了一个 Colab 笔记本,内容包括:

  • 在 PyTorch 中定义随机策略网络。
  • 从三个环境中采样完整情节 – CartPole‑v1PixelCopterPong
  • 计算情节回报并应用 REINFORCE 更新规则。
  • 将表现记录到公共排行榜,学习者可以比较分数。

资源


教育背景与后续步骤

本单元结束了 深度强化学习课程 中的策略梯度章节——这是 Hugging Face 主办的免费、从入门到专家的课程体系。完成 REINFORCE 实现后,鼓励学习者:

  • 尝试更多环境以巩固理解。
  • 查看大纲中链接的补充阅读材料。
  • 为下一单元做准备,下一单元将介绍结合策略和价值学习的 Actor‑Critic 方法。

通过 Google 表单收集反馈,以迭代改进课程。


要点

Hugging Face 的新教程为学习者提供了完整的、从零开始的 PyTorch REINFORCE 实现,展示了其在经典控制和 Atari 风格任务中的适用性,并作为通向更高级混合方法(如 Actor‑Critic)的入口。

Sources