当前位置: 首页 > news >正文

强化学习,第六部分:n 步引导

[原文:towardsdatascience.com/reinforcement-learning-part-6-n-step-bootstrapping-e666f8cc7973]

简介

强化学习是机器学习的一个领域,它引入了智能体在复杂环境中学习最优策略的概念。智能体根据环境的状态,从其行为中学习,这些行为导致奖励。强化学习是一个具有挑战性的主题,与机器学习的其他领域有显著差异。

强化学习的显著之处在于,相同的算法可以被用来使智能体适应完全不同、未知和复杂的环境。

注意。为了完全理解本文中包含的概念,强烈建议熟悉前几篇文章中介绍的 蒙特卡洛方法 和 时序差分学习 的基础知识。

强化学习,第三部分:蒙特卡洛方法

强化学习,第五部分:时序差分学习

关于这篇文章

在 上一部分 中,我们通过结合 动态规划 和 MC 方法 的原理来分析 TD 算法的工作方式。此外,我们还查看了一步 TD 算法——最简单的 TD 实现。在这篇文章中,我们将泛化 TD 概念,并探讨何时使用其他算法变体可能更有利。

本文基于由Richard S. Sutton 和 Andrew G. Barto编写的书籍 “强化学习” 的第七章。我非常感谢作者们的努力,他们为这本书的出版做出了贡献。

灵感

让我们暂停一下,理解一步时序差分和 MC 算法有什么共同之处。如果我们省略过于具体的细节,我们会注意到,实际上它们非常相似,除了一个单一的区别外,它们都使用相同的州更新规则:

  • 一步时序差分更新通过查看n = 1的下一个状态来更新每个状态。

  • MC 在分析完整个情节后更新每个状态。这可以大致理解为在 n 步(其中 n 可能是一个很大的数字)之后发生的每个状态的更新。

我们有两种极端情况,其中n = 1n = 情节序列中剩余状态的数目。一个合理的问题出现了:我们能否使用介于这些极端值之间的某个n值?

答案是肯定的。这个概念通过n 步 Bootstrapping得到了推广。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ec08cdbda02ef234a3f6230d08e5fe2f.png

n 步 Bootstrapping 推广了 TD 算法。

工作流程

在一步 TD 中,我们分析收到的奖励与通过从当前状态切换到下一个状态(n = 1)而引起的状态值变化之间的差异。这个想法可以很容易地推广到多步。为了做到这一点,让我们引入n 步回报,它计算从当前状态t到步骤t + n的未来状态的累积折现奖励。此外,它还添加了步骤t + n的状态值。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/aea794fe074ed71310f02dbba395f6e1.png

n 步回报

使用在前一篇文章中引入的类似更新规则,这次我们可以比较 n 步回报与当前状态值,并推导出一个新的更新规则:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b7dfec625ad60ab3ac966d6a7ad14810.png

n 步 Bootstrapping 的更新规则

为了更好地理解工作流程,让我们绘制一个表示几个n值的状态关系的图。下面的图展示了如何使用关于下一个状态和奖励的信息来更新序列中的先前状态。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/35c676e2ce71bbed250254a93b84c981.png

在更新过程中,不同 n 值下的奖励与状态值之间的关系

例如,让我们考虑 3 步 TD 的情况:

  • 情节的开始生成,直到状态S₃

  • 状态S₀通过使用 3 步回报来更新,它将奖励R₁R₂R₃以及状态 S₃ 的值加总。

  • 生成状态S₄

  • 状态 S₁ 通过使用 3 步回报来更新,它将奖励R₂R₃R₄以及状态S₄的值加总。

  • 生成状态S₅

  • 状态S₅通过使用 3 步回报来更新,它将奖励R₃R₄R₅以及状态S₅的值加总。

  • 类似的过程会重复进行,直到我们达到情节的最后一个状态。

如果对于给定的状态,剩余要计算 n 步回报的状态少于 n 个,则使用截断 n 步回报,直到终端状态累积可用的奖励。

如果 n = ∞,那么 n 步 TD 是一个蒙特卡洛算法。

n 步 TD 控制

在第五部分中,我们讨论了 Sarsa、Q 学习和 Expected Sarsa 算法。所有这些算法都是基于使用下一状态的信息。正如我们在这篇文章中已经做的那样,我们可以将这个想法扩展到 n 步学习。为了实现这一点,唯一需要改变的是调整它们的更新公式,以使用来自n步后的信息。其他所有内容都将保持不变。

选择最佳的 n 值

在第五部分中,我们也强调了单步 TD 算法相对于 MC 方法的优点以及它们如何导致更快收敛。如果这样,为什么不总是使用单步 TD 而不是 n 步方法呢?实际上,n = 1并不总是最优值。让我们看看理查德·S·萨顿和安德鲁·G·巴特罗的 RL 书籍中提供的例子。这个例子展示了一种情况,其中使用更大的n值可以优化学习过程。

下面的图片显示了 Sarsa 算法的第一集中代理在给定迷宫中走过的路径。代理的目标是找到到达 X 的最短路径。当代理踏上 X 时,它获得奖励R = 1。迷宫中每一步的其他步骤都会导致奖励R = 0

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/52d2d5156c5ff4c1874dbfcb9d54025a.png

