跳到正文
AI 图鉴
06 强化学习进阶本域第 2 篇

价值函数与 Q 学习

不去猜「该怎么做」,而是先算出「每个选择值多少分」

定义

状态价值 V(s) 是在状态 s 下、遵循某策略所能获得的期望折扣回报;动作价值 Q(s, a) 在此基础上先固定一步动作。二者都满足贝尔曼方程——把当前价值写成「即时奖励 + 下一状态价值的折扣」这一自洽关系,从而可以用自举(bootstrap)的方式迭代逼近。Q 学习是其中最著名的一种:它直接逼近最优动作价值,且可以在探索的同时学习最优策略。

直观理解

把每个「局面」看成一个格子,格子里写着「从这里出发平均能赢多少分」。Q 学习做的事,就是不断用「这一步拿到的分 + 下一步那个格子里的估计值」去修正当前这个格子。因为下一步的估计也许还不对,但每一轮都让它们同时更像真实答案。这就像几只都还不准的钟互相校准——它们最终会一起走准,前提是别让任何一只钟乱跳。

图 1

Q 学习的一步更新:目标由「即时奖励」与「下一状态的最大 Q」构成,两者之差即 TD 误差,用以修正当前 Q

图 2

一个简单迷宫中学到的 Q 表:行是状态、列是动作,颜色越亮表示该动作的期望回报越高;出口一行的所有动作价值相同,因为一切都是「已到达」

工作原理

  1. 01

    贝尔曼方程:价值是自洽的

    V(s) = E[ r + γ V(s′) ]。理论上这是一个人人有份的巨大线性方程组——状态有多少就有多少未知数,直接求解不可行,但等式本身给出了迭代的入口。

  2. 02

    时序差分:用下一步修正这一步

    每走一步,就把「实际拿到的奖励 + γ × 对下一状态的旧估计」当作目标,用它与「对当前状态的旧估计」的差去更新。这个差值叫 TD 误差,是整个强化学习里最重要的学习信号。

  3. 03

    离策略:永远盯着最优

    Q 学习的更新取的是下一状态下所有动作的最大 Q 值,而不是智能体实际会执行的那个动作。于是它可以在随机探索的同时,学习最优策略的价值——行为与学习解耦,这正是它被称为「离策略」的原因,也是它样本效率高的来源。

  4. 04

    从表格到函数逼近

    状态少时,给每个 (s, a) 存一个数字就够了;状态一多(连续、或者像素输入),表格就爆炸了。于是改用参数化函数 Q(s, a; θ) 去逼近它。梯度下降的过程与监督学习几乎一样,区别只有一个:目标值本身也在随参数移动。

关键公式

Q(s, a) ← Q(s, a) + α [ r + γ · max_{a′} Q(s′, a′) − Q(s, a) ]
Q 学习更新式。方括号内即 TD 误差,α 为学习率;取 max 而非实际动作,正是「离策略」的体现。

应用场景

  • 经典控制与游戏:从 CartPole 到 Atari,Q 学习是离散动作任务的默认起点
  • 推荐与排序:把每一次曝光视为一步,Q 值给出面向长期收益的推送策略
  • 机器人导航:栅格地图上的最短路径可以被 Q 学习逐步逼近
  • 作为复杂算法的组件:Actor-Critic 里的 Critic 往往就是一个 Q 或 V 网络

常见误区

  • 高估偏差:max 操作会把带噪声的估计不断取到偏高的那一侧,使 Q 学习系统性地高估真实价值。Double Q-learning 通过两套估计互相纠偏来修正这一点。
  • 自举、离策略与函数逼近三者同时使用被称为「致命三角」,可能导致训练发散。这也正是深度 Q 网络需要经验回放与目标网络的原因。
  • 表格法只在状态可枚举时有效。把索引换成神经网络并不会自动解决样本效率问题——在同样的交互次数下,Q 学习仍可能远远落后于人类。

关键术语

状态价值 V(s)
从状态 s 出发、遵循策略 π 的期望折扣回报
动作价值 Q(s, a)
先固定第一步为 a 之后的期望折扣回报
TD 误差
「新估计的目标」与「旧估计」之差
离策略
行为策略与所学策略可以不同

延伸阅读