强化学习-chapter7-时间差分学习-1-Sarsa

例子

接下来我们考虑一些随机问题,并展示如何使用RM算法来解决它们。

首先,考虑简单的均值估计问题:计算

w=E[X]w = \mathbb{E}[X]w=E[X]

基于X的一些独立同分布样本{x}。

  • 通过写出g(w)=w−E[X]g(w) = w - \mathbb{E}[X]g(w)=wE[X],我们可以将该问题重新表述为一个根查找问题

g(w)=0g(w) = 0g(w)=0

  • 由于我们只能获得X的样本{x},带噪声的观测为

g~(w,η)=w−x=(w−E[X])+(E[X]−x)≐g(w)+η\tilde{g}(w,η) = w - x = (w - \mathbb{E}[X]) + (\mathbb{E}[X] - x) \doteq g(w) + ηg~(w,η)=wx=(wE[X])+(E[X]x)g(w)+η

  • 求解g(w)=0g(w) = 0g(w)=0的RM算法为

wk+1=wk−αkg~(wk,ηk)=wk−αk(wk−xk)w_{k+1} = w_k - α_k\tilde{g}(w_k,η_k) = w_k - α_k(w_k - x_k)wk+1=wkαkg~(wk,ηk)=wkαk(wkxk)

其次,考虑一个稍微复杂一点的问题。即估计函数v(X)的均值,

w=E[v(X)]w = \mathbb{E}[v(X)]w=E[v(X)]

基于X的一些独立同分布随机样本{x}。

  • 为了解决这个问题,我们定义

g(w)=w−E[v(X)]g~(w,η)=w−v(x)=(w−E[v(X)])+(E[v(X)]−v(x))≐g(w)+ηg(w) = w - \mathbb{E}[v(X)] \\ \tilde{g}(w,η) = w - v(x) = (w - \mathbb{E}[v(X)]) + (\mathbb{E}[v(X)] - v(x)) \doteq g(w) + ηg(w)=wE[v(X)]g~(w,η)=wv(x)=(wE[v(X)])+(E[v(X)]v(x))g(w)+η

  • 然后,这个问题就变成一个根查找问题:g(w)=0g(w) = 0g(w)=0。相应的RM算法为

wk+1=wk−αkg~(wk,ηk)=wk−αk[wk−v(xk)]w_{k+1} = w_k - α_k\tilde{g}(w_k,η_k) = w_k - α_k[w_k - v(x_k)]wk+1=wkαkg~(wk,ηk)=wkαk[wkv(xk)]

第三,考虑一个更复杂的问题:计算

w=E[R+γv(X)]w = \mathbb{E}[R + γv(X)]w=E[R+γv(X)]

其中R, X是随机变量,γ是一个常数,v(·)是一个函数。

  • 假设我们可以获得X和R的样本{x}和{r}。我们定义
    g(w)=w−E[R+γv(X)]g~(w,η)=w−[r+γv(x)]=(w−E[R+γv(X)])+(E[R+γv(X)]−[r+γv(x)])≐g(w)+ηg(w) = w - \mathbb{E}[R + γv(X)] \\ \tilde{g}(w,η) = w - [r + γv(x)]= (w - \mathbb{E}[R + γv(X)]) + (\mathbb{E}[R + γv(X)] - [r + γv(x)])\doteq g(w) + ηg(w)=wE[R+γv(X)]g~(w,η)=w[r+γv(x)]=(wE[R+γv(X)])+(E[R+γv(X)][r+γv(x)])g(w)+η
  • 然后,这个问题就变成一个根查找问题:g(w)=0g(w) = 0g(w)=0。相应的RM算法为
    wk+1=wk−αkg~(wk,ηk)=wk−αk[wk−(rk+γv(xk))]w_{k+1} = w_k - α_k\tilde{g}(w_k,η_k) = w_k - α_k[w_k - (r_k + γv(x_k))]wk+1=wkαkg~(wk,ηk)=wkαk[wk(rk+γv(xk))]

state value的时间差分学习

算法描述

算法所需的数据/经验
(s0,r1,s1,...,st,rt+1,st+1,...)(s_0, r_1, s_1,..., s_t, r_{t+1}, s_{t+1},...)(s0,r1,s1,...,st,rt+1,st+1,...){(st,rt+1,st+1)}t\{(s_t, r_{t+1}, s_{t+1})\}_t{(st,rt+1,st+1)}t 是按照给定策略π生成的。
这都是记录智能体在环境中按策略π交互的轨迹,每个元组(st,rt+1,st+1)(s_t, r_{t+1}, s_{t+1})(st,rt+1,st+1)表示在状态sts_tst执行动作后获得奖励rt+1r_{t+1}rt+1并转移到st+1s_{t+1}st+1

核心目标:学习估计策略π下的状态值函数vπ(st)v_π(s_t)vπ(st),即从状态sts_tst出发的长期累积回报期望