代理在迷宫中走过的路径。X 标记代表终端状态。图片由作者改编。来源:强化学习。入门。第二版 | 理查德·S·萨顿和安德鲁·G·巴特罗

现在我们比较一下代理在 1 步 Sarsa 和 10 步 Sarsa 中的学习情况。我们将假设所有动作值都初始化为 0。

在 1 步 Sarsa 中,对于每一步,更新仅基于下一状态的信息。这意味着只有直接导致目标 X 的单步动作值才有意义更新。在这种情况下,代理获得正奖励,因此学习到做出“向上”的最后一步确实是一个最优决策。然而,所有其他更新都没有产生影响,因为收到的奖励R = 0没有改变任何动作值。

另一方面,在 10 步 Sarsa 中,最后一步将把它的正奖励传播到最后 10 次动作值。这样,代理将从这一集中学习到更多信息。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/28b1e8296ce3f2477ac9323643fb92ff.png

在第一次播放期间,两个算法中动作状态值都被修改的可视化。如图所示,10 步 Sarsa 比一步 Sarsa 学习得快得多。图像由作者改编。来源:强化学习. 简介. 第二版 | 理查德·S·萨顿和安德鲁·G·巴特罗

因此,在这些迷宫设置中,较大的 n 值会使智能体学习得更快。

在查看这个例子之后,我们可以得出一个重要的事实:

时间差分学习中 n 的最佳值是问题相关的。

结论

将一步 TD 和蒙特卡洛方法推广到 n 步算法在强化学习中起着重要作用,因为 n 的最佳值通常位于这两个极端之间。

除了这个之外,由于每个问题都是独特的,因此没有选择 n 的最佳值的一般规则。虽然较大的 n 值会导致更新延迟更长,但它们仍然可能比较小的 n 值表现更好。理想情况下,应该将 n 视为一个超参数,并仔细选择它以找到最佳值。

资源

  • 强化学习. 简介. 第二版 | 理查德·S·萨顿和安德鲁·G·巴特罗

除非另有说明,所有图像均为作者提供。

http://www.jsqmd.com/news/450487/

相关文章:

  • 下面是 TypeScript + ESModule 版本的最小示例,和你项目更接近。
  • 无人机巡检图像分析实战:基于深度学习的电线杆与铁塔智能识别与缺陷检测
  • 中兴通讯年营收1339亿:扣非后净利33.7亿同比降45% 派息20亿
  • 何搭建一个聊天机器人?#0.5 名词解释
  • 不容错过!2026年2月数字化运营系统口碑榜单揭秘,OMO模式数字经济电商/消费升级零售,数字化运营系统排行 - 品牌推荐师
  • Java Web 校园一卡通abo系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 穿越时光列车——初识Linux线程
  • 【C++17 之 .base() 函数实现正向和反向迭代器之间的交换,原理及代码展示】接上一p
  • 风中低语:Linux 信号处理的艺术与实践
  • 工业企业数据质量治理进阶实践指南
  • 2026版《中国计算机学会推荐国际学术会议和期刊目录》更新
  • 每个核心对象 1 个最小可运行示例 js版本
  • Spring Boot中使用Server-Sent Events (SSE) 实现实时数据推送教程
  • Java农产品电商平台源码(含完整文档)基于JSP+SSM框架的JavaWeb/JavaEE商城系统
  • Flutter 三方库 sqlite_crdt 的鸿蒙化适配指南 - 掌控分布式存储资产、精密 CRDT 治理实战、鸿蒙级同步专家
  • Flutter 三方库 steamworks 的鸿蒙化适配指南 - 掌控游戏引擎资产、Steam 集成实战、鸿蒙级精密分发专家
  • Flutter 三方库 concurrent_queue 的鸿蒙化适配指南 - 掌控高并发队列资产、精密任务治理实战、鸿蒙级吞吐专家
  • Flutter 三方库 drift_dev 的鸿蒙化适配指南 - 掌控数据库资产、精密 Drift 治理实战、鸿蒙级存储专家
  • Flutter 三方库 data_fixture_dart 的鸿蒙化适配指南 - 掌控数据资产、精密 Mock 治理实战、鸿蒙级质量专家
  • Flutter 三方库 dartemis 的鸿蒙化适配指南 - 掌控数据资产、精密 ECS 架构治理实战、鸿蒙级游戏专家
  • Spring Boot环境配置
  • 当学术彻底“放飞自我”,会发生什么?我分析了800篇奇葩论文
  • Spring Boot3.3.X整合Mybatis-Plus
  • Lua 的 UTF-8 模块
  • Matlab入门速成七十二:(一文识记所有代码)均值方差相关系数,分析数据的特征
  • Flutter 三方库 kdtree 的鸿蒙化适配指南 - 掌控空间搜索资产、精密算法治理实战、鸿蒙级算力专家
  • 洋州影院购票管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • Spring Cloud Nacos配置管理
  • Flutter 三方库 dart_extensions_methods 的鸿蒙化适配指南 - 掌控语法扩展资产、精密工程治理实战、鸿蒙级开发专家
  • Linux下如何使用Git工具:从安装到实战的完整指南