强化学习(四)——蒙特卡洛和时序差分

前言

蒙特卡洛方法和时序差分均属于无模型方法,即状态转移概率未知,接下来讨论的是这两类的方法的预测和控制问题。

蒙特卡罗法MC

参看蒙特卡罗法

  • 个人总结:简单来说,agent通过和环境交互,迭代形成完整的esipode,即状态-动作序列,计算某状态的价值(收获)时,可求该状态出现(可以考虑所有出现情况,也可以只考虑在esipode第一次出现)在所有esipode的收获的期望。需要特别注意在预测问题中,蒙特卡洛罗法的迭代公式,这在后面的研究问题中经常出现(有时会替换状态价值函数动作价值函数),本文推导过程很清晰。
  • 预测问题和控制问题的算法唯一的差别是,预测问题只需要直接一遍计算即可,但是控制问题要根据当前策略计算动作价值函数,随后更新策略,反复迭代,直到动作价值函数收敛,策略也才能随之确定。
  • 蒙特卡罗受束缚的地方:它每次采样都需要一个完整的状态序列。

时序差分法TD

基础参看时序差分法

  • 个人总结:时序差分法有单步差分和多步差分。从字面理解,单步就是将当前时刻的收获 G ( t ) G(t) 用立即奖励 R R 和下一个时刻的折扣后的值函数 v ( S t + 1 ) v(S_{t+1}) 之和代替。多步,即将紧接的下一时刻值函数 换用为下若干时刻的值函数。比如n步,则时序差分即蒙特卡洛法,比如1步,则变为单步的时序差分法。

  • 多步的时序差分在本博客我没有看懂

上图来自:TD单步和多步算法伪代码, 该博文尤其关注在单步和多步解释,很清晰说明了两者的区别和联系。

个人分析:其中多步时序差分(这里我们假设n步)的伪代码中,仍旧是先根据某种策略采样,采到第n步时,开始对前面的n步奖励求和,求第一个时刻的收获。若后面还有样本,则第一个时刻的收获更新为前n步的即使奖励与当前位置的价值之和,若后面没有样本,无需再更新收获。随后用我们之前推导的公式去更新当前第一个时刻的价值函数。循环此过程,即可获得每个时刻的价值函数。

两者对比和联系

很多博客提到这么一点,但都没有具体地解释为什么。

TD有偏差,但方差小。MC无偏差,但方差大。

首先,什么是偏差和方差?

偏差:预测值与真实值之间的差距 方差:预测值与期望之间的差距,关注预测值的离散程度。

我认为,MC 是严格按照收获的公式去计算当前状态的价值,也就是说,它对状态价值的预测就是真实价值,因此没有偏差。但是一个esipode计算出的该状态价值与其他esipode计算出的差距可能比较大,毕竟采样出的序列多样(这个详细为什么,我还不是太明白),所以单个样本结果(也就是某状态的价值)与整体的状态价值期望有较大差距,即方差大。 反过来,TD是一种迭代的方式计算价值函数,也就是说,当前状态价值与下一时刻(或接着若干时刻)的状态价值相关,那肯定这个值与真实值有一定差距,因此存在偏差。但该相关性也决定了TD计算出的结果较为平滑,与整体期望值差距较小,即方差小。

不知道我的理解是否正确,欢迎批评指正。

发布了164 篇原创文章 · 获赞 69 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/wqy20140101/article/details/89598464
今日推荐