本系列为学习赵世钰老师的《强化学习的数学原理》所作的学习笔记.
2.5.1 Sarsa系列
之前介绍的时序差分算法是用来计算给定策略π\piπ和其状态sss的状态值期望vπ(s)v_\pi(s)vπ(s), 那么能不能直接估计动作值期望呢? 这也就是Sarsa方法.
2.5.1.1 Sarsa
给定策略π\piπ, 我们可以用以下算法估计动作值:
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γqt(st+1,at+1))], q_{t+1}\left(s_t, a_t\right)=q_t\left(s_t, a_t\right)-\alpha_t\left(s_t, a_t\right)\left[q_t\left(s_t, a_t\right)-\left(r_{t+1}+\gamma q_t\left(s_{t+1}, a_{t+1}\right)\right)\right], qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γqt(st+1,at+1))],
这就是Sarsa算法, 它的名字来源于上式的输入: (st,at,rt+1,st+1,at+1)\left(s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}\right)(st,at,rt+1,st+1,at+1).
实际上, Sarsa算法是一种随机近似方法, 用于求解使用动作值表达的贝尔曼公式:
qπ(s,a)=E[R+γqπ(S′,A′)∣s,a], for all (s,a). q_\pi(s, a)=\mathbb{E}\left[R+\gamma q_\pi\left(S^{\prime}, A^{\prime}\right) \mid s, a\right], \quad \text { for all }(s, a) . qπ(s,a)=E[R+γqπ(S′,A′)∣s,a], for all (s,a).
2.5.1.2 Expected Sarsa
如果将TD目标改成期望, 就是Expected Sarsa:
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γE[qt(st+1,A)])] q_{t+1}\left(s_t, a_t\right)=q_t\left(s_t, a_t\right)-\alpha_t\left(s_t, a_t\right)\left[q_t\left(s_t, a_t\right)-\left(r_{t+1}+\gamma \mathbb{E}\left[q_t\left(s_{t+1}, A\right)\right]\right)\right] qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γE[qt(st+1,A)])]
其中TD目标项中的期望定义为:
E[qt(st+1,A)]=∑aπt(a∣st+1)qt(st+1,a)≐vt(st+1) \mathbb{E}\left[q_t\left(s_{t+1}, A\right)\right]=\sum_a \pi_t\left(a \mid s_{t+1}\right) q_t\left(s_{t+1}, a\right) \doteq v_t\left(s_{t+1}\right) E[qt(st+1,A)]=a∑πt(a∣st+1)qt(st+1,a)≐vt(st+1)
Sarsa中只计算一个at+1a_{t+1}at+1带来的动作值qt(st+1,at+1)q_t(s_{t+1}, a_{t+1})qt(st+1,at+1), Expected Sarsa完整的计算了状态值vt(st+1)v_t\left(s_{t+1}\right)vt(st+1)
同样, Expected Sarsa也是计算一个贝尔曼公式:
qπ(s,a)=E[Rt+1+γE[qπ(St+1,At+1)∣St+1]∣St=s,At=a], for all s,a. q_\pi(s, a)=\mathbb{E}\left[R_{t+1}+\gamma \mathbb{E}\left[q_\pi\left(S_{t+1}, A_{t+1}\right) \mid S_{t+1}\right] \mid S_t=s, A_t=a\right], \\ \quad \text { for all } s, a . qπ(s,a)=E[R