当前位置: 首页 > 编程日记 > 正文

DeepMind悄咪咪开源三大新框架,深度强化学习落地希望再现

640?wx_fmt=jpeg

作者 | Jesus Rodriguez
译者 | 夕颜
出品 | AI科技大本营(ID:rgznai100)
【导读】近几年,深度强化学习(DRL)一直是人工智能取得最大突破的核心。尽管取得了很多进展,但由于缺乏工具和库,DRL 方法仍难以应用于主流的解决方案。因此,DRL 主要以研究形式存在,并未在现实世界的机器学习解决方案中得到大量应用。解决这个问题需要更好的工具和框架。而在当前的 AI 领域,DeepMind 在推动 DRL 研发方面做了大量工作,包括构建了许多专有工具和框架,以大规模地简化 DRL agent 训练、实验和管理。

最近,DeepMind 又默默开源了三种 DRL 框架:OpenSpiel、SpriteWorld 和 bsuite,用于简化 DRL 应用。
作为一种新兴的深度学习技术,采用 DRL 面临着简单实现算法之外的诸多挑战,如训练数据集、环境、监测优化工具和精心设计的实验,以简化 DRL 技术的采用。考虑到机制与大多数传统的机器学习方法不同(DRL agent 尝试在给定环境中通过反复试验来完成任务),应用 DRL 更是困难。在这种情况下,环境和实验的稳健性在 DRL agent 开发的知识中起着最基本的作用。
下面我们开门见山,来看看这三种框架到底有什么特别之处,以及如何使用。


OpenSpiel
GitHub:https://github.com/deepmind/open_spiel
游戏在 DRL agent的 训练中发挥着重要作用。与其他数据集一样,游戏本质上基于试验和奖励机制,可用于训练 DRL agent。但是,正如我们所想,游戏环境的复杂度还远远不够。
OpenSpiel 是一系列环境和算法,用于研究一般强化学习和游戏中的搜索/规划。OpenSpiel 的目的是通过与一般游戏类似的方式促进跨多种不同游戏类型的一般多智能体强化学习,但是重点是强调学习而不是竞争形式。当前版本的 OpenSpiel 包含 20 多种游戏的不同类型(完美信息、同步移动、不完美信息、网格世界游戏、博弈游戏和某些普通形式/矩阵游戏)实现。
核心的 OpenSpiel 实现基于 C ++ 和 Python 绑定,这有助于在不同的深度学习框架中采用。该框架包含一系列游戏,允许 DRL agent 学会合作和竞争行为。同时,OpenSpiel 还包括搜索、优化和单一 agent 等多种 DRL 算法组合。
安装
摘要
  1. 安装系统包并下载一些依赖项。只需要运行一次。
  1. 安装 Python 依赖项,例如在 Python 3 中使用 virtualenv:
vvirtualenv -p python3 venv	
source venv/bin/activate	
pip3 install -r requirements.txt
使用 deactivate 退出虚拟环境。
  1. 构建并运行测试以检查一切是否正常:
  1. 添加
# For the python modules in open_spiel.	
export PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel>	
# For the Python bindings of Pyspiel	
export PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel>/build/python
到 ./venv/bin/activate 或你的 〜/ .bashrc ,以便从任何地方导入 OpenSpiel。
为了确保 OpenSpiel 在默认配置上运行,我们使用 python3 命令而不是 python(现在 Linux 版本上仍默认为 Python 2)。
开发者指南
代码结构
一般来说,open_spiel 下的目录是 C ++(integration_tests 和 python 除外)。open_spiel / python 中提供了类似的结构,包含 Python 等效代码。
一些顶级目录是特殊的:
  • open_spiel / integration_tests:所有游戏的通用(python)测试。
  • open_spiel / tests:C ++ 常用测试实用程序。
  • open_spiel / scripts:用于开发(构建、运行测试等)的脚本。

例如,支持 C ++:
  • open_spiel /:包含游戏抽象 C ++ API。
  • open_spiel / games:包含 games ++实现。
  • open_spiel / algorithms:在 OpenSpiel 中实现的 C ++ 算法。
  • open_spiel / examples:C ++ 示例。
  • open_spiel / tests:C ++ 常用测试实用程序。

