【RL】Temporal-Difference Learning(时序差分方法)

2024-02-20 08:04

本文主要是介绍【RL】Temporal-Difference Learning(时序差分方法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Lecture 7: Temporal-Difference Learning

TD learning of state values

TD learning通常指的是一大类 RL 算法

TD学习也指用于估计state value的特定算法。

TD learning of state values – Algorithm description

算法中需要的data/experience:

( s 0 , r 1 , s 1 , . . . , s t , r t + 1 , s t + 1 , ⋯ ) (s_0, r_1, s_1, ..., s_t, r_{t+1}, s_{t+1}, \cdots) (s0,r1,s1,...,st,rt+1,st+1,)或由给定的policy π \pi π生成的 { ( s t , r t + 1 ) , s t + 1 } \{ (s_t, r_{t+1}), s_{t+1} \} {(st,rt+1),st+1}

TD learning算法为:
v t + 1 ( s t ) = v t ( s t ) − α t ( s t ) [ v t ( s t ) − [ r t + 1 + γ v t ( s t + 1 ) ] ] , ( 1 ) v t + 1 ( s ) = v t ( s ) , ∀ s ≠ s t , ( 2 ) \begin{align*} &v_{t+1}(s_t)=v_t(s_t)-\alpha_t(s_t)\Big[v_t(s_t)-[r_{t+1}+\gamma v_t(s_{t+1})]\Big], \;\;\;\;\; (1) \\ &v_{t+1}(s)=v_t(s),\quad\forall s\neq s_t, \;\;\;\;\; (2) \end{align*} 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, \cdots t=0,1,2, v t ( s t ) v_t(s_t) vt(st)是针对 v π ( s t ) v_{\pi}(s_t) vπ(st)的估计的state value, α t ( s t ) \alpha_t(s_t) αt(st)是在时间 t t t s t s_t st的 learning rate(学习率)。

  • 在时间 t t t,仅更新已访问状态 s t s_t st 的值,而未访问状态 s ≠ s t s \ne s_t s=st 的值保持不变。

TD learning of state values – Algorithm properties

TD算法可以表示为:
v t + 1 ( s t ) ⏟ new estimate = v t ( s t ) ⏟ current estimate − α t ( s t ) [ v t ( s t ) − [ r t + 1 + γ v t ( s t + 1 ) ⏟ TD target  v ˉ t ] ⏞ TD error  δ t , ( 3 ) \underbrace{v_{t+1}(s_t)}_{\text{new estimate}}=\underbrace{v_t(s_t)}_{\text{current estimate}}-\alpha_t(s_t)[\overbrace{v_t(s_t)-[\underbrace{r_{t+1}+\gamma v_t(s_{t+1})}_{\text{TD target }\bar{v}_t}]}^{\text{TD error } \delta_t}, \;\;\;\;\;(3) new estimate vt+1(st)=current estimate vt(st)αt(st)[vt(st)[TD target vˉt rt+1+γvt(st+1)] TD error δt,(3)
其中:
v ‾ ≐ r t + 1 + γ v ( s t + 1 ) \overline{v} \doteq r_{t+1} + \gamma v(s_t + 1) vrt+1+γv(st+1)
被称为TD target;
δ t ≐ v ( s t ) − [ r t + 1 + γ v ( s t + 1 ) ] = v ( s t ) − v ˉ t \delta_t\doteq v(s_t)-[r_{t+1}+\gamma v(s_{t+1})]=v(s_t)-\bar{v}_t δtv(st)[rt+1+γv(st+1)]=v(st)vˉt
被称为 TD error;

很明显,新的估计 v t + 1 ( s t ) v_{t+1}(s_t) vt+1(st) 是当前估计 v t ( s t ) v_t(s_t) vt(st) 和 TD error的加权组合。

why is v ‾ t \overline{v}_t vt called the TD target?

这是因为算法使 v ( s t ) v(s_t) v(st)趋向于 v ‾ t \overline{v}_t vt

如下式:
v t + 1 ( s t ) = v t ( s t ) − α t ( s t ) [ v t ( s t ) − v ˉ t ] ⇒ v t + 1 ( s t ) − v ˉ t = v t ( s t ) − v ˉ t − α t ( s t ) [ v t ( s t ) − v ˉ t ] ⇒ v t + 1 ( s t ) − v ˉ t = [ 1 − α t ( s t ) ] [ v t ( s t ) − v ˉ t ] ⇒ ∣ v t + 1 ( s t ) − v ˉ t ∣ = ∣ 1 − α t ( s t ) ∣ ∣ v t ( s t ) − v ˉ t ∣ \begin{align*} &v_{t+1}(s_t)=v_t(s_t)-\alpha_t(s_t)[v_t(s_t)-\bar{v}_t] \\ \Rightarrow &v_{t+1}(s_t)-\bar{v}_t=v_t(s_t)-\bar{v}_t-\alpha_t(s_t)[v_t(s_t)-\bar{v}_t] \\ \Rightarrow &v_{t+1}(s_{t})-\bar{v}_{t}=[1-\alpha_{t}(s_{t})][v_{t}(s_{t})-\bar{v}_{t}] \\ \Rightarrow & |v_{t+1}(s_{t})-\bar{v}_{t}|=|1-\alpha_{t}(s_{t})||v_{t}(s_{t})-\bar{v}_{t}| \end{align*} 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 ( s t ) \alpha_t({s_t}) αt(st)是一个小的正数,故:
0 < 1 − α ( s t ) < 1 0 < 1-\alpha_(s_t) < 1 0<1α(st)<1
因此,
∣ v t + 1 ( s t ) − v ˉ t ∣ ≤ ∣ v ( s t ) − v ˉ t ∣ |v_{t + 1}(s_t) - \bar{v}_t| \le |v_(s_t) - \bar{v}_t| vt+1(st)vˉtv(st)vˉt
因此, v ( s t ) v(s_t) v(st)不断趋向于 v ˉ t \bar{v}_t vˉt

what is the interpretation of the TD error?
δ t = v ( s t ) − [ r t + 1 + γ v ( s t + 1 ) ] \delta_t=v(s_t)-[r_{t+1}+\gamma v(s_{t+1})] δt=v(st)[rt+1+γv(st+1)]
它是两个后续时间步长之间的差异。

其反映了 v t v_t vt v π v_{\pi} vπ之间的不足。 如下式:
δ π , t ≐ v π ( s t ) − [ r t + 1 + γ v π ( s t + 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)]
注意:
E [ δ π , t ∣ S t = s t ] = v π ( s t ) − E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s t ] = 0. \mathbb{E}[\delta_{\pi,t}|S_t=s_t]=v_\pi(s_t)-\mathbb{E}\big[R_{t+1}+\gamma v_\pi(S_{t+1})|S_t=s_t\big]=0. E[δπ,tSt=st]=vπ(st)E[Rt+1+γvπ(St+1)St=st]=0.

  • 如果 v t = v π v_t = v_{\pi} vt=vπ,那么 δ t \delta_t δt应该为0
  • 因此,若 δ t \delta_t δt非0,那么 v t v_t vt不等于 v π v_{\pi} vπ

TD error可以理解为“创新”,即从experience(经验)中获得新的信息 ( s t , r t + 1 , s t + 1 ) (s_t,r_{t+1},s_{t+1}) (st,rt+1,st+1)

等式(3)仅估计了给定policy的state value。

  • 其没有估计action value
  • 其没有搜索最优policy

TD learning of state values – The idea of the algorithm

What does this TD algorithm do mathematically?

它求解给定policy π \pi π 的Bellman方程。

第一,Bellman方程的新表达式。

policy π \pi π 的state value的定义为:
v π ( s ) = E [ R + γ G ∣ S = s ] , s ∈ S ( 4 ) v_{\pi}(s)=\mathbb{E}\big[R+\gamma G|S=s\big],\quad s\in\mathcal{S} \;\;\;\;\; (4) vπ(s)=E[R+γGS=s],sS(4)
其中, G G G使离散的return。因为:
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^{\prime}}p(s^{\prime}|s,a)v_\pi(s^{\prime})=\mathbb{E}[v_\pi(S^{\prime})|S=s], E[GS=s]=aπ(as)sp(ss,a)vπ(s)=E[vπ(S)S=s],
其中, S ′ S' S是下一个state,因此等式(4)可以写为:
v π ( s ) = E [ R + γ v π ( S ′ ) ∣ S = s ] , s ∈ S . ( 5 ) v_\pi(s)=\mathbb{E}\big[R+\gamma v_\pi(S')|S=s\big],\quad s\in\mathcal{S}. \;\;\;\;\; (5) vπ(s)=E[R+γvπ(S)S=s],sS.(5)
等式(5)是Bellman等式的另一种表达,其也被称为Bellman expectation equation。

第二,使用RM算法解决等式(5)

定义:
g ( v ( s ) ) = v ( s ) − E [ R + γ v π ( S ′ ) ∣ s ] , g(v(s))=v(s)-\mathbb{E}\big[R+\gamma v_{\pi}(S^{\prime})|s\big], g(v(s))=v(s)E[R+γvπ(S)s],
公式(5)可以写为:
g ( v ( s ) ) = 0 g(v(s)) = 0 g(v(s))=0
由于我们只能获得 R R R S ′ S' S 的样本 r r r s ′ s' 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 ′ ) ] ) ⏟ η . \begin{aligned} \tilde{g}(v(s))& =v(s)-\begin{bmatrix}r+\gamma v_\pi(s')\end{bmatrix} \\ &=\underbrace{\left(v(s)-\mathbb{E}\big[R+\gamma v_\pi(S')|s\big]\right)}_{g(v(s))}+\underbrace{\left(\mathbb{E}\big[R+\gamma v_\pi(S')|s]-\big[r+\gamma v_\pi(s')\big]\right)}_{\eta}. \\ \end{aligned} 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 ) ) g(v(s)) g(v(s)),RM算法为:
v k + 1 ( s ) = v k ( s ) − α k g ~ ( v k ( s ) ) = v k ( s ) − α k ( v k ( s ) − [ r k + γ v π ( s k ′ ) ] ) , k = 1 , 2 , 3 , ⋯ ( 6 ) \begin{align*} v_{k+1}(s) =&v_k(s)-\alpha_k\tilde{g}(v_k(s)) \\ =&v_k(s)-\alpha_k\Big(v_k(s)-\big[r_k+\gamma v_\pi(s_k^{\prime})\big]\Big), \end{align*} \;\;\; k=1, 2, 3, \cdots \;\;\;\;\; (6) vk+1(s)==vk(s)αkg~(vk(s))vk(s)αk(vk(s)[rk+γvπ(sk)]),k=1,2,3,(6)
其中, v k ( s ) v_k(s) vk(s) v π ( s ) v_{\pi}(s) vπ(s)在第 k k k步的估计; r k , s k ′ r_k, s'_k rk,sk是在第 k k k步中在 R , S ′ R, S' R,S中的样本。

