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 最核心区别(对比表)

项目SARSAQ-learning实际影响
策略类型on-policyoff-policySARSA 学的是实际执行策略的价值
更新公式使用的下一动作实际执行的 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)

  1. 纯表格 SARSA 基本只用于教学、小规模离散环境
  2. 深度版本(Deep SARSA)很少单独使用
  3. 但 on-policy 的思想在现代非常重要,主要体现在: PPO(目前最主流的深度强化学习算法)→ on-policy A2C/A3C → on-policy TRPO → on-policy 很多机器人、连续控制任务仍然偏爱 on-policy 家族(稳定性更好)

一句话总结现代地位:

虽然纯 SARSA 已经退居二线,但 on-policy 的思想和它带来的“保守性”、“稳定性”仍然是当今最主流深度强化学习算法(PPO家族)的核心哲学之一。

快速记忆口诀

Q-learning:“我学的是最优策略该拿多少分,哪怕我自己不一定做到”
SARSA:“我学的是我实际会干的策略能拿多少分,因为我真的会这么干”