强化学习,第 6 部分:n 步 Bootstrapping

news2024/11/16 1:30:35

一、介绍

1.1 概述

R强化学习是机器学习中的一个领域,它引入了智能体在复杂环境中学习最佳策略的概念。代理从其操作中学习,从而根据环境的状态获得奖励。强化学习是一个具有挑战性的话题,与机器学习的其他领域有很大不同。

强化学习的显着之处在于,可以使用相同的算法来使代理适应完全不同的、未知的和复杂的条件。

笔记。为了完全理解本文中包含的概念,强烈建议熟悉前面文章中介绍的蒙特卡洛方法和时间差异学习的基础知识。

1.2 关于此文章

在上一部分中,我们通过结合动态规划原理和 MC 方法分析了 TD 算法的工作原理。此外,我们还研究了一步式 TD 算法 — 最简单的 TD 实现。在本文中,我们将概括 TD 概念,并了解何时使用其他算法变体可能是有利的。

本文基于 Richard S. Sutton 和 Andrew G. Barto 撰写的《强化学习》一书的第 7 章。我非常感谢为本书的出版做出贡献的作者们的努力。

二、想法

        让我们暂停一下,了解一下一步式 TD 和 MC 算法有什么共同点。如果我们省略过于具体的细节,我们会注意到它们实际上非常相似,并且使用相同的状态更新规则,除了一个区别:

  • 一步 TD 通过查看 n = 1 下一个状态来更新每个状态。
  • MC 在分析了整个剧集后更新了每个状态。这可以粗略地看作是 n 步后发生的每个状态的更新(其中 n 可能是一个很大的数字)。

        我们有两个极端情况,其中 n = 1,其中 n = 剧集序列中剩余状态的数量。一个合乎逻辑的问题出现了:我们是否可以使用位于这些极端值中间某个位置的 n 值?

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

n 步 Bootstrapping 泛化了 TD 算法

2.1 工作流

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

        n 步返回

        使用之前文章中介绍的类似更新规则,这次我们可以将 n 步返回值与当前状态值进行比较,并得出新的更新规则:

        更新 n 步引导的规则

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

        不同 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 是蒙特卡洛算法。

2.2 n 级 TD 控制

        在第 5 部分中,我们讨论了 Sarsa、Q-learning 和预期 Sarsa 算法。所有这些都是基于使用下一个州的信息。正如我们在本文中所做的,我们可以将这个想法扩展到 n 步学习。为此,唯一需要做的更改是调整他们的更新公式,以使用不是来自下一个状态的信息,而是来自 n 步之后的信息。其他一切都将保持不变。

三、选择 n 的最佳值

        在第 5 部分中,我们还强调了一步式 TD 算法相对于 MC 方法的优势,以及它们如何实现更快的收敛。如果是这样,为什么不总是使用 one-step TD 而不是 n 步法呢?在实践中,n = 1 并不总是最佳值。让我们看一下 Richard S. Sutton 和 Andrew G. Barto 的 RL 书中提供的一个例子。此示例显示了使用较大的 n 值可优化学习过程的情况。

        下图显示了代理在 Sarsa 算法的第一集期间在给定迷宫中绘制的路径。代理的目标是找到到 X 的最短路径。当代理踩到 X 时,它会收到奖励 R = 1。在迷宫中每走一步,奖励 R = 0

        代理在迷宫中绘制的路径。X 标记表示终端状态。图片由作者改编。来源:强化学习。引言。第二版 |Richard S. Sutton 和 Andrew G. Barto

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

在 1 步式 Sarsa 中,对于每个移动,仅根据下一个状态的信息执行更新。这意味着,唯一具有有意义更新的 action 值是在单个步骤中直接指向目标 X 的操作值。在这种情况下,代理获得正奖励,从而了解到做出 “up” 最后一步确实是一个最佳决定。但是,所有其他更新不会产生任何影响,因为收到的奖励 R = 0 不会更改任何操作值。

另一方面,在 10 步 Sarsa 中,最终步会将其正奖励传播到最后 10 步的行动值。通过这种方式,代理将从剧集中学到更多信息。

在第一集中,其值在两种算法中都被修改的动作状态的可视化。正如我们所看到的,10 步 Sarsa 的学习速度比 1 步 Sarsa 快得多。图片由作者改编。来源:强化学习。引言。第二版 |Richard S. Sutton 和 Andrew G. Barto

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

看了这个例子,我们可以得出一个重要的事实:

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

四、结论

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

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

资源

  • 强化学习。引言。第二版 |Richard S. Sutton 和 Andrew G. Barto

除非另有说明,否则所有图片均由作者提供。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux--实现U盘,SD卡的自动挂载

1. 编辑/etc/init.d/rsC或S10mdev文件 在/etc/init.d/rsC或S10mdev中加入以下语句: echo /sbin/mdev > /proc/sys/kernel/hotplug 当有热插拔事件产生时,内核会调用/proc/sys/kernel/hotplug文件里指定的应用程序来处理热插拔事件。把/sbin/mdev写…

数据结构---双向链表---循环链表---栈

目录 一、双向链表 1.1.创建双向链表 1.2.头插法 1.3.尾插法 1.4.查询节点 1.5.修改节点 1.6.删除节点 1.7.打印节点 1.8.销毁链表 二、循环链表 2.1.单循环链表 2.2.双循环链表 三、栈 3.1.顺序栈 1.创建栈 2.判断栈是否满 3.判断栈是否为空 4.进栈 5.出栈…

深度解读SGM41511电源管理芯片I2C通讯协议REG0A寄存器解释

REG0A 是 SGM41511 的第十一个寄存器,地址为 0x0A。这个寄存器包含了只读(R)和可读写(R/W)的位。上电复位值(PORV)为 xxxxxx00,其中 x 表示不确定的初始状态。这个寄存器提供了充电器…

