model free决策
介绍
我们明白了如何从理论上解决一个已知的MDP:通过动态规划来评估一个给定的策略,并且得到最优价值函数,根据最优价值函数来确定最优策略;也可以直接进行不基于任何策略的状态价值迭代得到最优价值函数和最优策略。
本讲讨论解决一个可以被认为是MDP、但却不掌握MDP具体细节的问题,也就是讲述如何直接从Agent与环境的交互来得得到一个估计的最优价值函数和最优策略。这部分内容同样分为两部分,第一部分也就是聚焦于策略评估,也就是预测,直白的说就是在给定的策略同时不清楚MDP细节的情况下,估计Agent会得到怎样的最终奖励。
蒙特卡洛算法
蒙特卡洛算法指:在不清楚MDP状态转移及即时奖励的情况下,直接从经历完整的Episode来学习状态价值,通常情况下某状态的价值等于在多个Episode中以该状态算得到的所有收获的平均。
注:收获不是针对Episode的,它存在于Episode内,针对于Episode中某一个状态。从这个状态开始经历完Episode时得到的有衰减的即时奖励的总和。从一个Episode中,我们可以得到该Episode内所有状态的收获。当一个状态在Episode内出现多次,该状态的收获有不同的计算方法。
完整的Episode 指必须从某一个状态开始,Agent与Environment交互直到终止状态,环境给出终止状态的即时收获为止。完整的Episode不要求起始状态一定是某一个特定的状态,但是要求个体最终进入环境认可的某一个终止状态。
蒙特卡洛算法有如下特点:不基于模型本身,直接从经历过的Episode中学习,必须是完整的Episode,使用的思想就是用平均收获值代替价值。理论上Episode越多,结果越准确。它使用的是大数定律的思想,即用平均值来代替期望,平均值是期望的无偏估计。
蒙特卡洛的策略评估
目标:在给定策略下,从一系列的完整Episode经历中学习得到该策略下的状态价值函数。
数学描述如下:
基于特定策略 π \pi π 的一个Episode信息可以表示为如下的一个序列:
S 1 , A 1 , R 2 , S 2 , A 2 , … , S t , A t , R t + 1 , … , S k ∼ π S_{1}, A_{1}, R_{2}, S_{2}, A_{2}, \ldots, S_{t}, A_{t}, R_{t+1}, \ldots, S_{k} \sim \pi S1,A1,R2,S2,A2,…,St,At,Rt+1,…,Sk∼π
t时刻状态 S t S_t St 的收获:
G t = R t + 1 + γ R t + 2 + … + γ T − 1 R T G_{t}=R_{t+1}+\gamma R_{t+2}+\ldots+\gamma^{T-1} R_{T} Gt=Rt+1+γRt+2+…+γT−1RT
T表示状态终止。
该策略下某一状态 s的价值:
v π ( s ) = E π [ G t ∣ S t = s ] v_{\pi}(s)=E_{\pi}\left[G_{t} | S_{t}=s\right] vπ(s)=Eπ[Gt∣St=s]
很多时候,即时奖励只出现在Episode结束状态时,但不能否认在中间状态也可能有即时奖励。公式里的 R t R_t Rt 指的是任何状态得到的即时奖励,这一点尤其要注意。
在状态转移过程中,可能发生一个状态经过一定的转移后又一次或多次返回该状态,此时在一个Episode里如何计算这个状态发生的次数和计算该Episode的收获呢?可以有如下两种方法:
首次访问蒙特卡洛策略评估
在给定一个策略,使用一系列完整Episode评估某一个状态s时,对于每一个Episode,仅当该状态第一次出现时列入计算:
每次访问蒙特卡洛策略评估
在给定一个策略,使用一系列完整Episode评估某一个状态s时,对于每一个Episode,状态s每次出现在状态转移链时,计算的具体公式与上面的一样,但具体意义不一样。
在每次访问完episode后即更新
这里提到了在实际操作时常用的一个实时更新均值的办法,使得在计算平均收获时不需要存储所有既往收获,而是每得到一次收获,就计算其平均收获。
公式如下:
μ k = 1 k ∑ j = 1 x j = 1 k ( x k + ∑ j = 1 k − 1 x j ) = 1 k ( x k + ( k − 1 ) μ k − 1 ) = μ k − 1 + 1 k ( x k − μ k − 1 ) \begin{aligned} \mu_{k} &=\frac{1}{k} \sum_{j=1} x_{j} \\ &=\frac{1}{k}\left(x_{k}+\sum_{j=1}^{k-1} x_{j}\right) \\ &=\frac{1}{k}\left(x_{k}+(k-1) \mu_{k-1}\right) \\ &=\mu_{k-1}+\frac{1}{k}\left(x_{k}-\mu_{k-1}\right) \end{aligned} μk=k1j=1∑xj=k1(xk+j=1∑k−1xj)=k1(xk+(k−1)μk−1)=μk−1+k1(xk−μk−1)
其中 μ k \mu_k μk是第k次的平均值, x k x_k xk是第k个元素。
这个公式比较简单。把这个方法应用于蒙特卡洛策略评估,就得到下面的蒙特卡洛实时更新。
每次访问完episode的更新算法
对于一系列Episodes中的每一个: S 1 , A 1 , R 2 , S 2 , A 2 , … , S t , A t , R t + 1 , … , S k S_{1}, A_{1}, R_{2}, S_{2}, A_{2}, \ldots, S_{t}, A_{t}, R_{t+1}, \ldots, S_{k} S1,A1,R2,S2,A2,…,St,At,Rt+1,…,Sk
对于Episode里的每一个状态 S t S_t St ,有一个收获 G t G_t Gt ,每碰到一次 S t S_t St ,使用下式计算状态的平均价值 V ( S t ) V(S_t) V(St) :
N ( S t ) ← N ( S t ) + 1 V ( S t ) ← V ( S t ) + 1 N ( S t ) ( G t − V ( S t ) ) \begin{array}{l} N\left(S_{t}\right) \leftarrow N\left(S_{t}\right)+1 \\ V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\frac{1}{N\left(S_{t}\right)}\left(G_{t}-V\left(S_{t}\right)\right) \end{array} N(St)←N(St)+1V(St)←V(St)+N(St)1(Gt−V(St))
在处理非静态问题时,使用这个方法跟踪一个实时更新的平均值是非常有用的,可以扔掉那些已经计算过的Episode信息。此时可以引入参数 α \alpha α来更新状态价值:
V ( S t ) ← V ( S t ) + α ( G t − V ( S t ) ) V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\alpha\left(G_{t}-V\left(S_{t}\right)\right) V(St)←V(St)+α(Gt−V(St))
以上就是蒙特卡洛学习方法的主要思想和描述,由于蒙特卡洛学习方法有许多缺点(后文会细说),因此实际应用并不多。接下来介绍实际常用的TD学习方法。
时序差分学习(TD-learning)
介绍
时序差分学习简称TD学习,它的特点如下:和蒙特卡洛学习一样,它也从Episode学习,不需要了解模型本身;但是它可以学习不完整的Episode,通过自采样(bootstrapping),猜测Episode的结果,同时持续更新这个猜测。即用估计的值函数来更新值函数。
我们已经学过,在Monte-Carlo学习中,使用实际的收获(return) G t G_t Gt来更新价值(Value):
V ( S t ) ← V ( S t ) + α ( G t − V ( S t ) ) V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\alpha\left(G_{t}-V\left(S_{t}\right)\right) V(St)←V(St)+α(Gt−V(St))
在TD学习中,算法在估计某一个状态的价值时,用的是离开该状态的即刻奖励 R t + 1 R_{t+1} Rt+1与下一状态 V t + 1 V_{t+1} Vt+1的预估状态价值乘以衰减系数 γ \gamma γ组成,这符合Bellman方程的描述:
V ( S t ) ← V ( S t ) + α ( R t + 1 + γ V ( S t + 1 ) − V ( S t ) ) V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\alpha\left(R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_{t}\right)\right) V(St)←V(St)+α(Rt+1+γV(St+1)−V(St))比如:我从A点经过B点去到C点并在C点终止,我原来在B点不能更新A点的值函数,只能走到C点才能更新;现在我在B点,估计B到C的奖励,在B点就可以马上更新A点的值函数。 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V\left(S_{t+1}\right) Rt+1+γV(St+1):称作TD估计值, δ t = R t + 1 + γ V ( S t + 1 ) − V ( S t ) \delta_{t}=R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_{t}\right) δt=Rt+1+γV(St+1)−V(St)称作TD误差。
BootStrapping 指的就是TD目标值 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V\left(S_{t+1}\right) Rt+1+γV(St+1)来代替累积奖励。
BootStrapping
Bootstrapping从字面意思翻译是拔靴法,又叫自助法,是一种通过对样本进行重采样得到的估计总体的方法。
https://zhuanlan.zhihu.com/p/54201828详见知乎这个帖。
MC和TD对比例子
想象一下你下班后开车回家,需要预估整个行程花费的时间。假如一个人在驾车回家的路上突然碰到险情:对面迎来一辆车感觉要和你相撞,严重的话他可能面临死亡威胁,但是最后双方都采取了措施没有实际发生碰撞。如果使用蒙特卡洛学习,路上发生的这一险情可能引发的负向奖励不会被考虑进去,不会影响总的预测耗时;但是在TD学习时,碰到这样的险情,这个人会立即更新这个状态的价值,随后会发现这比之前的状态要糟糕,会立即考虑决策降低速度赢得时间,也就是说你不必像蒙特卡洛学习那样直到他死亡后才更新状态价值,那种情况下也无法更新状态价值。TD算法相当于在整个返家的过程中(一个Episode),根据已经消耗的时间和预期还需要的时间来不断更新最终回家需要消耗的时间。
基于上表所示的数据,下图展示了蒙特卡洛学习和TD学习两种不同的学习策略来更新价值函数(各个状态的价值)。这里使用的是从某个状态预估的到家还需耗时来间接反映某状态的价值:某位置预估的到家时间越长,该位置价值越低,在优化决策时需要避免进入该状态。对于蒙特卡洛学习过程,驾驶员在路面上碰到各种情况时,他不会更新对于回家的预估时间,等他回到家得到了真实回家耗时后,他会重新估计在返家的路上着每一个主要节点状态到家的时间,在下一次返家的时候用新估计的时间来帮助决策;而对于TD学习,在一开始离开办公室的时候你可能会预估总耗时30分钟,但是当你取到车发现下雨的时候,你会立刻想到原来的预计过于乐观,因为既往的经验告诉你下雨会延长你的返家总时间,此时你会更新目前的状态价值估计,从原来的30分钟提高到40分钟。同样当你驾车离开高速公路时,会一路根据当前的状态(位置、路况等)对应的预估返家剩余时间,直到返回家门得到实际的返家总耗时。这一过程中,你会根据状态的变化实时更新该状态的价值。
MC和TD算法之间的比较
下图比较了MC和TD算法的效率。横坐标是经历的Episode数量,纵坐标是计算得到的状态函数和实际状态函数下各状态价值的均方差。黑色是MC算法在不同step-size下的学习曲线,灰色的曲线使用TD算法。可以看出TD较MC更高效。
MC和TD的收敛性比较
MC算法将会最小化MSE,将价值函数与累积奖励之间的距离拉近。
∑ k = 1 K ∑ t = 1 T k ( G t k − V ( s t k ) ) 2 \sum_{k=1}^{K} \sum_{t=1}^{T_{k}}\left(G_{t}^{k}-V\left(s_{t}^{k}\right)\right)^{2} k=1∑Kt=1∑Tk(Gtk−V(stk))2
式中,k表示的是Episode序号, K为总的Episode数量, t 为一个Episode内状态序号(第1,2,3…个状态等), T k T_k Tk 表示的是第 k个Episode总的状态数, G t k G_t^k Gtk 表示第 k个Episode里 t时刻状态 s t s_t st 获得的最终收获, V ( s t k ) V(s_t^k) V(stk)表示的是第 k个Episode里算法估计的 t时刻状态 s t s_t st的价值。
TD算法则收敛至一个根据已有经验构建的最大可能的马尔可夫模型的状态价值,也就是说TD算法将首先根据已有经验估计状态间的转移概率,同时估计某一个状态的即时奖励:
P ^ s , s ′ a = 1 N ( s , a ) ∑ k = 1 K ∑ t = 1 r k 1 ( s t k , a t k , s t + 1 k = s , a , s ′ ) R ^ s a = 1 N ( s , a ) ∑ k = 1 K ∑ t = 1 T k 1 ( s t k , a t k = s , a ) r t k \begin{aligned} \hat{\mathcal{P}}_{s, s^{\prime}}^{a} &=\frac{1}{N(s, a)} \sum_{k=1}^{K} \sum_{t=1}^{r_{k}} \mathbf{1}\left(s_{t}^{k}, a_{t}^{k}, s_{t+1}^{k}=s, a, s^{\prime}\right) \\ \hat{\mathcal{R}}_{s}^{a} &=\frac{1}{N(s, a)} \sum_{k=1}^{K} \sum_{t=1}^{T_{k}} \mathbf{1}\left(s_{t}^{k}, a_{t}^{k}=s, a\right) r_{t}^{k} \end{aligned} P^s,s′aR^sa=N(s,a)1k=1∑Kt=1∑rk1(stk,atk,st+1k=s,a,s′)=N(s,a)1k=1∑Kt=1∑Tk1(stk,atk=s,a)rtk
通过比较可以看出,TD算法使用了MDP问题的马尔可夫属性,在Markov 环境下更有效;但是MC算法并不利用马尔可夫属性,通常在非Markov环境下更有效。
TD( λ \lambda λ)
先前所介绍的TD算法实际上都是TD(0)算法,括号内的数字0表示的是在当前状态下往前多看1步,要是往前多看2步更新状态价值会怎样?这就引入了n-step的概念。
定义n-步收获:
G t ( n ) = R t + 1 + γ R t + 2 + … + γ n − 1 R t + n + γ n V ( S t + n ) G_{t}^{(n)}=R_{t+1}+\gamma R_{t+2}+\ldots+\gamma^{n-1} R_{t+n}+\gamma^{n} V\left(S_{t+n}\right) Gt(n)=Rt+1+γRt+2+…+γn−1Rt+n+γnV(St+n)
那么,n步TD学习状态价值函数的更新公式为:
V ( S t ) ← V ( S t ) + α ( G t ( n ) − V ( S t ) ) V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\alpha\left(G_{t}^{(n)}-V\left(S_{t}\right)\right) V(St)←V(St)+α(Gt(n)−V(St))
既然存在n-步预测,那么什么时候n的效果最好呢?
这里我们引入了一个新的参数:λ。通过引入这个新的参数,可以做到在不增加计算复杂度的情况下综合考虑所有步数的预测。这就是λ预测和λ收获。
- λ \lambda λ收获
λ \lambda λ收获对每一步获得的累积奖励进行了加权,它给其中的任意一步收获施加一定的权重 ( 1 − λ ) λ n (1-\lambda)\lambda^n (1−λ)λn 。通过这样的权重设计,得到如下的公式:
G t λ = ( 1 − λ ) ∑ n = 1 ∞ λ n − 1 G t ( n ) G_{t}^{\lambda}=(1-\lambda) \sum_{n=1}^{\infty} \lambda^{n-1} G_{t}^{(n)} Gtλ=(1−λ)n=1∑∞λn−1Gt(n)
TD( λ \lambda λ)更新公式:
V ( S t ) ← V ( S t ) + α ( G t λ − V ( S t ) ) V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\alpha\left(G_{t}^{\lambda}-V\left(S_{t}\right)\right) V(St)←V(St)+α(Gtλ−V(St))
- TD( λ \lambda λ)对于权重的分配
这张图还是比较好理解,例如对于n=3的3-步收获,赋予其在 λ \lambda λ收获中的权重如左侧阴影部分面积,对于终止状态的T步收获,T以后的所有阴影部分面积。而所有节段面积之和为1。这种几何级数的设计也考虑了算法实现的计算方便性。
TD( λ \lambda λ)的两种理解方式
前向理解
引入了λ之后,会发现要更新一个状态的状态价值,必须要走完整个Episode获得每一个状态的即时奖励以及最终状态获得的即时奖励。这和MC算法的要求一样,因此TD(λ)算法有着和MC方法一样的劣势。λ取值区间为[0,1],当λ=1时对应的就是MC算法。这个实际计算带来了不便。
后向理解
TD(λ)从另一方面提供了一个单步更新的机制,通过下面的示例来说明。
老鼠在连续接受了3次响铃和1次亮灯信号后遭到了电击,那么在分析遭电击的原因时,到底是响铃的因素较重要还是亮灯的因素更重要呢?
频率启发 Frequency heuristic:将原因归因于出现频率最高的状态。
就近启发 Recency heuristic:将原因归因于较近的几次状态。
给每一个状态引入一个数值:效用追踪(Eligibility Traces, ES,也有翻译成“资质追踪”,可以结合上述两个启发。定义:
E 0 ( s ) = 0 E t ( s ) = γ λ E t − 1 ( s ) + 1 ( S t = s ) \begin{array}{l} E_{0}(s)=0 \\ E_{t}(s)=\gamma \lambda E_{t-1}(s)+\mathbf{1}\left(S_{t}=s\right) \end{array} E0(s)=0Et(s)=γλEt−1(s)+1(St=s)
这里的 E t ( s ) E_t(s) Et(s)是针对某一状态的,出现一次+1,并且会随着时间衰减。这里的 E E E不是一个矩阵。
该图横坐标是时间,横坐标下有竖线的位置代表当前进入了状态s,纵坐标是效用追踪值 E 。可以看出当某一状态连续出现,E值会在一定衰减的基础上有一个单位数值的提高,此时将增加该状态对于最终收获贡献的比重,因而在更新该状态价值的时候可以较多地考虑最终收获的影响。同时如果该状态距离最终状态较远,则其对最终收获的贡献越小,在更新该状态时也不需要太多的考虑最终收获。
后向理解是认为:后一个状态的状态价值与之前出现的所有状态有关。
根据Eligibility Traces更新的公式如下:
δ t = R t + 1 + γ V ( S t + 1 ) − V ( S t ) V ( s ) ← V ( s ) + α δ t E t ( s ) \begin{aligned} \delta_{t} &=R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_{t}\right) \\ V(s) & \leftarrow V(s)+\alpha \delta_{t} E_{t}(s) \end{aligned} δtV(s)=Rt+1+γV(St+1)−V(St)←V(s)+αδtEt(s)
当 λ = 0 \lambda=0 λ=0时,只有目前的状态被更新,即:
E t ( s ) = 1 ( S t = s ) V ( s ) ← V ( s ) + α δ t E t ( s ) \begin{array}{l} E_{t}(s)=\mathbf{1}\left(S_{t}=s\right) \\ V(s) \leftarrow V(s)+\alpha \delta_{t} E_{t}(s) \end{array} Et(s)=1(St=s)V(s)←V(s)+αδtEt(s)
这等价于TD(0)的更新:
V ( S t ) ← V ( S t ) + α δ t V\left(S_{t}\right) \leftarrow V\left(S_{t}\right)+\alpha \delta_{t} V(St)←V(St)+αδt
当 λ = 1 \lambda=1 λ=1的时候,便等价于MC的更新方式,证明如下:
假设状态s是在time-step k的时候第一次出现,则TD(1)的eligibility traces的更新方式如下:
E t ( s ) = γ E t − 1 ( s ) + 1 ( S t = s ) = { 0 if t < k γ t − k if t ≥ k \begin{aligned} E_{t}(s) &=\gamma E_{t-1}(s)+\mathbf{1}\left(S_{t}=s\right) \\ &=\left\{\begin{array}{ll} 0 & \text { if } t<k \\ \gamma^{t-k} & \text { if } t \geq k \end{array}\right. \end{aligned} Et(s)=γEt−1(s)+1(St=s)={
0γt−k if t<k if t≥k
故若要证TD(1)与MC等价,只要证明下式成立即可:
∑ t = 1 T − 1 α δ t E t ( s ) = α ∑ t = k T − 1 γ t − k δ t = α ( G k − V ( S k ) ) \sum_{t=1}^{T-1} \alpha \delta_{t} E_{t}(s)=\alpha \sum_{t=k}^{T-1} \gamma^{t-k} \delta_{t}=\alpha\left(G_{k}-V\left(S_{k}\right)\right) t=1∑T−1αδtEt(s)=αt=k∑T−1γt−kδt=α(Gk−V(Sk))
证明的过程如下:
已知TD-error的表达式如下:
δ t ≐ R t + 1 + γ V ( S t + 1 ) − V ( S t ) \delta_{t} \doteq R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_{t}\right) δt≐Rt+1+γV(St+1)−V(St)
则有:
G t − V ( S t ) = R t + 1 + γ G t + 1 − V ( S t ) + γ V ( S t + 1 ) − γ V ( S t + 1 ) = δ t + γ ( G t + 1 − V ( S t + 1 ) ) = δ t + γ δ t + 1 + γ 2 ( G t + 2 − V ( S t + 2 ) ) = δ t + γ δ t + 1 + γ 2 δ t + 2 + ⋯ + γ T − t − 1 δ T − 1 + γ T − t ( G T − V ( S T ) ) = δ t + γ δ t + 1 + γ 2 δ t + 2 + ⋯ + γ T − t − 1 δ T − 1 + γ T − t ( 0 − 0 ) = ∑ k = t T − 1 γ k − t δ k \begin{aligned} G_{t}-V\left(S_{t}\right) &=R_{t+1}+\gamma G_{t+1}-V\left(S_{t}\right)+\gamma V\left(S_{t+1}\right)-\gamma V\left(S_{t+1}\right) \\ &=\delta_{t}+\gamma\left(G_{t+1}-V\left(S_{t+1}\right)\right) \\ &=\delta_{t}+\gamma \delta_{t+1}+\gamma^{2}\left(G_{t+2}-V\left(S_{t+2}\right)\right) \\ &=\delta_{t}+\gamma \delta_{t+1}+\gamma^{2} \delta_{t+2}+\cdots+\gamma^{T-t-1} \delta_{T-1}+\gamma^{T-t}\left(G_{T}-V\left(S_{T}\right)\right) \\ &=\delta_{t}+\gamma \delta_{t+1}+\gamma^{2} \delta_{t+2}+\cdots+\gamma^{T-t-1} \delta_{T-1}+\gamma^{T-t}(0-0) \\ &=\sum_{k=t}^{T-1} \gamma^{k-t} \delta_{k} \end{aligned} Gt−V(St)=Rt+1+γGt+1−V(St)+γV(St+1)−γV(St+1)=δt+γ(Gt+1−V(St+1))=δt+γδt+1+γ2(Gt+2−V(St+2))=δt+γδt+1+γ2δt+2+⋯+γT−t−1δT−1+γT−t(GT−V(ST))=δt+γδt+1+γ2δt+2+⋯+γT−t−1δT−1+γT−t(0−0)=k=t∑T−1γk−tδk
此时我们已经讨论了 λ \lambda λ等于0和1的两种情况,那要证明等价,即要对任意的 λ \lambda λ都成立,故需要证下面这个定理:
此时的eligibility trace的更新公式如下:
E t ( s ) = γ λ E t − 1 ( s ) + 1 ( S t = s ) = { 0 if t < k ( γ λ ) t − k if t ≥ k \begin{aligned} E_{t}(s) &=\gamma \lambda E_{t-1}(s)+\mathbf{1}\left(S_{t}=s\right) \\ &=\left\{\begin{array}{ll} 0 & \text { if } t<k \\ (\gamma \lambda)^{t-k} & \text { if } t \geq k \end{array}\right. \end{aligned} Et(s)=γλEt−1(s)+1(St=s)={
0(γλ)t−k if t<k if t≥k
即证:
∑ t = 1 T α δ t E t ( s ) = α ∑ t = k T ( γ λ ) t − k δ t = α ( G k λ − V ( S k ) ) \sum_{t=1}^{T} \alpha \delta_{t} E_{t}(s)=\alpha \sum_{t=k}^{T}(\gamma \lambda)^{t-k} \delta_{t}=\alpha\left(G_{k}^{\lambda}-V\left(S_{k}\right)\right) t=1∑TαδtEt(s)=αt=k∑T(γλ)t−kδt=α(Gkλ−V(Sk))
其实本质上和=1的情况基本一样,证明如下:
G t λ − V ( S t ) = − V ( S t ) + ( 1 − λ ) λ 0 ( R t + 1 + γ V ( S t + 1 ) ) + ( 1 − λ ) λ 1 ( R t + 1 + γ R t + 2 + γ 2 V ( S t + 2 ) ) + ( 1 − λ ) λ 2 ( R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 V ( S t + 3 ) ) + ⋯ = − V ( S t ) + ( γ λ ) 0 ( R t + 1 + γ V ( S t + 1 ) − γ λ V ( S t + 1 ) ) + ( γ λ ) 1 ( R t + 2 + γ V ( S t + 2 ) − γ λ V ( S t + 2 ) ) + ( γ λ ) 2 ( R t + 3 + γ V ( S t + 3 ) − γ λ V ( S t + 3 ) ) + ⋯ + ( γ λ ) 0 ( R t + 1 + γ V ( S t + 1 ) − V ( S t ) ) + ( γ λ ) 2 ( R t + 2 + γ V ( S t + 2 ) − V ( S t + 1 ) ) + ⋯ = δ t + γ λ δ t + 1 + ( γ λ ) 2 δ t + 2 + … + γ V ( S t + 3 ) − V ( S t + 2 ) ) \begin{aligned} G_{t}^{\lambda}-V\left(S_{t}\right)=-V\left(S_{t}\right) &+(1-\lambda) \lambda^{0}\left(R_{t+1}+\gamma V\left(S_{t+1}\right)\right) \\ &+(1-\lambda) \lambda^{1}\left(R_{t+1}+\gamma R_{t+2}+\gamma^{2} V\left(S_{t+2}\right)\right) \\ &+(1-\lambda) \lambda^{2}\left(R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\gamma^{3} V\left(S_{t+3}\right)\right) \\ &+\cdots \\ =-V\left(S_{t}\right) &+(\gamma \lambda)^{0}\left(R_{t+1}+\gamma V\left(S_{t+1}\right)-\gamma \lambda V\left(S_{t+1}\right)\right) \\ &+(\gamma \lambda)^{1}\left(R_{t+2}+\gamma V\left(S_{t+2}\right)-\gamma \lambda V\left(S_{t+2}\right)\right) \\ &+(\gamma \lambda)^{2}\left(R_{t+3}+\gamma V\left(S_{t+3}\right)-\gamma \lambda V\left(S_{t+3}\right)\right) \\ &+\cdots \\ &+(\gamma \lambda)^{0}\left(R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_{t}\right)\right) \\ &+(\gamma \lambda)^{2}\left(R_{t+2}+\gamma V\left(S_{t+2}\right)-V\left(S_{t+1}\right)\right) \\ &+\cdots \\ =&\left.\delta_{t}+\gamma \lambda \delta_{t+1}+(\gamma \lambda)^{2} \delta_{t+2}+\ldots+\gamma V\left(S_{t+3}\right)-V\left(S_{t+2}\right)\right) \end{aligned} Gtλ−V(St)=−V(St)=−V(St)=+(1−λ)λ0(Rt+1+γV(St+1))+(1−λ)λ1(Rt+1+γRt+2+γ2V(St+2))+(1−λ)λ2(Rt+1+γRt+2+γ2Rt+3+γ3V(St+3))+⋯+(γλ)0(Rt+1+γV(St+1)−γλV(St+1))+(γλ)1(Rt+2+γV(St+2)−γλV(St+2))+(γλ)2(Rt+3+γV(St+3)−γλV(St+3))+⋯+(γλ)0(Rt+1+γV(St+1)−V(St))+(γλ)2(Rt+2+γV(St+2)−V(St+1))+⋯δt+γλδt+1+(γλ)2δt+2+…+γV(St+3)−V(St+2))
下表给出了λ取各种值时,不同算法在不同情况下的关系。
对offline updates和online updates的区别还没懂