支持 Python:
  • open_spiel / python / examples:Python 示例。
  • open_spiel / python / algorithms /:Python算法。

添加游戏
  1. 这里仅介绍添加新游戏最简单、最快捷的方式。首先要了解通用 API(参见 spiel.h)。
从 games/中选择要复制的游戏。推荐游戏:Tic-Tac-Toe 和 Breakthrough,因为它们包含完美信息,没有偶然事件,Backgammon 或 Pig 用于完美的信息游戏与偶然事件,Goofspiel 和Oshi-Zumo 用于同步移动游戏,Leduc 扑克和 Liar 骰子用于不完美信息游戏。以下步骤以 Tic-Tac-Toe 为例讲解。
  1. 将标头和源:tic_tac_toe.h,tic_tac_toe.cc和tic_tac_toe_test.cc 复制到 new_game.h,new_game.cc 和 new_game_test.cc。
  2. 配置 CMake:
    • 将新游戏的源文件添加到 games / CMakeLists.txt。
    • 将新游戏的测试目标添加到 games / CMakeLists.txt。
  1. 更新样板C ++代码:
    • 在 new_game.h 中,重命名文件顶部和底部的标题保护。
    • 在新文件中,将最内层的命名空间从 tic_tac_toe 重命名为 new_game。
    • 在新文件中,将 TicTacToeGame 和 TicTacToeState 重命名为 NewGameGame 和 NewGameState。
    • 在 new_game.cc 的顶部,将短名称更改为 new_game 并包含新游戏的标题。
  1. 更新 Python 集成测试:
    • 将简短名称添加到 integration_tests / api_test.py 中的已排除游戏列表中。
    • 在 python / tests / pyspiel_test.py 中将短名称添加到预期游戏列表中。
  1. 现在,你有了一个不同名称的 Tic-Tac-Toe 复制游戏。测试运行,并可以通过重建和运行示例 examples / example --game = new_game 来验证它。
  2. 现在,更改 NewGameGame 和 NewGameState 中函数的实现以表示新游戏的逻辑。你复制的游戏中的大多数 API 函数都应该与原来的游戏有区分度。如果没有,那么重合的每个API 函数都将在 spiel.h 中的超类中被完整记录。
  3. 完成后,重建并重新运行测试以确保一切都顺利(包括新游戏测试!)。
  4. 更新 Python 集成测试:
    • 运行 ./scripts/generate_new_playthrough.sh new_game 生成一些随机游戏,用于集成测试以防止任何回归。open_spiel / integration_tests / playthrough_test.py 将自动加载游戏并将它们与新生成的游戏进行比较。


SpriteWorld
GitHub:https://github.com/deepmind/spriteworld
几个月前,DeepMind 发表了一篇研究论文,介绍了一种好奇的基于对象的 seaRch Agent(COBRA),它使用强化学习来识别给定环境中的对象。COBRA agent 使用一系列二维游戏进行训练,其中数字可以自由移动。用于训练 COBRA 的环境,正是 DeepMind 最近开源的 SpriteWorld。
Spriteworld 是一个基于 python 的强化学习环境,由一个可以自由移动的形状简单的二维竞技场组成。更具体地说,SpriteWorld 是一个二维方形竞技场,周围可随机放置数量可变的彩色精灵,但不会发生碰撞。SpriteWorld 环境基于一系列关键特征:
  • 多目标的竞技场反映了现实世界的组合性,杂乱的物体场景可以共享特征,还可以独立移动。此外,它还可以测试与任务无关的特征/对象的稳健性和组合泛化。
  • 连续点击推动动作空间的结构反映了世界空间和运动的结构。它还允许 agent 在任何方向上移动任何可见对象。
  • 不以任何特殊方式提供对象的概念(例如,没有动作空间的特定于对象的组件),agent 也完全可以发现。