TD学习算法为
vt+1(st)=vt(st)−αt(st)[vt(st)−[rt+1+γvt(st+1)]],(1)vt+1(s)=vt(s),∀s≠st,(2)v_{t+1}(s_t) = v_t(s_t) - α_t(s_t)[v_t(s_t) - [r_{t+1} + γv_t(s_{t+1})]], \quad (1) \\ v_{t+1}(s) = v_t(s), \quad \forall s \neq s_t, \quad (2)vt+1(st)=vt(st)αt(st)[vt(st)[rt+1+γvt(st+1)]],(1)vt+1(s)=vt(s),s=st,(2)
其中t=0,1,2,...t = 0,1,2,...t=0,1,2,...

  • vt(st)v_t(s_t)vt(st):当前对状态sts_tst的估值,即vπ(st)v_π(s_t)vπ(st)的估计状态值
  • αt(st)α_t(s_t)αt(st):是sts_tst在时间t的学习率(0 < α < 1)
  • rt+1r_{t+1}rt+1:从sts_tstst+1s_{t+1}st+1获得的即时奖励reward
  • γγγ:折扣因子(0 ≤ γ ≤ 1)
  • vt(st+1)v_t(s_{t+1})vt(st+1):当前对下一个状态st+1s_{t+1}st+1的估值

公式(1)表示在时间t,只更新访问状态sts_tst的值,
公式(2)表示未访问状态s≠sts \neq s_ts=st的值保持不变。

公式变形: vt+1(st)=(1−α)vt(st)+α[rt+1+γvt(st+1)]v_{t+1}(s_t) = (1 - α)v_t(s_t) + α[r_{t+1} + γv_t(s_{t+1})]vt+1(st)=(1α)vt(st)+α[rt+1+γvt(st+1)] (可看作当前估值与TD目标的加权平均)

算法属性

公式拆解

TD算法可以被注解为:
vt+1(st)⏟new estimate=vt(st)⏞current estimate−αt(st)[vt(st)−[rt+1+γvt(st+1)]⏟TD target vˉt⏞TD error δt],(3) \underbrace{v_{t+1}(s_t)}_{\textcolor{red}{\text{new estimate}}} = \overbrace{v_t(s_t)}^{\textcolor{red}{\text{current estimate}}} - \alpha_t(s_t) \bigg[ \overbrace{v_t(s_t) - \underbrace{\left[ r_{t+1} + \gamma v_t(s_{t+1}) \right]}_{\textcolor{red}{\text{TD target } \bar{v}_t}}}^{\textcolor{red}{\text{TD error } \delta_t}} \bigg],\quad (3) new estimatevt+1(st)=vt(st)current estimateαt(st)[vt(st)TD target vˉt[rt+1+γvt(st+1)]TD error δt],(3)
其中左边vt+1(st)v_{t+1}(s_t)vt+1(st)为新估计,vt(st)v_t(s_t)vt(st)为当前估计,[rt+1+γvt(st+1)][r_{t+1} + γv_t(s_{t+1})][rt+1+γvt(st+1)]为TD目标,
方括号内的整个表达式为TD误差δtδ_tδt

这里,vˉt≐rt+1+γv(st+1)\bar{v}_t \doteq r_{t+1} + γv(s_{t+1})vˉtrt+1+γv(st+1)被称为TD目标,是当前状态sts_tst的即时奖励加上下一状态st+1s_{t+1}st+1估值的折扣值,作为当前状态估值的 “短期目标”。

δt≐v(st)−[rt+1+γv(st+1)]=v(st)−vˉtδ_t \doteq v(s_t) - [r_{t+1} + γv(s_{t+1})] = v(s_t) - \bar{v}_tδtv(st)[rt+1+γv(st+1)]=v(st)vˉt被称为TD误差,是当前估值与 TD 目标的差值。

显然,新估计vt+1(st)v_{t+1}(s_t)vt+1(st)是当前估计vt(st)v_t(s_t)vt(st)和TD误差的组合。

分析拆解项

首先,为什么vˉt\bar{v}_tvˉt被称为TD目标?

这是因为算法将v(st)v(s_t)v(st)驱动向vˉt\bar{v}_tvˉt

为了看到这一点,

vt+1(st)=vt(st)−αt(st)[vt(st)−vˉt]  ⟹  vt+1(st)−vˉt=vt(st)−vˉt−αt(st)[vt(st)−vˉt]  ⟹  vt+1(st)−vˉt=[1−αt(st)][vt(st)−vˉt]  ⟹  ∣vt+1(st)−vˉt∣=∣1−αt(st)∣∣vt(st)−vˉt∣v_{t+1}(s_t) = v_t(s_t) - α_t(s_t)[v_t(s_t) - \bar{v}_t] \\ \implies v_{t+1}(s_t) - \bar{v}_t = v_t(s_t) - \bar{v}_t - α_t(s_t)[v_t(s_t) - \bar{v}_t] \\ \implies v_{t+1}(s_t) - \bar{v}_t = [1 - α_t(s_t)][v_t(s_t) - \bar{v}_t] \\ \implies |v_{t+1}(s_t) - \bar{v}_t| = |1 - α_t(s_t)||v_t(s_t) - \bar{v}_t|vt+1(st)=vt(st)αt(st)[vt(st)vˉt]vt+1(st)vˉt=vt(st)vˉtαt(st)[vt(st)vˉt]vt+1(st)vˉt=[1αt(st)][vt(st)vˉt]vt+1(st)vˉt=∣1αt(st)∣∣vt(st)vˉt

