作者 | 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 开发的知识中起着最基本的作用。
下面我们开门见山,来看看这三种框架到底有什么特别之处,以及如何使用。
GitHub:https://github.com/deepmind/open_spiel
游戏在 DRL agent的 训练中发挥着重要作用。与其他数据集一样,游戏本质上基于试验和奖励机制,可用于训练 DRL agent。但是,正如我们所想,游戏环境的复杂度还远远不够。
OpenSpiel 是一系列环境和算法,用于研究一般强化学习和游戏中的搜索/规划。OpenSpiel 的目的是通过与一般游戏类似的方式促进跨多种不同游戏类型的一般多智能体强化学习,但是重点是强调学习而不是竞争形式。当前版本的 OpenSpiel 包含 20 多种游戏的不同类型(完美信息、同步移动、不完美信息、网格世界游戏、博弈游戏和某些普通形式/矩阵游戏)实现。
核心的 OpenSpiel 实现基于 C ++ 和 Python 绑定,这有助于在不同的深度学习框架中采用。该框架包含一系列游戏,允许 DRL agent 学会合作和竞争行为。同时,OpenSpiel 还包括搜索、优化和单一 agent 等多种 DRL 算法组合。
安装
摘要
./install.sh
vvirtualenv -p python3 venv
source venv/bin/activate
pip3 install -r requirements.txt
使用 deactivate 退出虚拟环境。
./open_spiel/scripts/build_and_run_tests.sh
# 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 等效代码。
一些顶级目录是特殊的:
例如,支持 C ++:
支持 Python:
添加游戏
从 games/中选择要复制的游戏。推荐游戏:Tic-Tac-Toe 和 Breakthrough,因为它们包含完美信息,没有偶然事件,Backgammon 或 Pig 用于完美的信息游戏与偶然事件,Goofspiel 和Oshi-Zumo 用于同步移动游戏,Leduc 扑克和 Liar 骰子用于不完美信息游戏。以下步骤以 Tic-Tac-Toe 为例讲解。
GitHub:https://github.com/deepmind/spriteworld
几个月前,DeepMind 发表了一篇研究论文,介绍了一种好奇的基于对象的 seaRch Agent(COBRA),它使用强化学习来识别给定环境中的对象。COBRA agent 使用一系列二维游戏进行训练,其中数字可以自由移动。用于训练 COBRA 的环境,正是 DeepMind 最近开源的 SpriteWorld。
Spriteworld 是一个基于 python 的强化学习环境,由一个可以自由移动的形状简单的二维竞技场组成。更具体地说,SpriteWorld 是一个二维方形竞技场,周围可随机放置数量可变的彩色精灵,但不会发生碰撞。SpriteWorld 环境基于一系列关键特征:
SpriteWorld 针对三个主要任务训练每个 DRL agent:
安装
可以使用 pip 安装 Spriteworld:
pip install spriteworld
或者通过 Github:
pip install git + https://github.com/deepmind/spriteworld.git
或者通过签出存储库的本地副本并运行:
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:
python /path/to/local/spriteworld/run_demo.py
创建自己的任务
在 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。
GitHub:https://github.com/deepmind/bsuite
强化学习行为套件(bsuite,The Behaviour Suite for Reinforcement Learning )的目标是成为强化学习领域的 MNIST。具体来说,bsuite 是一系列用来突出 agent 可扩展性关键点的实验。这些实验易于测试和迭代,对基本问题,例如“探索”或“记忆”进行试验。具体来说,bsuite 有两个主要目标:
bsuite 当前的实现可以在不同环境中自动执行实验,并收集可以简化 DRL agent 训练的相应指标。
如果你是一个 bsuite 新手,可以开始使用 colab 教程。这款 Jupyter 笔记本电脑配有免费的云服务器,因此无需任何安装即可立即开始编码。在此之后,你可以按照以下说明在本地计算机上运行 bsuite。
安装
我们已测试了 bsuiteon Python 3.6,且无维护 Python 2.7 版本的计划。
安装 bsuite,请运行该命令
pip install git+git://github.com/deepmind/bsuite.git
或克隆该库并运行
pip install bsuite/
想要能够编辑代码的同时安装软件包(请参阅下面的基线),请运行
pip install -e bsuite /
要同时安装baselines//示例的依赖项(不包括Gym和Dopamine示例),请安装:
pip install -e bsuite [baselines]
加载环境
环境由 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 页附录,该附录总结了强化学习算法的核心功能。本附录与大多数主要的机器学习会议格式兼容。例如输出运行,
pdflatex bsuite / reports / neurips_2019 / neurips_2019.tex
由于篇幅有限,无法一一详细介绍每个框架的具体使用方法,感兴趣的朋友们可以在上文 GitHub 链接中查询详情情况和使用指南,以检验OpenSpiel、SpriteWorld 和 bsuite 的真正实现效果,并欢迎在留言中与我们交流上手体验。
最后,相信随着越来越多的深度强化学习工具和框架的涌现,把这项新兴技术应用于现实世界的进程将大大加快,进一步推动 AI 研究和落地的进展。
原文链接:
https://towardsdatascience.com/deepmind-quietly-open-sourced-three-new-impressive-reinforcement-learning-frameworks-f99443910b16
(*本文为AI科技大本营整理文章,转载请微信联系 1092722531)