深度学习6-高级强化学习库

2023-11-07

## 高级强化学习库

▪  使用高级库的动机,不要从头开始重新实现一切。
▪  PTAN库以及最重要的部分,将通过代码示例进行说明。
▪  针对CartPole上的DQN,使用PTAN库来实现。
▪  可以考虑的其他RL库。

### 为什么使用强化学习库

RL十分灵活,并且很多现实生活中的问题都属于环境–智能体交互的类型。RL方法不会对观察和动作的细节做很多假设,所以用来解决CartPole环境的代码也适用于Atari游戏(可能需要一些小调整)。

**PTAN提供了下面的实体:**
▪  Agent:知道如何将一批观察转换成一批需要执行的动作的类。它还可以包含可选状态,当需要在一个片段中为后续动作记录一些信息的时候可以用到。(我们会在第17章用到这个方法,在深度确定性策略梯度(Deep Deterministic Policy Gradient,DDPG)中,需要在探索的时候包含奥恩斯坦–乌伦贝克随机过程)。本库提供了好几个智能体用于最常见的一些RL场景,你也完全可以编写自己的BaseAgent子类。
▪  ActionSelector:一小段与Agent协同工作的逻辑,它知道如何从网络的输出中选择动作。
▪  ExperienceSource和它的变体:Agent的实例和Gym环境对象可以提供关于片段轨迹的信息。它最简单的形式就是每次一个(a, r, s')状态转移,但其功能远不止如此。
▪  ExperienceSourceBuffer和它的变体:具有各种特性的回放缓冲区。包含一个简单的回放缓冲区和两个版本的带优先级的回放缓冲区。
▪  各种工具类,比如TargetNet和用于时间序列预处理的包装器(用于在TensorBoard中追踪训练进度)。
▪  PyTorch Ignite帮助类可以将PTAN集成到Ignite框架中去。
▪  Gym环境包装器,例如Atari游戏的包装器(从OpenAI Baselines复制而来,并做了一些调整)。

**动作选择器**
用PTAN的术语来说,动作选择器是可以帮忙将网络的输出转换成具体动作值的对象。最常见的场景包括:
▪  argmax:常被用在Q值方法中,也就是当用神经网络预测一组动作的Q值并需要一个Q(s, a)最大的动作时。
▪  基于策略的:网络的输出是概率分布(以logits的形式或归一化分布的形式),并且动作需要从这个分布采样。第4章已提到过这种情况,也就是讨论交叉熵方法的时候。
动作选择器会被Agent使用,基本上不需要自定义(当然你有权利自定义)。库中提供了几个具体类:
▪  ArgmaxActionSelector:对传入张量的第二维执行argmax。(它假设参数是一个矩阵,并且它的第一维为批维度。)
▪  ProbabilityActionSeletor:从离散动作集的概率分布中采样。
▪  EpsilonGreedyActionSelector:具有epsilon参数,用来指定选择随机动作的概率。

**在实际问题中**,**通常需要定制智能体**。原因包括:
▪  NN的架构很酷炫,它的动作空间可以同时包含连续和离散值,它可以包含多种观察(例如,文本和像素)或类似的东西。
▪  你可能想要使用非标准的探索策略,例如奥恩斯坦–乌伦贝克过程(在连续控制领域非常流行的探索策略)。
▪  你有POMDP环境,智能体的动作不是完全根据观察来决定的,而会适当包含一些智能体内部的状态(奥恩斯坦–乌伦贝克探索也是如此)。

**经验源类通过使用智能体实例和环境实例提供轨迹的每一步数据**。这些类的功能包括:
▪  支持多个环境同时交互。通过让智能体一次处理一批观察来高效地利用GPU。
▪  预处理轨迹,并以对之后训练有利的方式来表示。例如,实现一个带累积奖励的子轨迹rollout的方法。当我们不关心子轨迹的各个中间步时,可以将其删除,这样的预处理对DQN和n步DQN都很方便。它节约了内存并减少了需要编写的代码量。
▪  支持来自OpenAI Universe的向量化环境。我们会在第17章Web自动化和MiniWoB环境中介绍它。

**系统提供了三个类**:
▪  ExperienceSource:使用智能体和一组环境,它可以产生带所有中间步的n步子轨迹。
▪  ExperienceSourceFirstLast:和ExperienceSource一样,只不过将完整的子轨迹(带所有中间步)替换成了只带第一和最后一步的子轨迹,同时会将中间的奖励累积起来。这样可以节约很多内存,在n步DQN或advantage actor-critic(A2C)rollout中就会用到。
▪  ExperienceSourceRollouts:遵循Mnih关于Atari游戏的论文中描述的asynchronous advantage actor-critic(A3C)rollout方案(参见第12章)。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习6-高级强化学习库 的相关文章

随机推荐

  • 最好的6个Go语言Web框架

    原文 Top 6 web frameworks for Go as of 2017 作者 Edward Marinescu 译者 roy 译者注 本文介绍截至目前 2017年 最好的6个Go语言Web框架 以下为译文 GO 语言爱好者的最佳
  • 华为OD机试 - 恢复数字序列(Java)

    题目描述 对于一个连续正整数组成的序列 可以将其拼接成一个字符串 再将字符串里的部分字符打乱顺序 如序列8 9 10 11 12 拼接成的字符串为89101112 打乱一部分字符后得到90811211 原来的正整数10就被拆成了0和1 现给
  • 【JAVA】log4j.xml详解

    Appender Appender 日志输出器 配置日志的输出级别 输出位置等 包括以下几类 ConsoleAppender 日志输出到控制台 FileAppender 输出到文件 RollingFileAppender 输出到文件 文件达
  • react:重置清除数据的方法

    描述如下 1 页面进来没有数据 只有输入条件的情况下 才能查询数据 2 查询条件有重置功能 问题 重置功能如何操作呢 数据是从 this props 中取到的 在重置的时候 1 方法一 不调接口 this props xxx 或者 this
  • 读文件 —— WEB前端读取本地文件内容哪些事(前台解析txt文件)…… – 杰儿__er 的博客 – CSDN博客...

    文章目录 隐藏 读文件 WEB前端读取本地文件内容哪些事 前台解析txt文件 参考链接 https blog csdn net pl1612127 article details 77862174可供参考的链接 https zhidao b
  • android dialog对话框,Android Dialog对话框详解

    废话不多说了 直接给大家贴代码了 布局文件xml xmlns tools http schemas android com tools android layout width match parent android layout hei
  • Windows下使用命令行登陆、操作MYSQL5.7数据库

    一 运行数据库 1 启动服务 net start mysql 2 连接数据库 mysql h IP地址 u 数据库 p mysql u 数据库 p 如 mysql u root p mysql h127 0 0 1 u root p 二 查
  • IntelliJ IDEA提示Unable to resolve table ‘表名‘

    一 说明 我几乎看了CSDN所有大神的解答 尝试之后都无效 通过自己研究 终于解决此问题 遂在此记录 二 我的解决方案 在正常使用IntelliJ IDEA连接到数据库后 SQL语句提示Unable to resolve table 表名
  • 两个数字相加的代码

    内容 include
  • mac os x 使用外接摄像头

    参考 http bbs feng com read htm tid 2745586 html http www jb51 net os MAC 470090 html 1 打开macbook 自带程序Photo Booth 2 在左上工具条
  • Python3 CGI 编程

    什么是 CGI CGI 目前由 NCSA 维护 NCSA 定义 CGI 如下 CGI Common Gateway Interface 通用网关接口 它是一段程序 运行在服务器上如 HTTP服务器 提供同客户端 HTML 页面的接口 网页浏
  • Mysql子查询和联合(UNION)查询详解

    原文 http www 111cn net database mysql 47438 htm 在mysql中UNION查询是可以联合多个表 union只是mysql中联合查询的一个小点了 下面我来给大家介绍各种mysql中联合查询的语句 大
  • PS对白色过曝的区域建立选区,可先调整图像亮度对比度

    PS对白色过曝的区域建立选区 因为白色过薄 看不清边缘 解决方案 调整亮度和对比度 1 再选择边缘 就很方便了
  • 全新iPhone首发,结果“华为发布会”冲上热搜第一

    就离谱 苹果发iPhone 15 结果发着发着 华为发布会 冲上了热搜第一 哪怕是iPhone 15全系告别11年闪电接口改用USB C 经典静音键从Pro系列消失 这些库克 违背祖宗的决定 都没抢到更多热度 网友们第一时间倒是吐槽吐出了花
  • 提示“Web打印服务CLodop未安装启动”的各种原因和解决方法

    旧版提示 CLodop云打印服务 localhost本地 未安装启动 新版提示 Web打印服务CLodop未安装启动 点击这里下载执行安装 若此前已安装过 可点这里直接再次启动 成功后请刷新本页面 可能原因及现象及解决方法 原因1 没安装
  • 解决Moment格式化时间出现时区差的问题

    Moment格式化时间默认格式为当地时区的时间 如果格式化的结果与当地时间有差值 一般原因是 要格式化的时间带有时间标志 如 UTC GMT等 经过Moment格式化后 会变成时间标志所表示的时区的时间 此时 只需要改变时间偏移量即可 使用
  • iOS音视频—FFmepg应用-Android平台使用(NDK项目)

    iOS音视频 目录 新建NDK项目 1 编译 so动态库 2 新建在Android平台下的NDK项目 Android本身不支持C C 开发 NDK底层开发 需要我们进行配置 NDK 在Android平台下Google提供的支持C C 开发的
  • 测试学Python白话版(一)

    前言 测试人员转开发 Python是一个特别好的入门级编程语言 Python学起来相对容易 能做的事情也比较多 有了一定的基础之后 再学习其他语言也更加轻松 网上关于Python的教程很对 如果有时间完全可以自学 因为好多测试人员的基础较差
  • CCF-CSP 26次 第三题【角色授权】

    计算机软件能力认证考试系统 20分 include
  • 深度学习6-高级强化学习库

    高级强化学习库 使用高级库的动机 不要从头开始重新实现一切 PTAN库以及最重要的部分 将通过代码示例进行说明 针对CartPole上的DQN 使用PTAN库来实现 可以考虑的其他RL库 为什么使用强化学习库 RL十分灵活 并且很多现实生活