Processing math: 100%

[RL Notes] Sarsa:同轨策略下的时序差分控制

1. 预测算法

  通过 TD(0) 算法可以得到状态价值函数,而为了在广义策略迭代中使用时序差分方法,我们需要的是动作价值函数。

  不同于 TD(0) 算法中只考虑状态之间的转换,现在要考虑“状态-动作”二元组之间的转换,并学习每个“状态-动作”二元组的价值。类似 TD(0) 对状态价值的更新,对“状态-动作”二元组价值的更新如下所示。

Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]

(1) 所示的更新规则使用了五元组 (St,At,Rt+1,St+1,At+1),智能体在状态 St 选择动作 At,收到了收益 Rt 并进入状态 St+1。由于预测的是“状态-动作”二元组的价值,因此还需要知道 t+1 时刻选择的动作 At+1,才能更新 (St,At) 的价值。At+1 可以通过所要评价的策略 π 来生成。上述算法称为 Sarsa 算法,取自五元组 (St,At,Rt+1,St+1,At+1) 的字母。

  通过 Sarsa 算法,就可以学习某个特定策略的动作状态价值函数,以此进行策略评估。

2. 控制算法

  基于 Sarsa 预测算法,可以很容易地得到一个同轨策略的控制算法——持续地估计行动策略 π 的动作价值函数 qπ,并以 qπ 为基础朝着贪心优化的方向改变 π。此外也可以采用 ε-贪心或 ε-软性策略。完整算法如下所示。


Sarsa(同轨策略下的 TD 控制)算法,用于估计 Qqπ
对所有 smathcalSaA(s),任意初始化 Q(s,a),其中 Q(,)=0
对每幕循环:
  初始化 S
  使用从 Q 得到的策略(例如 ε-贪心),在 S 处选择 A
    对幕中的每一步循环:
    执行动作 A,观察到 R,S
    使用从 Q 得到的策略(例如 ε-贪心),在 S 处选择 A
    Q(S,A)Q(S,A)+α[R+γQ(S,A)Q(St,At)]
    SS;AA;
  直到 S 是终止状态