news 2026/4/23 4:14:37

【强化学习】第五章:蒙特卡洛学习、时序差分学习、TD(λ)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【强化学习】第五章:蒙特卡洛学习、时序差分学习、TD(λ)

【强化学习】第五章:蒙特卡洛学习、时序差分学习、TD(λ)

本篇开启无模型(Model-free)强化学习方法:蒙特卡洛学习、时序差分学习、TD(λ)。其中,TD(λ)方法可以看作是蒙特卡洛方法和时序差分方法的混合。

这三个方法的最终目的都是用来评估和优化价值函数的,通俗的说就是计算状态价值的。评估价值函数就是计算出那个收敛的Vπ,有了Vπ就可以算出Qπ,有了Qπ就可以用贪婪的方法去提升策略了,如此循环就可以找到最优策略。也就是智能体从小白变成了高手。

说明:本章理解起来有些抽象,要想彻底弄懂,第二章的增量式均值计算指数移动平均,第三章的贝尔曼期望方程,第四章动态规划中的迭代策略评估,这些内容务必要弄明白,本章才容易理解。

一、蒙特卡洛强化学习(Monte-Carlo Reinforcement Learning)

1、蒙特卡洛强化学习是解决什么问题的?
我们前面第三、四章学的是有模型的强化学习问题,就是现实问题可以抽象成一个完备的MDP。完备的MDP就是我们是知道环境中的状态的,而且知道状态之间的转移概率,并且知道系统的即时奖励。此时我们用贝尔曼期望方程+动态规划就可以解决。

但是无模型的强化学习问题是一个非完备的MDP,我们是不知道系统背后的状态转移矩阵,也不知道系统奖励。此时就得用无模型强化学习方法。其中蒙特卡洛强化学习方法(简称MC)就是一个典型的无模型算法。

2、MC的基本描述和基本思想

(1)MC方法是需要agent和环境进行交互的,交互了就可以获得交互数据,然后从交互数据中寻找经验。
(2)MC方法要求agent得从头打到游戏结束。所以MC只能用于有分幕的情况,就是要有游戏结束的情况。
(3)通俗理解:MC就是用样本均值估计总体均值的方法,就是用样本均值逼近总体均值,或者说就是用频率逼近概率的逻辑。在完备的MDP中我们是有状态转移矩阵的,所以可以用概率算出状态价值,但是这里不知道状态是如何转移的,所以只能通过实际走出的一条条幕,通过这些幕中的状态实际回报的均值来估计状态价值。

3、MC具体是如何计算状态价值的?

(1)MC是通过两种方法来计算状态价值的: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?spm=1001.2014.3001.5501
一定一定得完全理解如何用增量和指数移动平均来计算价值均值,下面的时序差分和TD(λ)你才能看懂!

二、时序差分学习(Temporal-Difference Learning)

1、时序差分是用来解决什么问题的?
MC方法最大的缺点就是需要agent打完每一轮游戏,才能从游戏序列中计算状态价值。这样是非常低效的,比如有的游戏需要打10万轮才能策略收敛,一轮游戏需要1小时,那不要等到天荒地老了嘛。而且有的游戏是没有结束状态的,那MC就没法用了。所以此时时序差分学习诞生了。

所以时序差分是用来解决那种无法进行分幕的、非完备的MDP问题的。也所以时序差分学习也是一个无模型强化学习方法

2、时序差分的基本描述和基本思想

(1)上图左边是时序差分的基本描述。中间是增量式every-visit的蒙特卡洛算法。右边是时序差分算法。将TD和MC放一起是因为TD是对MC的改进算法,二者对比讲比较好理解。

(2)A处:前面讲动态规划时的迭代策略评估中,当时就说那个迭代过程叫自举bootstrapping,就是从一组非收敛的状态价值迭代到一组收敛的状态价值!直白的说就是,通过一组预测值来预测另外一组预测值,就这样不断地预测,最后还能预测正确值。其实这也是强化学习最大的缺点,也是导致强化学习的收敛性一直都是一个行业问题。所以在很多复杂情况下,强化学习的收敛性一直是无法证明的。
那时序差分TD又是如何自举的呢?就是上图C处灰框中的式子,这个式子就是TD自举的过程。

