openssl 添加自定义算法_GitHub:用PyTorch实现17种深度强化学习算法

7b7c497e6b9206ecf65406d48ddd6c8a.png
【新智元导读】深度强化学习已经在许多领域取得了瞩目的成就,并且仍是各大领域受热捧的方向之一。本文推荐一个用 PyTorch 实现了 17 种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度 RL 算法。

深度强化学习已经在许多领域取得了瞩目的成就,并且仍是各大领域受热捧的方向之一。本文推荐一个包含了 17 种深度强化学习算法实现的 PyTorch 代码库。

5c10a21621a0f50bdcde44ea9aea2b7f.png

已实现的算法包括:

  1. Deep Q Learning (DQN) (Mnih et al. 2013)
  2. DQN with Fixed Q Targets (Mnih et al. 2013)
  3. Double DQN (DDQN) (Hado van Hasselt et al. 2015)
  4. DDQN with Prioritised Experience Replay (Schaul et al. 2016)
  5. Dueling DDQN (Wang et al. 2016)
  6. REINFORCE (Williams et al. 1992)
  7. Deep Deterministic Policy Gradients (DDPG) (Lillicrap et al. 2016 )
  8. Twin Delayed Deep Deterministic Policy Gradients (TD3) (Fujimoto et al. 2018)
  9. Soft Actor-Critic (SAC & SAC-Discrete) (Haarnoja et al. 2018)
  10. Asynchronous Advantage Actor Critic (A3C) (Mnih et al. 2016)
  11. Syncrhonous Advantage Actor Critic (A2C)
  12. Proximal Policy Optimisation (PPO) (Schulman et al. 2017)
  13. DQN with Hindsight Experience Replay (DQN-HER) (Andrychowicz et al. 2018)
  14. DDPG with Hindsight Experience Replay (DDPG-HER) (Andrychowicz et al. 2018 )
  15. Hierarchical-DQN (h-DQN) (Kulkarni et al. 2016)
  16. Stochastic NNs for Hierarchical Reinforcement Learning (SNN-HRL) (Florensa et al. 2017)
  17. Diversity Is All You Need (DIAYN) (Eyensbach et al. 2018)

所有的实现都能够快速解决Cart Pole(离散动作)、Mountain Car (连续动作)、Bit Flipping(动态目标的离散动作) 或Fetch Reach(动态目标的连续动作) 等任务。本 repo 还会添加更多的分层 RL 算法。

已实现的环境:

  1. Bit Flipping 游戏 (Andrychowicz et al. 2018)
  2. Four Rooms 游戏 (Sutton et al. 1998)
  3. Long Corridor 游戏 (Kulkarni et al. 2016)
  4. Ant-{Maze, Push, Fall} (Nachum et al. 2018)

结果

1. Cart Pole 和 Mountain Car

下面展示了各种 RL 算法成功学习离散动作游戏 Cart Pole 或连续动作游戏 Mountain Car 的结果。使用 3 个随机种子运行算法的平均结果如下图所示,阴影区域表示正负 1 标准差。使用的超参数可以在results/cart_pol .py和results/Mountain_Car.py文件中找到。

6586613f777c54482c9a84791e13434e.png

2. 事后经验重演 (HER) 实验

下面展示了 DQN 和 DDPG 在 Bit Flipping (14 bits) 和 Fetch Reach 环境中的表现,这些环境在论文 Hindsight Experience Replay 和 Multi-Goal Reinforcement Learning 中有详细描述。这些结果复现了论文中发现的结果,并展示了添加 HER 可以如何让一个 agent 解决它原本无法解决的问题。请注意,在每对 agents 中都使用了相同的超参数,因此它们之间的唯一区别是是否使用了 hindsight。

fb63df687f02f6089dadc5fb30778b91.png

3. 分层强化学习实验

下图左边的结果显示了在 Long Corridor 环境中 DQN 和 Kulkarni 等人在 2016 年提出的 hierarchy -DQN 算法的性能。该环境要求 agent 在返回之前走到走廊的尽头,以便获得更大的奖励。这种延迟满足和状态的混叠使得它在某种程度上是 DQN 不可能学习的游戏,但是如果我们引入一个元控制器 (如 h-DQN) 来指导低层控制器如何行动,就能够取得更大的进展。这与论文中发现的结果一致。

