5.1 为什么需要策略梯度
本节导读
核心内容
- 回顾第 4 章 DQN 的核心思路:学 ,用 选动作。
- 理解 Value-Based 方法的根本局限:只能处理有限个离散动作。
- 说明 Policy-Based 方法为什么直接学习 ,以及两种路线在动作空间、探索机制和数据利用上的本质差异。
DQN 做对了什么
第 4 章的 DQN 走了一条清晰的路线:先用神经网络近似 ,给每个动作打分,再用 选分数最高的。在 CartPole(2 个动作)和 LunarLander(4 个动作)上,这条路走得通——动作不多,把每个动作的 值都比较一遍就行。
这条路线的底层逻辑是:不直接学"该做什么",而是先学"每个动作值多少分",再从中挑最好的。策略是隐式的——它藏在 值表的 里。
走不通的地方
要求把所有动作的 值都比较一遍。只要动作个数有限,这件事没有问题。但很多实际任务的动作空间是连续的,动作个数无穷多。
机械臂的控制就是典型例子。肩关节、肘关节、腕关节各有多个自由度,每个自由度能施加连续的力矩 。假设有 6 个关节,动作空间是 ——一个六维连续空间中的无穷多个点。不可能为每个点都算一个 值,更不可能在无穷多个点中找 。
大模型生成文本也面临同样的问题。每一步要从几万个 token 中采样,策略本身是一个连续的概率分布。 对应的贪心解码(greedy decoding)虽然存在,但它只会输出概率最高的那个 token,完全丧失了多样性。而好的文本生成恰恰需要"有时候选第二高的、第三高的"——这正是概率采样的思路,不是打分选最大的思路。
直接学习策略
既然"先打分再选"走不通,那就换一条路:跳过 值,直接学策略 。不问"每个动作值多少分",而是直接学"在什么情况下该做什么"。
这正是第 3 章路线二:策略目标 的核心思路——定义一个策略目标函数 ,然后直接优化参数 使 最大。
两种路线的区别可以用一个类比说清楚:Value-Based 方法像是一个美食评论家,给每道菜打分,然后选分数最高的那道;Policy-Based 方法像是一个经验丰富的厨师,不需要打分,直接知道在什么食材、什么场合下该做什么菜。
两条路线的差异
| Value-Based(DQN) | Policy-Based(策略梯度) | |
|---|---|---|
| 学什么 | :每个动作值多少分 | :每个动作该做多大概率 |
| 怎么选动作 | (取最高分) | 从 中采样 |
| 策略形式 | 确定性(永远选最高分) | 随机性(输出概率分布) |
| 动作空间 | 仅离散 | 离散 + 连续 |
| 探索机制 | 外部添加(-greedy) | 内建(概率分布天然包含探索) |
| 数据利用 | Off-policy(经验回放池可复用旧数据) | On-policy(必须用当前策略的新数据) |
| 方差 | 低(TD 目标相对稳定) | 高(蒙特卡洛回报波动大) |
| 代表算法 | DQN(第 4 章) | REINFORCE(本章) → PPO(第 7 章) |
逐行解释关键差异。
动作空间——这是选择路线的主要依据。DQN 的 在连续空间中根本算不出来。策略梯度直接输出概率分布——离散动作用 Softmax,连续动作用高斯分布,换一个输出层就行。
探索机制——DQN 的策略是确定性的(永远选 ),探索靠 -greedy(回顾:DQN 的三个组件)。 需要手动调度,太大浪费,太小不够探索。策略梯度天然输出概率分布,探索是内建的——如果网络认为某个动作有 30% 的概率值得尝试,它就会以 30% 的概率去试。
数据利用——这是两条路线最实际的工程差异。DQN 是 off-policy 的:经验回放池里存着旧数据,可以反复拿来训练。策略梯度是 on-policy 的:梯度估计中的 要求必须用当前策略产生的数据。策略一更新,旧数据就失效了。数据效率天然低于 DQN,是策略梯度最大的工程短板。
两条路线不是对立的
两条路线各有优劣,但它们并非水火不容。第 6 章的 Actor-Critic 会把两条路线合并:用策略网络做决策,用价值网络降低方差。不过在此之前,我们需要先把 Policy-Based 这条路的数学基础打扎实。
下一节从策略目标函数开始,推导策略梯度定理,引出 REINFORCE 算法:REINFORCE 算法。
