SARSA和Q-learning算法详细教程

作为典型的同策(sarsa)异策(q-learning)算法,这里从贝尔曼出发,介绍一下更新的过程中的一些详细的数学描述。

目录

  1. 强化学习基础概念
  2. 马尔可夫决策过程(MDP)
  3. 时序差分学习(TD Learning)
  4. SARSA算法
  5. Q-learning算法
  6. 算法对比分析
  7. 网格世界示例
  8. 收敛性分析
  9. 实际应用场景
  10. 总结

1. 强化学习基础概念

1.1 基本要素

强化学习是一种通过与环境交互来学习最优策略的机器学习方法。其核心要素包括:

  • 智能体(Agent): 学习和决策的主体
  • 环境(Environment): 智能体所处的外部世界
  • 状态(State): 描述环境当前情况的信息,记为 s ∈ S s \in S sS
  • 动作(Action): 智能体可以执行的行为,记为 a ∈ A ( s ) a \in A(s) aA(s)
  • 奖励(Reward): 环境对智能体动作的反馈,记为 r ∈ R r \in \mathbb{R} rR
  • 策略(Policy): 智能体的行为准则,记为 π ( a ∣ s ) \pi(a|s) π(as)

1.2 价值函数

状态价值函数 V π ( s ) V^\pi(s) Vπ(s):在策略 π \pi π 下,从状态 s s s 开始的期望累积奖励

V π ( s ) = E π [ ∑ t = 0 ∞ γ t R t + 1 ∣ S 0 = s ] V^\pi(s) = \mathbb{E}_{\pi}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1} | S_0 = s\right] Vπ(s)=Eπ[t=0γtRt+1S0=s]

动作价值函数 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a):在策略 π \pi π 下,从状态 s s s 执行动作 a a a 的期望累积奖励

Q π ( s , a ) = E π [ ∑ t = 0 ∞ γ t R t + 1 ∣ S 0 = s , A 0 = a ] Q^\pi(s,a) = \mathbb{E}_{\pi}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1} | S_0 = s, A_0 = a\right] Qπ(s,a)=Eπ[t=0γtRt+1S0=s,A0=a]

其中 γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ[0,1] 是折扣因子。

1.3 贝尔曼方程

