由于全文太长,只好分开发了。 (已完结!在专栏查看本系列其他文章)

个人博客可以直接看全文~

本系列为在学习赵世钰老师的“强化学习的数学原理” 课程后所作笔记。

课堂视频链接https://www.bilibili.com/video/BV1sd4y167NS/

第七章 Temporal-Difference learning

Temporal-Difference learning (TD)时序差分算法

这是一个incremental 迭代式的算法。

motivating example

  1. 先考虑一个简单的问题 mean estimation : 计算

w = [ X ] w = \mathbb[X] w=[X] , (X是一些iid(独立同分布)采样 { x } \{x\} {x})

g ( w ) = w − E [ X ] g(w) = w - \mathbb E[X] g(w)=wE[X] ,则有

g ~ ( w , η ) = w − x = ( w − E [ X ] ) + ( E [ X ] − x ) ≈ g ( w ) + η \tilde g(w,\eta) = w - x = (w - \mathbb E[X]) + (\mathbb E[X] - x) \approx g(w) + \eta g~(w,η)=wx=(wE[X])+(E[X]x)g(w)+η

然后根据RM算法,可以得到 w k + 1 = w k − α k g ~ ( w k , η k ) = w k − α k ( w k − x k ) w_{k+1} = w_k - \alpha_k \tilde g(w_k,\eta_k) = w_k - \alpha _k (w_k - x_k) wk+1=wkαkg~(wk,ηk)=wkαk(wkxk)

  1. 考虑一个复杂一些的例子:计算

w = E [ v ( X ) ] w = \mathbb E[v(X)] w=E[v(X)] , (X是一些iid(独立同分布)采样 { x } \{x\} {x})

g ( w ) = w − E [ v ( X ) ] g(w) = w - \mathbb E[v(X)] g(w)=wE[v(X)]

g ~ ( w , η ) = w − v ( x ) = ( w − E [ X ] ) + ( E [ X ] − v ( x ) ) ≈ g ( w ) + η \tilde g(w,\eta) = w - v(x) = (w - \mathbb E[X]) + (\mathbb E[X] - v(x)) \approx g(w) + \eta g~(w,η)=wv(x)=(wE[X])+(E[X]v(x))g(w)+η

然后根据RM算法,可以得到 w k + 1 = w k − α k g ~ ( w k , η k ) = w k − α k ( w k − v ( x k ) ) w_{k+1} = w_k - \alpha_k \tilde g(w_k,\eta_k) = w_k - \alpha _k (w_k - v(x_k)) wk+1=wkαkg~(wk,ηk)=wkαk(wkv(xk))

  1. 第三个例子:计算

w = [ R + γ v ( X ) ] w = \mathbb [R + \gamma v(X)] w=[R+γv(X)] , ( R , X R,X R,X 是随机变量, γ \gamma γ 是常量, v ( ⋅ ) v(\cdot) v() 是函数)

g ( w ) = w − E [ R + γ v ( X ) ] g(w) = w - \mathbb E[R + \gamma v(X)] g(w)=wE[R+γv(X)] ,
g ~ ( w , η ) = w − E [ R + γ v ( X ) ] = ( w − E [ R + γ v ( X ) ] ) + ( E [ R + γ v ( X ) ] − [ r + γ v ( X ) ] ) ≈ g ( w ) + η \begin{aligned} \tilde g(w,\eta) &= w - \mathbb E[R+\gamma v(X)] \\ & = (w - \mathbb E[R + \gamma v(X)]) + (\mathbb E[R + \gamma v(X)] - [r + \gamma v(X)]) \\ & \approx g(w) + \eta \end{aligned} g~(w,η)=wE[R+γv(X)]=(wE[R+γv(X)])+(E[R+γv(X)][r+γv(X)])g(w)+η
然后根据RM算法,可以得到KaTeX parse error: Invalid color: ' #0000FF' at position 11: \textcolor{̲ ̲#̲0̲0̲0̲0̲F̲F̲}̲{w_{k+1} = w_k …

TD算法中的state values

注意:

  • TD算法通常指的是一大类的RL算法。
  • TD算法也可以特指一种用于估计state values的算法。

TD算法基于数据: ( 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},...) (s0,r1,s1,...,st,rt+1,st+1,...) 或者 { ( s t , r t + 1 , s t + 1 ) } t \{(s_t,r_{t+1},s_{t+1})\}_t {(st,rt+1,st+1)}t ,这种数据通过给定的策略 π \pi π 来生成。

