如何看待 AI *入斗地主领域,快手 DouZero 击败 344 个 AI 排名第一?未来人类斗地主能斗过 AI 吗?解
快手团队开发的斗地主AI命名为DouZero,意思是像AlphaZero一样从零开始训练,不需要加入任何人类知识。
只用4个GPU,短短几天的训练时间,就在Botzone排行榜上的344个斗地主AI中排名第一。
评谢邀。
2016年AlphaGo的横空出世,让人开始认识到,人工智能的水平已经可以在很多领域超越人类了。接着2017年,AlphaZero接踵而来,不同于AlphaGo的是,AlphaZero可以从零开始,通过强化学习,在试错过程完成数百万盘自我对弈, 并且可以掌握五子棋,围棋等多种棋类。除此之外,这些年的棋牌AI应用还包括麻将AI Suphx等等。
前面说到的AI可以分为两类:
人工智能在非完全信息博弈要完全战胜人类,难度很大。在我之前被日报收录的一篇回答 《
首先必须说,DouZero并不是第一个斗地主AI。之前也有人尝试做了些斗地主AI或者通用牌类AI,有的是基于策略的,有的是基于有监督算法的,也有基于强化学习的,作者在论文里也提到了一些,例如DeltaDou, RLCard等等。DouZero的创新点是什么?论文里给出了答案:「DouZero 不需要任何领域知识或基础动态知识」。DouZero的方法是从零开始通过自我对局来学习(为了对比,项目也提供了通过人类数据训练的模型)。估计这就是叫DouZero而不是什么AlphaDou,因为思路上和AlphaZero一样,所以叫DouZero也许是向AlphaZero致敬吧。
我看了下论文,大概总结下其内容。
摘要是论文的概括。在摘要里,介绍了斗地主的挑战主要是在竞争、合作与非完全信息博弈上,于是团队提出了DouZero,通过深度神经网络、动作编码(action encoding)和平行角色(parallel actors)来增强蒙特卡洛方法。训练的话,采用了一个带4片GPU的服务器,只训练了几天,就可以在botzone上面打败了344个其他斗地主AI,成功登上榜首。
知道了大致的思路后,我们来看看具体的方法。
首先是动作编码。DouZero将所有的牌型编码成 15x4 的由 0和1 组成的矩阵。其中每一列代表一种牌,每一行代表对应牌的数量。
神经网络的话,架构如下:
至于平行角色是什么?DouZero采用多演员(actor)的架构,在单个 GPU 服务器上,用了 45 个actor同时产生数据,最终数据汇集到一个中央训练器进行训练。
传统强化学习使用蒙特卡罗方法。所谓的蒙特卡罗方法就是一种随机模拟,即通过不断的重复实验来估计真实价值。而在DouZero中,引入了Deep Monte-Carlo (DMC)方法。所谓DMC,就是用神经网络替换Q表,并使用均方误差 (MSE) 更新Q网络。
文章第五章给出了很翔实的实验结果。
首先是DouZero与其他斗地主AI的对比,其中WP>0.5(也就是胜率过半)或者ADP>0(得分为正)的都用黑体标出来了。可以看到,DouZero可以说是横扫了其他斗地主AI。
训练速度上,DouZero只要训练两天,胜率就能SL模型(用人类数据训练的模型)。训练10天以上,胜率和得分都能超过DeltaDou,另一个斗地主AI。
论文中还展示了在botzone的比赛数据,可以看到,DouZero基本是所向披靡的。
当然,任何论文都不是完美的。作者也在文章最末尾说了六点可能的下一步工作,包括尝试用ResNet等CNN网络来代替LSTM,在强化学习中尝试Off-Policy学习,尝试农民之间的协作等等。
DouZero是不是真的这么聪明?让我这个人类玩家试试吧。
一共玩了15局,其中5局作为地主,5局作为地主商家,5局作为地主下家。胜率如下:
之所以我要每个角色都试几遍,是因为每个角色的难度不同,你也可以从上图看出,作为地主上家或者下家时容易赢些。为啥?因为?因为你作为农民,还有一个AI帮助你,而你作为地主,则要单挑两个AI。
当我作为地主时,一盘都没赢过,感觉到了两个AI来吊打我的「屈辱」。即使我把它们的牌翻开来看着打,我依然赢不了。我感觉DouZero的打法是具有全局性的,而不是着眼于当下胜率最大化,但农民之间确实如论文说的,农民之间协作确实缺少了点,有的时候我看到,明明两个农民之间,上家放水下家会赢得更快,结果上家偏要出牌。
其中一局DouZero打得非常精彩,这里给大家展示下过程。为了展示AI的决策过程,我显示了AI的手牌。
首先,我拿到的手牌是非常好的,我连续出了两个三带一(分别是3334和6667)
这个时候DouZero获胜几率已经小于50%了。我乘胜追击,再来一个三带一(88810),这时候,咦,DouZero的获胜概率反而升到了79.55%了,难度我一手好牌打坏了?
DouZero综合考虑后,决定不出,于是我打对5,貌似DouZero的获胜概率降低了点。
出了几个对子后,我手牌变成这样:
虽然看起来我的牌很少,我仅剩3张牌,而对面分别剩11和13张牌。但这个时候,对面或者概率变成了100%,我获胜概率已经是0了。最后结果,我还是输了,而且是只剩一张牌那种。
这一局把我给弄服了。给我感觉,DouZero出牌是毫无情绪的(确实也没有),即使你比它手牌少很多,它也是有信心能赢你。
当然,以我的战绩来评价打斗地主水平也许有失公允,毕竟我不是职业选手,水平确实很一般,希望以后能看到斗地主高手当地主战胜DouZero。
由于在线版本性能有限(尽管我还是输了),于是在clone github repo在本地试试。由于没有本地GPU环境,不敢学官方那样用4块GPU训练几天,只好用官方提供的预训练模型。
官方代码地址:
官方提供了三种模型类型分别是:
每种模型分别对应地主,地主上家,地主下家三个位置,共27种组合。如果再加上随机的,RLCard的,组合就更多了。
当然,在命令行下打牌要人类参与就太难了,我们可以运行代码里的evalute.py,来设定三方采用的模型,然后让它们之间对针很多局。这里定个小目标,打它一万局。运行方法就不赘述了,在官方文档里讲得很详细了。
其中,比较值得关注的是DouZero智能体与RLCard智能体的对决。读者也许还不了解RLCard,这里简单介绍下。RLCard是一个开源的卡牌游戏强化学习工具包,如果DouZero能战胜RLCard,那说明DouZero比RLCard「更智能」。
首先是地主采用RLCard,两个农民采用DouZero-ADP,局数是10000局,
地主VS农民的胜率比是0.131 : 0.869,可以看到,DouZero-ADP完爆RLCard,得分比为-2.4564 : 2.4564
试试采用DouZero-WP,看看效果
过几分钟,10000局对战就完成了。可以看到,胜率比为0.1024:0.8976,更悬殊了;平均分数差距稍有缩小。
那么,以子之矛,刺子之盾呢?我试试三方都采用DouZero-WP
胜率是农民高一些,看来地主不好当啊。
由于组合太多,这里就不一一试验并展示了。大家也可以试试其他AI组合的对战结果,也许能从中发现一些有趣的发现。
研究了一天,感觉DouZero还是令人惊喜的。
首先是项目上令人惊喜。这是一个有论文有代码的项目,非常友好。提供的代码也是能轻易运行的,并且运行速度不错,我用MacBook Pro跑预训练模型,对战10000局也就三分钟的事。虽然我的条件无法拿出4块GPU训练几天,但这对于实验室来说不算难,有条件的可以用实验室的GPU试试。
其次,效果上也是令人信服。实际对战效果,例如胜率,得分等等,除开牌局的随机性,可以说和论文里描述的基本一致,效果还是不错的。怪不得能*进botzone天梯第一。
DouZero团队也提出了下一步的优化方法,这里也期待更强的新版本斗地主AI诞生。
tips: 各位网友,你们怎么看?
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved