跳转到正文

第 5 章:Policy-Based 方法——策略梯度与 REINFORCE

第 4 章走了路线一——先学 Q(s,a)Q(s,a) 给每个动作打分,再选分数最高的(回顾:Q(s,a) 与贪心策略)。DQN 在 CartPole 和 Atari 上效果很好,但它有一个根本性的局限:只能处理有限个离散动作。

CartPole 只有"左推"和"右推"两个选项,DQN 给每个动作算一个 QQ 值,取最大的就行。但如果要控制一个机械臂呢?肩关节、肘关节、腕关节各有多个自由度,每个自由度能施加连续的力矩——可能的动作组合有无穷多种,不可能给每种组合都算一个 QQ 值。更不用说大模型生成文本——每一步要从几万个 token 中采样,策略本身是一个连续的概率分布,argmax\arg\max 的思路完全行不通。

直接学习策略

既然"先打分再选"走不通,那就换一条路:跳过 QQ 值,直接学策略 πθ(as)\pi_\theta(a|s)。不问"每个动作值多少分",而是直接学"在什么情况下该做什么"。

这正是第 3 章路线二:策略目标 J(θ)J(\theta)的核心思路——定义一个策略目标函数 J(θ)J(\theta),然后直接优化参数 θ\theta 使 J(θ)J(\theta) 最大。本章将深入这条路线,从策略梯度定理到 REINFORCE 算法,再到降低方差的基线方法。

前置知识回顾

本章会频繁用到以下概念,如果记不清了,点进去复习一下再继续:

本章主线

本章沿两条线索展开。第一条线索是理论:从策略梯度定理到 REINFORCE 算法,再到基线降方差和优势函数。第二条线索是实践:在 CartPole 上先跑通 vanilla REINFORCE,观察高方差问题,然后加入价值基线对比效果。

小节核心问题
策略梯度的必要性DQN 的 argmax\arg\max 在哪里走不通?为什么直接学策略?
REINFORCE 算法策略梯度定理的数学形式是什么?REINFORCE 怎么实现?
动手:CartPole 实战REINFORCE 在真实控制任务上表现如何?高方差什么样?
策略梯度的改进基线为什么能降方差?V(s)V(s) 为什么是最佳基线?
动手:CartPole 对比实验价值基线的实际效果如何?从奖励和方差两个角度看。

让我们从策略梯度的动机开始:从 DQN 到策略梯度

现代强化学习实战课程