TD算法则是:
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{aligned} v_{t+1}(s_t) &= v_t(s_t) - \alpha_t(s_t)[v_t(s_t) - [r_{t+1} + \gamma v_t(s_{t+1})]] & (1) \\ v_{t+1}(s) &=v_t(s), \forall s \not=s_t&(2) \end{aligned} vt+1(st)vt+1(s)=vt(st)αt(st)[vt(st)[rt+1+γvt(st+1)]]=vt(s),s=st(1)(2)
对于公式 ( 2 ) (2) (2) 表示,如果现在的状态是 s t s_t st ,那么其他状态的value是不更新的。

我们关注于第一个式子:

v t + 1 ( s t ) = v t ( s t ) − α t ( s t ) [ v t ( s t ) − [ r t + 1 + γ v t ( s t + 1 ) ] ] v_{t+1}(s_t) = v_t(s_t) - \alpha_t(s_t)[v_t(s_t) - [r_{t+1} + \gamma v_t(s_{t+1})]] vt+1(st)=vt(st)αt(st)[vt(st)[rt+1+γvt(st+1)]]

其中的 v t + 1 ( s t ) v_{t+1}(s_t) vt+1(st) 是新的估计值, v t ( s t ) v_t(s_t) vt(st) 是现在的估计值。

v t ( s t ) − [ r t + 1 + γ v t ( s t + 1 ) ] v_t(s_t) - [r_{t+1} + \gamma v_t(s_{t+1})] vt(st)[rt+1+γvt(st+1)] 是误差 δ t \delta_t δt

[ r t + 1 + γ v t ( s t + 1 ) ] [r_{t+1} + \gamma v_t(s_{t+1})] [rt+1+γvt(st+1)] 是目标 v ‾ t \overline v_t vt

为什么 v ‾ t \overline v_t vt 是“TD目标” ?因为每次 v ( s t ) v(s_t) v(st) 都会向着 v ‾ t \overline v_t vt 移动。
KaTeX parse error: Invalid color: ' #0000FF' at position 127: …s_t) \textcolor{̲ ̲#̲0̲0̲0̲0̲F̲F̲}̲{-\overline v_t…
因为 0 < 1 − α t ( s t ) < 1 0 < 1 - \alpha_t(s_t) < 1 0<1αt(st)<1

于是 ∣ v t + 1 ( s t ) − v ‾ t ∣ ≤ ∣ v t ( s t ) − v ‾ t ∣ |v_{t+1}(s_t) - \overline{v}_t| \le |v_{t}(s_t) - \overline{v}_t| vt+1(st)vtvt(st)vt

为什么 δ t \delta_t δt是“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)]

因为发生在t和t+1两个时刻 ,所以才叫时序差分,

TD error 描述了 v t v_t vt v π v_\pi vπ 之间的误差。

v t = v π v_t = v_\pi vt=vπ 时,那么应该有 δ t = 0 \delta _t = 0 δt=0

TD error是一种 innovation,这是经验 ( s t , r t + 1 , s t + 1 ) (s_t,r_{t+1},s_{t+1}) (st,rt+1,st+1)的一种新的信息。

TD算法的数学意义

他解决了给定 π \pi π,求解贝尔曼公式。

