android德州扑克计算器,学界 | 一台笔记本打败超算:CMU冷扑大师团队提出全新德扑AI Modicum...

原标题:学界 | 一台笔记本打败超算:CMU冷扑大师团队提出全新德扑AI Modicum

选自arXiv

参与:路、晓坤

CMU 冷扑大师团队在读博士 Noam Brown、Tuomas Sandholm 教授和研究助理 Brandon Amos 近日提交了一个新研究:德州扑克人工智能 Modicum,它仅用一台笔记本电脑的算力就打败了业内顶尖的 Baby Tartanian8(2016 计算机扑克冠军)和 Slumbot(2018 年计算机扑克冠军)。此前,冷扑大师的论文《Safe and Nested Subgame Solving for Imperfect-Information Games》是 NIPS 2017 的最佳论文。

1 引言

不完美信息博弈对智能体和隐藏信息之间的战略互动进行建模。此类博弈的主要基准是扑克,尤其是一对一无限注德州扑克(HUNL),2017 年人工智能 Libratus 打败德州扑克人类顶级玩家 [6]。带来这一超人性能的关键突破在于嵌套求解(nested solving),随着在博弈树的位置不断下移,智能体实时重复计算更加精细调整的策略(只属于完整博弈的一部分)。

但是,实时子博弈求解在前半场对于 Libratus 来说成本太高,因为 Libratus 实时求解的这部分博弈树(即子博弈)通常延伸到游戏结束。因此,前半场 Libratus 预先计算出一个精密策略用作查找表。如果该策略成功,则它需要可用于计算的数百万核心时间和数 TB 内存。此外,在更深的序贯博弈中,该方法的计算开销更加昂贵,因为需要求解更长的子博弈和更大型的预计算策略。一个更通用的方法是在博弈的早期阶段就对深度有限(depth-limited)的子博弈进行求解。

扑克 AI DeepStack 使用与嵌套求解类似的一项技术实现了这种操作 [26]。但是,尽管 DeepStack 战胜了一组 HUNL 非顶尖人类专业选手,但它没有打败之前顶尖的 AI,尽管它使用超过一百万核心时间来训练智能体,这表明它使用的方法可能在扑克等领域不够实际或有效。本论文在第 7 部分详细讨论了该问题。本论文介绍了一种不同的深度有限求解方法,该方法战胜了之前顶尖的 AI,且计算开销实现数量级的下降。

在完美信息博弈中,深度有限子博弈的叶节点处的值被替换为所有选手在均衡状态时的状态估计值 [34, 32]。例如,该方法在 backgammon [38]、国际象棋 [9] 和围棋 [35, 36] 上达到了超越人类的水平。同样的方法还广泛应用于单智能体设置中,如启发式搜索 [29, 24, 30, 15]。的确,在单智能体和完美信息多智能体设置中,了解所有选手均衡状态时的状态值足以重建均衡。但是,该方法在不完美信息博弈中没有效果。

2 深度有限求解在不完美信息博弈中遇到的挑战

在不完美信息博弈中(也叫作部分可观测游戏),子博弈中的最优策略无法通过了解所有选手均衡状态时的状态值(即博弈树节点)来确定。图 1a 是一个简单图示,展示了一种序贯博弈游戏「剪刀石头布+」(Rock-Paper-Scissors+,RPS+)。RPS+ 和传统的 RPS 相同,除了玩家出剪刀,赢者得 2 分而不是 1 分(输者也输 2 分)。图 1a 以序贯博弈的形式展示 RPS+ 游戏,其中 P_1 首先动作,但是没有向 P_2 泄露动作。该游戏中对于两个玩家来说,最优策略(Minmax 策略,即双人零和博弈中的纳什均衡)就是每一方以 40% 的概率选择石头或布,20% 的概率选择剪刀。在该均衡中,P_1 选择石头的期望值为 0,选择剪刀或布的值也为 0。也就是说,图 1a 中所有的红色状态在该均衡中的值都为 0。现在,假设 P_1 实施深度为 1 的深度有限搜索,深度极限处的均衡值被替代。该深度有限子博弈如图 1b 所示。很明显,在该子博弈中没有足够的信息达到 40% 石头、40% 布、20% 剪刀的最优策略。

ff32459a82a1488aec0646ff2c91ab29.png

