📑 本页目录(点开跳转)
03 · 价值函数与贝尔曼方程
⏱ 24 分钟 | ⭐ 整个强化学习就建立在这一章上
🎯 一句话
价值函数 = 「从这个局面出发,往后总共能拿多少分」。 它一举解决了第 1 章那个信用分配难题 —— 因为有了它,你不用等到结局,就能判断当前这一步好不好。
💰 一、两个价值函数
V:状态有多好
$$V^\pi(s) = \mathbb{E}_\pi\big[G_t \mid s_t = s\big]$$
💡 人话:按策略 π 走下去,从状态 s 出发,未来累积奖励的期望。
Q:在这个状态做这个动作有多好
$$Q^\pi(s,a) = \mathbb{E}_\pi\big[G_t \mid s_t = s,\ a_t = a\big]$$
💡 人话:在 s 先做 a(哪怕不是策略推荐的),之后再按 π 走。
🔑 为什么 Q 比 V 有用得多
关键信息
⭐ 这就是为什么 Q-learning(第 6 章)能在完全不懂环境的情况下学会玩游戏。 V 告诉你"这里好不好",Q 告诉你"该怎么办"。
两者的换算关系:
$$V^\pi(s) = \sum_a \pi(a\mid s)\, Q^\pi(s,a)$$
💡 人话:状态的价值 = 各个动作价值的加权平均(按策略的选择概率加权)。
⭐ 二、贝尔曼方程:整个领域的地基
$$V^\pi(s) = \sum_a \pi(a|s)\Big[R(s,a) + \gamma\sum_{s'}P(s'|s,a)V^\pi(s')\Big]$$
别被吓到,它只说了一句话:
- =
- 马上能拿到的奖励
- +
- γ × 下一个状态的价值
💡 人话翻译:
「这里值多少钱」= 「立刻到手多少」+ 打了折的「下一站值多少钱」。
🎯 为什么这个递归关系是革命性的
结果对照
🔑 这就是第 1 章「信用分配」的答案: 你不需要知道"80 步棋里哪一步错了", 你只需要知道每个局面值多少钱,然后比较相邻两个局面的差。
📐 方程怎么来的(想看再点,就三步)
从回报的定义出发:
$$G_t = r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3}+\cdots$$
第一步:把 γ 提出来
$$G_t = r_{t+1} + \gamma\underbrace{(r_{t+2} + \gamma r_{t+3}+\cdots)}_{= \;G_{t+1}} = r_{t+1} + \gamma G_{t+1}$$
⭐ 整个推导的关键就是这一步 —— 回报本身就是递归的。
第二步:两边取期望
$$V^\pi(s) = \mathbb{E}[G_t\mid s_t=s] = \mathbb{E}[r_{t+1} + \gamma G_{t+1}\mid s_t=s]$$
第三步:把期望按「先选动作、再转移」拆开
$$= \sum_a \pi(a|s)\Big[R(s,a) + \gamma\sum_{s'}P(s'|s,a)\,\mathbb{E}[G_{t+1}|s_{t+1}=s']\Big]$$
而最里面那个期望就是 $V^\pi(s')$。得证。
🏆 三、贝尔曼最优方程
上面是「给定策略 π 有多好」。现在问:最好能有多好?
$$V^*(s) = \max_a\Big[R(s,a) + \gamma\sum_{s'}P(s'|s,a)V^*(s')\Big]$$
$$Q^*(s,a) = R(s,a) + \gamma\sum_{s'}P(s'|s,a)\,\underbrace{\max_{a'}Q^*(s',a')}_{\text{下一步选最好的}}$$
和上面唯一的区别:
对照
贝尔曼期望方程: Σ π(a|s) · [ · ] ← 按策略【平均】
贝尔曼最优方程: max_a [ · ] ← 直接取【最好的】⭐
💎 最优策略怎么来
$$\pi^*(s) = \arg\max_a Q^*(s,a)$$
💡 人话:知道了每个动作值多少钱,最优策略就是「每步都选最贵的那个」。
🔑 这句话的分量: 求解强化学习问题 = 求出 Q*。 拿到 Q* 之后,策略是「免费」的 —— 直接 argmax 就行。
⭐ 所以第 4–8 章全部都在做同一件事:用不同办法逼近 Q*。
🧮 四、亲手算一遍(用第 2 章那个 MDP)
对照
简化版:只有两个状态,γ = 0.9
[上课] --学(+2)--> 0.8 回上课 / 0.2 去睡觉(终止, V=0)
[上课] --玩(+1)--> 1.0 去刷手机
[刷机] --学(-1)--> 0.6 去上课 / 0.4 留刷手机
[刷机] --玩(+1)--> 0.9 留刷手机 / 0.1 去睡觉(V=0)
先算「一直学」这个策略的价值:
关键信息
再算「一直玩」这个策略:
关键信息
四个纯策略全部算出来(代码实跑,非估算):
| 上课的动作 | 刷机的动作 | V(上课) | V(刷机) |
|---|---|---|---|
| 学 | 学 | 7.14 | 4.46 |
| 学 | 玩 | 7.14 ⭐ | 5.26 ⭐ |
| 玩 | 学 | −1.69 💀 | −2.99 💀 |
| 玩 | 玩 | 5.74 | 5.26 |
再用价值迭代求出 Q*:
信息关系
💡 看出什么了吗: 在「上课」该学,在「刷手机」反而该玩。 因为从刷手机状态"学"的即时代价是 −1,而爬回上课的概率只有 0.6 —— 期望上不划算。
⭐ 这就是最优策略不是"处处都选看起来正确的动作"的原因, 也是为什么必须算而不能猜。
💀 再看「上课就玩」那一行:V 直接掉到负数。 一个状态上的错误决策,会顺着贝尔曼方程污染整张价值表 —— 这也是为什么它是递归的。
📊 五、四个方程的关系(一张表理清)
| 方程 | 问的问题 | 用在哪 |
|---|---|---|
| 贝尔曼期望方程 V^π | 这个策略有多好? | 策略评估(第 4 章) |
| 贝尔曼期望方程 Q^π | 这个策略下,这个动作有多好? | SARSA(第 6 章) |
| 贝尔曼最优方程 V* | 最好能多好? | 价值迭代(第 4 章) |
| 贝尔曼最优方程 Q* ⭐ | 最优情况下这个动作值多少? | Q-learning、DQN(第 6、8 章)⭐ |
⭐ 最后一行是重点:Q* 的贝尔曼方程就是 Q-learning 的更新公式的来源, 也是 DQN 损失函数的来源。第 6 章和第 8 章你会看到它原封不动地出现。
⚠️ 六、三个常见误解
| 误解 | 真相 |
|---|---|
| 「V 是这次能拿多少分」 | 是期望值,单次结果会波动 |
| 「Q(s,a) 里的 a 必须是策略选的」 | 不必。Q 允许你先做任意动作,之后再按 π —— 这正是它能用来比较动作的原因 ⭐ |
| 「γ 只是个超参数」 | γ 改变最优策略本身。γ 小 → 短视;γ 大 → 长远。它是问题定义的一部分 |
💡 关于第三点的一个例子:
关键信息
🔗 七、和站内其他章的关系
| 相关的地方 | 这里的位置 |
|---|---|
| 第 1 章的信用分配问题 | 价值函数就是它的答案 ⭐ |
| 第 1 章的折扣因子 γ | 这里给了它精确的作用 |
| 数学原理 01 期望 | V 和 Q 都是期望 |
| 动态规划(算法课) | 第 4 章会用它解贝尔曼方程 |
✅ 检查点
- V 和 Q 分别是什么?为什么说 Q 比 V 有用得多?
- 贝尔曼方程用一句话说是什么?
- 为什么这个递归关系是革命性的?(对比没有它的情况)
- 推导的关键一步是什么?
- 贝尔曼期望方程和最优方程唯一的区别是什么?
- 有了 Q* 之后,最优策略怎么得到?这句话为什么重要?
- 手算那个例子:为什么在「刷手机」状态最优动作反而是「玩」?Q* 的两个数各是多少?
- Q(s,a) 里的动作 a 必须是策略选的吗?为什么这一点关键?
- 学不出长期行为时该先检查什么?
👀 答案
- V(s)=从状态 s 出发的期望累积奖励;Q(s,a)=在 s 先做 a、之后按 π 走的期望累积奖励。Q 更有用因为直接 argmax 就能选动作,不需要知道环境模型 P;用 V 选动作还得知道"做了这动作会到哪"。
- V(现在) = R(马上) + γ · V(下一步)。这个状态的价值 = 立刻到手的奖励 + 打折的下一状态价值。
- 没有它要展开所有可能未来,分支指数爆炸;有了它 V(s) 只依赖邻居 V(s'),变成方程组可迭代求解,复杂度从指数降到多项式。
- G_t = r_{t+1} + γG_{t+1} —— 把 γ 提出来,发现回报本身就是递归的。
- 期望方程按策略加权平均
Σπ(a|s)·[...];最优方程直接取 max_a [...]。 - π*(s) = argmax_a Q*(s,a)。重要是因为:求解 RL = 求出 Q*,拿到 Q* 后策略是免费的。第 4-8 章全都在用不同办法逼近 Q*。
- 因为从刷手机"学"的即时代价是 −1,而爬回上课的概率只有 0.6,期望上不划算。Q*(刷机,学)=4.752,Q*(刷机,玩)=5.263。说明最优策略不是处处选看起来对的动作,必须算不能猜。
- 不必。Q 允许先做任意动作再按 π 走 —— 这正是它能用来比较不同动作的原因。
- 先检查 γ。γ 太小(如 0.5)时 10 步后奖励只剩 0.001 权重,模型根本看不见远处。有效视野 ≈ 1/(1−γ)。
🛑 可以停在这里
⚡ 走神救援
先记住这几件事
- V 评价状态,Q 评价在状态下先采取某动作后的期望回报。
- 贝尔曼关系把当前价值连接到即时奖励和下一步价值。
- 区分给定策略的价值与最优价值,核对终止条件和折扣再做迭代。
下一节 👉 04-动态规划.md