公式(6)中的RM算法有两个假设需要特别注意:

  • 必须要有experience集合 { ( s , r , s ′ ) } , k = 1 , 2 , 3 , … \{ (s, r, s') \}, k=1, 2, 3, \dots {(s,r,s)},k=1,2,3,
  • 假设对于任意 s ′ s' s v π ( s ′ ) v_{\pi}(s') vπ(s)已知

为了在RM算法中移除这两个假设,可以将其修改为:

  • { ( s , r , s ′ ) } \{(s, r, s')\} {(s,r,s)} 更改为 ( s t , r t + 1 , s t + 1 ) {(s_t, r_{t+1}, s_{t+1})} (st,rt+1,st+1),以便算法可以利用episode中的连续样本。
  • v π ( s ′ ) v_{\pi}(s') vπ(s) 被它的估计值取代,因为事先不知道它。

Theorem (Convergence of TD Learning)

By the TD algorithm (1), v t ( s ) v_t(s) vt(s) converges with probability 1 to v π ( s ) v_{\pi}(s) vπ(s) for all s ∈ S s \in S sS as t → ∞ t \rightarrow \infty t if ∑ t α t ( s ) = ∞ \sum_t \alpha_t(s) = \infty tαt(s)= and ∑ t α t 2 ( s ) < ∞ \sum_t \alpha_t^2(s) < \infty tαt2(s)< for all s ∈ S s \in S sS.

  • 该定理表示,对于给定的policy π \pi π,可以通过 TD 算法找到state value
  • ∑ t α t ( s ) = ∞ \sum_t \alpha_t(s) = \infty tαt(s)= ∑ t α t 2 ( s ) < ∞ \sum_t \alpha_t^2(s) < \infty tαt2(s)<必须对所有 s ∈ S s \in S sS都满足。在时间步 t t t,如果 s = s t s = s_t s=st,这意味着 s s s 在时间 t t t 被访问,则 α t ( s ) > 0 \alpha_t(s) > 0 αt(s)>0; 否则,对于所有其他 s ≠ s t s \ne st s=st α t ( s ) = 0 \alpha_t(s) = 0 αt(s)=0。 这要求每个state必须被访问无限(或足够多)次。
  • 学习率 α \alpha α通常被选为一个小的常数。 此时, ∑ t α t 2 ( s ) < ∞ \sum_t \alpha_t^2(s) < \infty tαt2(s)<的条件不再成立。 当 α \alpha α一定时,仍然可以证明算法在期望意义上收敛。

算法比较

TD/Sarsa learningMC learning
Online: TD learning是online的。 它可以在收到reward后立即更新state/action value。offline: MC learning是offline的。 它必须等到一个episode完全收集完毕。
Continuing tasks:由于TD学习是online的,因此它可以处理episodic任务和连续任务。Episodic任务:由于MC学习是离线的,它只能处理具有终止状态的episodic任务。
Bootstrapping: TD bootstraps是因为值的更新依赖于该值的先前估计。 因此,它需要初始猜测。Non-bootstrapping: MC不是bootstrapping,因为它可以无需任何初始猜测即可估计state/action value。
低估计方差:TD 比 MC 低,因为随机变量较少。 例如,Sarsa 需要 R t + 1 、 S t + 1 、 A t + 1 R_{t+1}、S_{t+1}、A_{t+1} Rt+1St+1At+1高估计方差:为了估计 q π ( s t , a t ) q_{\pi}(s_t, a_t) qπ(st,at),需要 R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots Rt+1+γRt+2+γ2Rt+3+ 样本。假设每个episode的长度为 L L L。有$

TD learning of action values: Sarsa

Sarsa – Algorithm

上一节介绍的TD算法只能估计state value。
接下来将介绍Sarsa,一个可以直接估计state value的算法。

首先,我们的目标是估计给定policy π \pi π 的action value。假设有一些经验 { ( s t , a t , r t + 1 , s t + 1 , a t + 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 算法来估计动作值:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ q t ( s t + 1 , a t + 1 ) ] ] , q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) , \begin{aligned}q_{t+1}(s_t,a_t)&=q_t(s_t,a_t)-\alpha_t(s_t,a_t)\Big[q_t(s_t,a_t)-[r_{t+1}+\gamma q_t(s_{t+1},a_{t+1})]\Big],\\q_{t+1}(s,a)&=q_t(s,a),\quad\forall(s,a)\neq(s_t,a_t),\end{aligned} qt+1(st,at)qt+1(s,a)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γqt(st+1,at+1)]],=qt(s,a),(s,a)=(st,at),
其中: t = 0 , 1 , 2 , ⋯ t = 0, 1, 2, \cdots t=0,1,2,

  • q t ( s t , a t ) q_t(s_t, a_t) qt(st,at) q π ( s t , a t ) q_{\pi}(s_t, a_t) qπ(st,at)的估计值
  • α t ( s t , a t ) \alpha_t(s_t, a_t) αt(st,at)是依赖于 s t , a t s_t, a_t st,at的学习率。

Why is this algorithm called Sarsa?

因为算法的每一步都涉及 ( s t , a t , r t + 1 , s t + 1 , a t + 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的缩写。

What is the relationship between Sarsa and the previous TD learning algorithm?

可以通过将TD算法中的state value估计 v ( s ) v(s) v(s)替换为action value估计 q ( s , a ) q(s,a) q(s,a)来获得Sarsa。 因此,Sarsa 是 TD 算法的action-value版。

What does the Sarsa algorithm do mathematically?

Sarsa 的表达式表明其是求解以下方程的随机近似算法:
q π ( s , a ) = E [ R + γ q π ( S ′ , A ′ ) ∣ s , a ] , ∀ s , a . q_{\pi}(s,a)=\mathbb{E}\left[R+\gamma q_{\pi}(S^{\prime},A^{\prime})|s,a\right],\quad\forall s,a. qπ(s,a)=E[R+γqπ(S,A)s,a],s,a.
这是Bellman方程的另一种以action value表示的表达式。

Theorem (Convergence of Sarsa learning)

By the e Sarsa algorithm, q t ( s , a ) q_t(s, a) qt(s,a) converges with probability 1 to action value q π ( s , a ) q_{\pi}(s, a) qπ(s,a) as t → ∞ t \rightarrow \infty t for all ( s , a ) (s, a) (s,a) if ∑ t α t ( s ) = ∞ \sum_t \alpha_t(s) = \infty tαt(s)= and ∑ t α t 2 ( s ) < ∞ \sum_t \alpha_t^2(s) < \infty tαt2(s)< for all ( s , a ) (s, a) (s,a).

该定理表明,对于给定的policy π \pi π,Sarsa 可以找到action value。

Sarsa – Implementation

强化学习的最终目标是找到最优policy。
为此,可以将 Sarsa 与policy improvement步骤结合起来。组合算法也称为 Sarsa。

在这里插入图片描述

  • s t s_t st 的policy在 q ( s t , a t ) q(s_t, a_t) q(st,at)更新后立即更新。 这是基于广义policy迭代的思想。
  • 政策是 ε \varepsilon ε-greedy而不是贪心,以很好地平衡开采(exploitation)和探索(exploration)。
  • 核心思想很简单:就是用一种算法来求解给定policy的Bellman方程。

Sarsa – Examples

r target = 0 , r forbidden = r boundary = − 10 r_{\text{target}} = 0, r_{\text{forbidden}} = r_{\text{boundary}} = -10 rtarget=0,rforbidden=rboundary=10 r other = − 1 r_{\text{other}} = -1 rother=1,学习率 α = 0.1 \alpha = 0.1 α=0.1 ε = 0.1 \varepsilon = 0.1 ε=0.1

在这里插入图片描述

如上图左:并非所有state都有最优policy

如上图右:每episode总reward的指标将被频繁使用。

TD learning of action values: Expected Sarsa

Sarsa 的一个变体是 Expected Sarsa 算法:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − ( r t + 1 + γ E [ q t ( s t + 1 , A ) ] ) ] , q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) , \begin{aligned} q_{t+1}(s_{t},a_{t})& =q_t(s_t,a_t)-\alpha_t(s_t,a_t)\Big[q_t(s_t,a_t)-(r_{t+1}+\gamma\mathbb{E}[q_t(s_{t+1},A)])\Big], \\ q_{t+1}(s,a)& =q_t(s,a),\quad\forall(s,a)\neq(s_t,a_t), \end{aligned} qt+1(st,at)qt+1(s,a)=qt(st,at)αt(st,at)[qt(st,at)(rt+1+γE[qt(st+1,A)])],=qt(s,a),(s,a)=(st,at),
其中,
E [ q t ( s t + 1 , A ) ] ) = ∑ a π t ( a ∣ s t + 1 ) q t ( s t + 1 , a ) ≐ v t ( s t + 1 ) \mathbb{E}[q_t(s_{t+1},A)])=\sum_a\pi_t(a|s_{t+1})q_t(s_{t+1},a)\doteq v_t(s_{t+1}) E[qt(st+1,A)])=aπt(ast+1)qt(st+1,a)vt(st+1)
是policy π t \pi_t πt q t ( s t + 1 , a ) q_t(s_{t+1}, a) qt(st+1,a) 的期望值。

