用地表最强斗地主AI-DouZero实现连炸玩法AI
原创 AIGC布道者-王兴 AIGC布道者 2023年04月05日 16:32 江苏
1、介绍douZero
DouZero是一个为斗地主设计的强化学习框架。斗地主十分具有挑战性。它包含合作、竞争、非完全信息、庞大的状态空间。斗地主也有非常大的动作空间,并且每一步合法的牌型会非常不一样。DouZero由快手AI平台部开发。
【核心算法】 - DouZero将深度蒙特卡洛(Deep Monte Carlo, DMC)与动作编码和并行演员(Parallel Actors)相结合的方法,为斗地主提供了一个简单而有效的解决方案。和最近火热的深度学习都属于机器学习范畴。
优势:a)、0数据要求即可训练
b)、超参数很少,避免调参的麻烦
劣势:方差大,因为蒙特卡洛方法的核心是:基于某些状态(手牌、出牌历史等)进行某个动作(过牌、压牌等),然后获得结果奖励。但在同样的状态和动作下,如果位置不同/对手队友能力不同,对结果都会产生极大的影响。解决方案是更多的样本,尽可能得到合理的估计。
【截止目前胜率最高的AI】官方数据显示,DouZero的胜率在60%左右,远高于斗地主平均胜率47%,条件允许的话,后续会在实际游戏中进行大样本验证。
【应用场景】有2个需求是比较容易想到的:
1、做一个斗地主外挂。
2、修改斗地主规则,使其适合连炸斗地主变种玩法【本文任务】
【相关信息】
论文地址:https://arxiv.org/abs/2106.06135
论文代码:https://github.com/kwai/DouZero
在线试玩:https://douzero.org
2、本次任务:训练AI,使其适合“连炸斗地主”的新玩法。
目前支持的斗地主玩法是经典规则,用官方提供的预训练模型,会出现各种“低智商”操作,所以我们需要对整个项目进行二次开发。
1、前期准备:尽量找GPU强的服务器,当然也可以用CPU训。
-
拉最新的代码:
git clone https://github.com/kwai/DouZero.git
-
安装依赖包:
cd douzero / pip3 install -r requirements.txt
2、实现步骤:
1、修改代码增加「连炸」规则:
代码改动量不大,主要改动类可以参考截图,增加连炸规则和相关出牌和计分逻辑(注意:评估和训练都需要进行调整)
2、训练。
经过亲自试验和多方验证,目前官方网盘提供的权重数据和实际演示用的并非一致(演示的聪明很多)。所以即使不改变斗地主规则,想要获得可商用的AI模型权重,也必须得自己重新训练。但是本次训练碰到了卡点:
在AutoDL选了一台V100尝试开跑,从下面截图可以看到fps大概平均每秒900(优化后可以达到2000)。官方建议一轮训练需要100,000,000,000frames, 如果按单卡跑需要1157天。即使100张卡也需要12天,而且多卡训练本身就是一个技术难点。
目前解决方案:
-
简化网络结构
-
尽可能优化代码性能
-
调整超参数
截止发文,以上3个方案均在尝试中,如果有相关大牛能够协助,请联系我!
3、评估
3.1、生成评估数据
3.2、测试评估数据
拿了训练了一晚的权重进行了测试(只训练了2000多万步...),然后抽取其中一局数据做评估:
手牌和底牌:
操作:
2000万步的AI可能等于刚出生3个月的宝宝水平,下次试试10亿步的【未完待续】