由于αt(st)α_t(s_t)αt(st)是一个小的正数,我们有0<1−αt(st)<10 < 1 - α_t(s_t) < 10<1αt(st)<1因此,∣vt+1(st)−vˉt∣≤∣vt(st)−vˉt∣|v_{t+1}(s_t) - \bar{v}_t| \leq |v_t(s_t) - \bar{v}_t|vt+1(st)vˉtvt(st)vˉt这意味着v(st)v(s_t)v(st)被驱动向vˉt\bar{v}_tvˉt

第二,TD error的解释是什么?

δt=v(st)−[rt+1+γv(st+1)]\delta_t = v(s_t) - [r_{t+1} + \gamma v(s_{t+1})]δt=v(st)[rt+1+γv(st+1)]

  • 它是两个连续时间步之间的差异。
  • 它反映了vtv_tvtvπv_\pivπ之间的不足。为了说明这一点,当使用真实值函数vπv_\pivπ时,误差为δπ,t\delta_{\pi,t}δπ,t,记为
    δπ,t≐vπ(st)−[rt+1+γvπ(st+1)]\delta_{\pi,t} \doteq v_\pi(s_t) - [r_{t+1} + \gamma v_\pi(s_{t+1})]δπ,tvπ(st)[rt+1+γvπ(st+1)]
    注意,根据贝尔曼方程,真实值函数有vπ(st)=E[Rt+1+γvπ(St+1)∣St=st]v_\pi(s_t) = \mathbb{E}[R_{t+1} + \gamma v_\pi(S_{t+1}) | S_t = s_t]vπ(st)=E[Rt+1+γvπ(St+1)St=st],那么δπ,t\delta_{\pi,t}δπ,t期望必然为0,即
    E[δπ,t∣St=st]=vπ(st)−E[Rt+1+γvπ(St+1)∣St=st]=0.\mathbb{E}[\delta_{\pi,t}|S_t = s_t] = v_\pi(s_t) - \mathbb{E}[R_{t+1} + \gamma v_\pi(S_{t+1})|S_t = s_t] = 0.E[δπ,tSt=st]=vπ(st)E[Rt+1+γvπ(St+1)St=st]=0.
  • 如果vt=vπv_t = v_\pivt=vπ,那么δt\delta_tδt应该为零(在期望意义上)。
  • 因此,如果δt\delta_tδt不为零,则vtv_tvt不等于vπv_\pivπ
  • TD error可以被解释为innovation,这意味着从经验(st,rt+1,st+1)(s_t, r_{t+1}, s_{t+1})(st,rt+1,st+1)中获得的新信息。

其他特性:

vt+1(st)=vt(st)−αt(st)[vt(st)−[rt+1+γvt(st+1)]],v_{t+1}(s_t) = v_t(s_t) - α_t(s_t)[v_t(s_t) - [r_{t+1} + γv_t(s_{t+1})]],vt+1(st)=vt(st)αt(st)[vt(st)[rt+1+γvt(st+1)]],

  • 上式中的TD算法仅估计给定策略的状态价值。
  • 它不估计动作价值。
  • 它不搜索最优策略。

稍后,我们将了解如何估计动作价值,然后搜索最优策略。
尽管如此,(3)中的TD算法对于理解核心思想是基础的。

算法思想

首先,贝尔曼方程的一个新表达式。
π的状态价值的定义是

vπ(s)=E[R+γG∣S=s],s∈S(4)v_\pi(s) = \mathbb{E}[R + \gamma G|S = s], \quad s \in \mathcal{S} \quad (4)vπ(s)=E[R+γGS=s],sS(4)

其中G是折扣回报。由于

E[G∣S=s]=∑aπ(a∣s)∑s′p(s′∣s,a)vπ(s′)=E[vπ(S′)∣S=s],\mathbb{E}[G|S = s] = \sum_a \pi(a|s)\sum_{s'} p(s'|s,a)v_\pi(s') = \mathbb{E}[v_\pi(S')|S = s],E[GS=s]=aπ(as)sp(ss,a)vπ(s)=E[vπ(S)S=s],

其中S’是下一个状态,我们可以将(4)重写为

