SARSA算法详解
SARSA 是最经典的 on-policy 时序差分(TD)控制算法之一,与 Q-learning 并列为强化学习入门阶段的双巨头。一、名字的由来(很重要!)SARSA = State – Action – Reward – State – Action它名字本身就描述了算法更新的核心五元组,正是因为它使用的是实际执行
作者:lh
SARSA 是最经典的 on-policy 时序差分(TD)控制算法之一,与 Q-learning 并列为强化学习入门阶段的双巨头。
一、名字的由来(很重要!)
SARSA = State – Action – Reward – State – Action
它名字本身就描述了算法更新的核心五元组,正是因为它使用的是实际执行的五元组来更新,而不是像 Q-learning 那样用最大值。
二、SARSA 与 Q-learning 最核心区别(对比表)
| 项目 | SARSA | Q-learning | 实际影响 |
|---|---|---|---|
| 策略类型 | on-policy | off-policy | SARSA 学的是实际执行策略的价值 |
| 更新公式使用的下一动作 | 实际执行的 a′ | max_a′ Q(s′,a′)(最优的) | SARSA 更保守,Q-learning 更激进 |
| 学到的是什么 | 实际策略 π 下的价值 | 最优策略下的价值(贪心策略) | SARSA 更安全但收敛慢,Q 更激进但易高估 |
| 探索策略影响 | 直接影响学到的 Q 值 | 不直接影响(只影响采样) | ε 很大时 SARSA 学到的价值会很差 |
| 对探索策略的敏感度 | 非常敏感 | 相对不敏感 | SARSA 需要更小心地设计探索衰减 |
| 经典环境表现 | 更稳定、更保守 | 学得更快,但容易过乐观 | Cliff Walking 经典对比案例 |
三、SARSA 核心更新公式(必须记住)
Q(s, a) ← Q(s, a) + α [ r + γ Q(s', a') − Q(s, a) ]
写成更直观的 TD-error 形式:
Q(s,a) ← Q(s,a) + α ⋅ δ
其中 δ = r + γ Q(s', a') − Q(s,a)
关键点:下一状态的价值用的是实际会执行的动作 a' 对应的 Q 值,而不是最大值。
四、SARSA 完整算法流程(伪代码)
Q ← 全0 或 小随机数
ε ← 1.0 # 初始探索率
for episode = 1 to 很多轮:
s = env.reset()
a = ε-greedy(s, Q, ε) # 第一次选动作
while not done:
s_next, r, done = env.step(a)
# 选择下一个动作(使用同一个策略!)
a_next = ε-greedy(s_next, Q, ε)
# SARSA 更新(注意这里用的是 a_next 而不是 max)
target = r + γ * Q[s_next, a_next] * (1 - done)
Q[s, a] += α * (target - Q[s, a])
# 状态与动作前进
s = s_next
a = a_next
# 衰减探索率
ε = max(ε_min, ε * decay)
五、经典对比实验:Cliff Walking(悬崖行走)
这是教科书级别的 SARSA vs Q-learning 对比环境:
环境特点:
- 网格世界,有一条很危险的悬崖(掉下去 -100)
- 目标在右下角
- 走悬崖边上最短,但掉下去惩罚极大
典型结果(ε-greedy 策略):
| 算法 | 学习后期策略倾向 | 平均回报(收敛后) | 解释 |
|---|---|---|---|
| Q-learning | 经常贴着悬崖边走(最短路径) | 较高但方差大 | 它学的是最优策略的价值,敢冒险 |
| SARSA | 倾向于远离悬崖走(绕远路) | 更稳定但回报低一些 | 它学的是实际策略的价值,知道自己会探索 |
结论:
Q-learning 更激进,愿意为了最优而冒险;
SARSA 更保守,因为它知道自己还会继续探索,所以不敢太靠近危险区域。
六、现代视角下的 SARSA(2025–2026)
- 纯表格 SARSA 基本只用于教学、小规模离散环境
- 深度版本(Deep SARSA)很少单独使用
- 但 on-policy 的思想在现代非常重要,主要体现在: PPO(目前最主流的深度强化学习算法)→ on-policy A2C/A3C → on-policy TRPO → on-policy 很多机器人、连续控制任务仍然偏爱 on-policy 家族(稳定性更好)
一句话总结现代地位:
虽然纯 SARSA 已经退居二线,但 on-policy 的思想和它带来的“保守性”、“稳定性”仍然是当今最主流深度强化学习算法(PPO家族)的核心哲学之一。
快速记忆口诀
Q-learning:“我学的是最优策略该拿多少分,哪怕我自己不一定做到”
SARSA:“我学的是我实际会干的策略能拿多少分,因为我真的会这么干”