新的贝尔曼公式:
v π ( s ) = E [ R + γ G ∣ S = s ] , s ∈ S v_\pi(s) = \mathbb E[R + \gamma G |S = s], s \in S vπ(s)=E[R+γGS=s],sS
在这之中G是下个状态的Reward,所以$\mathbb E[G|S = s] $可以表示为:
E [ G ∣ S = s ] = ∑ a π ( a ∣ s ) ∑ s ′ p ( s ′ ∣ s , a ) v π ( s ′ ) = E [ v π ( S ′ ) ∣ S = s ] \mathbb E[G|S = s] = \underset{a}{\sum} \pi(a|s) \underset{s'}{\sum} 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 ′ S' S 是下一个状态

于是s的state value可以写为:
v π ( s ) = E [ R + γ v π ( S ′ ) ∣ S = s ] , s ∈ S v_\pi(s) = \mathbb E[R + \gamma v_\pi(S')| S = s],s \in S vπ(s)=E[R+γvπ(S)S=s],sS
这个公式也被称为贝尔曼期望公式。

接下来使用RM算法来求解这个贝尔曼期望公式:
定义 g ( v ( s ) ) = v ( s ) − E [ R + γ v π ( S ′ ) ∣ S = s ] = 0 g(v(s)) = v(s) - \mathbb E[R + \gamma v_\pi(S')| S = s] = 0 g(v(s))=v(s)E[R+γvπ(S)S=s]=0

于是我们有 g ( v ( s ) ) = 0 g(v(s)) = 0 g(v(s))=0
g ~ ( v ( s ) ) = v ( s ) − [ r + γ v π ( s ′ ) ] = ( v ( s ) − E [ R + γ v π ( S ′ ) ∣ s ] ) + ( E [ R + γ v p i ( S ′ ) ∣ s ] − [ r + γ v π ( s ′ ) ] ) \begin{aligned} \tilde g(v(s)) &= v(s) - [r + \gamma v_\pi(s')] \\ &= (v(s) - \mathbb E[R + \gamma v_\pi(S')| s]) + (\mathbb E[R + \gamma v_pi(S')| s] - [r + \gamma v_\pi (s')]) \end{aligned} g~(v(s))=v(s)[r+γvπ(s)]=(v(s)E[R+γvπ(S)s])+(E[R+γvpi(S)s][r+γvπ(s)])
在这之中,$g(v(s)) = (v(s) - \mathbb E[R + \gamma v_\pi(S’)| s]) $ ,误差$\eta = E[R + \gamma v_pi(S’)| s] - [r + \gamma v_\pi (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 , . . . \begin{aligned} v_{k+1} (s) &= v_k(s) - \alpha_k \tilde g(v_k(s)) \\ &= v_k(s) - \alpha_k (v_k(s)-[r_k+\gamma v_\pi(s'_k)]) , k =1,2,3,... \end{aligned} vk+1(s)=vk(s)αkg~(vk(s))=vk(s)αk(vk(s)[rk+γvπ(sk)]),k=1,2,3,...
这里的 v k ( s ) v_k(s) vk(s)代表 v π ( s ) v_\pi(s) vπ(s)在第k步的估计,而 r k , s k ′ r_k,s'_k rk,sk 是第k步中从 R , S ′ R,S' R,S中取出的样本。

对公式做以下替换:

  • 将一组采样 { ( 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}, 从而做到对所有的s都进行更新。

  • v π ( s ′ ) v_\pi(s') vπ(s) 换为 v k ( s k ′ ) v_k(s'_k) vk(sk) ,即我们直接用 s ′ s' s 在第k步的估计值来替代真实值。 虽然会有一些偏差,但是最终会收敛到 v π v_\pi vπ

TD算法的收敛:

对于所有状态 s ∈ S s \in S sS 。当 t → ∞ t \to \infty t 时, v t ( s ) v_t(s) vt(s) 以概率1收敛到策略 π \pi π 下的状态值函数 v π ( s ) v_\pi(s) vπ(s)

如果对于所有的状态 s ∈ S s \in S sS ,步长参数序列 α t ( s ) \alpha_t(s) αt(s) 都满足 ∑ t α t = ∞ \sum_t\alpha_t = \infty tαt= 并且 ∑ t α t 2 ( s ) < ∞ \sum_t\alpha_t^2(s) < \infty tαt2(s)< 那么上述收敛成立。

TD/Sarsa learning MC learning
online:TD学习是在线的,在接收到一个奖励后可以更新state/action value Not online:MClearning是非在线的,必须等到整个episode已经完成之后,计算return值然后进行估计。
continuing tasks:即能处理一直持续下去的任务,同时也能解决episodic tasks。 Episodic tasks:必须是有限步的episode,才能等到他的返回值。
Bootstrapping:会基于之前对状态的猜测,加上一些新的信息来形成一个新的猜测 Non-boostrapping:直接根据当前的episode计算return,不涉及到之前的估计值
Low estimation variance :在算法过程中涉及到的随机变量比较少,所以方差会比较小 High estimation variance:它涉及到了很多的variable,因为一次episode会涉及到很多的Reward,而只用其中一次的采样,所以就会有比较大的方差。
bias:因为基于之前的经验,所以可能会因为之前的经验而产生bias,导致有偏估计,但是在不断增加经验后还是会趋于正确结果 no bias:不基于之前的估计,所以不会产生bias

TD算法中的action values:Sarsa

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) 的拼接。

TD算法是用来估计给定策略 π \pi π 的state value,但我们需要估计的是action value。下面引入Sarsa。

假设我们有如下经验 { ( 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)[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), \forall(s,a) \not= (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)
这个式子和TD算法几乎一样,只是类似地把 v t ( s t ) v_t(s_t) vt(st) 改成了 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at)这样子。

Sarsa的数学意义和TD也是几乎一样的。(如贝尔曼公式,收敛性等)

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], \forall s,a qπ(s,a)=E[R+γqπ(S,A)s,a],s,a

  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) ,遵循 π t ( s t ) \pi_t(s_t) πt(st)执行 a t a_t at ,得到 r t + 1 r_{t+1} rt+1的奖励,然后走到状态 s t + 1 s_{t+1} st+1 并遵循 π t ( s t + 1 ) \pi_{t}(s_{t+1}) πt(st+1) 来采取行动 a t + 1 a_{t+1} at+1

  2. 更新q值(q value update/policy evaluaton): 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)[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)]]

  3. 更新策略policy(policy update/policy improvement):
    π t + 1 ( a ∣ s t ) = 1 − ϵ ∣ A ∣ ( ∣ A − 1 ∣ ) ,   i f   a = a r g   m a x a q t + 1 ( s t , a ) π t + 1 ( a ∣ s t ) = ϵ ∣ A ∣ , o t h e r w i s e \begin{aligned} \pi_{t+1}(a|s_t) &= 1 - \frac{\epsilon}{|\Alpha|}(|\Alpha-1|),&\ if \ a = arg\ max_aq_{t+1}(s_t,a) \\ \pi_{t+1}(a|s_t) &=\frac{\epsilon}{|\Alpha|} ,&otherwise \end{aligned} πt+1(ast)πt+1(ast)=1Aϵ(A1∣),=Aϵ, if a=arg maxaqt+1(st,a)otherwise

注意这里的PE和PI是立刻执行的,而不是等return之后再精确计算。

注意这个策略是一个 ϵ − g r e e d y \epsilon- greedy ϵgreedy策略,也就是说倾向于采取qvalue最大的action,但是其他的action同样有概率取到。

Expected Sarsa

公式如下:
KaTeX parse error: Invalid color: ' #0000FF' at position 94: …a_t)-\textcolor{̲ ̲#̲0̲0̲0̲0̲F̲F̲}̲{(r_{i+1} + \ga…
此处的 E [ q t ( s t + 1 , 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)] = \underset{\pi}{\sum}\pi_t(a| s_{t+1})q_t(s_{t+1},a) \approx v_t(s_{t+1}) E[qt(st+1,A)]=ππt(ast+1)qt(st+1,a)vt(st+1)

和普通的sarsa的区别是用 ( r i + 1 + γ E [ q t ( s t + 1 , A ) ] ) (r_{i+1} + \gamma \mathbb E [q_t(s_{t+1},A)]) (ri+1+γE[qt(st+1,A)]) 替换了 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).

不再需要 a t + 1 a_{t+1} at+1 了,随机性会减小一些,但是需要更大的计算量。

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 ] q_\pi(s,a) = \mathbb E[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] qπ(s,a)=E[Rt+1+γEAt+1π(St+1)[qπ(St+1,At+1)]St=s,At=a]

n-step Sarsa

是Sarsa的一个推广,包含了Sarsa和蒙德卡罗方法。

我们的action value如下定义: q π ( s , a ) = E [ G t ∣ S t = a , A t = a ] q_\pi(s,a) = \mathbb E[G_t|S_t=a,A_t=a] qπ(s,a)=E[GtSt=a,At=a]

那么 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 + 1 + γ 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 ) . . . M C ← G t ( ∞ ) = R t + 1 + γ R t + 2 + γ 2 R t + 3 . . . \begin{aligned} \text{Sarsa} \leftarrow & G_t^{(1)} = R_{t+1} + \gamma q_\pi(S_{t+1},A_{t+1}) \\ &G_t^{(2)} = R_{t+1} + \gamma R_{t+1} + \gamma ^2 q_\pi(S_{t+2},A_{t+2}) \\ & ... \\ \text{n-step Sarsa}\leftarrow &G_t^{(n)} = R_{t+1} + \gamma R_{t+2} + ... + \gamma^n q_\pi(S_{t+n},A_{t+n}) \\ & ... \\ MC \leftarrow & G_t^{(\infty)} = R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}... \end{aligned} Sarsan-step SarsaMCGt(1)=Rt+1+γqπ(St+1,At+1)Gt(2)=Rt+1+γRt+1+γ2qπ(St+2,At+2)...Gt(n)=Rt+1+γRt+2+...+γnqπ(St+n,At+n)...Gt()=Rt+1+γRt+2+γ2Rt+3...
所以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)[q_t(s_t,a_t) - [r_{t+1} + \gamma r_{t+2} + ... + \gamma^n q_t(s_{t+n},a_{t+n})]] qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γrt+2+...+γnqt(st+n,at+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},...,r_{t+n},s_{t+n},a_{t+n}) (st,at,rt+1,st+1,at+1,...,rt+n,st+n,at+n)

