时序差分 (TD) 方法,如TD(0),通过自举来估算给定策略π的状态价值函数Vπ。这些方法根据观测到的奖励和下一个状态的估计价值来更新状态的价值估计。这使得学习能够从每一步中进行,与蒙特卡罗方法不同,后者需要等到一个完整的回合结束。
然而,如果我们的目标是控制,即找到最优策略,那么仅仅估算Vπ是不够的。对于控制问题,特别是在没有环境模型的情况下,我们通常需要学习动作价值,Qπ(s,a)。这告诉我们,在状态s采取动作a之后,并随后遵循策略π所获得的预期回报。了解Q值使智能体能够在每个状态中,通过选择具有最高Q值的动作来选取最佳动作。
SARSA是为控制问题设计的一种TD方法。它直接估算动作价值函数Qπ。SARSA这个名称强调了其更新计算中涉及的事件顺序:智能体从一个状态(St)开始,选择一个动作(At),收到一个奖励(Rt+1),并转换到下一个状态(St+1),然后根据其当前策略选择下一个动作(At+1)。这个五元组(St,At,Rt+1,St+1,At+1)构成了SARSA更新的根本要素。
SARSA 更新规则
与TD(0)一样,SARSA在每个时间步之后执行一次更新。动作价值函数Q(St,At)的更新规则如下:
Q(St,At)←Q(St,At)+α[Rt+1+γQ(St+1,At+1)−Q(St,At)]
我们来分析一下:
- Q(St,At) 是在状态St执行动作At的当前价值估计。
- α 是学习率(一个小的正数,例如0.1),它控制我们根据新信息更新估计的程度。
- Rt+1 是在采取动作At后立即获得的奖励。
- γ 是折扣因子(介于0和1之间),用于平衡即时奖励与未来奖励。
- Q(St+1,At+1) 是下一个状态-动作对的估计价值。这是自举部分。与蒙特卡洛方法等待最终回报不同,我们使用智能体将根据其策略采取的下一个动作的当前价值估计。
- Rt+1+γQ(St+1,At+1) 是TD目标。它表示基于一步经验的Q(St,At)的更好估计。
- Rt+1+γQ(St+1,At+1)−Q(St,At) 是TD误差,衡量估计价值与TD目标之间的差异。
更新本质上是将当前估计值Q(St,At)微调向TD目标靠近。这里的一个重要之处请注意:目标包含Q(St+1,At+1),它使用了智能体当前策略在状态St+1中实际选择的动作At+1。
SARSA 控制算法
SARSA在一个通用的控制循环中使用这个更新规则,旨在随着时间推移改进策略。由于我们需要学习所有动作的价值以找到最佳动作,所遵循的策略必须能够进行新尝试。一种常见的方法是使用基于当前Q值估计的ϵ-贪婪策略。这意味着智能体通常选择具有最高Q值的动作(利用),但偶尔也会以ϵ的概率选择一个随机动作(进行尝试)。
SARSA算法的典型结构如下:
-
初始化:
- 初始化所有状态-动作对s∈S,a∈A(s)的Q(s,a),可以任意设置(例如,设为0或乐观值)。
- 确保Q(终止状态,⋅)=0。
- 设置学习率α>0和折扣因子γ∈[0,1]。
- 为ϵ-贪婪策略设置尝试参数ϵ>0。
-
回合循环: 对每个回合重复:
- 初始化起始状态S。
- 使用从Q导出的策略(例如,ϵ-贪婪)从状态S中选择第一个动作A。
- 步骤循环: 对回合内的每一步重复:
- 执行动作A。观测到奖励R和下一个状态S′。
- 使用从Q导出的策略(例如,ϵ-贪婪)从状态S′中选择下一个动作A′。
- 执行SARSA更新:
Q(S,A)←Q(S,A)+α[R+γQ(S′,A′)−Q(S,A)]
- 更新下一次迭代的状态和动作:S←S′,A←A′。
- 持续直到S是终止状态。
SARSA 为何是同策略?
SARSA被归类为一种同策略算法。这意味着它学习的是智能体*当前遵循的策略π*的价值函数Qπ。所遵循的策略包含了尝试步骤(例如,ϵ-贪婪策略所采取的随机动作)。
其同策略特性直接源于更新规则:Q(St+1,At+1)使用了当前策略在状态St+1中实际选择的动作At+1。算法根据智能体的实际行为,包括其尝试策略,来估计采取动作的价值。
这具有实际意义。如果智能体使用ϵ-贪婪策略,SARSA会学习与该ϵ-贪婪策略相关的价值。由此产生的Q值反映了考虑到智能体可能以ϵ的概率采取随机的、次优动作时的预期回报。这通常会导致在尝试失误代价高昂(例如,从悬崖坠落)的环境中找到“更安全”的路径。智能体学习如何在进行尝试时考虑到自身可能出现的失误。
将其与蒙特卡洛控制方法进行对比,蒙特卡洛方法也根据所遵循的策略进行学习,但只在回合结束后才更新。SARSA提供了TD学习的好处(每一步都更新),同时仍然学习正在使用的策略。
在下一节中,我们将介绍Q-学习,一个密切相关的TD控制算法,它采取了不同的方法:它直接学习最优策略,而不考虑所遵循的尝试策略。这使得Q-学习成为一种异策略方法。