SpriteWorld 针对三个主要任务训练每个 DRL agent:
  • 目标寻找。agent 必须将一组目标对象(可通过某些功能识别,例如“绿色”)带到屏幕上的隐藏位置,忽略干扰对象(例如非绿色的对象)
  • 排序。agent 必须根据对象的颜色将每个对象带到目标位置。
  • 聚类。agent 必须根据颜色将对象排列在群集中。

安装
可以使用 pip 安装 Spriteworld:
或者通过 Github:
或者通过签出存储库的本地副本并运行:
git clone https://github.com/deepmind/spriteworld.git	
pip install spriteworld /
最后一个选项是下载测试,演示 UI 和示例运行循环。
开始
前提
Spriteworld 依赖于numpy,six,absl,PIL,matplotlib,sklearn 和 dm_env。
演示
安装完成后,您可以通过 run_demo.py 熟悉 Spriteworld:
创建自己的任务
在 spriteworld / tasks.py 中有三个任务:FindGoalPosition、Clustering 和 MetaAggregated。可以以多种方式进行配置和组合,以创建各种任务,包括 COBRA 论文中使用的所有任务。值得注意的是,可以参阅 spriteworld / configs / cobra / sorting.py,了解目标查找任务的组合。
你还可以创建新任务,重新使用这些构建块,或创建全新类型的任务(只需确保从 spriteworld / tasks.AbstractTask 中继承)。
运行agent
有关如何在 Spriteworld 任务上运行随机 agent 的示例,请参阅 example_run_loop.py。如果你更喜欢 OpenAI Gym 环境界面,请参阅 spriteworld / gym_wrapper.py。

bsuite
GitHub:https://github.com/deepmind/bsuite
640?wx_fmt=png
强化学习行为套件(bsuite,The Behaviour Suite for Reinforcement Learning )的目标是成为强化学习领域的 MNIST。具体来说,bsuite 是一系列用来突出 agent 可扩展性关键点的实验。这些实验易于测试和迭代,对基本问题,例如“探索”或“记忆”进行试验。具体来说,bsuite 有两个主要目标:
  • 收集清晰、信息量大且可扩展的问题,以捕获高效和通用学习算法设计中的关键问题。
  • 通过在这些共享基准上的表现来研究 agent 行为。

bsuite 当前的实现可以在不同环境中自动执行实验,并收集可以简化 DRL agent 训练的相应指标。
如果你是一个 bsuite 新手,可以开始使用 colab 教程。这款 Jupyter 笔记本电脑配有免费的云服务器,因此无需任何安装即可立即开始编码。在此之后,你可以按照以下说明在本地计算机上运行 bsuite。
安装
我们已测试了 bsuiteon Python 3.6,且无维护 Python 2.7 版本的计划。
安装 bsuite,请运行该命令
或克隆该库并运行
想要能够编辑代码的同时安装软件包(请参阅下面的基线),请运行
要同时安装baselines//示例的依赖项(不包括Gym和Dopamine示例),请安装:
加载环境
环境由 bsuite_id 字符串指定,例如“deep_sea / 7”。此字符串指定要使用的实验和(索引)环境设置。
import bsuite	
env = bsuite.load_from_id('catch/0')
可以通过以下方式以编程方式访问运行所有实验所需的 bsuite_ids 序列:
from bsuite import sweep	
sweep.SWEEP
该模块还包括每个实验名称对应的大写常量单 bsuite_ids,例如:
sweep.DEEP_SEA	
sweep.DISCOUNTING_CHAIN
bsuite报告
你可以使用 bsuite 生成一个自动的 1 页附录,该附录总结了强化学习算法的核心功能。本附录与大多数主要的机器学习会议格式兼容。例如输出运行,
由于篇幅有限,无法一一详细介绍每个框架的具体使用方法,感兴趣的朋友们可以在上文 GitHub 链接中查询详情情况和使用指南,以检验OpenSpiel、SpriteWorld 和 bsuite 的真正实现效果,并欢迎在留言中与我们交流上手体验。
最后,相信随着越来越多的深度强化学习工具和框架的涌现,把这项新兴技术应用于现实世界的进程将大大加快,进一步推动 AI 研究和落地的进展。
原文链接:
https://towardsdatascience.com/deepmind-quietly-open-sourced-three-new-impressive-reinforcement-learning-frameworks-f99443910b16