vπ(s)=E[R+γvπ(S′)∣S=s],s∈S.(5)v_\pi(s) = \mathbb{E}[R + \gamma v_\pi(S')|S = s], \quad s \in \mathcal{S}. \quad (5)vπ(s)=E[R+γvπ(S)S=s],sS.(5)

方程(5)是Bellman方程的另一种表达式。它有时被称为Bellman期望方程,是设计和分析TD算法的重要工具。

第二,使用RM算法求解(5)中的Bellman方程。
特别地,通过定义

g(v(s))=v(s)−E[R+γvπ(S′)∣s],g(v(s)) = v(s) - \mathbb{E}[R + \gamma v_\pi(S')|s],g(v(s))=v(s)E[R+γvπ(S)s],

我们可以将(5)重写为

g(v(s))=0g(v(s)) = 0g(v(s))=0

由于我们只能获得R和S’的样本r和s’,我们所拥有的噪声观测是

g~(v(s))=v(s)−[r+γvπ(s′)]=(v(s)−E[R+γvπ(S′)∣s])⏟g(v(s))+(E[R+γvπ(S′)∣s]−[r+γvπ(s′)])⏟η\tilde{g}(v(s)) = v(s) - [r + \gamma v_\pi(s')] \\ = \underbrace{(v(s) - \mathbb{E}[R + \gamma v_\pi(S')|s])}_{g(v(s))} + \underbrace{(\mathbb{E}[R + \gamma v_\pi(S')|s] - [r + \gamma v_\pi(s')])}_{\eta}g~(v(s))=v(s)[r+γvπ(s)]=g(v(s))(v(s)E[R+γvπ(S)s])+η(E[R+γvπ(S)s][r+γvπ(s)])

因此,用于解决g(v(s)) = 0的RM算法是

vk+1(s)=vk(s)−αkg~(vk(s))=vk(s)−αk(vk(s)−[rk+γvπ(sk′)]),k=1,2,3,…(6)v_{k+1}(s) = v_k(s) - \alpha_k\tilde{g}(v_k(s))\\ = v_k(s) - \alpha_k\left(v_k(s) - [r_k + \gamma v_\pi(s'_k)]\right), \quad k = 1, 2, 3, \ldots \quad (6)vk+1(s)=vk(s)αkg~(vk(s))=vk(s)αk(vk(s)[rk+γvπ(sk)]),k=1,2,3,(6)

其中vk(s)v_k(s)vk(s)是第k步时vπ(s)v_π(s)vπ(s)的估计值;rkr_krk, v(sk′)v(s'_k)v(sk)是第k步获得的reward, 和它到达的下一个状态S’的状态价值的样本。

RM算法(6)有两个值得特别注意的假设。

• 我们必须拥有经验集{(s,r,s′)(s, r, s')(s,r,s)},对于k = 1, 2, 3, …
• 我们假设对于任何s′s'svπ(s′)v_π(s')vπ(s)已经是已知的。

因此,用于解决g(v(s))=0g(v(s)) = 0g(v(s))=0的RM算法是

vk+1(s)=vk(s)−αkg~(vk(s))=vk(s)−αk(vk(s)−[rk+γvπ(sk′)]),k=1,2,3,…v_{k+1}(s) = v_k(s) - \alpha_k\tilde{g}(v_k(s)) \\ = v_k(s) - \alpha_k\left(v_k(s) - [r_k + \gamma v_\pi(s'_k)]\right), \quad k = 1,2,3,\ldotsvk+1(s)=vk(s)αkg~(vk(s))=vk(s)αk(vk(s)[rk+γvπ(sk)]),k=1,2,3,

其中vk(s)v_k(s)vk(s)是第k步时vπ(s)v_\pi(s)vπ(s)的估计值;rk,sk′r_k, s'_krk,sk是第k步获得的R,S′R, S'R,S的样本。

为了消除RM算法中的两个假设,我们可以对其进行修改。

  • 一个修改是将{(s,r,s′)}\{(s, r, s')\}{(s,r,s)}更改为{(st,rt+1,st+1)}\{(s_t, r_{t+1}, s_{t+1})\}{(st,rt+1,st+1)},这样算法就可以利用一个回合中的顺序样本。
  • 另一个修改是用它的估计值替代vπ(s′)v_\pi(s')vπ(s),因为我们事先并不知道它。

算法的收敛性

vt+1(st)=vt(st)−αt(st)[vt(st)−[rt+1+γvt(st+1)]]v_{t+1}(s_t) = v_t(s_t) - α_t(s_t)[v_t(s_t) - [r_{t+1} + γv_t(s_{t+1})]]vt+1(st)=vt(st)αt(st)[vt(st)[rt+1+γvt(st+1)]]
通过TD算法(1),即上式,当t→∞t \rightarrow \inftyt时,如果对所有s∈Ss \in \mathcal{S}sS满足∑tαt(s)=∞\sum_t \alpha_t(s) = \inftytαt(s)=∑tαt2(s)<∞\sum_t \alpha_t^2(s) < \inftytαt2(s)<,则vt(s)v_t(s)vt(s)以概率1收敛到vπ(s)v_\pi(s)vπ(s)

注意:

  • 该定理表明对于给定的策略π\piπ,可以通过TD算法找到状态价值。
  • ∑tαt(s)=∞\sum_t \alpha_t(s) = \inftytαt(s)=∑tαt2(s)<∞\sum_t \alpha_t^2(s) < \inftytαt2(s)<必须对所有s∈Ss \in \mathcal{S}sS有效。在时间步ttt,如果s=sts = s_ts=st,意味着时间ttt访问了状态sss,则αt(s)>0\alpha_t(s) > 0αt(s)>0;否则,对于所有其他s≠sts \neq s_ts=stαt(s)=0\alpha_t(s) = 0αt(s)=0。这要求每个状态必须被访问无限(或足够多)次。
    • 访问状态与学习率的关系
      • 在强化学习的TD算法中,学习率αt(s)\alpha_t(s)αt(s)决定了在状态sss下,基于新获得的信息(即时奖励和下一个状态的估计值)对当前状态估计值进行更新的程度。
      • 当在时间步ttt访问了状态sss(即s=sts = s_ts=st)时,αt(s)>0\alpha_t(s)>0αt(s)>0,这是因为只有访问了这个状态,才能根据这个状态下的信息(如即时奖励rt+1r_{t + 1}rt+1和下一个状态的估计值vt(st+1)v_t(s_{t+1})vt(st+1))来更新该状态的估计值vt(s)v_t(s)vt(s)。如果没有访问这个状态,就没有新的信息来更新它,所以对于所有其他s≠sts\neq s_ts=stαt(s)=0\alpha_t(s) = 0αt(s)=0
    • 状态必须被访问足够多次的原因
      • 对于收敛条件∑tαt(s)=∞\sum_t\alpha_t(s)=\inftytαt(s)=∑tαt2(s)<∞\sum_t\alpha_t^2(s)<\inftytαt2(s)<∑tαt(s)=∞\sum_t\alpha_t(s)=\inftytαt(s)=这个条件要求对每个状态s∈Ss\in\mathcal{S}sS,总的学习率之和要趋近于无穷。从直观上理解,这意味着每个状态都需要被访问足够多次,以便积累足够的更新信息来使估计值能够不断调整。
      • 例如,假设某个状态sss很少被访问,那么αt(s)\alpha_t(s)αt(s)只有在很少的时间步才不为零。如果这种情况持续下去,∑tαt(s)\sum_t\alpha_t(s)tαt(s)就不会趋近于无穷,那么这个状态的估计值vt(s)v_t(s)vt(s)就可能无法充分地根据新信息进行更新,从而无法保证收敛到真实的状态价值vπ(s)v_{\pi}(s)vπ(s)。只有当每个状态都被访问无限(或足够多)次,才能保证有足够的信息来让估计值不断地向真实值靠拢,最终实现收敛。
  • 学习率α\alphaα通常被选择为一个小常数。在这种情况下,条件∑tαt2(s)<∞\sum_t \alpha_t^2(s) < \inftytαt2(s)<不再有效。当α\alphaα是常数时,仍然可以证明算法在期望意义上收敛。

TD learning与MC learning

MC learning:https://blog.youkuaiyun.com/Rsbstep/article/details/146240629?spm=1001.2014.3001.5502
尽管TD学习和MC学习都是无模型的,与MC学习相比,TD学习有哪些优势和劣势?

TD/Sarsa learningMC learning
online: TD学习是在线的。它可以在接收到奖励后立即更新状态/动作值。offline: MC学习是离线的。它必须等到一个回合完全收集完毕。
Continuing tasks: 由于TD学习是在线的,它可以处理既有情节性任务也有持续性任务。Episodic tasks: 由于MC学习是离线的,它只能处理有终止状态的情节性任务。

尽管TD学习和MC学习都是无模型的,与MC学习相比,TD学习有哪些优势和劣势?

TD/Sarsa learningMC learning
bootstrap: TD是自举的,因为值的更新依赖于该值的先前估计。因此,它需要初始猜测。Non-bootstrapping: MC不是自举的,因为它可以直接估计状态/动作值,无需任何初始猜测。
低估计方差: TD的方差比MC低,因为它涉及的随机变量更少。例如,Sarsa只需要Rt+1R_{t+1}Rt+1St+1S_{t+1}St+1At+1A_{t+1}At+1高估计方差: 要估计qπ(st,at)q_\pi(s_t,a_t)qπ(st,at),我们需要Rt+1+γRt+2+γ2Rt+3+…R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \ldotsRt+1+γRt+2+γ2Rt+3+的样本。假设每个回合的长度为LLL,则有AL\mathcal{A}^LAL种可能的回合。

在强化学习中,“bootstrap”(自举)是一个技术术语,指的是一种利用估计值来更新估计值的方法。
具体来说:

  1. 当TD(时间差分)学习算法使用自举时,它会使用当前状态值的估计来更新另一个状态值的估计。例如,在上面的TD算法中,我们使用下一个状态的估计值V(st+1)V(s_{t+1})V(st+1)来更新当前状态的估计值V(st)V(s_t)V(st),这是一种自举方法。
  2. 这与MC(蒙特卡洛)方法形成对比,MC方法不使用自举,而是直接使用实际观察到的回报(从当前到终止状态的所有奖励的折现总和)来更新估计值。
  3. 自举可以加速学习过程,因为它允许算法在观察到完整的回报之前就开始学习,但它也可能引入偏差,特别是如果初始估计不准确的话。
  4. 在表格中提到TD需要"初始猜测"正是因为这个自举特性:由于每次更新都依赖于其他状态的估计值,所以需要给所有状态赋予一些初始估计值作为起点。

TD learning of action values: Sarsa

算法介绍

首先,我们的目标是估计给定策略π\piπ的动作价值。
假设我们有一些经验{(st,at,rt+1,st+1,at+1)}t\{(s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1})\}_t{(st,at,rt+1,st+1,at+1)}t
我们可以使用以下Sarsa算法来估计动作价值:
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−[rt+1+γqt(st+1,at+1)]],qt+1(s,a)=qt(s,a),∀(s,a)≠(st,at),q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t)[q_t(s_t, a_t) - [r_{t+1} + \gamma q_t(s_{t+1}, a_{t+1})]], \\ q_{t+1}(s, a) = q_t(s, a), \quad \forall(s, a) \neq (s_t, a_t),qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γqt(st+1,at+1)]],qt+1(s,a)=qt(s,a),(s,a)=(st,at),

其中t=0,1,2,…t = 0, 1, 2, \ldotst=0,1,2,

  • qt(st,at)q_t(s_t, a_t)qt(st,at)qπ(st,at)q_\pi(s_t, a_t)qπ(st,at)的估计;
  • αt(st,at)\alpha_t(s_t, a_t)αt(st,at)是取决于st,ats_t, a_tst,at的学习率。

为什么这个算法被称为Sarsa?
这是因为算法的每一步都涉及(st,at,rt+1,st+1,at+1)(s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1})(st,at,rt+1,st+1,at+1)
Sarsa是状态-动作-奖励-状态-动作(state-action-reward-state-action)的缩写。

Sarsa与之前的TD学习算法有什么关系?
我们可以通过将TD算法中的状态价值估计v(s)v(s)v(s)替换为动作价值估计q(s,a)q(s, a)q(s,a)来得到Sarsa。
因此,Sarsa是TD算法的动作价值版本。

Sarsa算法在数学上做什么?
Sarsa的表达式表明它是一个随机近似算法,用于解决以下方程:
qπ(s,a)=E[R+γqπ(S′,A′)∣s,a],∀s,a.q_\pi(s, a) = \mathbb{E}[R + \gamma q_\pi(S', A')|s, a], \quad \forall s, a.qπ(s,a)=E[R+γqπ(S,A)s,a],s,a.
这是用动作价值表示的Bellman方程的另一种表达形式。

算法收敛性

通过Sarsa算法,当t→∞t \rightarrow \inftyt时,如果对所有(s,a)(s, a)(s,a)满足∑tαt(s,a)=∞\sum_t \alpha_t(s, a) = \inftytαt(s,a)=∑tαt2(s,a)<∞\sum_t \alpha_t^2(s, a) < \inftytαt2(s,a)<,则qt(s,a)q_t(s, a)qt(s,a)以概率1收敛到动作价值qπ(s,a)q_\pi(s, a)qπ(s,a)

该定理表明可以通过Sarsa找到给定策略π\piπ的动作价值。

Sarsa的实现

强化学习的最终目标是找到最优策略。
为了实现这一目标,我们可以将Sarsa与策略改进步骤相结合。这种组合算法也被称为Sarsa。

伪代码:通过Sarsa进行策略搜索
对于每个episode,如果当前的sts_tst不是目标状态:

  • 收集经验(st,at,rt+1,st+1,at+1)(s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1})(st,at,rt+1,st+1,at+1)
    • 按照πt(st)\pi_t(s_t)πt(st)选择动作ata_tat,生成rt+1r_{t+1}rt+1st+1s_{t+1}st+1
    • 然后按照πt(st+1)\pi_t(s_{t+1})πt(st+1)选择动作at+1a_{t+1}at+1
  • 更新q值:
    • qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−[rt+1+γqt(st+1,at+1)]]q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t)[q_t(s_t, a_t) - [r_{t+1} + \gamma q_t(s_{t+1}, a_{t+1})]]qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γqt(st+1,at+1)]]
  • 更新策略:
    • πt+1(a∣st)=1−ϵ∣A∣(∣A∣−1)\pi_{t+1}(a|s_t) = 1 - \frac{\epsilon}{|\mathcal{A}|}(|\mathcal{A}| - 1)πt+1(ast)=1Aϵ(A1)a=arg⁡max⁡aqt+1(st,a)a = \arg\max_a q_{t+1}(s_t, a)a=argmaxaqt+1(st,a)
    • 否则πt+1(a∣st)=ϵ∣A∣\pi_{t+1}(a|s_t) = \frac{\epsilon}{|\mathcal{A}|}πt+1(ast)=Aϵ

关于该算法的说明:

  • sts_tst的策略在q(st,at)q(s_t, a_t)q(st,at)更新后立即更新。这是基于广义策略迭代的思想。
  • 策略是ϵ\epsilonϵ-贪婪而不是纯贪婪,以便很好地平衡利用与探索。

明确核心思想和复杂性:

  • 核心思想很简单:即使用算法求解给定策略的Bellman方程。
  • 复杂性出现在我们尝试寻找最优策略并高效工作时。

Sarsa算法的例子

任务描述:

  • 任务是从特定起始状态到目标状态找到一条好的路径。
    • 这个任务与之前所有需要为每个状态找出最优策略的任务不同!
    • 每个回合从左上角状态开始,在目标状态结束。
  • rtarget=0r_{\text{target}} = 0rtarget=0rforbidden=rboundary=−10r_{\text{forbidden}} = r_{\text{boundary}} = -10rforbidden=rboundary=10,且rother=−1r_{\text{other}} = -1rother=1。学习率为α=0.1\alpha = 0.1α=0.1ϵ\epsilonϵ的值为0.1。

结果:

  • 左侧图显示了Sarsa获得的最终策略。
    • 并非所有状态都有最优策略。
  • 右侧图显示了每个回合的总奖励和长度。
    • 每回合总奖励的指标将被频繁使用
      在这里插入图片描述

“Episode length”(回合长度)在强化学习中是指一个回合(episode)从开始到结束所经历的时间步(time steps)数量。
在上文中:

  • 每个回合从起始状态(左上角)开始,到达目标状态结束
  • 回合长度表示智能体从起始状态到达目标状态所需的步数
  • 较短的回合长度通常意味着找到了更高效的路径
  • 图中右下方显示的"Episode length"图表展示了随着训练进行,每个回合的长度变化

TD learning of action values: Expected Sarsa

Sarsa的一个变体是Expected Sarsa算法:
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γE[qt(st+1,A)])],qt+1(s,a)=qt(s,a),∀(s,a)≠(st,at),q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t)[q_t(s_t, a_t) - (r_{t+1} + \gamma\mathbb{E}[q_t(s_{t+1}, A)])], \\ q_{t+1}(s, a) = q_t(s, a), \quad \forall(s, a) \neq (s_t, a_t),qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)(rt+1+γE[qt(st+1,A)])],qt+1(s,a)=qt(s,a),(s,a)=(st,at),
其中
E[qt(st+1,A)])=∑aπt(a∣st+1)qt(st+1,a)=vt(st+1)\mathbb{E}[q_t(s_{t+1}, A)]) = \sum_a \pi_t(a|s_{t+1})q_t(s_{t+1}, a) = v_t(s_{t+1})E[qt(st+1,A)])=aπt(ast+1)qt(st+1,a)=vt(st+1)

