你觉得,AI 全自动玩斗地主,胜率能有多高?
真就有100%胜率,实现欢乐豆自由?
我让这个 AI 自己玩了一小时,结果出乎意料。
先不着急说最终结果,我们先来看看这个 AI 有多强。
; 01
Ai斗地主,就是通过 AI 算法分析游戏画面,获取玩家角色、手牌等信息。
完全自主决策这把是否叫地主,是否加倍,以及如何出牌。
设定好程序,不需要我们参与,AI 自己就能玩一下午。
算法名字是 DouZero,快手团队开发的。
不是要把欢乐豆归零的意思——
意思是像 AlphaZero 一样从零开始训练,不需要你教他怎么打,完全自己学习。
系统只需要给出正负反馈,算法就会自我强化,做出最有效的行为决策。
跟训狗是一个道理。
斗地主的所有牌型总共有27472种。相对与围棋上亿万种的走法,算是小巫见大巫了。
那实现的难点在哪呢?
围棋是所有棋子都摆在棋盘上,对弈双方都能看到,这属于”完全信息博弈”。
而斗地主每个玩家都看不到其他人的手牌,从博弈论的角度看,斗地主是”不完全信息博弈”。
并且还要综合考虑合作机制。
两个农民玩家对抗地主玩家。不仅要保证自己赢,也要辅助队友赢。
对于AI来说就更有挑战性了。
02
这里简述一下算法原理。
DouZero 是一个基于深度蒙特卡罗算法来打斗地主的强化学习算法。
所谓的蒙特卡罗就是通过不断的重复实验来估计真实价值的方法。
而在DouZero中,引入了Deep Monte-Carlo (DMC)方法。所谓DMC,就是用神经网络替换Q表,并使用均方误差 (MSE) 更新Q网络。
让q价值最大化,q价值指的是在某个状态做某个动作预期的价值是多少。
感觉屏幕对面的你,已经在打哈欠了,我们不多说了,具体的大家可以看看算法论文。
论文链接:
https://arxiv.org/abs/2106.06135
那胜率到底多高呢?
咱们首先声明一下,我们不支持任何形式的外挂,玩游戏就图一乐呵,真让 AI 全自动去打,游戏也就失去了本身的意义。
我们只是测试算法的可行性,我让 AI 打了20局游戏,赢了13局,输了7局。综合胜率在65%。
不过样本数量不够大,官方数据中显示, AI 综合胜率大概在60%左右。
总体来看,可以达到普通玩家水平。
本以为 AI 斗地主会很厉害。
60%的胜率,就这?
; 03
这已经是上百种斗地主 AI 算法的最高胜率了,其他算法还有20%胜率的,效果感人。
AI 斗地主没有想象中的厉害,为什么呢?
因为斗地主是个运气成分很强的游戏。
牌好的时候,闭着眼睛打也能赢。牌烂的时候,高手也救不了你。
所以只有在自己和对手的牌相对均衡的情况下,AI的优势才能被明显体现。
有时候也会出现不可思议的打法。
比如下面这种情况,我自己打不一定能赢。
上面视频 51s 的时候,AI还会先出K,测试地主的大牌。
wx搜索【喵宁一】查看视频
第一时间阅读文章~
“鲁迅先生”说过:打好烂牌才算本事。
大写的牛!
计算机非常擅长在完全信息下做搜索,而人类玩家则更擅长在非完全信息下进行推理和决策。
尽管斗地主属于非完全信息游戏,但以AI对于对手手牌的概率分布估计能力,以及基于此所做出的细粒度搜索和判断能力,都将远胜于人类。
人类,危!
随着 AI 推理决策、高效学习能力的提高,AI 外挂会势如破竹,横卷游戏界。
特别是FPS类射击游戏,已经有成熟的 AI 外挂了。这种纯拼技术的游戏,AI胜率几乎百分百。
给游戏业带来了巨大的挑战。
并且不仅仅是游戏业,随着深度强化学习的快速发展,这一技术被应用于军事的步伐也越来越快了。
围棋 AI 已经超越了人类,斗地主 AI 也能战胜普通水平。不出意外,未来空战,AI 超越人类飞行员也是迟早的事。
这不是空穴来风。
美军已经毫不掩饰他们在这个领域的野心了。
那个时候战争形态跟现在都会发生天翻地覆的变化。
如果大国人工智能已经达到高水平,甩出别国几条街。
我们有生之年极有可能会看到,一方没有伤亡,另外一方被灭亡的战争。
战争打到什么程度,只取决于大国愿意付出多少成本,世界舆论压力,其他大国是否干预。
只有提高自己的 硬实力,才有话语权。
国家如此,人也是如此。
04
最后还是逃脱不出技术号的本质,上个教程。
第一步:下载项目
项目地址:
https://github.com/Vincentzyx/DouZero_For_HLDDZ_FullAuto
这个项目在DouZero 算法的基础上,加入了自动出牌、自动叫牌等模块。
项目里面已经有训练模型了,不需要我们再单独下载了。
第二步:配置环境
pip3 install -r requirements.txt
pip3 install douzero
这里要注意遇到下面的错误,是因为pytorch版本不对应,需要检查更换一下版本。
RuntimeError: .xxx.pth is a zip archive did you mean to use torch.jit.load()?
第三步:测试运行
确认自己的屏幕缩放比,项目默认是 125%,电脑默认是100%。
python debug_screenshot.py
修改main.py文件中的第58行。
helper.ScreenZoomRate = 1.25
helper.ScreenZoomRate = 1.00
运行项目,会出现自动开始的页面。
python main.py
打开游戏,注意这个游戏指的是qq游戏中的欢乐斗地主,不是腾讯游戏。
这个坑我已经替你们踩过了——
点击自动开始,如果想要自动开始下一把,点击单局按钮,换成自动就可以了。
Original: https://blog.csdn.net/shine_a/article/details/123302489
Author: 喵宁一
Title: AI 全自动玩斗地主,靠谱吗?Douzero算法教程
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/805837/
转载文章受原作者版权保护。转载请注明原作者出处!