强化学习核心是智能体agent通过与环境交互,学习如何选择动作以最大化累积奖励。

值函数value function是评估状态或状态-动作对优劣的工具,其中动作值函数Q(s,a)表示在状态 s下采取动作a后,遵循某策略所能获得的期望累积回报。

时间差分学习Temporal-Difference Learning,即TD,结合了蒙特卡洛方法和动态规划,通过当前奖励和下一状态的估计值来更新当前状态的估计值,不需要等待完整轨迹结束。

Sarsa 算法正是TD方法在动作值函数学习中的典型代表。

这里尝试基于网络资料,探索和学习Sarsa算法。

1 Sarsa概述

1.1 概念

Sarsa名字来源于更新过程所涉及的五个元素:

State:当前状态

Action:当前动作

Reward:获得的奖励

State:下一状态

Action:下一动作

它是一个on-policy的TD控制算法,评估和改进的正是当前正在执行探索的策略。

1.2 更新公式

Sarsa的更新公式如下:

Q(s,a) \leftarrow Q(s,a) + \alpha \left[ r + \gamma Q(s',a') - Q(s,a) \right]

其中:

-\alpha 是学习率(步长);

- \gamma是折扣因子;

- r是在状态s下执行动作a后得到的即时奖励;

- s'是执行动作后到达的下一个状态;

- a'是在下一状态s'下根据当前策略,例如\epsilon-greedy,选择的动作。

关键点在于,更新使用的目标值r + \gamma Q(s',a')中的a'正是实际将要执行的下一动作。

这使得 Sarsa 紧密依赖于当前策略,反映了on-policy策略学习的特性。

2 Sarsa原理

2.1 Sarsa原理

Sarsa的推导基于Bellman方程对于动作值函数的最优性条件。

在策略\pi下,动作值函数满足Bellman 期望方程:

Q^{\pi}(s,a) = \mathbb{E}_{\pi} \left[ r + \gamma Q^{\pi}(s',a') \mid s,a \right]

然而,在无模型环境中,我们无法直接计算期望,因此采用采样更新。

Sarsa 使用单步样本(s,a,r,s',a')来近似期望,从而得到更新规则:

Q(s,a) \leftarrow Q(s,a) + \alpha \left( r + \gamma Q(s',a') - Q(s,a) \right)

这实际上是增量式地最小化 TD 误差\delta = r + \gamma Q(s',a') - Q(s,a)

与 Q-learning 不同,Q-learning 的目标值中使用的是下一状态的最大 Q 值 \max_a Q(s',a),这是一个off-policy的更新,因为它独立于实际遵循的策略。

Sarsa 的目标值依赖于实际采取的下一动作a',因此更新的方向与当前策略一致。

2.2 为什么是On-Policy策略

因为要生成更新所需的元组(s,a,r,s',a'),智能体必须在状态s时根据策略选择动作a,然后在状态s'时再根据同一策略选择动作a'

换句话说,更新所用的目标值依赖于策略本身,且该策略同时控制着行为。

因此,Sarsa 学习的是当前策略的值函数,并在此基础上改进策略。

3 Sarsa 训练

3.1 Sarsa训练流程

Sarsa 的训练通常采用 \epsilon-greedy策略进行探索与利用的平衡。

算法流程如下,以表格型 Q 函数为例:

1. 初始化:

对于所有状态s和动作a,任意初始化Q(s,a),通常设为零或小随机数。设定参数 \alpha, \gamma, \epsilon
2. 对每个回合(episode)循环:
   - 初始化状态s,例如环境起始状态。
   - 根据当前Q值使用\epsilon-greedy贪心策略从状态s选择动作a,即以概率\epsilon随机选择,否则选择\arg\max_a Q(s,a)
   - 对回合中的每一步循环:
     - 执行动作a,观察奖励r和下一状态s
     - 根据当前 Q 值使用\epsilon-greedy贪心策略从状态s'选择动作a'(注意:这一步不立即执行,仅用于更新)。
     - 进行 Sarsa 更新:
     Q(s,a) \leftarrow Q(s,a) + \alpha \left[ r + \gamma Q(s',a') - Q(s,a) \right]
     - 更新当前状态和动作:s \leftarrow s'a \leftarrow a'

     - 如果 s'是终止状态,则结束回合,否则继续。
3. 重复直到收敛或达到指定回合数。

在训练过程中需要注意以下点:

在更新后立即将a'作为下一步的实际动作,保证了策略的连续性。

s'是终止状态时,定义Q(s',a') = 0,因为终止后没有未来奖励。

\epsilon通常随着训练衰减,以逐渐减少探索、增加利用。

3.2 . 收敛性与策略改进

Sarsa 在一定条件下保证收敛到最优动作值函数和最优策略。

这些条件包括:

- 所有状态-动作对被无限次访问;

- 策略的贪婪极限,即\epsilon \to 0,满足贪婪策略;

- 学习率\alpha满足随机逼近条件,如\sum \alpha_t = \infty\sum \alpha_t^2 < \infty

由于 Sarsa 是on-policy策略的,它通常比Q-learning更稳定,尤其是在存在函数近似的情况下。

因为它更新的目标值直接来自当前策略,避免了离策略方法中可能出现的自举偏差放大问题。

策略改进方面,Sarsa 在每个回合中基于当前 Q 值使用\epsilon-greedy贪心生成行为,而Q值本身是通过对当前策略的评估得到的。这符合广义策略迭代的思想:策略评估和策略改进交替进行,最终收敛到最优。

3.3 简单实例-网格世界

考虑一个经典的网格世界示例:智能体在4\times4网格中移动,目标为右下角格子(奖励 +1),其余移动奖励 0,碰到边界不移动。

使用 Sarsa 学习最优路径。在初始阶段,由于探索,智能体可能走弯路,但 Sarsa 会逐步调整 Q 值,使得沿着目标路径的状态-动作对的值升高。由于 Sarsa 考虑实际下一步动作,它会学到一条安全路径,避免危险区域,如果存在负奖励惩罚。

相比之下,Q-learning 可能在学习过程中更冒险,因为它总是假设下一步采取最优动作。

4  Sarsa总结

Sarsa是基础而重要的算法,其on-policy策略特性使其在某些问题中比离策略方法更可靠。

它的更新公式直接源于 Bellman 期望方程的单步采样近似,体现了 TD 学习的核心思想。通过\epsilon-贪心策略,Sarsa 能够平衡探索与利用,并在满足条件下收敛。

在实际应用中,Sarsa 可以扩展到函数近似,如线性近似、神经网络,形成深度 Sarsa(Deep Sarsa)等变体。

reference

---

强化学习-学习笔记7 | Sarsa算法原理与推导

https://www.cnblogs.com/Roboduster/p/16454245.html

On the Convergence of SARSA with Linear Function Approximation

https://arxiv.org/abs/2202.06828

State-Separated SARSA: A Practical Sequential Decision-Making Algorithm with Recovering Rewards

https://arxiv.org/abs/2403.11520

Convergence of SARSA with linear function approximation: the random horizon case

https://www.tandfonline.com/doi/full/10.1080/0952813X.2025.2541954?scroll=top&needAccess=true

AI学习笔记——Sarsa算法

https://developer.aliyun.com/article/655949

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