蒙特卡洛策略梯度(REINFORCE 算法)视频内容总结
蒙特卡洛策略梯度(Monte Carlo Policy Gradient)是强化学习中“无模型、直接优化策略”的经典方法,其核心实现为 REINFORCE 算法。以下是对该算法介绍视频的详细总结:
1. 核心思想:蒙特卡洛与策略梯度的结合
蒙特卡洛策略梯度的本质是将“蒙特卡洛(MC)的采样能力”与“策略梯度(PG)的优化能力”结合,直接通过完整轨迹的采样数据优化策略参数,核心逻辑可拆解为两部分:
- 策略梯度(Policy Gradient) :不间接学习价值函数(如 Q-learning),而是直接对策略函数 \(\pi_\theta(a|s)\)(通常由神经网络参数 \(\theta\) 定义)进行优化。优化目标是最大化“累计奖励的期望”,通过梯度上升调整参数,让“能带来高奖励的动作”在对应状态下被选择的概率提升。
- 蒙特卡洛(Monte Carlo) :属于“无模型(Model-free)”方法,无需预先知道环境的转移规则(如“状态 s 做动作 a 后会转移到哪个状态”)。它通过采样完整的轨迹(Episode,从初始状态到终止状态的一整套交互序列) 来获取训练数据,并使用轨迹中实际观测到的未来回报(而非估计值)评估策略好坏,避免了“模型假设不准确”导致的误差。
核心流程:智能体根据当前策略 \(\pi_\theta\) 完整执行一次任务(生成一条轨迹)→ 计算轨迹中每一步的“未来累计回报 \(G_t\)”→ 以 \(G_t\) 为权重,通过梯度上升更新策略参数 \(\theta\),让“带来高 \(G_t\) 的动作”更易被选择。
2. REINFORCE 算法:蒙特卡洛策略梯度的核心实现
REINFORCE 算法是蒙特卡洛策略梯度的经典落地方案(1992 年提出),其流程清晰且易于实现,具体步骤如下:
算法步骤
- 初始化:设定策略网络的初始参数 \(\theta\)(如神经网络的权重和偏置)、学习率 \(\alpha\)、折扣因子 \(\gamma\)(通常取 0.9~0.99,用于权衡即时奖励与未来奖励)。
-
循环生成轨迹并更新(每轮轨迹对应一次参数更新) :
a. 生成完整轨迹:基于当前策略 \(\pi_\theta(a|s)\) 与环境交互,生成一条从初始状态 \(s_0\) 到终止状态 \(s_T\) 的完整轨迹:
\(\tau = [s_0, a_0, r_0, s_1, a_1, r_1, \dots, s_{T-1}, a_{T-1}, r_{T-1}, s_T]\)
其中,\(s_t\) 是 t 时刻的状态,\(a_t\) 是 t 时刻选择的动作,\(r_t\) 是 t 时刻执行 \(a_t\) 后获得的即时奖励,\(T\) 是轨迹终止时刻。
b. 计算每一步的未来折扣回报 \(G_t\):对轨迹中每个时刻 \(t\)(从 \(t=0\) 到 \(t=T-1\)),计算“从 t 时刻开始的所有未来折扣奖励之和”,公式为:
\(G_t = \sum_{k=t+1}^T \gamma^{k-t-1} r_k = r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3} + \dots + \gamma^{T-t-1} r_{T-1}\)
(\(\gamma\) 越小,越重视近期奖励;\(\gamma=1\) 时,不折扣未来奖励)
c. 梯度上升更新策略参数: -
首先计算策略梯度的估计值:\(\nabla_\theta J(\theta) \approx \sum_{t=0}^{T-1} G_t \cdot \nabla_\theta \ln \pi_\theta(a_t | s_t)\)
(\(\nabla_\theta \ln \pi_\theta(a_t | s_t)\) 是“参数 \(\theta\) 对 \(\ln \pi_\theta(a_t | s_t)\) 的梯度”,指向“提升 \(a_t\) 在 \(s_t\) 下概率”的方向;\(G_t\) 是权重,决定该方向的更新力度) - 然后按梯度上升更新参数:\(\theta \leftarrow \theta + \alpha \cdot \nabla_\theta J(\theta)\)
(学习率 \(\alpha\) 控制每步更新的幅度)
直观理解
- \(\nabla_\theta \ln \pi_\theta(a_t | s_t)\) 是“方向标”:告诉参数“如何调整才能让 \(s_t\) 下选 \(a_t\) 的概率更高”。
-
\(G_t\) 是“油门/刹车”:
-
若 \(G_t > 0\)(该动作带来了正向的未来总奖励):则顺着“方向标”的方向加大更新力度,让 \(a_t\) 更易被选择。
- 若 \(G_t < 0\)(该动作带来了负向的未来总奖励):则反向更新(相当于“刹车”),降低 \(a_t\) 被选择的概率。
3. 与 Vanilla 策略梯度(基础策略梯度)的关键区别
视频明确了 REINFORCE 与“Vanilla 策略梯度”(最简单的策略梯度形式)在参数更新频率上的核心差异:
- Vanilla 策略梯度:“批量更新”——先采样 N 条完整轨迹(如 N=10、20),计算这 N 条轨迹的策略梯度平均值,再用该平均值更新一次参数 \(\theta\)。优点是梯度估计更稳定(方差低),缺点是数据利用率低、更新延迟。
- REINFORCE 算法:“单轨迹更新”——每采样 1 条完整轨迹,就计算这条轨迹的策略梯度,立即更新一次参数 \(\theta\)。优点是数据反馈快、无需等待批量数据,缺点是梯度估计的方差高(单条轨迹的随机性大),可能导致训练波动。
4. 关键概念对比:避免混淆核心术语
视频通过表格澄清了强化学习中易混淆的“奖励、回报、优势”等概念,明确 REINFORCE 算法的核心依赖是“回报 \(G_t\)”:
| 概念 | 符号 | 定义 | 核心作用 |
|---|---|---|---|
| 奖励(Reward) | \(r_{t+1}\) | 即时反馈:t 时刻执行动作 \(a_t\) 后,t+1 时刻获得的直接奖励(如游戏得分、机器人碰撞惩罚)。 | 构成“回报”和“总回报”的基础单元。 |
| 总回报(Total Return) | \(R(\tau)\) | 一条轨迹的整体收益:某条轨迹 \(\tau\) 中所有即时奖励的总和(\(R(\tau) = \sum_{t=0}^{T-1} r_t\))。 | 评估“一整条轨迹”的好坏,而非单步。 |
| 回报(Return) | \(G_t\) | 单步未来收益:从 t 时刻开始的所有未来折扣奖励之和(\(G_t = \sum_{k=t+1}^T \gamma^{k-t-1} r_k\))。 | REINFORCE 算法的核心:作为单步动作的“价值权重”,指导参数更新。 |
| 优势函数(Advantage) | \(A_t\) | 相对收益:某动作的价值与“基准价值”的差值,常见定义为 \(A_t = Q(s_t, a_t) - V(s_t)\) 或 \(A_t = G_t - b\)(\(b\) 为基线,如状态价值 \(V(s_t)\))。 | 用于降低策略梯度的方差(REINFORCE 未直接使用,是后续改进方向)。 |
5. 适用条件与特点
REINFORCE 算法的适用场景和核心特点可总结为:
- 适用动作空间:更适合 离散动作空间(如游戏中的“上/下/左/右”、围棋的落子位置),在连续动作空间(如机器人关节角度、自动驾驶油门)中实现稍复杂(需结合概率分布如高斯分布)。
- 环境要求:纯 无模型(Model-free) 环境,无需预先知晓环境的转移概率(\(P(s'|s,a)\))或奖励函数(\(R(s,a)\)),仅需通过与环境交互采样轨迹。
- 训练稳定性:存在 高方差问题——由于依赖单条轨迹的 \(G_t\),而不同轨迹的 \(G_t\) 波动大(如游戏中“运气好”和“运气差”的轨迹回报差异显著),可能导致参数更新震荡,收敛速度较慢。
- 探索机制:策略自带探索能力——\(\pi_\theta(a|s)\) 输出的是“动作的概率分布”(而非确定性动作),通过概率随机性实现“探索新动作”与“利用已知好动作”的平衡(如 \(\epsilon\)-greedy 是显式探索,REINFORCE 是隐式探索)。
综上,REINFORCE 算法是“蒙特卡洛思想+策略梯度”的经典结合,虽存在高方差缺陷,但胜在原理简单、无需环境模型,是理解后续更优策略梯度算法(如 PPO、A2C)的重要基础。
您是否想进一步了解如何通过“添加基线(Baseline)”降低 REINFORCE 的方差,或其在具体场景(如小游戏)中的代码实现?