与Sarsa比较:

  • TD target 从 Sarsa 中的 r t + 1 + γ q t ( s t + 1 , a t + 1 ) r_{t+1} + \gamma q_t(s_{t+1}, a_{t+1}) rt+1+γqt(st+1,at+1) 更改为 Expected Sarsa 中的 r t + 1 + γ E [ q t ( s t + 1 , A ) ] r_{t+1}+\gamma\mathbb{E}[q_t(s_{t+1},A)] rt+1+γE[qt(st+1,A)]
  • 需要更多的计算。 但从减少估计方差的意义上来说,它是有益的,因为它将 Sarsa 中的随机变量从 { s t , a t , r t + 1 , s t + 1 , a t + 1 } \{s_t,a_t,r_{t+1},s_{t+1},a_{t+1}\} {st,at,rt+1,st+1,at+1}减少到 { s t , a t , r t + 1 , s t + 1 } \{s_t,a_t,r_{t+1},s_{t+1}\} {st,at,rt+1,st+1}

What does the algorithm do mathematically?

Expected Sarsa 是一种随机近似算法,用于求解以下方程:
q π ( s , a ) = E [ R t + 1 + γ E A t + 1 ∼ π ( S t + 1 ) [ q π ( S t + 1 , A t + 1 ) ] ∣ S t = s , A t = a ] , ∀ s , a . q_{\pi}(s,a)=\mathbb{E}\Big[R_{t+1}+\gamma\mathbb{E}_{A_{t+1}\sim\pi(S_{t+1})}[q_{\pi}(S_{t+1},A_{t+1})]\Big|S_{t}=s,A_{t}=a\Big],\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 [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = a ] q_\pi(s,a)=\mathbb{E}\Big[R_{t+1}+\gamma v_\pi(S_{t+1})|S_t=s,A_t=a\Big] qπ(s,a)=E[Rt+1+γvπ(St+1)St=s,At=a]

