2026/6/5 20:40:36
网站建设
项目流程
网站开发服务器数据库,新中国风装修,大鹏新区住房建设局网站,中铁建设集团门户网登录入口官网【强化学习】第五章#xff1a;蒙特卡洛学习、时序差分学习、TD(λ)
本篇开启无模型(Model-free)强化学习方法#xff1a;蒙特卡洛学习、时序差分学习、TD(λ)。其中#xff0c;TD(λ)方法可以看作是蒙特卡洛方法和时序差分方法的混合。
这三个方法的最终目的都是用来评估…【强化学习】第五章蒙特卡洛学习、时序差分学习、TD(λ)本篇开启无模型(Model-free)强化学习方法蒙特卡洛学习、时序差分学习、TD(λ)。其中TD(λ)方法可以看作是蒙特卡洛方法和时序差分方法的混合。这三个方法的最终目的都是用来评估和优化价值函数的通俗的说就是计算状态价值的。评估价值函数就是计算出那个收敛的Vπ有了Vπ就可以算出Qπ有了Qπ就可以用贪婪的方法去提升策略了如此循环就可以找到最优策略。也就是智能体从小白变成了高手。说明本章理解起来有些抽象要想彻底弄懂第二章的增量式均值计算、指数移动平均第三章的贝尔曼期望方程第四章动态规划中的迭代策略评估这些内容务必要弄明白本章才容易理解。一、蒙特卡洛强化学习(Monte-Carlo Reinforcement Learning)1、蒙特卡洛强化学习是解决什么问题的我们前面第三、四章学的是有模型的强化学习问题就是现实问题可以抽象成一个完备的MDP。完备的MDP就是我们是知道环境中的状态的而且知道状态之间的转移概率并且知道系统的即时奖励。此时我们用贝尔曼期望方程动态规划就可以解决。但是无模型的强化学习问题是一个非完备的MDP我们是不知道系统背后的状态转移矩阵也不知道系统奖励。此时就得用无模型强化学习方法。其中蒙特卡洛强化学习方法(简称MC)就是一个典型的无模型算法。2、MC的基本描述和基本思想1MC方法是需要agent和环境进行交互的交互了就可以获得交互数据然后从交互数据中寻找经验。2MC方法要求agent得从头打到游戏结束。所以MC只能用于有分幕的情况就是要有游戏结束的情况。3通俗理解MC就是用样本均值估计总体均值的方法就是用样本均值逼近总体均值或者说就是用频率逼近概率的逻辑。在完备的MDP中我们是有状态转移矩阵的所以可以用概率算出状态价值但是这里不知道状态是如何转移的所以只能通过实际走出的一条条幕通过这些幕中的状态实际回报的均值来估计状态价值。3、MC具体是如何计算状态价值的1MC是通过两种方法来计算状态价值的first-visit或者every-visit来计算的。2上左图意思就是agent实实在在的打了6轮游戏所以产生了6条分幕。上左图就是利用这6条分幕来计算状态s0的价值值的示例。具体做法是首先在每条分幕中找到状态s0第一次出现的地方。比如分幕1中s0第一出现在a处虽然b处也出现了s0但是不用管b处我们只计算a处s0的价值。那a处s0的价值其后所有状态的系统奖励和。这就算出了第一个s0的价值值。同理观察分幕2中s0出现的位置发现分幕2中压根就没出现状态s0那就弃用这条分幕同理计算分幕3、分幕4、分幕6中的s0价值值。这样就又得到3个s0的价值值。最后求这4个s0价值值的均值就得到状态s0的价值值。如此方法计算其他状态的价值。3上右图方法2示例的也是如何计算状态s0的价值值。但是every-visit采用的是只要幕中出现状态s0就统统计算其价值值然后求平均平均值就是s0的价值值。4我们大多数是用every-visit方式。anyway不管是first-visit还是every-visit很多时候都是可以收敛的所以这两种方法差别不大你随便选一种即可。4、小结至此我们使用蒙特卡洛方法就计算出了状态价值有了状态价值就可以算出动作价值有了动作价值就可以局部贪婪化的选取局部最优动作(也就是进行策略提升了)局部最优动作就是新的策略在新策略下又可以计算新的状态价值-新的动作价值-策略提升-新新策略-新新状态价值-....如此循环当策略收敛后就是我们要寻找的最优策略。这就是蒙特卡洛强化学习的基本内容。现在回看其原理是不是特别特别简单和通俗易懂但是这里要重点说明的是蒙特卡洛方法在工程实现上还有两个技巧对于稳态环境问题工程上一般是用增量来计算价值均值的对于非稳态环境问题一般是用指数移动平均来计算价值均值的。至于什么是稳态、非稳态、什么是增量、什么是指数移动平均等概念请参考我这篇文章https://blog.csdn.net/friday1203/article/details/155787017?spm1001.2014.3001.5501一定一定得完全理解如何用增量和指数移动平均来计算价值均值下面的时序差分和TD(λ)你才能看懂二、时序差分学习(Temporal-Difference Learning)1、时序差分是用来解决什么问题的MC方法最大的缺点就是需要agent打完每一轮游戏才能从游戏序列中计算状态价值。这样是非常低效的比如有的游戏需要打10万轮才能策略收敛一轮游戏需要1小时那不要等到天荒地老了嘛。而且有的游戏是没有结束状态的那MC就没法用了。所以此时时序差分学习诞生了。所以时序差分是用来解决那种无法进行分幕的、非完备的MDP问题的。也所以时序差分学习也是一个无模型强化学习方法。2、时序差分的基本描述和基本思想1上图左边是时序差分的基本描述。中间是增量式every-visit的蒙特卡洛算法。右边是时序差分算法。将TD和MC放一起是因为TD是对MC的改进算法二者对比讲比较好理解。2A处前面讲动态规划时的迭代策略评估中当时就说那个迭代过程叫自举bootstrapping就是从一组非收敛的状态价值迭代到一组收敛的状态价值直白的说就是通过一组预测值来预测另外一组预测值就这样不断地预测最后还能预测正确值。其实这也是强化学习最大的缺点也是导致强化学习的收敛性一直都是一个行业问题。所以在很多复杂情况下强化学习的收敛性一直是无法证明的。那时序差分TD又是如何自举的呢就是上图C处灰框中的式子这个式子就是TD自举的过程。3B处上图B处是增量式蒙特卡洛算法的迭代过程。里面的α你可以看作第α步4C处由于B处的计算得agent实实在在地打了很多步游戏游戏中的每个状态都需要出现很多次才能求出的才是期望Gt。所以MC算法是用实际回报来更新迭代状态价值的。但是很多时候尤其是有些复杂游戏状态个数非常多的游戏是没法通过打很多很多步游戏来逼近真实的Gt的。所以上图C处的TD算法就非常高明了我想它大概是借鉴了贝尔曼期望方程的思路整体无法求解那我观察局部我找出局部之间的关系让一个无限循环的东西变成了一个递推式就是无限变成了有限。就是游戏的步数是无限的但游戏中的状态是有限的我无法从无数的步数中算出Gt那我可以列出有限状态之间的Gt的关系所以TD迭代的是状态价值的递推式所以TD用的是估计回报来更新迭代状态价值的。就类似动态规划中的迭代策略评估通过预测值来预测另外一组预测值一轮轮预测最后也能收敛到真正的状态价值。也所以TD算法的优点是只要采集当下动作的系统奖励和下一个转移状态即可。而MC的计算不仅需要当下动作的系统奖励还有当下状态以后的所有状态的奖励。当我们无法采集到很多后续状态奖励时MC算法就无能为力了此时TD算法就可堪大任。3、小结待续。。。。。