是在策略πt\pi_tπtqt(st+1,a)q_t(s_{t+1}, a)qt(st+1,a)的期望值。

与Sarsa相比

  • TD目标发生了变化,从Sarsa中的rt+1+γqt(st+1,at+1)r_{t+1} + \gamma q_t(s_{t+1}, a_{t+1})rt+1+γqt(st+1,at+1)变为Expected Sarsa中的rt+1+γE[qt(st+1,A)]r_{t+1} + \gamma\mathbb{E}[q_t(s_{t+1}, A)]rt+1+γE[qt(st+1,A)]
  • 需要更多计算。但它的好处在于降低了估计方差,因为它将Sarsa中的随机变量从{st,at,rt+1,st+1,at+1}\{s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}\}{st,at,rt+1,st+1,at+1}减少到{st,at,rt+1,st+1}\{s_t, a_t, r_{t+1}, s_{t+1}\}{st,at,rt+1,st+1}

算法的数学性分析
Expected Sarsa是一种随机近似算法,用于解决以下方程:
qπ(s,a)=E[Rt+1+γEAt+1∼π(St+1)[qπ(St+1,At+1)]∣St=s,At=a],∀s,a.q_\pi(s, a) = \mathbb{E}\left[R_{t+1} + \gamma\mathbb{E}_{A_{t+1}\sim\pi(S_{t+1})}[q_\pi(S_{t+1}, A_{t+1})]|S_t = s, A_t = a\right], \quad \forall s, a.qπ(s,a)=E[Rt+1+γEAt+1π(St+1)[qπ(St+1,At+1)]St=s,At=a],s,a.