所以他的数据需要等到 t + n t+n t+n 时刻,才能进行更新。是online和offline的结合。

  • 当n比较大的时候,更接近于MC,会有比较大的variance,比较小的bias。
  • 当n比较小的时候,更接近于Sarsa,会有比较小的variance,比较大的bias。

TD中最优action value学习:Q-learning

算法如下:
KaTeX parse error: Invalid color: ' #0000FF' at position 97: …t) - \textcolor{̲ ̲#̲0̲0̲0̲0̲F̲F̲}̲{[r_{t+1} + \ga…
和Sarsa相比,用 r t + 1 + γ m a x α ∈ A   q t ( s t + 1 , a ) r_{t+1} + \gamma \underset{\alpha \in \mathcal A}{max}\ q_t(s_{t+1},a) rt+1+γαAmax qt(st+1,a) 替换了 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)

Q-learning求解的数学问题是(不是在求解贝尔曼方程):

求解一个贝尔曼最优方程:
q ( s , a ) = E [ R t + 1 + γ m a x a q ( S t + 1 , a ) ∣ S t = s , A t = a ] , ∀ s , a q(s,a) = \mathbb E [R_{t+1}+\gamma \underset{a}{max}q(S_{t+1},a)| S_t = s,A_t = a], \forall s,a q(s,a)=E[Rt+1+γamaxq(St+1,a)St=s,At=a],s,a