(*本文为AI科技大本营整理文章,转载信联系 1092722531)


精彩推荐



【结果提交倒计时】PV,UV流量预测算法大赛,结果提交截止时间为9月20日,还没有提交的小伙伴抓紧时间了~~9月25日公布初赛成绩。最新排行榜请扫码查看。


推荐阅读

640?wx_fmt=png

你点的每个“在看”,我都认真当成了喜欢

相关文章:

seq2seq

链接&#xff1a; https://blog.csdn.net/wuzqchom/article/details/75792501 转载于:https://www.cnblogs.com/yttas/p/10631442.html

vip能ping通,但80不通的解决方法

最近遇到一个很奇怪的问题&#xff0c;在做两台服务器负载均衡的时候&#xff0c;vip已经添加了&#xff0c;而且能ping通了&#xff0c;但是页面访问不了&#xff0c;也就是说80端口一直不通&#xff0c;ipvsadm -lnc查看链接状态全部是SYN_RECV。网上找了好长时间&#xff0c…

OpenCV中imread/imwrite与imdecode/imencode的异同

OpenCV中的cv::imdecode函数是从指定的内存缓存中读一幅图像&#xff0c;而cv::imencode是将一幅图像写进内存缓存中。cv::imread是从指定文件载入一幅图像&#xff0c;cv::imwrite是保存一幅图像到指定的文件中。cv::imread和cv::imdecode内部都是通过ImageDecoder类来进行图像…

奖金+招聘绿色通道,这一届算法大赛关注下?

大赛背景伴随着5G、物联网与大数据形成的后互联网格局的逐步形成&#xff0c;日益多样化的用户触点、庞杂的行为数据和沉重的业务体量也给我们的数据资产管理带来了不容忽视的挑战。为了建立更加精准的数据挖掘形式和更加智能的机器学习算法&#xff0c;对不断生成的用户行为事…

Linux文件属性

文件属性和权限 [rootdaf root]# ls -al total 64 drwxr-x--- 4 root root 4096 Feb 14 22:02 . drwxr-xr-x 23 root root 4096 Feb 16 13:35 .. -rw-r--r-- 1 root root 1210 Feb 10 06:03 anaconda-ks.cfg -rw------- 1…

Caffe源码中layer文件分析

Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件&#xff0c;这里介绍下include/caffe/layer.hpp文件的内容&#xff1a;1. include文件&#xff1a;(1)、<caffe/blob.hpp>&#xff1a;此文件的介绍可以参考&#xff1a;http://b…

全球首个软硬件推理平台 :NVDLA编译器正式开源

作者 | 神经小姐姐来源 | HyperAI超神经&#xff08;ID:HyperAI&#xff09;【导读】为深度学习设计新的定制硬件加速器&#xff0c;是目前的一个趋势&#xff0c;但用一种新的设计&#xff0c;实现最先进的性能和效率却具有挑战性。近日&#xff0c;英伟达开源了软硬件推理平台…

【leetcode】1018. Binary Prefix Divisible By 5

题目如下&#xff1a; Given an array A of 0s and 1s, consider N_i: the i-th subarray from A[0] to A[i] interpreted as a binary number (from most-significant-bit to least-significant-bit.) Return a list of booleans answer, where answer[i]is true if and only …

php中magic_quotes_gpc对unserialize的影响

昨天朋友让我帮他解决下他网站的购物车程序的问题&#xff0c;程序用的是PHPCMS&#xff0c;换空间前是好的&#xff08;刚换的空间&#xff09;&#xff0c;具体问题是提示成功加入购物车后跳转到购物车页面&#xff0c;购物车里为空。 我看了下代码&#xff0c;大致的原理就是…

值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(上)