上述方程是Bellman方程的另一种表达式:
qπ(s,a)=E[Rt+1+γvπ(St+1)∣St=s,At=a],q_\pi(s, a) = \mathbb{E}[R_{t+1} + \gamma v_\pi(S_{t+1})|S_t = s, A_t = a],qπ(s,a)=E[Rt+1+γvπ(St+1)St=s,At=a],

示例:

图表显示了一个5x5的网格环境,左图表示学到的策略,右上图显示了随着训练进行每个回合的总奖励,右下图显示了每个回合的长度

TD learning of action values: n-step Sarsa

n-step Sarsa:可以统一Sarsa和蒙特卡洛学习

动作价值的定义是
qπ(s,a)=E[Gt∣St=s,At=a].q_\pi(s, a) = \mathbb{E}[G_t|S_t = s, A_t = a].qπ(s,a)=E[GtSt=s,At=a].

折扣回报GtG_tGt可以用不同形式表示为

Sarsa⟵Gt(1)=Rt+1+γqπ(St+1,At+1),Gt(2)=Rt+1+γRt+2+γ2qπ(St+2,At+2),⋮n-step Sarsa⟵Gt(n)=Rt+1+γRt+2+⋯+γnqπ(St+n,At+n),⋮MC⟵Gt(∞)=Rt+1+γRt+2+γ2Rt+3+… \begin{align} \text{Sarsa} \longleftarrow \quad & G_t^{(1)} = R_{t+1} + \gamma q_\pi(S_{t+1}, A_{t+1}), \\ & G_t^{(2)} = R_{t+1} + \gamma R_{t+2} + \gamma^2 q_\pi(S_{t+2}, A_{t+2}), \\ & \vdots \\ \text{$n$-step Sarsa} \longleftarrow \quad & G_t^{(n)} = R_{t+1} + \gamma R_{t+2} + \cdots + \gamma^n q_\pi(S_{t+n}, A_{t+n}), \\ & \vdots \\ \text{MC} \longleftarrow \quad & G_t^{(\infty)} = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \ldots \end{align} Sarsan-step SarsaMCGt(1)=Rt+1+γqπ(St+1,At+1),Gt(2)=Rt+1+γRt+2+γ2qπ(St+2,At+2),Gt(n)=Rt+1+γRt+2++γnqπ(St+n,At+n),Gt()=Rt+1+γRt+2+γ2Rt+3+