在 RPS+ 例子中,核心问题在于我们不正确地假设 P_2 将总是执行固定的策略。如果实际上 P_2 出石头、布和剪刀的概率是<0.4,0.4,0.2>,那么 P_1 将选择任意的策略并且期望值为 0。然而,如果假设 P_2 总是执行固定的策略,P_1 可能无法找到对 P_2 变化具备鲁棒性的策略。事实上,P_2 的最优策略依赖于 P_1 选择石头、布和剪刀的概率。一般而言,在不完美信息博弈中,玩家在某个决策点的最优策略依赖于玩家在状态上的信度分布(belief distribution),以及其它智能体在该决策点上的策略。

在本文中,研究者引入了一种深度有限求解方法,确保玩家策略对于对手的变化具备鲁棒性。研究者允许对手在深度有限(depth limit)处进行最后一次动作选择(其中每个动作对应对手将在博弈余下部分执行的策略),而不是在深度极限处简单地替换单个状态值。策略的选择决定了状态值。对手并没有按特定于状态的方式进行选择(即选择最大状态值)。相反,自然地,对手必须在所有状态进行相同的(对他而言)无法分辨的选择。研究者证明了如果对手被给定了在深度有限处的足够数量的策略,那么任何在深度有限处的子博弈求解都是完整博弈的纳什均衡策略的一部分。他们还通过实验展示了,当仅提供了少量的策略时(为提高计算速度),该方法的性能达到极端的高度。

6 实验

研究者在一对一无限注德州扑克(HUNL)和一对一无限注 flop 扑克(NLFH)上构建了实验。附录 B 中有这些游戏的规则。HUNL 是不完美信息博弈 AI 的主要大规模基准。NLFH 和 HUNL 相似,除了博弈会在第二个回合之后立刻结束,这使其规模足够小,从而能精确地计算最佳反应和纳什均衡。性能根据 mbb/g 测量,这是文献中的标准胜率度量。mbb/g 即 milli-big blinds per game,代表玩家在每一手牌中平均能赢多少个大盲注(玩家在开始时必须承诺的赌注)的千分之一。

67b349f4633b8d9374d0e09344ea3b1a.png

图 2:回应对手的 off-tree 动作的深度有限解决方案的利用度(exploitability),作为状态值数量的函数。研究者对比了动作转换和在动作提取中包含 off-tree 动作(在 CFR+的 1000 次迭代的达成利用度是下限值)的方法。

6.2 在一对一无限注德州扑克(HUNL)上对抗顶尖 AI 的实验

我们主要的实验使用了深度有限求解的方法,并仅使用普通笔记本电脑上的计算资源生成大师级的 HUNL 扑克 AI:Modicum。我们测试了 Modicum 与 Baby Tartanian8 [4] 和 Slumbot [18],其中 Baby Tartanian8 是 2016 年度计算机扑克竞赛的获胜者,Slumbot 是 2018 年度计算机扑克竞赛的获胜者。Baby Tartanian8 和 Slumbot 都不使用实时计算,它们的策略都是在预计算的查找表中搜索得到的。Baby Tartanian8 使用了约为 250000 个核心计算小时和 2TB RAM 来计算策略。相反,Modicum 只使用 700 个核心计算小时和 16GB 的 RAM 计算策略,它在使用 4 核 CPU 的情况下还能以人类专家的速度实时进行博弈(平均一手扑克需要 20 秒)。

7 对比先前研究工作

通过为状态分配多个值,本论文介绍了一种克服这一挑战的方法。一种不同的方法是将「状态」的定义修改为所有博弈者对状态的的信念概率分布(belief probability distribution),我们称之为联合信念状态,这种技术以前也用来开发扑克 AI DeepStack [26]。实验表明,在我们测试的领域中,使用多值状态(multi-valued states)能产生更好的性能。例如我们的方法在少于 1000 个核心计算小时的条件下能击败两种以前顶级的德州扑克 AI。相比之下,虽然 DeepStack 击败了在 HUNL 中不是那么专业的人类专家,但它即使使用了 1000000 个核心计算小时,也不能击败以前顶尖的 AI。但是,这两种方法都各自有优缺点,我们需要根据领域正确地选择,未来的研究也许会改进它们的性能与优势。

论文:Depth-Limited Solving for Imperfect-Information Games