作者 | 黄浴转载自知乎专栏自动驾驶的挑战和发展【导读】上周&#xff0c;我们在激光雷达&#xff0c;马斯克看不上&#xff0c;却又无可替代&#xff1f;》一文中对自动驾驶中广泛使用的激光雷达进行了简单的科普&#xff0c;今天&#xff0c;这篇文章将各大公司和机构基于激光…

Caffe源码中Pooling Layer文件分析

Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件&#xff0c;这里介绍下include/caffe/vision_layers文件中PoolingLayer类&#xff0c;在最新版caffe中&#xff0c;PoolingLayer类被单独放在了include/caffe/layers/pooling_layer.hpp文件中…

手持终端以物联网的模式

近年来&#xff0c;物联宇手持终端以物联网的模式&#xff0c;开启了信息化的管理模式&#xff0c;迸发了新的自我提升和业务新商机。手持终端是一款智能的电子设备&#xff0c;它的核心功能为用户速带来业务效率的提升&#xff0c;如快递行业&#xff0c;每天的工作量需求大&a…

Linux系统基础-管理之用户、权限管理

Linux用户、权限管理一、如何实现"用户管理"1.什么是用户 "User" : 是一个使用者获取系统资源的凭证&#xff0c;是权限的结合&#xff0c;为了识别界定每一个用户所能访问的资源及其服务的。只是一种凭证。会有一个表示数字&#xff0c;计算机会首…

Ubuntu14.04 LTS中安装Ruby 2.4源码操作步骤

(1)、查看是否已安装ruby&#xff0c;执行命令&#xff0c;如下图&#xff0c;可见机子上还没有安装ruby&#xff0c;即使通过apt-get install命令安装也只能安装1.8版本&#xff1b;(2)、从 http://www.ruby-lang.org/en/downloads/ 下载最新稳定版2.4即ruby-2.4.0.tar.gz&a…

图森未来完成2.15亿美元D轮融资,将拓展无人驾驶运输服务

AI科技大本营消息&#xff0c;9月17日&#xff0c;图森未来宣布获得1.2亿美元的D2轮投资&#xff0c;并完成总额为2.15亿美元的D轮融资。D2轮的投资方除了此前已宣布的UPS外&#xff0c;还包括新的投资方鼎晖资本&#xff0c;以及一级供应商万都&#xff08;Mando Corporation&…

中国互联网公司开源项目调研报告

近年来&#xff0c;开源技术得到越来越多的重视&#xff0c;微软收购GitHub、IBM收购红帽&#xff0c;都表明了开源的价值。国内公司也越来越多的参与开源&#xff0c;加入开源基金会/贡献开源项目。但是&#xff0c;它们到底做得如何呢&#xff1f;为此InfoQ统计了国内在GitHu…

ReSharper 配置及用法

1:安装后&#xff0c;Resharper会用他自己的英文智能提示&#xff0c;替换掉 vs2010的智能提示&#xff0c;所以我们要换回到vs2010的智能提示 2:快捷键。是使用vs2010的快捷键还是使用 Resharper的快捷键呢&#xff1f;我是使用re的快捷键 3: Resharper安装后&#xff0c;会做…

Ubuntu14.04 LTS中升级gcc/g++版本到4.9.4的操作步骤

Ubuntu14.04 LTS中默认的gcc/g版本为4.8.4&#xff0c;如下图&#xff0c;在C11中增加了对正则表达式的支持&#xff0c;但是好像到gcc/g 4.9.2版本才会对正则表达式能很好的支持&#xff0c;这里介绍下Ubuntu14.04 LTS升级gcc/g版本到4.9.4的操作步骤&#xff1a; 1&#xff0…

华为全球最快AI训练集群Atlas 900诞生

作者 | 胡巍巍来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;你&#xff0c;和计算有什么关系&#xff1f;早上&#xff0c;你打开手机App&#xff0c;查看天气预报&#xff0c;和计算有关&#xff1b;中午&#xff0c;你打开支付宝人脸支付&#xff0c;买了份宫保…

rabbitmq可靠发送的自动重试机制 --转

原贴地址 https://www.jianshu.com/p/6579e48d18ae https://www.jianshu.com/p/4112d78a8753 git项目代码地址 https://github.com/littlersmall/rabbitmq-access 转载于:https://www.cnblogs.com/hmpcly/p/10641688.html