TD learning of action values: n-step Sarsa

n n n-step Sarsa:可以统一 Sarsa 和 Monte Carlo learning

action value的定义为:
q π ( s , a ) = E [ G t ∣ S t = s , A t = a ] . q_\pi(s,a)=\mathbb{E}[G_t|S_t=s,A_t=a]. qπ(s,a)=E[GtSt=s,At=a].
discount return G t G_t Gt 可以写成不同的形式:
Sarsa ⟵ G t ( 1 ) = R t + 1 + γ q π ( S t + 1 , A t + 1 ) , G t ( 2 ) = R t + 1 + γ R t + 2 + γ 2 q π ( S t + 2 , A t + 2 ) , ⋮ n -step Sarsa ⟵ G t ( n ) = R t + 1 + γ R t + 2 + ⋯ + γ n q π ( S t + n , A t + n ) , ⋮ MC ⟵ G t ( ∞ ) = R t + 1 + γ R t + 2 + γ 2 R t + 3 + … \begin{align*} \text{Sarsa} \longleftarrow 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^2q_\pi(S_{t+2},A_{t+2}),\\ &\vdots \\ n\text{-step Sarsa} \longleftarrow G_t^{(n)}&=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^nq_\pi(S_{t+n},A_{t+n}),\\ &\vdots\\ \text{MC} \longleftarrow G_t^{(\infty)}&=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\ldots \end{align*} SarsaGt(1)Gt(2)n-step SarsaGt(n)MCGt()=Rt+1+γqπ(St+1,At+1),=Rt+1+γRt+2+γ2qπ(St+2,At+2),=Rt+1+γRt+2++γnqπ(St+n,At+n),=Rt+1+γRt+2+γ2Rt+3+
需要注意的是, G t = G t ( 1 ) = G t ( 2 ) = G t ( n ) = G t ( ∞ ) \begin{aligned}G_t=G_t^{(1)}=G_t^{(2)}=G_t^{(n)}=G_t^{(\infty)}\end{aligned} Gt=Gt(1)=Gt(2)=Gt(n)=Gt(),其中上标仅表示 G t G_t Gt的不同分解结构。

