【论文笔记】非完美信息多智能体博弈棋牌类AI论文五篇

引子

之前看到AlphaHoldem这篇论文让我心潮澎湃,于是去翻看了一下这篇论文的一些参考文献,选了几篇进行阅读,从读过的论文里选了几篇进行梳理。

所以论文内容可能会有点散,这里也只做简单的概要梳理,如果想了解细节请阅读原文。
在这里插入图片描述

OpenHoldem: A Benchmark for Large-Scale Imperfect-Information Game Research,arxiv2020

这篇论文和AlphaHoldem是来自同一个团队的。这篇论文中也已经加上了AlphaHoldem的部分工作。

在这里插入图片描述
首先是这篇论文提供了一个在线测试平台。可以让玩家/AI通过网络连接,一起进行测试。说实话德州扑克的测试平台确实很难找,而且因为各种原因其研究成果也很难开源,而且稍有不慎可能会有法律责任。这个平台目前好像已经打不开了。

在这里插入图片描述
其次是平台的功能介绍。测试平台自然是具备GUI、SDK、Socket、TCP/IP这些基础功能的。并且声称内置了多款NLTH(无限注德州扑克)AI进行强度测试。

为了增加测试的准确度、减小测试的方差,平台用了四种“测试协议”。
Duplicate Poker表示大家交换手牌打。AIVAT表示每手牌减去其平均的价值。这都是为了减少因为随机到不同手牌带来的方差。就像AA本身赢1BB不算什么,因为AA平均可能能赢10BB,27o弃牌输了盲注也不丢人,因为弃牌就是27o损失EV最小的决定。
LBR和DRL-BR都和BR(best response)有关。其目的是评估策略的“可被利用”程度。比如石头剪刀布游戏中,(1/3,1/3,1/3)的纳什均衡混合策略和一直出石头的策略对打,双方胜率持平,但是在best response层面上,纳什均衡混合策略的可利用性就为0。

SuphX: Mastering Mahjong with deep einforcement learning. 2020

日本麻将AI——苏菲。当初学习日本麻将的时候我还看大佬解读过苏菲的牌谱。隐隐约约记得,苏菲打牌有自己的风格。相比专家人类,苏菲更喜欢留安全牌、喜欢立直、喜欢做混一色之类的。(记不太清了,可能会有出入)

为了针对麻将复杂的规则,苏菲主要使用了三个技巧:

  1. 信息使用CNN识别游戏界面,行动流程较多使用手工设计约束。(解决流程问题)
  2. 鸣牌、胡牌使用不同模型。(独立判断是否鸣牌)
  3. 使用稀疏矩阵编码方式。(保留信息)
  4. 带熵正则化的分布式强化学习。(保证探索)

在这里插入图片描述
有作者亲自讲述苏菲设计过程的细节的视频,bilibili/youtube搜一下应该可以搜到。

创新点/特殊点:

  • 单独使用GRU预测全局reward。结合点差、手牌、舍牌进行判断。
  • 针对初始牌面对策略做出优化。好牌、码量落后就激进,差牌、码量领先就保守之类的优化。
  • Oracle Guiding。完全信息->可见信息,逐步进行训练。

RLCard: A Toolkit for Reinforcement Learning in Card Games

在这里插入图片描述
RLCard还是一个不错的平台,但是基于它的工作似乎不多。

简单罗列一些相关资源:
https://github.com/datamllab/rlcard
Official Website: https://www.rlcard.org
Paper: https://arxiv.org/abs/1910.04376
Related Project: DouZero Project
更具体的链接在其 Official Website 给出。

RLCard是一个国人编写的,基于pytorch的,包含11种卡牌游戏环境的AI,也包含一些比较粗糙的agent、测试demo,上手应该不是很困难。

值得一提的是,它的代码解耦做得很不错,因为维护比较少所以我还加QQ群提了几个issue,作者都很快就解决了。希望这个平台越来越好。

DouZero: Mastering DouDizhu with Self-Play Deep Reinforcement Learning, ICML2021

这是基于上面提到的平台RLCard做得一款斗地主AI,水平的话超越当时的所有斗地主AI,可惜不及专家人类。

论文的代码都是开源的。Gitee和Github上都有。

AI使用DMC算法(Deep Monte-Carlo),这和Alpha系列的MCTS还是有一定区别的。标题里的Zero表示它是从零开始学习的。他的作者也是RLCard平台的作者。

DouZero采用了这些小技巧:

  • 把 Q表格换成神经网络。
  • 用多个进程来采样,提高效率。
  • 采样中引入 e-greedy机制来鼓励探索。
  • 用Mean-Square-Error(MSE) 的损失来更新 Q网络。

在这里插入图片描述
其手牌信息直接用一个矩阵进行编码,然后出牌状态也用矩阵编码。历史出牌信息选择用LSTM进行保留,最后把状态信息、动作信息一起输入神经网络中,直接输出对动作Q值的评估。之后就可以用MSE方法来训练了。

网络结构和模型都比较简单,但这里面的思想还是值得借鉴的。


2022.4.20 补充
昨天看到网易关于斗地主的最新工作:perfectDou。补充介绍一下。

perfectDou:Dominating DouDizhu with Perfect Information Distillation

文章将DouZero作为对比对象之一,呈现了更加优异的性能。虽然基于RLCard平台实现,但是具体代码暂时没有开源。

perfectDou在训练时使用了全局的手牌信息,也就是把斗地主问题转化为“完美信息博弈”然后进行训练。然后直接把训练后的策略拿来玩不完美信息博弈。这是全文最主要的核心idea。这和苏菲那种从“完美信息博弈”逐渐过渡到“非完美信息博弈”的训练方式不同,这自始自终都是当作“完美信息博弈”在训练。

为此,表征了斗地主游戏和手牌,用来表示完美和不完美的信息。为了训练agent,采用了PPO,并在并行训练范式中具有广义优势估计(GAE)。在实验部分,简单说明了PerfectDou击败所有现有的AI程序、实现最先进的性能的原因。

在这里插入图片描述
论文给出的整体架构相比之前的DouZero,多出来的是“Acailable Actions Feature”这部分。网络结构将所有可用的操作编码为特征向量,他们将节点和每个操作链接起来,得到了所有合法的操作分布。
在这里插入图片描述

相比douZero,明显地感觉到,perfectDou使用了更多的手工专家信息,所以它具有更好的测试性能也并不令人意外。更值得一提的是里面定义的一个“Node Reward ”的概念,用来解决斗地主游戏奖励稀疏的问题。

Node Reward的功能就是尽量给每一次出牌一个奖励函数。
在这里插入图片描述

这里用到了一个Ntrole的概念,指的是如果没有其他人出牌、自己出完所有牌的最少次数(这个是手工规则下的算法题)。每一次出牌的时候都可以更新Advt作为奖励函数。虽然这个奖励函数可能不是很契合,但确实很大程度上解决了奖励稀疏的问题。

总所周知MC方法存在方差大、运行慢等缺点。另外,这篇论文用的是PPO+GAE的方法,没有使用DeepMC的算法。原因就是在于用上面Node reward的方式使得奖励函数不稀疏,用PPO可以达到较好效果。

都看到这里了,就动动手点个赞吧~

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邵政道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值