off-policy 和 on-policy

两种策略:

  1. behavior policy用来生成经验样本
  2. target policy不断地更新来将target policy更新到optimal policy。

基于这两种策略,可以分为两类算法:

  • on-policy: 其中的behavior policy和target policy是相同的,即用自己的策略来和环境交互,然后得到经验并改进自己的策略,之后再用相同的策略和环境交互。
  • off-policy:用一个策略和环境交互得到大量经验,然后用这些经验来不断改进策略(一步到位,不再通过新的策略引入新的经验)

on-policy的好处就是可以不断接收新的经验,实时更新策略。

off-policy的好处就是可以直接使用别人已经获取过的经验。如用之前通过探索性较强的算法得到的经验。

如何判断一个TD算法是on-policy还是off-policy?

  1. 看这个TD算法是在解决什么样的数学问题
  2. 看在算法的执行过程中需要什么东西才能使算法跑起来
  • Sarsa是on-policy的:

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], \forall s,a qπ(s,a)=E[R+γqπ(S,A)s,a],s,a
此处的KaTeX parse error: Invalid color: '0xFF0000' at position 45: …s,a),\textcolor{̲0̲x̲F̲F̲0̲0̲0̲0̲}̲{A' \sim \pi(A'…

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_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)]]

  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和任何策略无关,和 p ( r ∣ s , a ) , p ( s ′ ∣ s , a ) p(r|s,a),p(s'|s,a) p(rs,a),p(ss,a)有关。

  2. a t + 1 a_{t+1} at+1是由策略 π t ( s t + 1 ) \pi_t(s_{t+1}) πt(st+1) 产生。 所以 Π t \Pi_t Πt 既是behavior policy也是target policy

  • MC learning 是on-policy的:

MC目的是求解如下贝尔曼方程:
q π ( s , a ) = E [ R t + 1 + γ R t + 2 + . . . ∣ S t = s , A t = a ] q_\pi(s,a) = \mathbb E [R_{t+1} + \gamma R_{t+2} + ...| S_t =s,A_t = a] qπ(s,a)=E[Rt+1+γRt+2+...∣St=s,At=a]
MC的实现是
q ( s , a ) ≈ r t + 1 + γ r t + 2 + . . . q(s,a) \approx r_{t+1} + \gamma r_{t+2} + ... q(s,a)rt+1+γrt+2+...

我们用策略 Π \Pi Π 来得到trajectory经验,然后得到return来近似估计 q π q_\pi qπ 进而改进 Π \Pi Π

  • Q learning 是off-policy的:

Q learning求解的数学问题是:

求解贝尔曼最优公式:
q ( s , a ) = E [ R t + 1 + γ m a x a q ( S t + 1 , a ) ∣ S t = s , A t = a ] , ∀ s , a q(s,a) = \mathbb E [R_{t+1}+\gamma \underset{a}{max}q(S_{t+1},a)| S_t = s,A_t = a], \forall s,a q(s,a)=E[Rt+1+γamaxq(St+1,a)St=s,At=a],s,a
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 + γ m a x α ∈ 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)[q_t(s_t,a_t) - [r_{t+1} + \gamma \underset{\alpha \in \Alpha}{max}\ q_t(s_{t+1},a)]] qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γαAmax qt(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)