Sarsa目的是解决:
q π ( s , a ) = E [ G t ( 1 ) ∣ s , a ] = E [ R t + 1 + γ q π ( S t + 1 , A t + 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 [ G t ( ∞ ) ∣ s , a ] = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + … ∣ s , a ] . q_\pi(s,a)=\mathbb{E}[G_t^{(\infty)}|s,a]=\mathbb{E}[R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\ldots|s,a]. qπ(s,a)=E[Gt()s,a]=E[Rt+1+γRt+2+γ2Rt+3+s,a].
n n n-step Sarsa 的中间算法目的是解决:
q π ( s , a ) = E [ G t ( n ) ∣ s , a ] = E [ R t + 1 + γ R t + 2 + ⋯ + γ n q π ( S t + n , A t + n ) ∣ s , a ] . \begin{aligned}q_\pi(s,a)=\mathbb{E}[G_t^{(n)}|s,a]=\mathbb{E}[R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^nq_\pi(S_{t+n},A_{t+n})|s,a].\end{aligned} qπ(s,a)=E[Gt(n)s,a]=E[Rt+1+γRt+2++γnqπ(St+n,At+n)s,a].
n n n-step Sarsa 算法目的是解决:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ r t + 2 + ⋯ + γ n q t ( s t + n , a t + n ) ] ] . q_{t+1}(s_t,a_t)=q_t(s_t,a_t) -\alpha_t(s_t,a_t)\Big[q_t(s_t,a_t)-[r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^nq_t(s_{t+n},a_{t+n})]\Big]. qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γrt+2++γnqt(st+n,at+n)]].
n n n-step Sarsa 更通用,因为当 n = 1 n = 1 n=1 时它变成(one-step)Sarsa 算法,当 n = ∞ n = \infty n= 时它变成 MC learning算法。