microsoft微软excel或WPS表格打开vivado逻辑分析仪ILA保存的csv文件,自动转换科学计数法损失精度的bug

问题 vivado的逻辑分析仪ILA,可以方便的把数据导出成CSV(Comma-Separated Values)文件,实际是逗号作为分隔符的数据文件。 导出数据文件用文本编辑器打开,第74行有如下数据: 但是使用excel打开这个csv文件,则这个数…

基于Python的机器学习系列(15):AdaBoost算法

简介 AdaBoost(Adaptive Boosting)是一种提升(Boosting)算法,旨在通过组合多个弱分类器来提高整体模型的性能。AdaBoost的核心思想是通过加权结合多个表现较弱的分类器(通常是深度为1的决策树,称…

Spring Boot Web开发实践:响应参数的使用方法、IOC、DI和Bean基本介绍

主要介绍了SpringBootWeb响应参数的基本使用和spring框架的控制反转(IOC)和依赖注入(DI)以及Bean对象的声明、扫描、注入!!! 目录 前言 响应参数 分层解耦 三层架构 分层解耦 IOC & …

MVC与设计模式理解-lnmp学习之路

一、MVC 前言: MVC是一种应用架构模式,也可以说是一种业务架构或是一种应用设计思想,用于组织业务逻辑并分离代码的。 MVC组成结构是Model-View-Controller,Model是管控数据层,View是管控视图层,Controlle…

【Unity-UGUI组件拓展】| ContentSizeFitter 组件拓展,支持设置最大宽高值

🎬【Unity-UGUI组件拓展】| ContentSizeFitter 组件拓展,支持设置最大宽高值一、组件介绍二、组件拓展方法三、完整代码💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲…

图新地球桌面端-给地块贴纹理都是正北方向如何调整

0序 有部分做农保、农业管理的客户,需要结合GIS做一些方案效果,有时候会直接把面对象贴上作物类型的纹理,看上去会比纯色块更好看一些。而又不需要去做复杂的人工建模。 本文的重点是对导入的纹理进行角度调整,让纹理和地块的方向…

UE5开发——射击游戏

1. 枪支拾取动画 创建Text Block 编译保存 在h文件写入 &#xff0c;属性 private:UPROPETY(VisibleAnywhere, Category "Weapon Properties")class UWidgetComponent* PickupWidget; 先写这个&#xff1a; CreateDefaultSubobject<UWidgetComponent>(TEXT(…

JavaWeb——介绍(什么是Web、Web网站的开发模式)、初始Web前端(Web标准、学习内容)

目录 介绍 什么是Web Web网站的开发模式 初识Web前端 Web标准 学习内容 介绍 JavaWeb学习路线 &#xff08;仅用作参考&#xff09; 什么是Web Web&#xff1a;全球广域网&#xff0c;也称为万维网&#xff08;www World Wide Web)&#xff0c;能够通过浏览器访问的…

数据结构之内核链表,栈,队列

今天主要学习了内核链表&#xff0c;顺序栈&#xff0c;链式栈&#xff0c;顺序队列&#xff0c;链式队列的相关内容。 一.内核链表 内核链表和之前的单向&#xff0c;双向链表有所不同的是内核链表的结构是数据包含节点&#xff0c;特点如下&#xff1a; 1.一种链表结构能够操…

系统架构设计师——系统工程学

概述. 系统工程是一种跨学科的方法论&#xff0c;旨在通过系统方法组织管理技术来实现系统的规划、研究、设计、制造、试验和使用。它的核心在于从整体的角度出发&#xff0c;合理地开发、设计、实施和运用系统科学和技术&#xff0c;确保系统能够成功地实现其预定目的。以下是…

适用于车队管理和试验验证的数据记录仪-IPE853

IPE853是一款可扩展的数据记录仪&#xff0c;支持整车质量保证中的各项测量任务。它具有CAN/CAN FD、LIN、以太网等众多测量输入接口&#xff0c;并支持CCP/XCPonCAN、XCPonETH、J1939、OBD、WWH-OBD、KWPonCAN、UDS/ODX/PDX和CAN-send等多种协议&#xff0c;因此其可轻松访问汽…

vscode在html中的使用

目录 一、安装插件二、通过live Server 小型服务器运行项目三、其他常见设置 一、安装插件 ● Auto Rename Tag 自动修改标签对插件 ● Chinese Language Pack 汉化包 ● HTML CSS Support HTML CSS 支持 ● Intellij IDEA Keybindings IDEA快捷键支持 ● Live Server 实时加载…

解决线程中使用线程锁

问题&#xff1a;多线程操作同一个对象&#xff0c;利用锁保证数据操作的原子性 解决方案&#xff1a;使用线程锁 简要说明&#xff1a;线程锁本质上就是添加一个公共状态量&#xff0c;当线程拿到状态量后&#xff0c;则继续执行&#xff0c;否则就等待 扩展1&#xff1a;自…

【文献及模型、制图分享】大运河江苏段沿线典型传统村落空间形态特征与影响因素及其启示

文献介绍 大运河见证了中国数千年的繁荣与变迁&#xff0c;沿线传统村落是其历史文化的直接展示。对这些村落的空间形态进行研究&#xff0c;不仅能够深入了解传统村落形态特征&#xff0c;还为其保护和发展提供有力的支持。以大运河江苏段沿线的48个传统村落为研究对象&#…

C++入门基础知识40——【关于C++ 运算符——赋值运算符】

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

CSS3中的字体详解

字体 网页字体的三个来源&#xff1a; 用户机器上安装的字体&#xff0c;放心使用。保存在第三方网站上的字体&#xff0c;例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字体&#xff0c;可以用font-face规则随网页一起发送到浏览器。 字体相…