注意这里的经验不包含 a t + 1 a_{t+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 不依赖于策略。

behavior policy是从 s t s_t st 出发得到 a t a_t at

target policy 是根据 q π q_\pi qπ 来选择action

Q-learning 的实施

如果将Q-learning中的behavior policy 和target policy强行设置为一致的,那么它可以是on-policy的:

  1. 对每个episode执行以下三步

  2. 收集经验 ( 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) ,在这一步根据 π t ( s t ) \pi_t(s_t) πt(st) 采取行动 a t a_t at 来生成 ( r t + 1 , s t + 1 ) (r_{t+1},s_{t+1}) (rt+1,st+1)

  3. 更新q-value: 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 + γ m a x 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)[q_t(s_t,a_t) - [r_{t+1} + \gamma max_a \ q_t(s_{t+1},a)]] qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γmaxa qt(st+1,a)]]

  4. 更新policy:
    π t + 1 ( a ∣ s t ) = 1 − ϵ ∣ A ∣ ( ∣ A ∣ − 1 )  if  a = a r g m a x a   q t + 1 ( s t , a ) π t + 1 ( a ∣ s t ) = ϵ ∣ A ∣  otherwise \begin{aligned} \pi_{t+1}(a|s_t) &= 1- \frac{\epsilon}{|\Alpha|}(|\Alpha|-1) \text{ if } a = \underset{a}{argmax}\ q_{t+1}(s_t,a) \\ \pi_{t+1}(a|s_t) &= \frac{\epsilon}{|\Alpha|} \text{ otherwise} \end{aligned} πt+1(ast)πt+1(ast)=1Aϵ(A1) if a=aargmax qt+1(st,a)=Aϵ otherwise

