Reinforcement Learning - An Introduction强化学习读书笔记 Ch12.1-Ch12.7

资格迹,在第七章的n步TD方法的基础之上,引入了一个短时记忆向量z,以及与之相对的长时记忆向量w,当参数w的一个分量参与计算并产生一个估计值时,对应的z的分量会瞬间升高,然后逐渐衰减,在资格迹归零前,如果发现了非零的TD误差,那么对应的w的分量就可以得到学习。
在n步算法中资格迹的主要优势在于,其只需要追踪一个迹向量,而不需要存储最近的n个特征向量,学习也会持续并统一地在整个时间上进行,而不是延迟到整幕的结尾,并且遇到状态时也可马上进行学习而不需要n步的延迟。
前向视图通过待更新的状态往前看,更新依赖于当前还未发生的未来。
后向视图使用当前的TD误差并用资格迹回看那些已访问过的状态。

12.1 λ \lambda λ-回报

一次有效的更新,除了以任意的n步回报之外,也可以用不同n的平均n步回报作为更新目标,只要满足权重都为正数且和为1即可。这样的复合回报,能够减小误差,也能保证更新的收敛性。
复合更新会限制组分中最长部分的长度,因为它决定了更新的延迟。
TD( λ \lambda λ)可以看作是平均n步更新的一个特例,这里的平均值包括了所有可能的n步更新,每一步加权:
在这里插入图片描述
其回溯图如下:
在这里插入图片描述
其中 λ \lambda λ=1时, λ \lambda λ-回报就是蒙特卡洛算法, λ \lambda λ=0时, λ \lambda λ-回报就是单步TD算法。目前所讲的算法都是基于前向视图的。

12.2 TD( λ \lambda λ)

TD( λ \lambda λ)在每一步都更新权重,并且计算平均在整个时间轴上,并且适用于持续性问题。
资格迹辅助整个学习过程,唯一的作用就是影响权值向量,进而权值向量决定了估计值。
在TD( λ \lambda λ)中,资格迹向量初始化为0,然后每一步累积价值函数的梯度,并以 γ λ \gamma\lambda γλ衰减:
在这里插入图片描述
资格迹追踪了对最近的状态评估值做出了贡献的权值向量的分量,当一个强化事件出现时,我们认为这些贡献“痕迹”展示了权值向量的对应分量有多少“资格”可以接受学习过程引起的变化,而关注的强化事件是一个又一个时刻的单步TD误差。而在TD( λ \lambda λ)中,权值向量每一步的更新正比于TD的标量误差和资格迹:
在这里插入图片描述
在这里插入图片描述
对应的半梯度TD( λ \lambda λ)算法如下:
在这里插入图片描述
在每个时刻,计算当前的TD误差,并根据之前的状态对当前资格迹的贡献来分配,可以想象在一个状态流中,计算TD误差,并将其传播给之前访问过的状态,对应于后向视图:
在这里插入图片描述
对应的TD(0)即 λ \lambda λ=0,退化为简单的单步TD算法,对应的TD(0)即 λ \lambda λ=1,恰好与MC算法是对应的回报衰减,并且它不需要在幕结束时才学习。

12.3 n步截断 λ \lambda λ-回报方法

离线 λ \lambda λ-回报使用了知道幕结尾才知道的 λ \lambda λ-回报,和之前等方法类似,可以考虑使用截断回报:
在这里插入图片描述
对应的截断TD( λ \lambda λ)的更新方式为:
在这里插入图片描述

12.4 重做更新:在线 λ \lambda λ-回报算法

选择截断回报时,截断参数n需要折中考虑,n应该尽量大使其更接近离线 λ \lambda λ-回报算法,同时它也应该比较小使得更新更快且更迅速地影响后续行为。
折中的基本思想是,在每一步收集到新的数据增量的同时,回到当前幕的开始并重做所有的更新。由于获得了新的数据,因此新的更新会比原来的更好,每次都使用新的视界,每一次遍历当前幕时,都可以使用一个稍长一点的视界来得到更好的结果。
视觉每扩展一步,都需要重新从 w 0 w_0 w0开始重做有的更新,需要区分不同视界计算的不同的权值向量,也就是需要对权值向量w加入视界上标来进一步区分,每一步的初始权值向量继承上一步的,以三次视界为例:
在这里插入图片描述
对应在线 λ \lambda λ-回报算法的更新式即为:
在这里插入图片描述
这是一个完全在线的算法,在一幕中的每一个时刻t,仅仅使用时刻t获取的信息确定新的权值向量,其主要缺点时计算十分复杂,每一个时刻都需要遍历整幕序列,这种算法不仅能在幕中进行更新,在幕结束时,用于自举的权值向量也获得了更多数量的有意义的更新。

12.5 真实的在线TD( λ \lambda λ)

在线 λ \lambda λ-回报算法的权重的更新序列可以组织成一个三角形:
在这里插入图片描述
在每个时刻产生这个三角形的一行,但是只有对角线上的权值向量才是我们真正需要的,实际上就要找到更紧凑的寻找对角线权值的算法。做到之后,针对现行情况就能得到基于资格迹的真实在线TD( λ \lambda λ)更新:
在这里插入图片描述
在这里插入图片描述
这个算法能产生和在线 λ \lambda λ-回报算法完全相同的权值向量,但是代价更低,相比普通的TD( λ \lambda λ),代价是同一数量级的,但是每一步的计算量增加了约50%(增加了一步内积)。
对应的完整的伪代码为:
在这里插入图片描述
前面介绍的资格迹称为积累迹,而这节介绍的资格迹被称为荷兰级。

12.6 蒙特卡洛学习中的荷兰迹

考虑线性版本的梯度MC预测算法:
在这里插入图片描述
假设回报值就是在幕结束的时候得到的单一收益回报值,且没有折扣。结合资格迹方法,依然在每幕结束才进行更新,但是将计算平均到每一步中,也可以减少存储需求:
在这里插入图片描述
其实就是对权值更新方程进行移项处理,对权值构造一个衰减矩阵,并且可以进行递归:
在这里插入图片描述
这里的a和z就是辅助记忆向量的,可以自不知道G的条件下被增量式地进行更新,z事实上就是资格迹中荷兰迹,根据下式进行更新:
在这里插入图片描述
在这里插入图片描述
(注意第二个和第三个等式中的 α \alpha α其实是不需要的)
只需要把 x t x_t xt隔离出去后,再将 F t F_t Ft放到求和之外进行递归,再进行移项即可得到对应的增量更新方式。而这个更新凡是就是 γ λ \gamma\lambda γλ情况下的荷兰迹。
对应的a辅助向量的更新式为:
在这里插入图片描述
辅助向量a和z在每个时间步骤更新,并且在观测到G时,被用来计算这个时刻的w,这是一个每步时间和存储复杂度都是 O ( d ) O(d) O(d)的增量式算法。

12.7 Sarsa( λ \lambda λ)

用近似动作价值函数代替近似状态价值含糊,得到截断 λ \lambda λ的动作价值函数:
在这里插入图片描述
Sarsa( λ \lambda λ)也是基于前向视图,其更新规则与TD( λ \lambda λ)相同:
在这里插入图片描述
只不过对应的TD误差和资格迹不同:
在这里插入图片描述
在这里插入图片描述
采用二值特征和线性函数逼近的Sarsa( λ \lambda λ)算法的伪代码如下:
在这里插入图片描述
与之前的算法类似,也会有真实在线Sarsa( λ \lambda λ)算法,伪代码如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值