Skip to content

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

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

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

换一条路:直接学策略

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

这正是第 3 章路线二的核心思路。本章将深入这条路线,从最简单的策略梯度方法开始。

前置知识回顾

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

本章暗线:一直在降噪声

策略梯度最大的敌人是噪声太大(高方差)。本章每一节的改进都在想办法压制噪声:

  1. 先动手:让 AI 玩赌博机,看它能不能自己发现"永远选赢率高的那个"。它确实能学会,但学得很抖——这就是噪声的直接表现。

  2. 再讲原理:解释为什么 loss = -log_prob * reward 这一行代码能让 AI 学会"偏爱好的动作"。背后是策略梯度定理——REINFORCE 本质上就是第 3 章速览过的 MC 方法在策略空间的应用。

  3. 然后减噪声:关键洞察是——不要问"这趟跑了多少分",而要问"这趟比平时好了多少"。减掉一个"基线",同样的数学方向,噪声却小了很多。而最好的基线恰好就是 V(s)V(s)——它为下一章引入 Critic 网络提供了自然的动机。

小节核心问题
动手:摇骰子赌博机策略网络怎么学会"偏爱好的动作"?
策略梯度定理与 REINFORCE"好结果 → 强化动作概率"的数学本质是什么?
动手:Baseline 降方差减掉基线效果有多好?V(s)V(s) 为什么是最佳基线?

让我们从一个简单的动手实验开始——动手:摇骰子赌博机

Built for reusable bilingual course delivery