本文讲解不基于模型(Model-Free)的预测,在给定的策略同时不清楚MDP细节的情况下,估计 Agent 会得到怎样的最终奖励。主要分为两种算法:Monte-Carlo Learning 和 Temporal-Difference Learning。
1 Introduction
上一个 lecture 讲解了动态规划相关的算法,其特点是完全了解 MDP 的所有细节。本次 lecture 学习的是 不基于模型的预测(Model-Free Prediction),其特点是对 MDP 的细节是未知的,这更贴合实际情况。
2 Monte-Carlo Learning
在不清楚MDP状态转移及即时奖励的情况下,直接从经历 完整的 Episode 来学习状态价值,通常情况下某状态的价值等于在 多个 Episode 中以该状态算得到的所有收获的平均。
完整的 Episode 指必须从某一个状态开始,Agent 与 Environment 交互直到 终止状态,Environment 给出终止状态的即时收获为止。
Monte-Carlo Learning 的特点:
- 不基于模型(Model- Free);
- 直接从经历过的 Episode 中学习;
- 必须要经历完整的 Episode;
- 使用平均 return 代替价值。
2.1 Monte-Carlo Policy Evaluation
目标:在给定策略下,从一系列的完整 Episode 经历中学习得到该策略下的状态价值函数。
在解决问题过程中主要使用的信息是 一系列完整 Episode。其包含的信息有:状态的转移、使用的行为序列、中间状态获得的即时奖励以及到达终止状态时获得的即时奖励。
其特点是使用有限的、完整 Episode 产生的这些经验性信息经验性地推导出每个状态的平均收获,以此来替代收获的期望,而后者就是状态价值。通常需要掌握完整的MDP信息才能准确计算得到。
在状态转移过程中,可能发生 一个状态经过一定的转移后又一次或多次返回该状态,此时在一个 Episode 里如何计算这个状态发生的次数和计算该Episode的收获呢?可以有如下两种方法。
2.1.1 First-Visit Monte-Carlo Policy Evaluation
在给定一个策略,使用 一系列 完整 Episode 评估某一个状态s时,对于 每一个 Episode,仅当该状态 第一次 出现时列入计算。
2.1.2 Every-Visit Monte-Carlo Policy Evaluation
在给定一个策略,使用 一系列 完整 Episode 评估某一个状态s时,对于每一个 Episode,状态s 每次 出现在状态转移链时,计算的具体公式与上面的一样,但具体意义不一样。
2.2 Incremental Mean
Incremental Mean 是一种计算平均值的巧妙方法,其优点在于 计算平均收获时不需要存储所有既往收获,而是每得到一次收获,就计算其平均收获。具有实时更新的能力。
我们将使用 Incremental Mean 计算方法应用于 Monte-Carlo Policy Evaluation,可得到以下更新公式:
在处理非静态问题时,使用这个方法跟踪一个 实时更新的平均值 是非常有用的,可以扔掉那些已经计算过的 Episode 信息。
3 Temporal-Difference Learning
Temporal-Difference Learning,时序差分学习,简称TD学习。
和蒙特卡洛学习一样,它也从Episode学习,不需要了解模型本身;但是它可以学习 不完整 的Episode,通过自身的引导(bootstrapping),猜测 Episode 的结果,同时持续更新这个猜测。
Temporal-Difference Learning 的特点:
- 不基于模型(Model- Free);
- 直接从经历过的 Episode 中学习;
- 不需要完整的 Episode;
- 使用自举(bootstrapping)。
TD target:
TD error:
例子:对比 MC 与 TD
想象一下你下班后开车回家,需要预估整个行程花费的时间。
假如一个人在驾车回家的路上突然碰到险情:对面迎来一辆车感觉要和你相撞,严重的话他可能面临死亡威胁,但是最后双方都采取了措施没有实际发生碰撞。
如果使用 MC,路上发生的这一险情可能引发的负向奖励不会被考虑进去,不会影响总的预测耗时。
但是在 TD,碰到这样的险情,这个人会立即更新这个状态的价值,随后会发现这比之前的状态要糟糕,会立即考虑决策降低速度赢得时间,也就是说你不必像蒙特卡洛学习那样直到他死亡后才更新状态价值,那种情况下也无法更新状态价值。
TD算法相当于在整个返家的过程中(一个Episode),根据已经消耗的时间和预期还需要的时间来不断更新最终回家需要消耗的时间。
如表所示的数据,下图展示了蒙特卡洛学习和 TD 学习两种不同的学习策略来更新价值函数。这里使用的是从某个状态预估的到家还需耗时来间接反映某状态的价值:某位置预估的到家时间越长,该位置价值越低,在优化决策时需要避免进入该状态。
对于 MC 学习过程,驾驶员在路面上碰到各种情况时,他不会更新对于回家的预估时间,等他回到家得到了 真实回家耗时后,他会 重新估计 在返家的路上着每一个主要节点状态到家的时间,在下一次返家的时候用新估计的时间来帮助决策。
而对于 TD 学习,在一开始离开办公室的时候你可能会预估总耗时30分钟,但是当你取到车发现下雨的时候,你会立刻想到原来的预计过于乐观,因为既往的经验告诉你下雨会延长你的返家总时间,此时你会更新目前的状态价值估计,从原来的30分钟提高到40分钟。同样当你驾车离开高速公路时,会一路根据当前的状态(位置、路况等)对应的预估返家剩余时间,直到返回家门得到实际的返家总耗时。这一过程中,你会根据状态的变化 实时更新 该状态的价值。
4 Advantage and Disadvantage of MC v.s. TD
是否依赖最终结果:
- TD 在知道最终结果前可以学习,而 MC 需要等到最终结果才能学习;
- TD 不依赖于最终结果(没有最终结果也可以学习),可以在一个动态地、不完整的序列中学习,而 MC 需要在一个完整的、已知结果的环境中学习。
4.1 Bias / Variance Trade-off
实际收获 Return 是基于某一策略状态价值的 无偏 估计;
真实的 TD target 是基于某一策略状态价值的 无偏 估计;
TD target 是基于某一策略状态价值的 有偏 估计;
TD target 比 Rerturn 具有更低的方差;
偏差 指的是:距离期望的距离,预估的平均值与实际平均值的偏离程度;
方差 指的是:单次采样结果相对于与平均值变动的范围大小。
方差与偏差:
- MC 有较高的方差,没有偏差
- 因此 MC 具有良好收敛性;
- 方差较高,因此 MC 对初始值不敏感。
- TD 有较低的方差,有些许偏差
- 存在偏差,因此对初始值比较敏感;
- 通常比 MC 更有效。
例子:依据仅有的Episode,计算状态A,B的价值分别是多少,即 V(A)=?, V(B)=?
应用MC算法,由于需要完整的 Episode,因此仅 Episode 1 可以用来计算 A 的状态价值,很明显是0;同时 B 的价值是 6/8。应用 TD 算法时,TD算法试图利用现有的Episode经验构建一个MDP(如下图),由于存在一个 Episode 使得状态 A 有后继状态 B,因此状态 A 的价值是通过状态 B 的价值来计算的,同时经验表明 A 到 B 的转移概率是 100%,且 A 状态的即时奖励是 0,并且没有衰减,因此 A 的状态价值等于B的状态价值。
MC 算法试图收敛至一个能够 最小化状态价值与实际收获的均方差 的解决方案。
TD 算法则收敛至一个根据已有经验构建的 最大可能的马尔可夫模型的状态价值。
是否利用马尔可夫性质:
- TD 算法使用了马尔可夫性质;
- MC 算法没有利用马尔可夫性质。
Monte-Carlo, Temporal-Difference 和 Dynamic Programming 都是计算状态价值的一种方法,区别在于,前两种是在不知道 Model 的情况下的常用方法,这其中又以 MC 方法需要一个完整的 Episode 来更新状态价值,TD 则不需要完整的 Episode ;DP 方法则是基于 Model(知道模型的运作方式)的计算状态价值的方法,它通过计算一个状态 S 所有可能的转移状态 S’ 及其转移概率以及对应的即时奖励来计算这个状态 S 的价值。
是否 bootstrapping:
- MC 没有使用自举(使用的是实际收获 return);
- DP 使用自举;
- TD 使用自举。
是否 sampling:
- MC 需要进行采样;
- TD 需要进行采样;
- DP 不需要采样。
5 TD(λ)
先前所介绍的 TD 算法实际上都是 TD(0) 算法,括号内的数字 0 表示的是在当前状态下往前多看 1 步。
5.1 n-Step Prediction
在当前状态往前走 n 步,计算 n 步的 return,同样 TD target 也由两部分组成,已走的步数使用确定的即时 reward,剩下的使用估计的状态价值替代。
图中空心大圆圈表示 state,实心小圆圈表示 action。
5.2 n-Step Return
如下图公式所示,当 n = 1 时,为 TD 算法;当 n 趋向 ∞ 时,为 MC 算法。
例子:大规模随机行走
这个示例研究了使用多个不同步数预测联合不同步长(step-size,公式里的系数α)时,分别在在线和离线状态时状态函数均方差的差别。所有研究使用了10个 Episode。
离线与在线的区别在于:
- 离线是在经历所有 10 个 Episode 后进行状态价值更新;
- 在线则至多经历一个 Episode 就更新依次状态价值。
结果如上图,离线和在线之间曲线的形态差别不明显;从步数上来看,步数越长,越接近MC 算法,均方差越大。对于这个大规模随机行走示例,在线计算比较好的步数是3-5步,离线计算比较好的是6-8步。但是不同的问题其对应的比较高效的步数不是一成不变的。因此选择多少步数作为一个较优的计算参数也是一个问题。
这里我们引入了一个新的参数:λ。通过引入这个新的参数,可以做到在不增加计算复杂度的情况下综合考虑所有步数的预测。这就是 λ-Prediction 和 λ-Return。
5.3 λ-Return
λ-Return 通过对每一项增加了权重,综合考虑了 所有 n-Step 的 renturn。
下图是各步收获的权重分配图,图中最后一列λ的指数是 T-t-1。T 为终止状态的时刻步数,t 为当前状态的时刻步数,所有的权重加起来为 1。
TD(λ) 的设计使得 Episode 中,后一个状态的状态价值与之前所有状态的状态价值有关,同时也可以说成是 一个状态价值参与决定了后续所有状态的状态价值。但是 每个状态的价值对于后续状态价值的影响权重是不同的。
我们可以从两个方向来理解 TD(λ)。
5.4 Forward-view TD(λ)
引入了 λ 之后,会发现要更新一个状态的状态价值,必须要走完整个 Episode 获得每一个状态的即时奖励以及最终状态获得的即时奖励。这和 MC 算法的要求一样,因此 TD(λ) 算法有和 MC 方法一样的劣势。λ 取值区间为 [0,1],当 λ = 1 时对应的就是 MC 算法。这个实际计算带来了不便。
5.5 Backward view TD(λ)
TD(λ) 从另一方面提供了一个 单步更新 的机制。
5.5.1 Eligiblity Trace
想象自己时小白鼠,当有以下的事件发生时,你会觉得是什么导致了最后的电击?
频率启发 Frequency heuristic:将原因归因于 出现频率最高 的状态。
就近启发 Recency heuristic:将原因归因于 较近的 几次状态。
给每一个状态引入一个数值:效用追踪(Eligibility Traces),可以结合上述两个启发,如上图。
对每个状态都记录一个效用追踪,整理如下:
5.6 TD(λ) 与 TD(0)
我们取 λ = 0 时,只有当前的状态会被更新,等同于 TD(0) 算法。
5.7 TD(λ) 与 MC
当 λ = 1 时,TD(1) 粗略看与每次访问的 MC 算法等同。
在线更新时,状态价值差每一步都会有积累;离线更新时,TD(1) 等同于 MC 算法。
5.7.1 数学证明
假设在一个 episode 中 state s 只被访问一次,那么 s 的效用追踪如下。
将 TD(1) 的 TD errors 展开,即可得到与 MC 相同的结果。
6 Summary
相较于MC算法,TD算法应用更广,是一个非常有用的强化学习方法,在下一讲讲解控制相关的算法时会详细介绍TD算法的实现。
Reference
- David Silver《深度强化学习公开课》
- https://zhuanlan.zhihu.com/p/28107168