6885837b36d3fde2ac0af08a603cc67e.png

论文地址:https://arxiv.org/abs/1805.08195

在不完美信息博弈中,一个基本的挑战即状态没有良好定义的值。因此在单智能体和完美信息博弈中常用的深度有限(depth-limited)搜索算法并不合适。本文介绍了一种在不完美信息博弈中进行深度优先求解的原则性方法,它允许对手在深度有限下为其余部分选择多种策略。且每一种策略都会为叶节点生成一组不同值,这使得智能体针对对手可能采取的策略产生鲁棒性。我们通过构建大师级的一对一无限注德州扑克 AI 而证明这种方法的高效性,它仅使用一块 4 核的 CPU 和 16GB 的内存就能击败两个以前顶级的智能体。以前,开发这样一个强大的智能体需要一台超级计算机。

本文为机器之心编译,转载请联系本公众号获得授权。返回搜狐,查看更多

责任编辑:

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

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

相关文章

神器 | 百度云资源搜索

From&#xff1a;https://blog.csdn.net/qq_21492635/article/details/81109247 直接上神器 该网页没有做自适应&#xff0c;也没有专门的手机站点&#xff0c;因此建议电脑使用。也可下载桌面客户端&#xff08;仅支持windows&#xff09;&#xff0c;稳定不卡&#xff0c;速度…

html前端如何缓存页面,Nuxt中如何做页面html缓存

Nuxt是一款基于Vue的服务端渲染SSR框架在Nuxt框架的API中&#xff0c;有一个叫 serverMiddleware 的服务端中间件&#xff0c;我们可以利用它在返回首屏html前做一些缓存的处理在这之前我们需要了解一个叫LRU的算法&#xff0c;LRU是一种缓存淘汰算法&#xff0c;用链表存储数据…

Google 和 bing 都无法替代的10大深网搜索引擎

From&#xff1a;https://blog.csdn.net/ejinxian/article/details/74081716 当我们想要搜索某些内容时&#xff0c;我们第一个想到的就是打开Google、百度或必应这类的搜索引擎。但针对有些内容&#xff0c;却是这些常规搜索引擎无法获取到的&#xff0c;那就是隐藏在深网的内…

植树节html5游戏,植树节活动

活动概述活动时间:3月10日至3月13日(以实际版本内活动日期为准)活动介绍:一年一度的植树节活动开始了&#xff0c;小伙伴们拿起小铲子&#xff0c;小水桶&#xff0c;今天勤劳来种树&#xff0c;明天不用吸雾霾&#xff01;快来邀请你的小伙伴一同参与活动吧&#xff0c;开开心…

Swagger 注解~用于Controller

Api 用于类&#xff1b;表示标识这个类是swagger的资源 tags–表示说明 value–也是说明&#xff0c;可以使用tags替代但是tags如果有多个值&#xff0c;会生成多个list Api(value"用户controller",tags{"用户操作接口"}) RestController public class Us…

大黄蜂(HORNET):比Tor更快更安全的匿名网络

From&#xff1a;https://blog.csdn.net/lee_sire/article/details/50357234 你一定听说过Tor洋葱路由技术&#xff0c;它提供了强大的匿名网络访问功能&#xff0c;以此成为互联网用户、政治活动家、以及记者躲避有关部门限制监控的方法。但Tor最受人诟病的是它蜗牛般的网络连…

HTML在前端开发中起到的作用,什么是字符串,web前端开发里起到什么作用

观察某宝商品数据&#xff0c;有一个东西叫服务器>>>>js的作用重要作用之一>>>>交互>>>>人机交互(事件)>>>>服务器交互(ajax);服务器交互&#xff0c;数据处理方式json>>>>>要把它转化成字符串操作。字符串操作…

Swagger 注解~用于方法

ApiOperation 用于方法&#xff1b;表示一个http请求的操作 value用于方法描述 notes用于提示内容 tags可以重新分组&#xff08;视情况而用&#xff09;ApiParam 用于参数&#xff0c;字段说明&#xff1b;表示对参数的添加元数据&#xff08;说明或是否必填等&#xff09; na…

如何使用Linux匿名上网-四大法宝