(3)B处:上图B处是增量式蒙特卡洛算法的迭代过程。里面的α你可以看作第α步:

(4)C处:由于B处的计算得agent实实在在地打了很多步游戏,游戏中的每个状态都需要出现很多次,才能求出的才是期望Gt。所以MC算法是用实际回报来更新迭代状态价值的。但是很多时候,尤其是有些复杂游戏,状态个数非常多的游戏,是没法通过打很多很多步游戏来逼近真实的Gt的。

所以上图C处的TD算法就非常高明了,我想它大概是借鉴了贝尔曼期望方程的思路:整体无法求解,那我观察局部,我找出局部之间的关系,让一个无限循环的东西变成了一个递推式,就是无限变成了有限。就是游戏的步数是无限的,但游戏中的状态是有限的,我无法从无数的步数中算出Gt,那我可以列出有限状态之间的Gt的关系!所以TD迭代的是状态价值的递推式!所以TD用的是估计回报来更新迭代状态价值的。就类似动态规划中的迭代策略评估,通过预测值来预测另外一组预测值,一轮轮预测,最后也能收敛到真正的状态价值。

也所以TD算法的优点是只要采集当下动作的系统奖励和下一个转移状态即可。而MC的计算不仅需要当下动作的系统奖励还有当下状态以后的所有状态的奖励。当我们无法采集到很多后续状态奖励时,MC算法就无能为力了,此时TD算法就可堪大任。

3、小结

待续。。。。。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 0:51:13

从成本中心到增长引擎:合规赛道的跨境品牌逆袭指南

曾被视为发展阻力的合规要求,正在经历根本性的角色重塑,在当前的行业视野中,合规不再是增加成本的负担,而是驱动业务稳健增长、构建市场竞争壁垒的核心引擎。一、合规范式的结构性升级这一转变的核心,在于平台与监管环…

作者头像 李华
网站建设 2026/4/21 20:34:39

基于java的SpringBoot/SSM+Vue+uniapp的实验室智慧管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言 🌞博主介绍:✌全网粉丝15W,CSDN特邀作者、211毕业、高级全…

作者头像 李华
网站建设 2026/4/23 0:55:39

优化 if/else 的四种设计模式

常开发中,我们经常会遇到需要根据不同条件执行不同逻辑的场景,导致代码中出现大量的if/else嵌套。这不仅降低了代码的可读性和可维护性,还会增加后续扩展的难度。本文将介绍四种优雅的设计模式来优化这种"条件爆炸"问题&#xff1a…

作者头像 李华
网站建设 2026/4/22 8:59:12

【vLLM 学习】Prefix Caching

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。 更多 vLLM 中文文档及教程可访问 →vllm.hyper.ai/ *在线运行 vLLM 入门教程:零基础分步指南 源码 examples/offline_inference/p…

作者头像 李华
网站建设 2026/4/22 1:23:29

同样是技术岗,35 岁后为何网络安全行业越老越吃香?

前几天我表弟小王来找我喝茶,聊着聊着突然问我:“老曹,你说我要不要转行做网络安全啊? 听说这行业挺赚钱的。 “我一听就笑了,这不正好最近我刚研究过这个行业吗? 我跟他说,别看现在各行各业…

作者头像 李华
网站建设 2026/4/21 23:39:55

[特殊字符] uni-app App 端实现文件上传功能(基于 xe-upload 插件)

在 uni-app 开发中,文件上传是一个常见且重要的功能。尤其是在 App 端,如何实现一个既美观又实用的文件上传与展示界面,是很多开发者关心的问题。本文将介绍如何通过 xe-upload 插件,结合自定义 UI,实现一个完整的文件…

作者头像 李华