下图右边的结果显示了 Florensa 等人 2017 年提出的 DDQN 算法和用于分层强化学习的随机神经网络 (SNN-HRL) 的性能。使用 DDQN 作为比较,因为 SSN-HRL 的实现使用了其中的 2 种 DDQN 算法。

ef050c59821c6cd0045ef9c30e9c5356.png

用法

存储库的高级结构是:

├── agents                    ├── actor_critic_agents   ├── DQN_agents         ├── policy_gradient_agents└── stochastic_policy_search_agents 
├── environments   
├── results             └── data_and_graphs        
├── tests
├── utilities             └── data structures

i) 观看智能体学习上述游戏

观看所有不同的智能体学习 Cart Pole,请遵循以下步骤:

git clone https://github.com/p-christ/Deep_RL_Implementations.git
cd Deep_RL_Implementationsconda create --name myenvname
y
conda activate myenvnamepip3 install -r requirements.txtpython Results/Cart_Pole.py

对于其他游戏,将最后一行更改为结果文件夹中的其他文件就行。

ii) 训练智能体实现另一种游戏

Open AI gym 上的环境都是有效的,你所需要做的就是更改config.environment字段。

如果你创建了一个继承自 gym.Env 的单独类,那么还可以使用自己的自定义游戏。请参阅Environments/Four_Rooms_Environment.py自定义环境的示例,然后查看脚本Results/Four_Rooms.py了解如何让 agents 运行环境。

GitHub 地址:

p-christ/Deep-Reinforcement-Learning-Algorithms-with-PyTorch​github.com
b0b04147c0853d1885b9f94f85f88d35.png

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

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

相关文章

node linux脚本,用Shell脚本快速搭建Ubuntu下的Nodejs开发环境

nodejs的确是很火,以前倒腾过,但是从来没有认真记录下什么。在ubuntu下搭建它的开发环境尝尝鲜,有一个捷径,它能让系统自动帮你安装所需要的东西,我们生成一段shell脚本,让它来完成以下工作:安装…

sync是同步还是非同步_音视频是怎么保持同步的?(四)

今天我们来继续讲音视频是怎么保持同步的。常用同步策略前面已经说了,实现音视频同步,在播放时,需要进行选定一个重要参考时钟,读取帧上的时间戳,同时企业根据的参考时钟来动态管理调节播放。它是目前已知的是&#xf…

openssl 测试加密卡_OpenSSL自带的aes_128_ecb加密函数——密文长度测试

OpenSSL自带的aes_128_ecb加密函数——密文长度测试发表于2017年11月29日 阅读人数(3608)近来要用到对称加密,就是使用了openssl的库给文件加密,选择的128位的分块加密,对称加密有分块加密和流加密两种。在实验中要考虑文件的长度所以关注到了…

linux命令行安装谷歌浏览器,Linux(ubuntu) 三行代码搞定安装谷歌浏览器

.NET微信公众号开发-4.0公众号消息处理一.前言 微信公众平台的消息处理还是比较完善的,有最基本的文本消息,到图文消息,到图片消息,语音消息,视频消息,音乐消息其基本原理都是一样的,只不过所post的xml数据有所差别,在处理消息之前,我们 ...2、面向对象以…

电脑下面的任务栏怎么取消隐藏_电脑工具栏怎么调到下面

任务栏的隐藏与显示很简单,有时我们在需要时可以灵活的将其隐藏,还原,下面为大家介绍一下电脑工具栏怎么调到下面的方法。电脑工具栏怎么调到下面一、直接使用鼠标拖拽的方式移动“任务栏”用鼠标左键按住任务栏的空白区域不放,拖…

uiswitch样式_Swift - 表格UITableView的plain、grouped两种样式详解(附分组头悬停)

在表格 tableview初始化的时候我们可以指定需要使用的 UITableViewStyle样式,可用的样式一共有两种:.plain和 .grouped。下面分别对它们做介绍。一、plain模式1,默认样式在 plain模式下,如果 tableview有多个 section(分区、分组)…

全志线刷工具如何刷linux,全志 Allwinner V3S 开发环境搭建 (二)安装必要工具

1、libncurses5-devsudo apt-get install libncurses5-devmake menuconfig 配置工程时用到2、GITsudo apt-get install git下载github仓库时使用3、arm-linux-gnueabihf编译工具链下载:wget https://releases.linaro.org/components/toolchain/binaries/latest/arm-…

excel怎么启用宏_IT技巧分享51: 解决打开Excel文件提示发现不可读取的内容