n n n-step Sarsa需要 ( s t , a t , r t + 1 , s t + 1 , a t + 1 , … , r t + n , s t + n , a t + n ) . (s_t,a_t,r_{t+1},s_{t+1},a_{t+1},\ldots,r_{t+n},s_{t+n},a_{t+n}). (st,at,rt+1,st+1,at+1,,rt+n,st+n,at+n).

由于 ( r t + n , s t + n , a t + n ) (r_{t+n}, s_{t+n}, a_{t+n}) (rt+n,st+n,at+n)在时间 t t t 尚未收集,因此无法在步骤 t t t 实现 n n n-step Sarsa。 然而,可以等到时间 t + n t + n t+n 来更新 ( s t , a t ) (s_t, a_t) (st,at) 的 q 值:
q t + n ( s t , a t ) = q t + n − 1 ( s t , a t ) − α t + n − 1 ( s t , a t ) [ q t + n − 1 ( s t , a t ) − [ r t + 1 + γ r t + 2 + ⋯ + γ n q t + n − 1 ( s t + n , a t + 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)-[r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^nq_{t+n-1}(s_{t+n},a_{t+n})]\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 n n-step Sarsa 将 Sarsa 和 MC learning作为两种极端情况,因此其性能是 Sarsa 和 MC learning的混合:

  • 如果 n n n很大,它的性能接近MC learning,因此方差很大但偏差很小。
  • 如果 n n n较小,则其性能接近Sarsa,因此由于初始猜测和相对较低的方差而具有相对较大的偏差。

n-step Sarsa 也用于policy evaluation。 它可以与policy improvement步骤相结合来搜索最优policy。

TD learning of optimal action values: Q-learning

Sarsa 可以估计给定policy的action value。 它必须与policy improvement步骤相结合才能找到最佳policy。

Q-learning 可以直接估计最优action value,从而估计最优policy。

Q-learning – Algorithm

Q-learning算法为:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ max ⁡ a ∈ A q t ( s t + 1 , a ) ] ] , q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) , \begin{aligned} q_{t+1}(s_{t},a_{t})& =q_t(s_t,a_t)-\alpha_t(s_t,a_t)\left[q_t(s_t,a_t)-[r_{t+1}+\gamma\max_{a\in\mathcal{A}}q_t(s_{t+1},a)]\right], \\ q_{t+1}(s,a)& =q_t(s,a),\quad\forall(s,a)\neq(s_t,a_t), \end{aligned} qt+1(st,at)qt+1(s,a)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γaAmaxqt(st+1,a)]],=qt(s,a),(s,a)=(st,at),
Q-learning 与 Sarsa 非常相似。 它们仅在 TD target方面有所不同:

  • Q-learning 中的 TD target是: r t + 1 + γ max ⁡ a ∈ A q t ( s t + 1 , a ) r_{t+1}+\gamma\max_{a\in\mathcal{A}}q_t(s_{t+1},a) rt+1+γmaxaAqt(st+1,a)
  • Sarsa 中的 TD target是: r t + 1 + γ q t ( s t + 1 , a t + 1 ) r_{t+1}+\gamma q_t(s_{t+1},a_{t+1}) rt+1+γqt(st+1,at+1)

What does Q-learning do mathematically?

其目的是解决:
q ( s , a ) = E [ R t + 1 + γ max ⁡ a q ( S t + 1 , a ) ∣ S t = s , A t = a ] , ∀ s , a . \left.q(s,a)=\mathbb{E}\left[R_{t+1}+\gamma\max_aq(S_{t+1},a)\right|S_t=s,A_t=a\right],\quad\forall s,a. q(s,a)=E[Rt+1+γamaxq(St+1,a) St=s,At=a],s,a.
这是用action values表示的Bellman最优方程。

Off-policy vs on-policy

在进一步研究Q-learning之前,需要首先介绍两个重要的概念:on-policy learning和off-policy learning。
TD learning任务中存在两种policy:

  • behavior policy用于生成经验样本
  • target policy不断更新以达到最优policy

On-policy vs off-policy:

  • 当behavior policy与target policy相同时,这种学习称为on-policy learning。
  • 当不同时,称为off-policy learning。

Advantages of off-policy learning:

它可以根据任何其他policy生成的经验样本来搜索最优policy。

作为一个重要的特例,behavior policy可以选择具有探索性。 例如,如果想估计所有state-action对的action value,可以使用探索性policy来生成多次访问每个state-action对的episode。

How to judge if a TD algorithm is on-policy or off-policy?

首先,检查算法在数学上的作用。

其次,检查实现算法需要哪些东西。

Sarsa is on-policy.

首先,Sarsa 的目标是求解给定policy π \pi π 的Bellman方程:
q π ( s , a ) = E [ R + γ q π ( S ′ , A ′ ) ∣ s , a ] , ∀ s , a . q_\pi(s,a)=\mathbb{E}\left[R+\gamma q_\pi(S^{\prime},A^{\prime})|s,a\right],\quad\forall s,a. qπ(s,a)=E[R+γqπ(S,A)s,a],s,a.
其中, R ∼ p ( R ∣ s , a ) , S ′ ∼ p ( S ′ ∣ s , a ) , A ′ ∼ π ( A ′ ∣ S ′ ) . R\sim p(R|s,a),S^{\prime}\sim p(S^{\prime}|s,a),{A^{\prime}\sim\pi(A^{\prime}|S^{\prime})}. Rp(Rs,a),Sp(Ss,a),Aπ(AS).

