CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试

本文主要是介绍CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试

在国外的学术圈里,有一份论文火了。论文里进行的研究表明,人类历史上第一次,AI在德州扑克游戏上赢得了人类职业玩家。而这份论文的突破性意义在于:AI在非完整信息的博弈游戏中,赢得人类职业对手

这篇论文的名字是《DeepStack:无限下注扑克里的专家级人工智能》(DeepStack: Expert-Level Artificial Intelligence in No-Limit Poker),1月6号提交到了ArXiv上。

CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试

论文作者是来自加拿大Alberta大学、捷克Charles大学、布拉格捷克理工大学的研究人员。而论文题目里的DeepStack,是一种新型的算法名称,论文里说明到“DeepStack 是一种通用算法,可用于一大类非完整信息的序列博弈”。在一项涉及到数十位参与者和4.4万手扑克的研究中,DeepStack 成为了世界上第一个在“一对一无限注德州扑克”上击败了职业扑克玩家的计算机程序。

什么是“一对一无限注德州扑克”(HUNL)

德州扑克的英文名称是“Texas Hold'em”,而“一对一无限注德州扑克”(Heads-up no-limit,简称 HUNL)的意思,就是有2个玩家且不限下注筹码。这篇论文里的自然就是计算机和职业玩家挨个对局。

虽然是扑克,但跟斗地主还是很不一样的,它是“赌场”十分受欢迎的项目。这里祭出视频,帮大家理解一下德州扑克的规则和玩法。

从上面的视频中,我们大致能了解一场德州扑克会有两类信息:玩家每人手里分到2张底牌的“私有信息”和桌子上公共牌的“公开信息”。玩家用自己的2张底牌和5张公共牌结合在一起,选出5张牌,不论手中的牌使用几张(甚至可以不用手中的底牌),凑成最大的成牌,跟其他玩家比大小。按照“Hand Rank”决定最后的胜者。

在中国玩德州扑克的名人,一个是汪峰老师,另一个就是李开复老师。在知乎上“扑克有哪些技巧、经验或者原则?”的提问下,排名第一的,就是李开复老师的答案,他尤其提到玩好诈唬(Bluffing,高手惯用技巧)的关键在于学好统计

CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试

德州扑克是新一代的图灵测试?

德州扑克已经成为十分流行的人工智能研究测试地,每一个扑克玩家手里握着的底牌“私有信息”,是其它玩家看不到的,所以被称为是“非完整信息”(Imperfect information)的博弈。这跟围棋有很大不同,围棋是完整信息公开的博弈,玩家们可以看到棋盘上的每个旗子,考虑所有落子的可能性。所以德州扑克对于人工智能来说,更加具有挑战性。

《DeepStack》这篇论文的通信作者 Michael Bowling曾经在2015年初接受《New Scientist》采访时说道:“德州扑克最有趣的地方,就是你无法获得完整的信息”。

而卡耐基梅隆大学(CMU)Tuomas Sandholm教授也说道:“扑克已经成为在非完整信息情况下,衡量(计算机)智能水平的标准......而它可以看做是一种超越图灵测试的存在。

不知对手“底牌”的博弈,即非完整信息博弈要求更复杂的推理。

计算机正确决定,依赖于对方“底牌信息”情况下的概率分布,这种“底牌信息”可以通过对手过去的行为显露出来。比如有时玩家采取“诈唬”(Bluffing),对手有时手里并没有强牌,但还是作出全额下注志在必得的行为,计算机这时要根据对方过去的博弈表现,来判断对手有强牌的概率。

相应的,对手也会推断我方的底牌信息,所以这里就是一个“递归推理”(recursive reasoning),一个玩家无法轻易推理博弈状况。

有趣的是,这两位教授都在领导自己的团队攻克这个新型图灵测试,一位在加拿大Alberta大学,一位在美国CMU大学。

几天前,CMU已经发出预告:由Tuomas Sandholm教授领导研发出的Libratus人工智能系统,将于当地时间1月11日,在宾夕法尼亚州匹兹堡的 Rivers 赌场,与四个顶级职业玩家玩12万手的HUNL,并角逐20万美元的奖金。早在2015年,Libratus的前身Claudico与人类玩家首次对战,在8万手的对决中完败,这次算是CMU的卷土重来。

但是我们已经知道了结果,Alberta赶在CMU之前,把就论文发出来了。学术圈人士纷纷表达赞美,称DeepStack具有里程碑意义(当然这份论文还未通过同行审议阶段),然而跟CMU Libratus提前好几天的预热盛况相比,DeepStack并没有得到等量的媒体待遇,也引发一些人的不满。

CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试

CMU走的是当年AlphaGo的路线,在华丽的赌场搞一场秀,与人类顶尖玩家对战,还有20万美金的噱头。所以这份DeepStack论文虽然比CMU更早取得突破,但阵仗不如后者大,媒体对其忽视了,也在情理。

总之一句话,Alberta抢了先,CMU抢了热闹(学术界的竞争也是异常激烈的)。

此份DeepStack论文的成果

DeepStack总共与33位人类选手进行了4.4万手的较量,分别在2016年11月7日和12月12日之间于线上举行对局。最终获胜的前三位选手,分别有5000、2500和1250加元的奖励。以下是对局结果。结果显示,DeepStack的平均赢率为492 mbb/g(一般人类玩家到50 mbb/g就被认为拥有较大优势,750mbb/g 就是对手每局都弃牌的赢率)。

CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试

前面我们提到,一场扑克的信息可以分为“私有”和“公开”,放在桌子中间的5张公开牌形成一种动态的“公开状态”。游戏中的公开状态的可能序列构成一个公开树(Public tree),其中每一个公开状态都有一个相关的公开子树(Public subtree)。

CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试

上图是HUNL 中公开树的一部分。红色和蓝色线条表示玩家动作,绿色线条表示公开的公共牌。圆形节点表示游戏结束。

CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试

这张图是DeepStack整体架构,分为(a)(b)(c)三个部分。在(a)中,DeepStack在每一个公开状态里, 都要重新计算它需要的动作,其中子树值(Subtree value)会通过一个训练好的深度神经网络 Neural net(b)来计算,而训练Neural net的样本就是(c)。

总的来说,DeepStack结合了递归推理(Recursive reasoning)来处理信息不对称性,还结合了分解(Decomposition)集中计算到相关决策上,并形成了一种关于任意牌的直觉(Intuition),这种直觉可以使用深度学习进行自我玩牌而自动学习到。

而对于DeepStack和1月11日的CMU的Libratus赌场大战,雷锋网将跟踪深入报道。

PS:关注雷锋网公众号(雷锋网(公众号:雷锋网)


本文作者:亚萌


本文转自雷锋网禁止二次转载,原文链接


这篇关于CMU风头被抢,新型DeepStack算法抢先攻克德州扑克图灵测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278025

相关文章

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc