🏠 总目录📚 本教程 03 · 价值函数与贝尔曼
📑 本页目录(点开跳转)

03 · 价值函数与贝尔曼方程

30 分钟 | ⭐⭐ 整个强化学习就建立在这一章上


🎯 一句话

价值函数 = 「从这个局面出发,往后总共能拿多少分」。 它一举解决了第 1 章那个信用分配难题 —— 因为有了它,你不用等到结局,就能判断当前这一步好不好。

ss′₁s′₂r + γ·V(s′₁)r + γ·V(s′₂)V(现在) = R(马上到手) + γ · V(下一步)整个强化学习就建立在这一个递归上 —— 第 4-8 章都是在用不同办法解它不用把所有未来展开,只要知道「邻居值多少钱」
不用把所有未来展开(那会指数爆炸),只要知道邻居值多少钱,就能算出这里值多少钱。⭐ 复杂度从指数降到多项式,全靠这一个递归。

💰 一、两个价值函数

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 有用得多

   有 V:知道每个局面值多少钱
         → 但要选动作,还得知道【做了这个动作会到哪】
         → 需要环境模型 P  💀

   有 Q:直接查表 —— 哪个动作的 Q 大就选哪个
         → 完全不需要知道环境规则  ⭐⭐

这就是为什么 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]$$

别被吓到,它只说了一句话

这个状态的价值
V(现在) = R(马上) + γ · V(下一步) ⭐ 就这个

💡 人话翻译

「这里值多少钱」= 「立刻到手多少」+ 打了折的「下一站值多少钱」。

🎯 为什么这个递归关系是革命性的

   ❌ 没有贝尔曼方程:
      要算 V(s),得把从 s 出发的【所有可能未来】都展开
      → 分支指数爆炸,算不动

   ✅ 有贝尔曼方程:
      V(s) 只依赖【它的邻居】V(s')
      → 变成一个方程组,可以迭代求解  ⭐
      → 复杂度从指数降到多项式

🔑 这就是第 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(上课) = 2 + 0.9 × (0.8·V(上课) + 0.2·0)
           = 2 + 0.72·V(上课)
   → V(上课)·(1 − 0.72) = 2
   → V(上课) = 2 / 0.28 = 7.14   ⭐

   V(刷机) = −1 + 0.9 × (0.6·V(上课) + 0.4·V(刷机))
           = −1 + 0.9 × (0.6×7.14 + 0.4·V(刷机))
           = −1 + 3.86 + 0.36·V(刷机)
   → V(刷机)·0.64 = 2.86
   → V(刷机) = 4.46

再算「一直玩」这个策略

   V(刷机) = 1 + 0.9 × (0.9·V(刷机) + 0.1·0)
           = 1 + 0.81·V(刷机)
   → V(刷机) = 1 / 0.19 = 5.26

   V(上课) = 1 + 0.9 × V(刷机) = 1 + 4.74 = 5.74

四个纯策略全部算出来(代码实跑,非估算):

上课的动作 刷机的动作 V(上课) V(刷机)
7.14 4.46
7.14 5.26
−1.69 💀 −2.99 💀
5.74 5.26

再用价值迭代求出 Q*

   V*(上课) = 7.1429      V*(刷机) = 5.2632

   上课:  Q*(学) = 7.143   Q*(玩) = 5.737   → 最优 =【学】
   刷机:  Q*(学) = 4.752   Q*(玩) = 5.263   → 最优 =【玩】⭐

💡 看出什么了吗在「上课」该学,在「刷手机」反而该玩。 因为从刷手机状态"学"的即时代价是 −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 允许你先做任意动作,之后再按 π —— 这正是它能用来比较动作的原因
「γ 只是个超参数」 γ 改变最优策略本身。γ 小 → 短视;γ 大 → 长远。它是问题定义的一部分

💡 关于第三点的一个例子

   γ = 0.5 时,10 步后的奖励只剩 0.5¹⁰ ≈ 0.001 的权重
   → 模型基本看不见 10 步之后的事

   同一个迷宫,γ=0.5 可能学出「原地打转吃眼前的糖」,
   γ=0.99 才会学出「绕远路去终点」

   ⭐ 学不出长期行为时,先检查 γ,再怀疑算法

🔗 七、和站内其他章的关系

相关的地方 这里的位置
第 1 章的信用分配问题 价值函数就是它的答案
第 1 章的折扣因子 γ 这里给了它精确的作用
数学原理 01 期望 V 和 Q 都是期望
动态规划(算法课) 第 4 章会用它解贝尔曼方程

✅ 检查点

  1. V 和 Q 分别是什么?为什么说 Q 比 V 有用得多?
  2. 贝尔曼方程用一句话说是什么?
  3. 为什么这个递归关系是革命性的?(对比没有它的情况)
  4. 推导的关键一步是什么?
  5. 贝尔曼期望方程和最优方程唯一的区别是什么?
  6. 有了 Q* 之后,最优策略怎么得到?这句话为什么重要?
  7. 手算那个例子:为什么在「刷手机」状态最优动作反而是「玩」?Q* 的两个数各是多少?
  8. Q(s,a) 里的动作 a 必须是策略选的吗?为什么这一点关键?
  9. 学不出长期行为时该先检查什么?
👀 答案
  1. V(s)=从状态 s 出发的期望累积奖励;Q(s,a)=在 s 先做 a、之后按 π 走的期望累积奖励。Q 更有用因为直接 argmax 就能选动作,不需要知道环境模型 P;用 V 选动作还得知道"做了这动作会到哪"。
  2. V(现在) = R(马上) + γ · V(下一步)。这个状态的价值 = 立刻到手的奖励 + 打折的下一状态价值。
  3. 没有它要展开所有可能未来,分支指数爆炸;有了它 V(s) 只依赖邻居 V(s'),变成方程组可迭代求解,复杂度从指数降到多项式
  4. G_t = r_{t+1} + γG_{t+1} —— 把 γ 提出来,发现回报本身就是递归的。
  5. 期望方程按策略加权平均 Σπ(a|s)·[...];最优方程直接取 max_a [...]
  6. π*(s) = argmax_a Q*(s,a)。重要是因为:求解 RL = 求出 Q*,拿到 Q* 后策略是免费的。第 4-8 章全都在用不同办法逼近 Q*。
  7. 因为从刷手机"学"的即时代价是 −1,而爬回上课的概率只有 0.6,期望上不划算Q*(刷机,学)=4.752,Q*(刷机,玩)=5.263。说明最优策略不是处处选看起来对的动作,必须算不能猜。
  8. 不必。Q 允许先做任意动作再按 π 走 —— 这正是它能用来比较不同动作的原因
  9. 先检查 γ。γ 太小(如 0.5)时 10 步后奖励只剩 0.001 权重,模型根本看不见远处。有效视野 ≈ 1/(1−γ)。

🛑 可以停在这里

走神救援

⭐⭐整个RL建立在这一章V(s)=从s出发的期望累积奖励;Q(s,a)=先做a再按π走。⭐Q比V有用得多——直接argmax就能选动作,不需要环境模型P(V选动作还得知道"做了会到哪")。这就是Q-learning能在完全不懂环境时学会玩游戏的原因。⭐⭐贝尔曼方程一句话:V(现在)=R(马上)+γ·V(下一步)。革命性在于:没它要展开所有未来(指数爆炸),有它 V(s) 只依赖邻居 → 变成方程组可迭代解这就是信用分配的答案——不用知道哪步错了,只要知道每个局面值多少钱。推导关键一步:G_t = r_{t+1} + γG_{t+1}(回报本身递归)。最优方程只把 Σπ(a|s) 换成 max_a。⭐⭐π*(s)=argmax Q*(s,a) → 求解RL就是求Q*,拿到后策略免费;第4-8章全在用不同办法逼近Q*。手算例子:上课该学、刷手机反而该玩(学的即时代价−1、爬回去概率只有0.6,不划算)——最优策略必须算不能猜。⚠️学不出长期行为先检查γ(γ=0.5时10步后只剩0.001权重)。

下一节 👉 04-动态规划.md

打卡记录保存在你的浏览器里,首页能看到总进度