应当注意,Gt=Gt(1)=Gt(2)=Gt(n)=Gt(∞)G_t = G_t^{(1)} = G_t^{(2)} = G_t^{(n)} = G_t^{(\infty)}Gt=Gt(1)=Gt(2)=Gt(n)=Gt(),其中上标仅表示GtG_tGt的不同分解结构。

  • Sarsa 旨在求解
    qπ(s,a)=E[Gt(1)∣s,a]=E[Rt+1+γqπ(St+1,At+1)∣s,a].q_\pi(s, a) = \mathbb{E}[G_t^{(1)} | s, a] = \mathbb{E}[R_{t+1} + \gamma q_\pi(S_{t+1}, A_{t+1}) | s, a].qπ(s,a)=E[Gt(1)s,a]=E[Rt+1+γqπ(St+1,At+1)s,a].

  • 蒙特卡洛(MC)学习旨在求解
    qπ(s,a)=E[Gt(∞)∣s,a]=E[Rt+1+γRt+2+γ2Rt+3+…∣s,a].q_\pi(s, a) = \mathbb{E}[G_t^{(\infty)} | s, a] = \mathbb{E}[R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots | s, a].qπ(s,a)=E[Gt()s,a]=E[Rt+1+γRt+2+γ2Rt+3+s,a].

  • 一种称为 n 步 Sarsa 的中间算法旨在求解
    qπ(s,a)=E[Gt(n)∣s,a]=E[Rt+1+γRt+2+⋯+γnqπ(St+n,At+n)∣s,a].q_\pi(s, a) = \mathbb{E}[G_t^{(n)} | s, a] = \mathbb{E}[R_{t+1} + \gamma R_{t+2} + \dots + \gamma^n q_\pi(S_{t+n}, A_{t+n}) | s, a].qπ(s,a)=E[Gt(n)s,a]=E[Rt+1+γRt+2++γnqπ(St+n,At+n)s,a].

  • n 步 Sarsa 的算法为
    qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γrt+2+⋯+γnqt(st+n,at+n))] \begin{align*} q_{t+1}(s_t, a_t) &= q_t(s_t, a_t) \\ &\quad - \alpha_t(s_t, a_t) \big[ q_t(s_t, a_t) - \big( r_{t+1} + \gamma r_{t+2} + \dots + \gamma^n q_t(s_{t+n}, a_{t+n}) \big) \big] \end{align*} qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)(rt+1+γrt+2++γnqt(st+n,at+n))]
    n 步 Sarsa 更具一般性,因为当n=1n = 1n=1 时,它变为(单步)Sarsa 算法;当n=∞n = \inftyn= 时,它变为蒙特卡洛学习算法。

  • n步Sarsa需要(st,at,rt+1,st+1,at+1,…,rt+n,st+n,at+n)(s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}, \dots, r_{t+n}, s_{t+n}, a_{t+n})(st,at,rt+1,st+1,at+1,,rt+n,st+n,at+n)

  • 由于在时刻ttt时,(rt+n,st+n,at+n)(r_{t+n}, s_{t+n}, a_{t+n})(rt+n,st+n,at+n)还未被收集,我们无法在步骤ttt执行n步Sarsa。然而,我们可以等到时刻t+nt+nt+n来更新(st,at)(s_t, a_t)(st,at)的q值:
    qt+n(st,at)=qt+n−1(st,at)−αt+n−1(st,at)[qt+n−1(st,at)−(rt+1+γrt+2+⋯+γnqt+n−1(st+n,at+n))] \begin{align*} q_{t+n}(s_t, a_t) &= q_{t+n-1}(s_t, a_t) \\ &- \alpha_{t+n-1}(s_t, a_t) \big[ q_{t+n-1}(s_t, a_t) - \big( r_{t+1} + \gamma r_{t+2} + \cdots + \gamma^n q_{t+n-1}(s_{t+n}, a_{t+n}) \big) \big] \end{align*} qt+n(st,at)=qt+n1(st,at)αt+n1(st,at)[qt+n1(st,at)(rt+1+γrt+2++γnqt+n1(st+n,at+n))]

  • 由于n步Sarsa包含Sarsa和蒙特卡洛学习这两种极端情况,其性能是Sarsa和蒙特卡洛学习的混合:

  • 如果nnn较大,其性能接近蒙特卡洛学习,因此有大的方差但偏差小。

  • 如果nnn较小,其性能接近Sarsa,因此由于初始猜测会有相对大的偏差,且方差相对低。

  • 最后,n步Sarsa也用于策略评估。它可以与策略改进步骤结合以搜索最优策略。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值