第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,需要做状态扩展。
蒙特卡洛策略评估
蒙特卡洛方法,说白了就是「多跑几次,取平均」。
具体做法:
- 从初始状态开始,用策略 π 生成完整的一条轨迹
- 记录每个状态 s 对应的累积回报 G_t
- 重复 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) 每步更新,方差小,是实际项目中的首选
公众号:蓝海资料掘金营,微信deep3321