SARSA 是一种经典的 TD 算法。SARSA 是 state-action-reward-state-action 的缩写,原因是它使用 这样的五元组来进行更新。

SARSA 的 TD 目标

SARSA 可以由下面的贝尔曼方程推导出来:

对方程两边作近似:

  • 使用函数估计器 (表格或神经网络) 来估计
  • 将期望近似为抽样。具体来说,给定当前状态 和动作 ,我们可以通过执行动作 来获得奖励 和下一个状态 ,然后基于 抽样得到新动作 ,得到

于是我们得到 SARSA 的 TD 目标:

更新规则

都是对于 的估计,但是 是一个更好的估计,因为它使用了更多的信息。所以我们鼓励函数估计器去逼近

对于学习率为 的表格型 SARSA:

对于学习率为 的使用神经网络 (参数记为 ) 的 SARSA:

训练流程

将函数估计器设为 ,当前策略为

  1. 观察当前状态
  2. 根据当前策略 采样动作
  3. 计算
  4. 执行动作 ,观察奖励 和下一个状态
  5. 根据当前策略 采样动作
  6. 计算
  7. 计算 TD 目标
  8. 按照更新规则更新函数估计器
  9. 更新策略,注意策略的生成方式与 SARSA 无关