也可以是off-policy的:

  1. 对每个episode生成策略 π b \pi_b πb (这里的b代表behavior),这个策略用来生成experience

  2. 对episode的每一步 t = 0 , 1 , 2 , . . . t = 0,1,2,... t=0,1,2,... 执行以下两步:

  3. 更新q-value: 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 + γ m a x 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)[q_t(s_t,a_t) - [r_{t+1} + \gamma max_a \ q_t(s_{t+1},a)]] qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γmaxa qt(st+1,a)]]

  4. 更新target policy:
    π T , t + 1 ( a ∣ s t ) = 1  if  a = a r g m a x a   q t + 1 ( s t , a ) π T , t + 1 ( a ∣ s t ) = 0  otherwise \begin{aligned} \pi_{T,t+1}(a|s_t) &= 1 \text{ if } a = \underset{a}{argmax}\ q_{t+1}(s_t,a) \\ \pi_{T,t+1}(a|s_t) &= 0 \text{ otherwise} \end{aligned} πT,t+1(ast)πT,t+1(ast)=1 if a=aargmax qt+1(st,a)=0 otherwise

注意这里的第三步是greedy不是 ϵ − g r e e d y \epsilon-greedy ϵgreedy ,因为我们不需要新的策略来生成经验,所以也就不需要使用 ϵ − g r e e d y \epsilon-greedy ϵgreedy 来增加探索性,只需要保证最优性。

使用off-policy的话,使用的behavior policy最好是探索度比较强的策略,否则可能得不到好的target policy。

TD的统一表示

所有的TD算法都能用如下公式表达:
KaTeX parse error: Invalid color: ' #0000FF' at position 78: …a_t)-\textcolor{̲ ̲#̲0̲0̲0̲0̲F̲F̲}̲{\overline{q}_t…
这里的 q ‾ t \overline{q}_t qt 就是TD target。

TD算法的目标就是接近TD target ,减小TD error

算法 q ‾ t \overline q_t qt 的表示
Sarsa q ‾ t = r t + 1 + γ q t ( s t + 1 , a t + 1 ) \overline q_t = r_{t+1} + \gamma q_t(s_{t+1},a_{t+1}) qt=rt+1+γqt(st+1at+1)
n-step Sarsa q ‾ t = r t + 1 + γ r t + 2 + . . . + γ n q t ( s t + n , a t + n ) \overline q_t = r_{t+1} + \gamma r_{t+2} +... + \gamma ^ nq_t(s_{t+n},a_{t+n}) qt=rt+1+γrt+2+...+γnqt(st+nat+n)
Expected Sarsa $\overline q_t = r_{t+1} + \gamma \underset{a}{\sum}\pi_i(a
Q-learning q ‾ t = r t + 1 + γ m a x a q t ( s t + 1 , a ) \overline q_t = r_{t+1} + \gamma \underset{a}{max}q_t(s_{t+1},a) qt=rt+1+γamaxqt(st+1,a)
Monte Carlo q ‾ t = r t + 1 + γ r t + 2 + γ 2 r t + 3 + . . . \overline q_t = r_{t+1} + \gamma r_{t+2} + \gamma^2r_{t+3} +... qt=rt+1+γrt+2+γ2rt+3+...
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