热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DeepMind重磅开源强化学习框架!覆盖28款游戏,24多个算法

乾明边策一璞发自凹非寺量子位报道|公众号QbitAI没有DeepMind的命,烧不起DeepMind一样的研发投入,但你现在可以有DeepMind苦心多
乾明 边策 一璞 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

没有DeepMind的命,烧不起DeepMind一样的研发投入,但你现在可以有DeepMind苦心多年研究出的算法和代码。

刚刚,这家背靠谷歌,烧了数十亿元的全球顶尖AI研究机构,开源了史上最全强化学习框架OpenSpiel

在这个框架中,实现了28款可用于研究强化学习的棋牌类游戏和24个强化学习中常用的算法,DeepMind的成名作AlphaGo的基础算法也在其列。

此外,还包括用于分析学习动态和其他常见评估指标的工具。

更关键的是,OpenSpiel适用人群也非常广泛。

它的核心API和游戏用C++实现,并提供了Python API,可用于更高级别的机器学习,优化和强化学习。这些语言也可以很容易地组合在一起。

而且,代码的一个子集也已经使用Swift for Tensorflow直接移植到了Swift进行学习和推理,不需要跨语言操作。

开源消息放出后不久,就在Twitter上引起了数百转发和点赞。

史上最全强化学习框架

进一步说,OpenSpiel,是一个强化学习环境和算法的集合。在这个框架中,DeepMind对大部分环境和算法也都已经进行了全面测试。

目前,在OpenSpiel中实现的算法一共有24种,分别是:

极小化极大(Alpha-beta剪枝)搜索、蒙特卡洛树搜索、序列形式线性规划、虚拟遗憾最小化(CFR)、Exploitability

外部抽样蒙特卡洛CFR、结果抽样蒙特卡洛CFR、Q-learning、价值迭代、优势动作评论算法(Advantage Actor Critic,A2C)、Deep Q-networks (DQN)

短期价值调整(EVA)、Deep CFR、Exploitability 下降(ED) 、(扩展形式)虚拟博弈(XFP)、神经虚拟自博弈(NFSP)、Neural Replicator Dynamics(NeuRD)

遗憾策略梯度(RPG, RMPG)、策略空间回应oracle(PSRO)、基于Q的所有行动策略梯度(QPG)、回归CFR (RCFR)、PSROrN、α-Rank、复制/演化动力学。

其中,只有短期价值调整(EVA)、Deep CFR和PSROrN等算法只是进行了初步测试,其他算法都经过了全面的测试。

640?wx_fmt=png

Spiel意指桌面游戏。因此,OpenSpiel中的环境就是相关棋牌类游戏。一共有28款:

双陆棋、突围棋、定约桥牌、Coin Game、屏风式四子棋、协作推箱子、国际象棋、第一价格密封拍卖、围棋、Goofspiel(一种多玩家纸牌游戏)

三宝棋、六贯棋、Kuhn扑克、Leduc扑克、大话骰、Markov Soccer、配对硬币(3人游戏)、矩阵游戏、Oshi-Zumo、西非播棋、转盘五子棋、Phantom三连棋

Pig游戏、三连棋、Tiny Bridge、Y(一种棋类游戏)、Catch(仅支持Python)、Cliff-Walking在悬崖边走的醉汉(仅支持Python)。

在上述游戏中,只有Coin Game、协作推箱子、六贯棋、Markov Soccer和Phantom三连棋只是进行了初步测试,其余的游戏都经过了全面的测试。

基于上述的游戏和算法,可用OpenSpiel研究通用强化学习和游戏中的搜索 / 规划。

OpenSpiel怎么样?

OpenSpiel提供了一个带有C++基础的通用API ,它通过Python绑定(经由pybind11)公开。

游戏用C++编写,是因为可以用快速和内存效率更高的方法实现基本算法。一些自定义RL环境也会在Python中实现。

最重要的是,OpenSpiel的设计易于安装和使用、易于理解、易于扩展并且通用。OpenSpiel按照以下两个重要设计标准构建:

1、简单。代码应该是非编程语言专家可读、可用、可扩展的,特别是来自不同领域的研究人员。

OpenSpiel提供了用于学习和原型化的参考实现,而不是需要额外假设(缩小范围)或高级(或低级)语言特性的完全优化或高性能代码。

2、轻量。对于长期兼容、维护和易用性,依赖项可能会有问题。除非有充分的理由,否则倾向于避免引入依赖关系来保持便携性和易于安装。

支持的博弈类型

在OpenSpiel的游戏可以表示为各种广泛形式的博弈:

  • 常和博弈

  • 零和博弈

  • 协调博弈

  • 一般博弈

其中,常和博弈中智能体之间是严格的竞争关系,协调博弈中智能体之间是严格的竞争关系,一般博弈则介于两者之间。

另外,根据智能体能否获得博弈过程中的所有信息,又可以将博弈分为:

  • 完美信息博弈

  • 不完美信息博弈

象棋和围棋是没有偶然事件的完美信息博弈,双陆棋是有偶然事件的完美信息博弈,而像石头剪刀布、扑克这样的游戏属于不完美信息博弈。

可视化工具和评估方法

OpenSpiel有一些用于可视化和评估的工具,尽管有些工具也被认为是算法(例如下面要介绍的α-rank)。OpenSpiel中提到的所有工具和评估都包含在代码库的egt子目录下。

1、演化和策略学习动力学的可视化

在多智能体强化学习的文献中,一种常见的可视化工具是相图,它显示了描述特定动力学下策略局部变化的矢量场或粒子轨迹。

下面展示了OpenSpiel为四种常见的bimatrix游戏生成的相图。

640?wx_fmt=png

2、评估工具α-rank

α-Rank是一种算法,利用进化博弈论对多人游戏中的智能体进行交互排名。α-Rank定义了马尔可夫转移矩阵,其状态对应于玩家使用的智能体的元组,以及通过特定的进化模型通知的转换。该进化模型确定了排名与博弈论中马尔可夫-康利链解决方案概念的对应关系。

640?wx_fmt=png

其主要的优点是,它可以在不涉及智能体关系的场景中对智能体进行排名(例如石头剪刀布),这与Elo(等级分)评级系统不同。

α-Rank还有一个优点是,在一般游戏中的计算也是容易处理的,不像依赖于纳什均衡的排序系统。

安装方法

目前DeepMind已经在Debian和Ubuntu两个Linux系统上测试了OpenSpiel,具体安装方法如下:

为了能够从任何位置导入Python代码,需要将根目录和open_spiel目录添加到PYTHONPATH。使用virtualenv时,应添加路径/bin/activate。

# For the python modules in open_spiel.
export PYTHONPATH=$PYTHONPATH:/
# For the Python bindings of Pyspiel
export PYTHONPATH=$PYTHONPATH://build/python

然后你就可以运行自己的第一个游戏了!

examples/example --game=tic_tac_toe

27名作者、豪华阵容背景

OpenSpiel可是个大项目,为此,DeepMind动用了一个巨大的团队——DeepMind以及Google的27人,光是共同一作,就有4位之多。

四位共同一作都来自DeepMind。

第一位Marc Lanctot,是DeepMind的研究科学家,他此前博士毕业于阿尔伯塔大学,是哲学&AI双料博士,之后去了马斯特里赫特大学做博士后研究员,自此开始他就一直在研究多智能体决策问题。

640?wx_fmt=jpeg

第二位Edward Lockhart,DeepMind研究工程师,此前是剑桥大学的数学硕士,曾在Morgan Stanley、花旗银行、瑞银这些金融机构做IT相关的事情,后来跳槽到DeepMind。他在语音合成、强化学习等方向做过不少研究。

640?wx_fmt=jpeg

第三位Jean-Baptiste Lespiau,也是DeepMind研究工程师,是个法国人,目前在DeepMind巴黎分部,他是巴黎综合理工学院的系统工程硕士。