在使用过程中难免会碰到一些棘手的问题,比如:Excel打不开,提示为不可读取内容,当遇到这些问题我们改怎么处理呢?经百度一下发现主要原因是因为引用了外部文档数据、指向了外部文档中的宏等等。造成故障的原因&#xff…

python输出矩阵的转置_Python 矩阵转置的几种方法小结

我就废话不多说了,直接上代码吧!#Python的matrix转置matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]]def printmatrix(m):for ele in m:for i in ele:print("%2d" %i,end " ")print()#1、利用元祖的特性进行转置def transformMatrix(m…

linux加一个2t硬盘吗,在linux下新增一块硬盘的操作。(包含大于2T的硬盘在linux下挂载操作)...

扩展后执行fdisk -l查看是否成功[rootlocalhost ~ ]# fdisk - lDisk / dev / sda: 16.1 GB, 16106127360 bytes255 heads, 63 sectors / track, 1958 cylindersUnits cylinders of 16065 * 512 8225280 bytesDevice Boot Start End …

JQ 全选后获取选中的值_JQ完全学习版本

获得input标签中name属性名字包含a 的标签对象书写。Function(“input[name * a]”)$("input:disabled")这个选择器的作用Input下隐藏的对象$(":input")和$("input");这两个选择器的区别前者是表单的内容,后者是所有input标签获得一个…

audio h5 src 变了之后_我在叩丁狼学H5

#我在叩丁狼学H5#最近接触到了一些前端框架,像Vue.js,React,发现小程序的框架体系跟它们很像。它们都推崇模块化,组件化,数据与元素绑定。这样没有繁琐的DOM操作,组件之间完全分离,样式和逻辑全…

linux的samb配置文件,Linux系统如何配置samba文件服务器?

安装samba服务软件包.1.确认当前系统中至少安装有samba、samba-client、samba-common这三个软件包,命令如下:[rootlinux-01~]#rpm-qa|grepsambasamba-common-3.0.33-3.7.el5samba-3.0.33-3.7.el5samba-client-3.0.33-3.7.el52.有时在安装samba包时可能会出现下面的错误提示:[ro…

依据imu姿态角计算z轴倾角_1. 姿态的表示方法

刚体的姿态(attitude)有很多种表示方法,关于这个话题有一篇十分出名的综述[1],也是这篇文章的主要资料来源。这篇文章从二维旋转开始,会讨论旋转矢量、旋转矩阵、四元数、欧拉角等旋转的表示方法。在开始讨论前&#x…

c# mongodb or查询_C# MongoDB 查询方法

public List GetCollectionByBillCode(string BillCode){List list new List();// 根据集合名称获取集合string collectionFullName ConfigurationManager.AppSettings["collectionName"];var collection _database.GetCollection(collectionFullName);var quert …

linux nacos启动_Nacos集群安装配置

上篇文章讲到Nacos从v1.3.2开始,windows系统启动脚本默认改成了集群模式(也就是不带参数"-m standalone"),那么如果双击startup.cmd启动就会失败。这篇文章我们就来讲讲Nacos集群安装。需要安装MySQL安装MySql这里就不讲了,大家找度…

linux 动态库静态库,Linux下的动态库与静态库

2019-09-25关键字:生成库、静态库引用、动态库引用在 C 开发中,“库”是一个经常听到的名词。所谓的库其实就是一个二进制文件。这个二进制文件的内容是可被其它C程序调用执行的函数。换句话说,库就是一组C代码的打包形式而已,打包…

西门子plm_西门子的Teamcenter、TIA Portal、NX MCD是如何结合在一起的

写在面前大家好,我是小智,智能制造之家号主~我一直PLM、MESMOM、SCADA、PLC等提倡融合(理念不一定对哈,大家理性看待,不必喷我),希望每个领域的朋友,在自己努力之余,抬头看看窗外的世界&#xf…

状态机 python_Python状态机设计

我真的不明白这个问题。设计模式非常清晰。请参阅Design Patterns book。class SuperState( object ):def someStatefulMethod( self ):raise NotImplementedError()def transitionRule( self, input ):raise NotImplementedError()class SomeState( SuperState ):def someStat…

linux games账号,linux for games

linux for games最近对linux 游戏发行版系统产生了兴趣,下面简要记录一些链接:https://itsfoss.com/linux-gaming-distributions/ (9 款游戏系统)https://fedoraproject.org/wiki/Games_Lab (fedora 游戏发行版 wiki)https://thishosting.rocks/best-lin…