第3章:策略评估基础

策略评估,说白了就是回答一个问题:「我这个策略到底好不好?」

我刚开始学强化学习时,觉得这步挺无聊的。不就是算个分数嘛?后来在项目中吃过亏才明白——策略评估是整个算法优化的基石。你连当前策略有多烂都不知道,怎么改进?

什么是策略评估

策略评估(Policy Evaluation)的目标很单纯:给定一个策略 π,计算出它对应的价值函数。这个价值函数告诉我们,在策略 π 下,每个状态或每个动作到底「值多少」。

举个例子。你玩超级玛丽,策略是「见到敌人就跳」。策略评估要回答:在某个关卡位置,这个策略能让你得多少分?

核心定义:策略评估就是计算策略 π 下的状态值函数 Vπ(s) 或动作值函数 Qπ(s,a)。

我个人习惯把策略评估分成两类:

  • 精确评估:用贝尔曼方程直接求解,适合小规模问题
  • 近似评估:用采样和迭代逼近,适合大规模或未知环境

状态值函数 V(s) 与动作值函数 Q(s,a)

这两个概念,我建议你放在一起理解。

状态值函数 Vπ(s):从状态 s 出发,按照策略 π 行动,能获得的期望累积回报。

公式长这样:

V^π(s) = E_π[ G_t | S_t = s ]
       = E_π[ R_{t+1} + γ·R_{t+2} + γ²·R_{t+3} + ... | S_t = s ]

动作值函数 Qπ(s,a):在状态 s 执行动作 a,之后按照策略 π 行动,能获得的期望累积回报。

Q^π(s,a) = E_π[ G_t | S_t = s, A_t = a ]

两者的关系很简单:

V^π(s) = Σ_a π(a|s) · Q^π(s,a)

嗯,这里要注意:V(s) 是对所有动作的 Q 值按策略概率加权平均。说白了,V 是「状态的平均水平」,Q 是「具体动作的得分」。

我的经验:在项目中,我通常先算 Q 值再推导 V 值。因为 Q 值能直接指导动作选择,调试起来更直观。有一次做机器人导航,V 值看起来不错,但 Q 值一查才发现某个动作的方差特别大——差点踩坑。

贝尔曼期望方程

贝尔曼期望方程是策略评估的核心工具。它把当前状态的价值,和下一状态的价值联系起来。

对于 V 函数:

V^π(s) = Σ_a π(a|s) · [ R(s,a) + γ · Σ_s' P(s'|s,a) · V^π(s') ]

对于 Q 函数:

Q^π(s,a) = R(s,a) + γ · Σ_s' P(s'|s,a) · Σ_a' π(a'|s') · Q^π(s',a')

你想想看,这两个方程其实在说同一件事:当前的价值 = 立即回报 + 未来价值的折扣和

我曾经在做一个棋类 AI 时,把贝尔曼方程写错了符号。结果迭代了 100 轮,V 值越算越小。排查了两天才发现是 γ 写成了负号。嗯,这种低级错误,犯过一次就记住了。

避坑指南:贝尔曼方程假设环境是马尔可夫决策过程(MDP)。如果你的环境有长期依赖或部分可观测,直接用会出问题。我曾经在股票交易场景中吃过这个亏——历史价格序列不是 MDP,需要做状态扩展。

蒙特卡洛策略评估

蒙特卡洛方法,说白了就是「多跑几次,取平均」。

具体做法:

  1. 从初始状态开始,用策略 π 生成完整的一条轨迹
  2. 记录每个状态 s 对应的累积回报 G_t
  3. 重复 N 次,对每个状态取平均回报
V(s) ≈ (1/N) · Σ_i G_t^(i)

蒙特卡洛的优点是简单、无偏。但缺点也很明显:

  • 必须等到整条轨迹结束才能更新
  • 方差大,需要很多样本
  • 不适用于持续任务(没有终止状态)

适用场景:回合制游戏、棋类、有明确终点的控制任务。我在做 Atari 游戏时,蒙特卡洛方法效果不错,因为每局游戏就是一个完整回合。

时序差分学习(TD(0))

TD 学习是蒙特卡洛和动态规划的混合体。它不需要等到轨迹结束,每走一步就更新一次。

TD(0) 的更新公式:

V(s_t) ← V(s_t) + α · [ r_{t+1} + γ · V(s_{t+1}) - V(s_t) ]

其中 α 是学习率,方括号里的部分叫 TD 误差

为什么 TD 比蒙特卡洛好?我举个例子:

  • 蒙特卡洛:你要跑完整个迷宫,才知道刚才那个岔路口选对了没
  • TD:你走一步,就能根据下一步的估值,修正当前步的判断

说白了,TD 是「边走边学」,蒙特卡洛是「跑完再复盘」。

我的建议:初学者先从 TD(0) 入手。它收敛快、方差小,而且容易扩展到更高级的算法(如 Q-learning、SARSA)。我在做自动驾驶决策模块时,TD 方法比蒙特卡洛快了 10 倍以上。

三种方法对比

方法 更新时机 偏差 方差 适用场景
贝尔曼方程 迭代求解 无偏(精确) 小规模、已知模型
蒙特卡洛 回合结束 无偏 回合制任务
TD(0) 每步更新 有偏 持续任务、在线学习

本章知识体系

下面这张图,是我自己梳理的策略评估知识结构。建议你保存下来,学完本章后对照着回顾一遍。

策略评估知识体系 策略评估 什么是策略评估 价值函数 贝尔曼期望方程 V(s) 状态值函数 Q(s,a) 动作值函数 精确评估(动态规划) 近似评估(采样) 蒙特卡洛方法 时序差分 TD(0) 迭代法求解 线性方程组求解 核心思想:用价值函数量化策略好坏 贝尔曼方程 → 蒙特卡洛 → TD(0) 逐步演进

这张图把本章的核心内容串起来了。从上往下看,策略评估先分清楚「是什么」和「用什么衡量」,然后展开到具体的数学工具和算法实现。我个人觉得,把这张图记在脑子里,比死记公式有用得多。

本章小结:

  • 策略评估就是计算策略 π 下的 V(s) 或 Q(s,a)
  • 贝尔曼期望方程是评估的理论基础
  • 蒙特卡洛方法无偏但方差大,适合回合制任务
  • TD(0) 每步更新,方差小,是实际项目中的首选

公众号:蓝海资料掘金营,微信deep3321