其次,算法是:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ q t ( s t + 1 , a t + 1 ) ] ] , q_{t+1}(s_t,a_t)=q_t(s_t,a_t)-\alpha_t(s_t,a_t)\Big[q_t(s_t,a_t)-[r_{t+1}+\gamma q_t(s_{t+1},a_{t+1})]\Big], qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γqt(st+1,at+1)]],
需要 ( s t , a t , r t + 1 , s t + 1 , a t + 1 ) (s_t,a_t,r_{t+1},s_{t+1},a_{t+1}) (st,at,rt+1,st+1,at+1)

如果给出 ( s t , a t ) (s_t, a_t) (st,at),则 r t + 1 r_{t+1} rt+1 s t + 1 s_{t+1} st+1 不依赖于任何policy。 a t + 1 a_{t+1} at+1 是根据 π t ( s t + 1 ) π_t(s_{t+1}) πt(st+1)生成的。

π t \pi_t πt 既是behavior policy又是target policy。

Monte Carlo learning is on-policy.

首先,MC方法目的是计算:
q π ( s , a ) = E [ R t + 1 + γ R t + 2 + … ∣ S t = s , A t = a ] , ∀ s , a . q_{\pi}(s,a)=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\ldots|S_{t}=s,A_{t}=a\right],\quad\forall s,a. qπ(s,a)=E[Rt+1+γRt+2+St=s,At=a],s,a.
其中样本是根据给定policy π \pi π 生成的。

其次,MC方法的实现是:
q ( s , a ) ≈ r t + 1 + γ r t + 2 + … q(s,a)\approx r_{t+1}+\gamma r_{t+2}+\ldots q(s,a)rt+1+γrt+2+
action value用于生成样本,样本进一步用于估计policy的action value。 基于action value,可以改进policy。

Q-learning is off-policy.

首先,Q-learning旨在求解Bellman最优方程:
q ( s , a ) = E [ R t + 1 + γ max ⁡ a q ( S t + 1 , a ) ∣ S t = s , A t = a ] , ∀ s , a . q(s,a)=\mathbb{E}\left[R_{t+1}+\gamma\max_aq(S_{t+1},a)\Big|S_t=s,A_t=a\right],\quad\forall s,a. q(s,a)=E[Rt+1+γamaxq(St+1,a) St=s,At=a],s,a.
其次,算法为:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ max ⁡ a ∈ A q t ( s t + 1 , a ) ] ] q_{t+1}(s_t,a_t)=q_t(s_t,a_t)-\alpha_t(s_t,a_t)\left[q_t(s_t,a_t)-[r_{t+1}+\gamma\max_{a\in\mathcal{A}}q_t(s_{t+1},a)]\right] qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γaAmaxqt(st+1,a)]]
需要 ( s t , a t , r t + 1 , s t + 1 ) . (s_t,a_t,r_{t+1},s_{t+1}). (st,at,rt+1,st+1).

根据 s t s_t st 生成 a t a_t at 的behavior policy可以是任何内容。 target policy将收敛于最优policy。

由于 Q-learning是off-policy的,因此它可以既可以以off-policy形式实现也可以以on-policy形式实现。

在这里插入图片描述

在这里插入图片描述

Q-learning – Examples

r boundary = r forbidden = − 1 r_{\text{boundary}} = r_{\text{forbidden}} = -1 rboundary=rforbidden=1 r target = 1 r_{\text{target}} = 1 rtarget=1。discount rate γ = 0.9 \gamma=0.9 γ=0.9。学习率 α = 0.1 \alpha=0.1 α=0.1

在这里插入图片描述

下图是behavior policy和其生成的样本( 1 0 5 10^5 105步):

在这里插入图片描述

off-policy Q-learning 学习到的policy:

在这里插入图片描述

探索的重要性: 1 0 5 10^5 105个episode
如果policy探索性不够,样本就不够好。如下图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

A unified point of view

本讲介绍的所有算法都可以用一个统一的表达式来表示:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − q ˉ t ] , 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)-\bar{q}_t], qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)qˉt],
其中, q ˉ t \bar{q}_t qˉt是TD target。

不同的TD算法有不同的 q ˉ t \bar{q}_t qˉt

AlgorithmExpression of q ˉ t \bar{q}_t qˉt
Sarsa q ˉ t = r t + 1 + γ q t ( s t + 1 , a t + 1 ) \bar{q}_t=r_{t+1}+\gamma q_t(s_{t+1},a_{t+1}) qˉt=rt+1+γqt(st+1,at+1)
n n n-step Sarsa q ˉ t = r t + 1 + γ r t + 2 + ⋯ + γ n q t ( s t + n , a t + n ) \bar{q}_t=r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^nq_t(s_{t+n},a_{t+n}) qˉt=rt+1+γrt+2++γnqt(st+n,at+n)
Expected Sarsa q ˉ t = r t + 1 + γ ∑ a π t ( a ∣ s t + 1 ) q t ( s t + 1 , a ) \bar{q}_t=r_{t+1}+\gamma\sum_a\pi_t(a | s_{t+1})q_t(s_{t+1}, a) qˉt=rt+1+γaπt(ast+1)qt(st+1,a)
Q-learning q ˉ t = r t + 1 + γ max ⁡ a q t ( s t + 1 , a ) \bar{q}_t=r_{t+1}+\gamma\max_aq_t(s_{t+1},a) qˉt=rt+1+γmaxaqt(st+1,a)
Monte Carlo q ˉ t = r t + 1 + γ r t + 2 + … \bar{q}_t=r_{t+1}+\gamma r_{t+2}+\ldots qˉt=rt+1+γrt+2+