From&#xff1a;https://www.linuxprobe.com/linux-anonymity-internet.html 导读 信息时代给我们的生活带来极大便利和好处的同时也带来了很大的风险。一方面&#xff0c;人们只要点击几下按钮&#xff0c;就能基本上访问已知存在的全部信息和知识;另一方面&#xff0c;要是这…

怎么改HTML表单数据,form设置的数据怎么添加到table

如图&#xff1a; 是一个form表单&#xff0c;在顶部输入数据点击新增&#xff0c;怎么把数据插入到下面的表格中&#xff0c;并显示。页面代码&#xff1a;编辑跳转表单的代码&#xff1a;showEditForm(text) >{const data_save this.props.signal.data_save.dataconst da…

Swagger 注解~用于模型

ApiModel 用于模型类 &#xff1b;表示对类进行说明&#xff0c;用于参数用实体类接收 value–表示对象名 description–描述 都可省略ApiModelProperty 用于字段&#xff1b; 表示对model属性的说明或者数据操作更改 value–字段说明 name–重写属性名字 dataType–重写属性类…

命令行下 pdb 调试 Python 程序

官方参考网站 The Python Debugger &#xff1a; https://docs.python.org/3/library/pdb.html gdb 调试命令的使用及总结&#xff1a;https://blog.csdn.net/freeking101/article/details/54406982 使用 Pdb 调试 Python&#xff1a;https://segmentfault.com/a/1190000006628…

2021年高考成绩查询山东德洲,2021年德州高考状元是谁分数多少分,历年德州高考状元名单...

2020年德州一年一度的高考考试已经结束&#xff0c;今年德州高考状元是谁呢&#xff0c;德州高考状元出自哪个高中学校&#xff0c;文理科分数是多少分&#xff0c;一起来了解。一、2020年德州高考状元名单资料2020年德州高考状元名单和学校相关信息&#xff0c;截至目前发文时…

Swagger 注解~其他

ApiIgnore 用于类或者方法上&#xff0c;可以不被swagger显示在页面上 比较简单, 这里不做举例 ApiImplicitParam 用于方法&#xff0c;表示单独的请求参数ApiImplicitParams 用于方法&#xff0c;包含多个 ApiImplicitParam name–参数ming value–参数说明 dataType–数据类…

python3 爬虫实战 :用 Appium 抓取手机 app 微信朋友圈的数据

From&#xff1a;https://blog.csdn.net/Fan_shui/article/details/81413595 本编教程从 appium 的环境配置开始&#xff0c;到抓取手机 app 微信朋友圈结束。 知乎&#xff1a;https://zhuanlan.zhihu.com/p/41311503 GitHub&#xff1a;https://github.com/FanShuixing/git_…

SharePoint 2010中的内容类型集线器 - 内容类型发布与订阅

原文地址&#xff1a;http://www.chakkaradeep.com/post/SharePoint-2010-Content-Type-Hubs-e28093-Publish-and-Subscribe-to-Content-Types.aspx 注&#xff1a;此博客帖子是基于SharePoint2010技术预览版本。 MOSS 2007 假设您有一个网站集Web Application1 &#xff0c;在…

如何用“底层逻辑”,看清世界的底牌?

来源&#xff1a;如何用“底层逻辑”&#xff0c;看清世界的底牌&#xff1f; 我的新书《底层逻辑》&#xff0c;终于要和大家见面了。 我常说&#xff0c;只有底层逻辑才有生命力。 因为底层逻辑在面临变化的时候&#xff0c;能够应用到新的变化里面&#xff0c;会产生出新…

python3 爬虫实战:mitmproxy 对接 python 下载抖音小视频

From&#xff1a;https://blog.csdn.net/Fan_shui/article/details/81461253 一、前言 前面我们已经用 appium 爬取了微信朋友圈&#xff0c;今天我们学习下 mitmproxy&#xff0c;mitmproxy 是干什么的呢&#xff0c;它跟 charles 和 fiddler类似&#xff0c;是一个抓包工具&a…

python3 爬虫实战:为爬虫添加 GUI 图像界面 之 tkinter

From&#xff1a;https://blog.csdn.net/Fan_shui/article/details/81611752 一、前言 前面我们写的爬虫只能运行在具有python环境的电脑上&#xff0c;若是把源代码发给别人&#xff0c;很大可能性是运行不了的&#xff0c;所以我们本节的目的是为爬虫创建 GUI 界面&#xff0…