第 5 章:Policy-Based 方法——策略梯度与 REINFORCE
第 4 章走了路线一——先学 给每个动作打分,再选分数最高的(回顾:Q(s,a) 与贪心策略)。DQN 在 CartPole 和 Atari 上效果很好,但它有一个根本性的局限:只能处理有限个离散动作。
CartPole 只有"左推"和"右推"两个选项,DQN 给每个动作算一个 值,取最大的就行。但如果要控制一个机械臂呢?肩关节、肘关节、腕关节各有多个自由度,每个自由度能施加连续的力矩——可能的动作组合有无穷多种,不可能给每种组合都算一个 值。更不用说大模型生成文本——每一步要从几万个 token 中采样,策略本身是一个连续的概率分布, 的思路完全行不通。
直接学习策略
既然"先打分再选"走不通,那就换一条路:跳过 值,直接学策略 。不问"每个动作值多少分",而是直接学"在什么情况下该做什么"。
这正是第 3 章路线二:策略目标 的核心思路——定义一个策略目标函数 ,然后直接优化参数 使 最大。本章将深入这条路线,从策略梯度定理到 REINFORCE 算法,再到降低方差的基线方法。
前置知识回顾
本章会频繁用到以下概念,如果记不清了,点进去复习一下再继续:
本章主线
本章沿两条线索展开。第一条线索是理论:从策略梯度定理到 REINFORCE 算法,再到基线降方差和优势函数。第二条线索是实践:在 CartPole 上先跑通 vanilla REINFORCE,观察高方差问题,然后加入价值基线对比效果。
| 小节 | 核心问题 |
|---|---|
| 策略梯度的必要性 | DQN 的 在哪里走不通?为什么直接学策略? |
| REINFORCE 算法 | 策略梯度定理的数学形式是什么?REINFORCE 怎么实现? |
| 动手:CartPole 实战 | REINFORCE 在真实控制任务上表现如何?高方差什么样? |
| 策略梯度的改进 | 基线为什么能降方差? 为什么是最佳基线? |
| 动手:CartPole 对比实验 | 价值基线的实际效果如何?从奖励和方差两个角度看。 |
让我们从策略梯度的动机开始:从 DQN 到策略梯度。