第四位Vinicius Zambaldi,DeepMind高级研究工程师,巴西人,米纳斯吉拉斯联邦大学计算机硕士,加入DeepMind之前已经是创业公司CTO了。

640?wx_fmt=png

开玩笑说,虽然一作中有三位不是博士加持,但现在这份研究,应该足够被授予地球上任一名校的博士学位了吧?

另外,在作者团队的单位中,除了DeepMind和Google,还有AlphaGo打造者David Silver母校阿尔伯塔大学(黄士杰也是该校校友)。

烧自己的钱,为全人类研究

当然,这一次重磅开源,或许也能让DeepMind近来形象扭转很多。

因为纵使DeepMind曾经捧红AlphaGo,几乎一手推起了AI热潮,但这家公司自己,依旧处在日复一日的烧钱当中。

光2018年就几乎烧掉了40亿元人民币。

而累计之前的投入,2016年亏损1.54亿美元,2017年亏损3.41亿美元,2018年亏损5.72亿美元,三年累计起来,已经亏掉了超过10亿美元。

并且按照公开披露信息,可能还会接着烧掉同等规模的钱,才能进一步产生他们追求的AI境界和回报——但母公司谷歌已实名支持,表示会撑到底。

而这十亿美元的投入,几乎都被DeepMind押注在了一件事上:

强化学习

正是借助强化学习,DeepMind逐步攻克围棋、《星际》和雅达利游戏等一系列难题,最终的目的,是创造出目前只在科幻小说电影里存在的通用人工智能(AGI)

640?wx_fmt=jpeg

而这次的OpenSpiel,集中了游戏竞技领域中的大量场景和算法,可以说是过去长线投入的集大成者。

现在,DeepMind将多年苦心、巨额投入研发的成果悉数开源,真可谓业界良心

此前在DeepMind年报出炉,披露亏损40亿并人均年薪高达400多万的时候,就有评论说,对于DeepMind这样顶级AI研究机构的投入,实际是人类对最前沿技术的支持。

更有甚者,认为这些投入和薪资,与DeepMind带来的成果相比,简直不能更还算了。

而如今,DeepMind一股脑将成果开源,更是烧自己的钱,为全人类研究。

这份诚意和姿态,是不是足够堵上质疑者的嘴了?

你说呢?

AI社群 | 与优秀的人交流

640?wx_fmt=png

AI内参 | 关注行业发展

640?wx_fmt=jpeg

640?wx_fmt=jpeg

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 ! 



推荐阅读
  • bat大牛带你深度剖析android 十大开源框架_请收好!5大领域,21个必知的机器学习开源工具...
    全文共3744字,预计学习时长7分钟本文将介绍21个你可能没使用过的机器学习开源工具。每个开源工具都为数据科学家处理数据库提供了不同角度。本文将重点介绍五种机器学习的 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • 学习一门编程语言,除了语法,最重要的是学习解决问题。很多时候单凭自己的能力确实无法做到完美解决,所以无论是搜索引擎、社区、文档还是博客&# ... [详细]
  • 1、DashAPI文档Dash是一个API文档浏览器,使用户可以使用离线功能即时搜索无数API。程序员使用Dash可访问iOS,MacOS, ... [详细]
  • Win10+Python3.7+Tensorflow安装
    Win10+Python3.7+Tensorflow安装Step1:安装AnacondaStep2:Tensorflow的安装转载请注明出处:https:blog.csdn.net ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • TensorFlow入门上
    前置准备在阅读本文之前,请确定你已经了解了神经网络的基本结构以及前向传播、后向传播的基本原理,如果尚未了解,可以查看下文。神经网络初探​chrer.com也可以直接在我博客阅读Te ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 于2012年3月份开始接触OpenStack项目,刚开始之处主要是与同事合作共同部署公司内部的云平台,使得公司内部服务器能更好的得到资源利用。在部署的过程中遇到各种从未遇到过的问题 ... [详细]
author-avatar
建铭琼伶俊涵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有