状态价值函数的贝尔曼方程:
V π ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ V π ( s ′ ) ] V^\pi(s) = \sum_a \pi(a|s) \sum_{s',r} p(s',r|s,a)[r + \gamma V^\pi(s')] Vπ(s)=aπ(as)s,rp(s,rs,a)[r+γVπ(s)]

动作价值函数的贝尔曼方程:
Q π ( s , a ) = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ ∑ a ′ π ( a ′ ∣ s ′ ) Q π ( s ′ , a ′ ) ] Q^\pi(s,a) = \sum_{s',r} p(s',r|s,a)[r + \gamma \sum_{a'} \pi(a'|s') Q^\pi(s',a')] Qπ(s,a)=s,rp(s,rs,a)[r+γaπ(as)Qπ(s,a)]


2. 马尔可夫决策过程(MDP)

2.1 定义

马尔可夫决策过程是一个五元组 ( S , A , P , R , γ ) (S, A, P, R, \gamma) (S,A,P,R,γ)

  • S S S: 状态空间
  • A A A: 动作空间
  • P P P: 状态转移概率 P ( s ′ ∣ s , a ) P(s'|s,a) P(ss,a)
  • R R R: 奖励函数 R ( s , a , s ′ ) R(s,a,s') R(s,a,s)
  • γ \gamma γ: 折扣因子

2.2 马尔可夫性质

马尔可夫性质:未来状态只依赖于当前状态,与历史无关

P ( S t + 1 = s ′ ∣ S t = s t , A t = a t , S t − 1 = s t − 1 , . . . , S 0 = s 0 ) = P ( S t + 1 = s ′ ∣ S t = s t , A t = a t ) P(S_{t+1}=s'|S_t=s_t, A_t=a_t, S_{t-1}=s_{t-1}, ..., S_0=s_0) = P(S_{t+1}=s'|S_t=s_t, A_t=a_t) P(St+1=sSt=st,At=at,St1=st1,...,S0=s0)=P(St+1=sSt=st,At=at)

2.3 最优策略

最优状态价值函数
V ∗ ( s ) = max ⁡ π V π ( s ) V^*(s) = \max_\pi V^\pi(s) V(s)=πmaxVπ(s)

最优动作价值函数
Q ∗ ( s , a ) = max ⁡ π Q π ( s , a ) Q^*(s,a) = \max_\pi Q^\pi(s,a) Q(s,a)=πmaxQπ(s,a)

贝尔曼最优方程
V ∗ ( s ) = max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ V ∗ ( s ′ ) ] V^*(s) = \max_a \sum_{s',r} p(s',r|s,a)[r + \gamma V^*(s')] V(s)=amaxs,rp(s,rs,a)[r+γV(s)]
Q ∗ ( s , a ) = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ max ⁡ a ′ Q ∗ ( s ′ , a ′ ) ] Q^*(s,a) = \sum_{s',r} p(s',r|s,a)[r + \gamma \max_{a'} Q^*(s',a')] Q(s,a)=s,rp(s,rs,a)[r+γamaxQ(s,a)]


3. 时序差分学习(TD Learning)

3.1 基本思想

时序差分学习结合了蒙特卡洛方法和动态规划的优点:

  • 像蒙特卡洛方法一样,不需要环境模型
  • 像动态规划一样,可以在线学习,不需要等到回合结束

3.2 TD误差

TD误差定义为:
δ t = R t + 1 + γ V ( S t + 1 ) − V ( S t ) \delta_t = R_{t+1} + \gamma V(S_{t+1}) - V(S_t) δt=Rt+1+γV(St+1)V(St)

这个误差衡量了当前估计与实际观察到的奖励加上下一状态估计价值之间的差异。

3.3 TD(0)更新规则

V ( S t ) ← V ( S t ) + α [ R t + 1 + γ V ( S t + 1 ) − V ( S t ) ] V(S_t) \leftarrow V(S_t) + \alpha [R_{t+1} + \gamma V(S_{t+1}) - V(S_t)] V(St)V(St)+α[Rt+1+γV(St+1)V(St)]

其中 α \alpha α 是学习率。


4. SARSA算法

4.1 算法思想

SARSA (State-Action-Reward-State-Action) 是一种**在策略(on-policy)**的时序差分控制算法。它直接学习当前策略的动作价值函数。

4.2 数学推导

4.2.1 更新公式推导

从贝尔曼方程出发:
Q π ( s , a ) = E [ R t + 1 + γ Q π ( S t + 1 , A t + 1 ) ∣ S t = s , A t = a ] Q^\pi(s,a) = \mathbb{E}[R_{t+1} + \gamma Q^\pi(S_{t+1}, A_{t+1}) | S_t = s, A_t = a] Qπ(s,a)=E[Rt+1+γQπ(St+1,At+1)St=s,At=a]

使用样本来近似期望:
Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ Q ( S t + 1 , A t + 1 ) − Q ( S t , A t ) ] Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha [R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t, A_t)] Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]

4.2.2 TD误差

SARSA的TD误差为:
δ t = R t + 1 + γ Q ( S t + 1 , A t + 1 ) − Q ( S t , A t ) \delta_t = R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t, A_t) δt=Rt+1+γQ(St+1,At+1)Q(St,At)

4.3 算法流程

算法:SARSA
输入:步长α ∈ (0,1],小的ε > 0
初始化:对所有s ∈ S, a ∈ A(s),任意初始化Q(s,a),除了Q(terminal, ·) = 0

对每个回合:
    初始化S
    根据Q导出的策略选择A(如ε-贪心)
    对回合中的每一步:
        执行动作A,观察R,S'
        根据Q导出的策略从S'选择A'
        Q(S,A) ← Q(S,A) + α[R + γQ(S',A') - Q(S,A)]
        S ← S'; A ← A'
    直到S是终止状态

4.4 ε-贪心策略

π ( a ∣ s ) = { 1 − ε + ε ∣ A ( s ) ∣ if  a = arg ⁡ max ⁡ a ′ Q ( s , a ′ ) ε ∣ A ( s ) ∣ otherwise \pi(a|s) = \begin{cases} 1 - \varepsilon + \frac{\varepsilon}{|A(s)|} & \text{if } a = \arg\max_{a'} Q(s,a') \\ \frac{\varepsilon}{|A(s)|} & \text{otherwise} \end{cases} π(as)={1ε+A(s)εA(s)εif a=argmaxaQ(s,a)otherwise

4.5 数值示例

考虑一个简单的2×2网格世界:

[S] [ ]
[ ] [G]
  • S: 起始状态 (0,0)
  • G: 目标状态 (1,1)
  • 动作:上、下、左、右
  • 奖励:到达目标+10,其他-1
  • γ = 0.9, α = 0.1, ε = 0.1

初始化:所有Q(s,a) = 0

第一步

  • 状态:S = (0,0)
  • 选择动作:A = 右 (ε-贪心)
  • 执行动作:R = -1, S’ = (0,1)
  • 选择下一动作:A’ = 下
  • 更新:Q((0,0), 右) = 0 + 0.1×(-1 + 0.9×0 - 0) = -0.1

继续迭代


5. Q-learning算法

5.1 算法思想

Q-learning是一种**离策略(off-policy)*的时序差分控制算法。它学习最优动作价值函数Q,而不依赖于当前遵循的策略。

5.2 数学推导

5.2.1 更新公式推导

从贝尔曼最优方程出发:
Q ∗ ( s , a ) = E [ R t + 1 + γ max ⁡ a ′ Q ∗ ( S t + 1 , a ′ ) ∣ S t = s , A t = a ] Q^*(s,a) = \mathbb{E}[R_{t+1} + \gamma \max_{a'} Q^*(S_{t+1}, a') | S_t = s, A_t = a] Q(s,a)=E[Rt+1+γamaxQ(St+1,a)St=s,At=a]

使用样本来近似期望:
Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ max ⁡ a ′ Q ( S t + 1 , a ′ ) − Q ( S t , A t ) ] Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha [R_{t+1} + \gamma \max_{a'} Q(S_{t+1}, a') - Q(S_t, A_t)] Q(St,At)Q(St,At)+α[Rt+1+γamaxQ(St+1,a)Q(St,At)]

5.2.2 TD误差

Q-learning的TD误差为:
δ t = R t + 1 + γ max ⁡ a ′ Q ( S t + 1 , a ′ ) − Q ( S t , A t ) \delta_t = R_{t+1} + \gamma \max_{a'} Q(S_{t+1}, a') - Q(S_t, A_t) δt=Rt+1+γamaxQ(St+1,a)Q(St,At)

5.3 算法流程

算法:Q-learning
输入:步长α ∈ (0,1],小的ε > 0
初始化:对所有s ∈ S, a ∈ A(s),任意初始化Q(s,a),除了Q(terminal, ·) = 0

对每个回合:
    初始化S
    对回合中的每一步:
        根据Q导出的策略从S选择A(如ε-贪心)
        执行动作A,观察R,S'
        Q(S,A) ← Q(S,A) + α[R + γ max_a Q(S',a) - Q(S,A)]
        S ← S'
    直到S是终止状态

5.4 关键特性

  1. 离策略性:学习的是最优策略,而行为策略可以是探索性的
  2. 最大化操作:使用 max ⁡ a ′ Q ( S t + 1 , a ′ ) \max_{a'} Q(S_{t+1}, a') maxaQ(St+1,a) 而不是实际选择的动作
  3. 收敛性:在适当条件下收敛到最优Q函数

5.5 数值示例

使用相同的2×2网格世界:

第一步

  • 状态:S = (0,0)
  • 选择动作:A = 右 (ε-贪心)
  • 执行动作:R = -1, S’ = (0,1)
  • 更新:Q((0,0), 右) = 0 + 0.1×(-1 + 0.9×max{Q((0,1), a)} - 0)
  • 由于所有Q值初始为0:Q((0,0), 右) = -0.1

关键差异:Q-learning使用max操作,而SARSA使用实际选择的动作。


6. 算法对比分析

6.1 核心差异

特性SARSAQ-learning
策略类型在策略(On-policy)离策略(Off-policy)
更新公式 R + γ Q ( S ′ , A ′ ) R + \gamma Q(S', A') R+γQ(S,A) R + γ max ⁡ a ′ Q ( S ′ , a ′ ) R + \gamma \max_{a'} Q(S', a') R+γmaxaQ(S,a)
学习目标当前策略的价值最优策略的价值
探索影响受当前策略影响不受行为策略影响
收敛速度相对较慢相对较快
安全性更保守更激进

6.2 数学表达对比

SARSA更新
Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ Q ( S t + 1 , A t + 1 ) − Q ( S t , A t ) ] Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha [R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t, A_t)] Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]

Q-learning更新
Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ max ⁡ a ′ Q ( S t + 1 , a ′ ) − Q ( S t , A t ) ] Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha [R_{t+1} + \gamma \max_{a'} Q(S_{t+1}, a') - Q(S_t, A_t)] Q(St,At)Q(St,At)+α[Rt+1+γamaxQ(St+1,a)Q(St,At)]

6.3 悬崖漫步问题

考虑经典的悬崖漫步问题:

[S] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [G]
[C] [C] [C] [C] [C] [C] [C] [C] [C] [C] [C] [ ]
  • S: 起始位置
  • G: 目标位置
  • C: 悬崖(掉落奖励-100)

SARSA行为:学习安全路径(远离悬崖)
Q-learning行为:学习最优路径(沿悬崖边缘)


7. 网格世界示例

7.1 问题设置

考虑一个4×4的网格世界:

[S] [ ] [ ] [G]
[ ] [X] [ ] [ ]
[ ] [ ] [X] [ ]
[ ] [ ] [ ] [ ]
  • S: 起始状态 (0,0)
  • G: 目标状态 (0,3),奖励 +10
  • X: 障碍物,不可通过
  • 其他状态奖励 -1
  • 动作:上、下、左、右
  • 参数:γ = 0.9, α = 0.1, ε = 0.1

7.2 SARSA详细执行过程

初始化

Q表初始化为0(除终止状态)
当前策略:ε-贪心

回合1

  1. S₀ = (0,0), 选择A₀ = 右
  2. 执行动作:R₁ = -1, S₁ = (0,1)
  3. 选择A₁ = 右
  4. 更新:Q((0,0), 右) = 0 + 0.1×(-1 + 0.9×0 - 0) = -0.1
  5. S₁ = (0,1), A₁ = 右, R₂ = -1, S₂ = (0,2)
  6. 选择A₂ = 右
  7. 更新:Q((0,1), 右) = 0 + 0.1×(-1 + 0.9×0 - 0) = -0.1
  8. 继续直到到达目标…

多回合后的Q表收敛

状态(0,0): 右=-0.729, 下=-0.81, 上=-0.9, 左=-0.9
状态(0,1): 右=-0.81, 下=-0.729, 上=-0.9, 左=-0.9
状态(0,2): 右=0, 下=-0.81, 上=-0.9, 左=-0.9
...

7.3 Q-learning详细执行过程

回合1

  1. S₀ = (0,0), 选择A₀ = 右
  2. 执行动作:R₁ = -1, S₁ = (0,1)
  3. 更新:Q((0,0), 右) = 0 + 0.1×(-1 + 0.9×max{Q((0,1), a)} - 0) = -0.1
  4. S₁ = (0,1), 选择A₁ = 右
  5. 执行动作:R₂ = -1, S₂ = (0,2)
  6. 更新:Q((0,1), 右) = 0 + 0.1×(-1 + 0.9×max{Q((0,2), a)} - 0) = -0.1
  7. 继续…

关键差异:Q-learning在更新时总是使用下一状态的最大Q值,而SARSA使用实际选择的动作对应的Q值。

7.4 收敛结果比较

经过足够多的训练回合后:

SARSA最终策略

  • 更保守,可能选择较安全的路径
  • 受探索策略影响,路径可能不是严格最优

Q-learning最终策略

  • 更激进,倾向于选择最短路径
  • 不受行为策略影响,收敛到真正的最优策略

8. 收敛性分析

8.1 SARSA收敛性

定理:在以下条件下,SARSA算法收敛到最优策略:

  1. 有限MDP:状态和动作空间有限
  2. 策略条件:所有状态-动作对被无限次访问
  3. 学习率条件
    • ∑ t = 1 ∞ α t = ∞ \sum_{t=1}^{\infty} \alpha_t = \infty t=1αt=
    • ∑ t = 1 ∞ α t 2 < ∞ \sum_{t=1}^{\infty} \alpha_t^2 < \infty t=1αt2<

证明思路

  • SARSA是随机近似算法的一个实例
  • 满足Robbins-Monro条件
  • 利用随机近似理论证明收敛性

8.2 Q-learning收敛性

定理:在以下条件下,Q-learning算法以概率1收敛到最优Q函数:

  1. 有限MDP:状态和动作空间有限
  2. 访问条件:所有状态-动作对被无限次访问
  3. 学习率条件:同SARSA

证明要点

  • Q-learning更新是收缩映射
  • 收缩系数为γ
  • 利用Banach不动点定理

8.3 收敛速度分析

理论分析

  • Q-learning通常收敛更快,因为直接学习最优策略
  • SARSA收敛速度依赖于当前策略的探索程度

实验验证

# 伪代码:收敛速度比较
for episode in range(1000):
    # SARSA
    sarsa_error = compute_bellman_error(Q_sarsa, optimal_Q)
    
    # Q-learning  
    qlearning_error = compute_bellman_error(Q_qlearning, optimal_Q)
    
    # 通常观察到:qlearning_error下降更快

9. 实际应用场景

9.1 SARSA适用场景

  1. 安全关键系统

    • 自动驾驶:需要保守的驾驶策略
    • 医疗决策:错误代价极高
    • 金融交易:需要风险控制
  2. 在线学习

    • 实时系统中需要边学习边执行
    • 不能承受过度探索的风险

数学表达
当环境中存在"陷阱"状态时,SARSA的保守性体现为:
E [ Q S A R S A ( s , a ) ] ≤ E [ Q o p t i m a l ( s , a ) ] \mathbb{E}[Q^{SARSA}(s,a)] \leq \mathbb{E}[Q^{optimal}(s,a)] E[QSARSA(s,a)]E[Qoptimal(s,a)]

9.2 Q-learning适用场景

  1. 离线学习

    • 游戏AI:可以通过大量试错学习
    • 仿真环境:错误成本较低
    • 资源分配:追求最优解
  2. 探索导向任务

    • 路径规划:寻找最短路径
    • 参数优化:寻找全局最优

数学表达
Q-learning的最优性体现为:
lim ⁡ t → ∞ Q t ( s , a ) = Q ∗ ( s , a ) \lim_{t \to \infty} Q_t(s,a) = Q^*(s,a) tlimQt(s,a)=Q(s,a)

9.3 混合策略

在实际应用中,可以结合两种算法的优点:

# 伪代码:自适应算法选择
if safety_critical:
    use_sarsa()
else:
    use_qlearning()
    
# 或者动态切换
if exploration_phase:
    use_qlearning()  # 快速学习
else:
    use_sarsa()      # 安全执行

10. 总结

10.1 核心要点

  1. SARSA

    • 在策略算法,学习当前策略的价值
    • 更新公式: Q ( s , a ) ← Q ( s , a ) + α [ r + γ Q ( s ′ , a ′ ) − Q ( s , a ) ] Q(s,a) \leftarrow Q(s,a) + \alpha[r + \gamma Q(s',a') - Q(s,a)] Q(s,a)Q(s,a)+α[r+γQ(s,a)Q(s,a)]
    • 特点:保守、安全、受探索策略影响
  2. Q-learning

    • 离策略算法,学习最优策略的价值
    • 更新公式: Q ( s , a ) ← Q ( s , a ) + α [ r + γ max ⁡ a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ] Q(s,a) \leftarrow Q(s,a) + \alpha[r + \gamma \max_{a'} Q(s',a') - Q(s,a)] Q(s,a)Q(s,a)+α[r+γmaxaQ(s,a)Q(s,a)]
    • 特点:激进、最优、不受行为策略影响

10.2 选择指南

考虑因素选择SARSA选择Q-learning
安全性要求
收敛速度可接受较慢需要快速
探索成本
最优性要求可接受次优必须最优
环境类型真实环境仿真环境

10.3 扩展方向

  1. 函数近似:处理大状态空间
  2. 多步方法:SARSA(λ)和Q(λ)
  3. 深度强化学习:DQN、DDQN等
  4. 策略梯度方法:Actor-Critic算法

10.4 数学本质

两种算法的核心都是通过时序差分学习来逼近贝尔曼方程:

  • SARSA逼近策略评估的贝尔曼方程
  • Q-learning逼近最优控制的贝尔曼方程

这种差异导致了它们在行为和应用上的根本不同,理解这一点是掌握强化学习的关键。


参考文献

  1. Sutton, R. S., & Barto, A. G. (2018). Reinforcement learning: An introduction.
  2. Watkins, C. J., & Dayan, P. (1992). Q-learning. Machine learning, 8(3-4), 279-292.
  3. Rummery, G. A., & Niranjan, M. (1994). On-line Q-learning using connectionist systems.
  4. Singh, S., et al. (2000). Convergence results for single-step on-policy reinforcement-learning algorithms.

本教程提供了SARSA和Q-learning算法的完整数学分析和实践指导。通过理论推导、数值示例和应用分析,帮助读者深入理解这两种重要的强化学习算法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白云千载尽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值