在Linux下如何安装配置SVN服务

2019独角兽企业重金招聘Python工程师标准>>> Linux下在阿里云上架一个svn centos上安装&#xff1a;yum install subversion 安装成功 键入命令 svnserve --version 有版本信息则进行下一步 1、新建版本库目录 mkdir -p /opt/svndata/repos 2、设置此目录为…

201671030129 周婷 《英文文本统计分析》结对项目报告

项目内容这个作业属于哪个课程软件工程这个作业的要求在哪里软件工程结对项目课程学习目标熟悉软件开发整体流程及结对编程&#xff0c;提升自身能力本次作业在哪个具体方面帮助我们实现目标体验组队编程&#xff0c;体验一个完整的工程任务一&#xff1a; 作业所点评博客GetHu…

C++/C++11中std::string用法汇总

C/C11中std::string是个模板类&#xff0c;它是一个标准库。使用string类型必须首先包含<string>头文件。作为标准库的一部分&#xff0c;string定义在命名空间std中。std::string是C中的字符串。字符串对象是一种特殊类型的容器&#xff0c;专门设计来操作字符序列。str…

你在付费听《说好不哭》,我在这里免费看直播还送书 | CSDN新书发布会

周一的时候&#xff0c;我拖着疲惫的身体回到家中&#xff0c;躺倒床上刷刷朋友圈&#xff0c;什么&#xff1f;周杰伦出新歌了&#xff1f;朋友圈都是在分享周杰伦的新歌《说好不哭》&#xff0c;作为周杰伦的粉丝&#xff0c;我赶紧打开手机上的QQ音乐&#xff0c;准备去听&a…

解决Mysql:unrecognized service错误的方法(CentOS)附:修改用户名密码

2019独角兽企业重金招聘Python工程师标准>>> service mysql start出错&#xff0c;mysql启动不了&#xff0c;解决mysql: unrecognized service错误的方法如下&#xff1a; [rootctohome.com ~]# service mysql startmysql: unrecognized service [rootctohome.co…

Caffe源码中Net文件分析

Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件&#xff0c;这里介绍下include/caffe/net.hpp文件的内容&#xff1a;1. include文件&#xff1a;(1)、<caffe/blob.hpp>&#xff1a;此文件的介绍可以参考&#xff1a;http://blo…

满满干货的硬核技术沙龙,免费看直播还送书 | CSDN新书发布会

周一的时候&#xff0c;我拖着疲惫的身体回到家中&#xff0c;躺倒床上刷刷朋友圈&#xff0c;什么&#xff0c;周杰伦出新歌了&#xff1f;朋友圈都是在分享周杰伦的新歌《说好的不哭》&#xff0c;作为周杰伦的粉丝&#xff0c;我赶紧打开我手机上的QQ音乐&#xff0c;准备去…

【重磅上线】思维导图工具XMind:ZEN基础问题详解合集

XMind是XMind Ltd公司旗下一款出色的思维导图和头脑风暴软件。黑暗的UI设计、独特的ZEN模式、丰富的风格和主题、多分支的颜色等等功能会让你的工作更加便捷与高效。在视觉感官上也会给你带来最佳的体验感。 对于初学者来说&#xff0c;肯定会遇到各种各样的问题&#xff0c;有…

Linux内置的审计跟踪工具:last命令

这个命令是last。它对于追踪非常有用。让我们来看一下last可以为你做些什么。last命令的功能是什么last显示的是自/var/log/wtmp文件创建起所有登录(和登出)的用户。这个文件是二进制文件&#xff0c;它不能被文本编辑器浏览&#xff0c;比如vi、Joe或者其他软件。这是非常有用…

C++/C++11中std::set用法汇总

一个容器就是一些特定类型对象的集合。顺序容器(sequential container)为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值&#xff0c;而是与元素加入容器时的位置相对应。与之相对的&#xff0c;有序和无序关联容器&#xff0c;则根据关键字的值来存储元…