Expected SARSA
用下一状态行为策略下 Q 的期望替代单个采样动作。
学习目标
- 对下一动作求策略期望,降低动作采样造成的 TD 目标方差。
- 独立复核“按 ε-greedy 概率计算下一状态价值”的输入、计算和解释。
- 这是对下一动作的期望,不是对后继状态的完整模型期望。
为什么重要
对下一动作求策略期望,降低动作采样造成的 TD 目标方差。
学习前需要掌握
背景与问题
SARSA 每次只用一个采样的下一动作,两个相同后继状态可能因探索抽样得到很不同的目标。当动作集合不大且策略概率已知时,可以直接平均这些可能的动作价值,保留策略含义并减少这部分随机性。
概念定义
Expected SARSA 使用目标策略在下一状态的动作价值期望作为 bootstrap。目标策略等于行为策略时是 on-policy;二者不同时可以构造 off-policy 形式,但仍需分析状态分布、支持和函数近似风险。
直观理解
与其掷一次骰子决定本次“未来评分”,不如把所有面按出现概率加权。环境下一状态的随机性仍存在,消掉的是给定后继后的下一动作抽样。
核心原理
实现时先获得目标策略概率向量,再与 Q(s′,·) 做内积。ε-greedy 的贪心动作也可能在随机分支被选中,概率必须包含这部分;并列最优动作的分配规则也会影响期望。
它既不等于对所有动作简单平均,也不总等于最大值。均匀策略才对应简单平均,确定贪心目标且唯一最优时才退化到最大值。
计算完整期望的成本随动作数量增加。连续动作常需解析期望或采样近似,此时所谓降低方差的优势要与近似成本一起衡量。终止后仍必须将后续价值清零。
数学表达
Expected SARSA
下一动作价值取策略期望。
变量含义
G_t从时刻 t 开始的折扣累计回报。R_{t+1}执行动作后收到的下一步奖励。γ折扣因子,通常位于 [0,1)。
计算步骤
- 1下一状态的策略期望为 0.9×4+0.1×(−2)=3.4。
- 2Expected SARSA 目标为 0.9×3.4=3.06。
- 3最大值目标是 3.6;单次抽中第二动作的 SARSA 目标是 −1.8。
代码对应位置
示例 1按 ε-greedy 概率计算下一状态价值:策略期望为 3.400,Expected SARSA 目标为 3.060。
变量解释
| 变量 | 含义 |
|---|---|
G_t | 从时刻 t 开始的折扣累计回报。 |
R_{t+1} | 执行动作后收到的下一步奖励。 |
γ | 折扣因子,通常位于 [0,1)。 |
完整数值示例
按 ε-greedy 概率计算下一状态价值
已知条件
- 两个后继动作 Q 为 4 与 −2,ε=0.2。
- 唯一贪心动作概率 0.9,另一动作概率 0.1;奖励 0,折扣 0.9。
计算步骤
- 下一状态的策略期望为 0.9×4+0.1×(−2)=3.4。
- Expected SARSA 目标为 0.9×3.4=3.06。
- 最大值目标是 3.6;单次抽中第二动作的 SARSA 目标是 −1.8。
计算结果
策略期望为 3.400,Expected SARSA 目标为 3.060。
处理前后对比
- 这是对下一动作的期望,不是对后继状态的完整模型期望。
- 确定贪心目标可与 Q-learning 的 max 目标一致。
计算与实现步骤
- 得到 s′
- 计算 Σπ(a|s′)Q
- 构造 TD 目标
- 更新
代码实现
示例 1
按 ε-greedy 概率计算下一状态价值
example_01.py用途:策略期望为 3.400,Expected SARSA 目标为 3.060。
q_next = [4.0, -2.0]
probability = [0.9, 0.1]
expected_next = sum(p * q for p, q in zip(probability, q_next))
target = 0.0 + 0.9 * expected_next
print(f"expected_next={expected_next:.3f}, target={target:.3f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
策略期望为 3.400,Expected SARSA 目标为 3.060。
Step 1 · 1–5 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
q_next = [4.0, -2.0]
probability = [0.9, 0.1]
expected_next = sum(p * q for p, q in zip(probability, q_next))
target = 0.0 + 0.9 * expected_next
print(f"expected_next={expected_next:.3f}, target={target:.3f}")预期输出或运行结果
expected_next=3.400, target=3.060
常见错误 · 3 条
- 把 ε-greedy 的动作概率写成 1−ε 和 ε。
- 将策略加权期望错写为动作简单平均。
- 声称求期望消除了环境和奖励的全部随机性。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 把 ε-greedy 的动作概率写成 1−ε 和 ε。
- 将策略加权期望错写为动作简单平均。
- 声称求期望消除了环境和奖励的全部随机性。
扩展内容说明
本页数值均为解释机制的构造案例,不能解读为真实训练或基准性能。定义和适用条件参见 Sutton 与 Barto《Reinforcement Learning: An Introduction》(第 6 章)。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 把 ε-greedy 的动作概率写成 1−ε 和 ε。
- 将策略加权期望错写为动作简单平均。
- 声称求期望消除了环境和奖励的全部随机性。
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
Expected SARSA 一定是 on-policy 吗?
不是。是否 on-policy 取决于期望所用目标策略是否与数据行为策略一致;算法名称本身不能代替这一检查。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。