MC 方法也可以通过设置 α t ( s t , a t ) = 1 \alpha_t(s_t, a_t) = 1 αt(st,at)=1 从而 q t + 1 ( s t , a t ) = q ˉ t q_{t+1}(s_t, a_t) = \bar{q}_t qt+1(st,at)=qˉt 来表达在这个统一表达式中。

所有算法都可以看作求解Bellman方程或Bellman最优方程的随机近似算法:

AlgorithmEquation aimed to solve
Sarsa BE:  q π ( s , a ) = E [ R t + 1 + γ q π ( S t + 1 , A t + 1 ) S t = s , A t = a ] \text{BE: }q_\pi(s,a)=\mathbb{E}\left[R_{t+1}+\gamma q_\pi(S_{t+1},A_{t+1})S_t=s,A_t=a\right] BE: qπ(s,a)=E[Rt+1+γqπ(St+1,At+1)St=s,At=a]
n n n-step Sarsa BE:  q π ( s , a ) = E [ R t + 1 + γ R t + 2 + ⋯ + γ n q π ( s t + n , a t + n ) S t = s , A t = a ] \text{BE: }q_\pi(s,a)=\mathbb{E}[R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^nq_\pi(s_{t+n},a_{t+n})S_t=s,A_t=a] BE: qπ(s,a)=E[Rt+1+γRt+2++γnqπ(st+n,at+n)St=s,At=a]
Expected Sarsa BE:  q π ( s , a ) = E [ R t + 1 + γ E A t + 1 [ q π ( S t + 1 , A t + 1 ) ] ∣ S t = s , A t = a ] \text{BE: }q_\pi(s,a)=\mathbb{E} \big[R_{t+1}+\gamma \mathbb{E}_{A_{t+1}}\big[q_\pi(S_{t+1},A_{t+1})\big] | S_t=s, A_t=a \big] BE: qπ(s,a)=E[Rt+1+γEAt+1[qπ(St+1,At+1)]St=s,At=a]
Q-learning BE:  q ( s , a ) = E [ R t + 1 + max ⁡ a q ( S t + 1 , a ) ∣ S t = s , A t = a ] \text{BE: }q(s,a)=\mathbb{E}\left[R_{t+1}+\max_aq(S_{t+1},a) | S_t = s, A_t = a \right] BE: q(s,a)=E[Rt+1+maxaq(St+1,a)St=s,At=a]
Monte Carlo BE:  q π ( s , a ) = E [ R t + 1 + γ R t + 2 + … ∣ S t = s , A t = a ] \text{BE: }q_\pi(s,a)=\mathbb{E}[R_{t+1}+\gamma R_{t+2}+\ldots | S_t = s, A_t = a] BE: qπ(s,a)=E[Rt+1+γRt+2+St=s,At=a]

Summary

  • Introduced various TD learning algorithms
  • Their expressions, math interpretations, implementation, relationship, examples
  • Unified point of view




以上内容为B站西湖大学智能无人系统 强化学习的数学原理 公开课笔记。

这篇关于【RL】Temporal-Difference Learning(时序差分方法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727529

相关文章

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

python忽略warnings的几种方法

《python忽略warnings的几种方法》本文主要介绍了几种在Python忽略警告信息的方法,,可以使用Python内置的警告控制机制来抑制特定类型的警告,下面就来介绍一下,感兴趣的可以了解一下... 目录方法 1: 使用 warnings 模块过滤特定类型和消息内容的警告方法 2: 使用 warnin

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

MAVEN3.9.x中301问题及解决方法

《MAVEN3.9.x中301问题及解决方法》本文主要介绍了使用MAVEN3.9.x中301问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录01、背景02、现象03、分析原因04、解决方案及验证05、结语本文主要是针对“构建加速”需求交

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

Python读取TIF文件的两种方法实现

《Python读取TIF文件的两种方法实现》本文主要介绍了Python读取TIF文件的两种方法实现,包括使用tifffile库和Pillow库逐帧读取TIFF文件,具有一定的参考价值,感兴趣的可以了解... 目录方法 1:使用 tifffile 逐帧读取安装 tifffile:逐帧读取代码:方法 2:使用

Java子线程无法获取Attributes的解决方法(最新推荐)

《Java子线程无法获取Attributes的解决方法(最新推荐)》在Java多线程编程中,子线程无法直接获取主线程设置的Attributes是一个常见问题,本文探讨了这一问题的原因,并提供了两种解决... 目录一、问题原因二、解决方案1. 直接传递数据2. 使用ThreadLocal(适用于线程独立数据)

Python模块导入的几种方法实现

《Python模块导入的几种方法实现》本文主要介绍了Python模块导入的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录一、什么是模块?二、模块导入的基本方法1. 使用import整个模块2.使用from ... i

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.