4006-998-758
新闻动态

推荐 | 南京大学高阳团队带您“玩转”掼蛋

2024-02-02

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图1)

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图2)
推荐 | 南京大学高阳团队带您“玩转”掼蛋(图3)

春节推荐

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图4)
推荐 | 南京大学高阳团队带您“玩转”掼蛋(图5)

民间流传着这样的说法——

“饭前不掼蛋,等于没吃饭

饭后不掼蛋,等于白吃饭”

你知道“掼蛋”是什么吗?


“掼蛋”起源于江苏淮安

“掼”有摔、砸的意思

源于农活中的一个动作“掼麦把”

“蛋”最初为“弹”,即“炸弹”

是一项升级类纸牌游戏


掼蛋打得好,说明有头脑

掼蛋打得精,说明思路清

掼蛋算得细,说明懂经济

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图6)









掼蛋去年以来迅速从江苏火到全国,从体制内火到投资圈,这次又凭借大佬的加持再添一把火,大有取代打高尔夫、德州扑克成为金融圈人士的娱乐首选,并成为通杀各界的新晋“社交密码”之势。于是行业里出现了很多名场面:券商给客户送“掼蛋礼盒”,基金公司举办掼蛋大赛,PE/VC(PE即私募股权投资,Private Equity的缩写;VC即风险投资,Venture Capital的缩写)举全公司之力研读掼蛋教材和技巧秘籍,大佬在聚会时纷纷组起了掼蛋局……
但掼蛋这类博弈游戏具有信息集状态多、动作空间复杂、状态动作难以约简等特点,大部分现有方法难以应用.本文对掼蛋进行研究,由葛振兴, 向帅, 田品卓, 高阳提出的SDMC方法在第2届“中国人工智能博弈算法大赛”取得冠军.
在不确定信息的复杂环境下进行决策是现实中人们经常面对的困难之一,因此具有能够进行良好决策的能力被视为人工智能的重要能力之一. 而游戏类型的博弈作为对现实世界的一种高度抽象,具有良定义、易检验算法优劣等特点,成为研究的主流. 其中以掼蛋为代表的扑克类博弈不仅具有他人手牌未知这样的难点,还由于可选出牌动作与他人手牌情况数量庞大等特点,难以进行高效求解. 
因此,本文提出了一种软深度蒙特卡洛(soft deep Monte Carlo,SDMC)求解方法. 该方法能够更好地融合领域知识,加快策略学习速度,并采用软动作采样策略调整实时决策,提升策略胜率. 所提出的SDMC方法训练出的策略模型参加第2届“中国人工智能博弈算法大赛”时获得冠军. 与第1届比赛冠军策略和第2届其他策略模型的实验对比证明了该方法在解决掼蛋扑克博弈中的有效性.   一起来看看有SDMC方法有哪些过人之处吧。



内容简介

1.首先介绍现有扑克类博弈的求解方法,并分析各个方法的优缺点;其次着重介绍在斗地主中的最新方法,从而更好地介绍本文提出的SDMC方法.

2.介绍SDMC方法,SDMC方法包含软启动与软动作采样2个过程,解决现有方法在以掼蛋为例的扑克博弈中的问题. 同时,为了更好地进行深度学习训练,本文亦创新性地提出了一种针对深度学习的掼蛋扑克博弈编码方法.

3.对本文提出的SDMC方法进行实验分析,使用掼蛋扑克环境,衡量SDMC方法中软启动的加速训练效果,并分别与第1届、第2届“中国人工智能博弈算法大赛”的参赛算法对比,证明SDMC方法的有效性.


亮点图

考虑到由于已有策略并非一定最优,经过初始化过后仍需采取自博弈的方式进行训练,因此软启动考虑在训练过程中融入已有策略而非如文献[19]直接去拟合已有策略方式,如图1(a)所示. 这样既融入了已有策略对当前模型训练进行加速,同时又避免了普通的暖启动方法所面临的过估计等问题.

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图7)

掼蛋扑克博弈编码框架

对于掼蛋扑克牌局状态的编码应至少包含3部分:私有信息、当前可出牌与公共信息. 私有信息一般则为自己的手牌;当前可出牌包含所有可能出牌动作;公共信息包含出牌记录与对局信息,牌局信息指如掼蛋中的牌局等级信息、当前其余玩家手牌数量等当前对局的信息. 在此基础上可以添加额外的信息辅助深度网络进行训练.

状态的编码均采用1位有效编码的形式. 手牌信息根据游戏使用的牌数量构建不同大小的空矩阵,若使用 n 副牌则构建 n×(4×13+2) 大小的矩阵,其中 4×13+2 表示1副牌,4为花色索引,13为点数索引,2表示大小王,当拥有某张手牌时,对应位置的矩阵数值置为1. 对于标准掼蛋规则,由于使用2副牌,因此 n=2,具体卡牌编码如图2“卡牌表示”部分所示.

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图8)

出牌动作的编码类似手牌编码方式,分别对出牌动作的类型、大小与所使用的牌进行编码. 对类型、大小的编码可解决相同出牌具有不同出牌类型与大小情况,如掼蛋中部分具有逢人配的顺子等,以及区分在编码出牌记录时无出牌记录的0填充编码与“过牌”(PASS)在编码时的区别,并提供额外的信息辅助神经网络处理,如图2所示.
对于出牌记录的处理主要包括对出牌动作的编码与出牌动作结构的组织. 对于SDMC与DMC等方法,出牌记录信息会被输入到循环神经网络,因此可采取序列式结构对出牌进行组织,即从下家出牌到智能体自己出牌为止1轮的出牌编码进行拼接.

掼蛋编码方式采用上文的编码框架,每一部分的编码大小如表1所示.

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图9)

掼蛋扑克介绍

掼蛋是国内一种广泛流传的扑克类博弈. 掼蛋博弈使用2副扑克牌,共108张牌,采取2对2的模式对抗,其中每个博弈玩家与对家为1支队伍进行对抗. 本文采用第2届“中国人工智能博弈算法大赛”中的掼蛋规则,下面简要介绍.

1) 等级. 1局掼蛋博弈可以分为若干小局,每小局根据双方队伍等级中最高的决定当前牌局等级,并依据小局胜负情况更新双方的等级. 掼蛋对局中初始双方等级为2,之后依次为3,4,5,6,7,8,9,10,J,Q,K,A.

2) 升级. 每小局对战结束后,仅第1个出完牌的玩家(称为上游)所在队伍可以升级,升级数依据队友出完牌的顺序决定:若队友第2个出完牌(称为二游),则升3级;第3个出完牌(称为三游),则升2级;若队友最后1个出完牌(称为下游),则只升1级.

3) 获胜条件. 当一方队伍到达等级A,并且队伍中一人获得上游,另一人获得二游或者三游.

4) 特殊牌. 掼蛋中和当前牌局等级相同的牌为级牌,其中红桃级牌称为逢人配,可当作任意牌与其他花色牌组合使用.

5) 牌型. 掼蛋中牌型如下:单张、对子、三连对、三同张、二连三、三带二、顺子、同花顺、炸弹、天王炸. 其中炸弹张数多者为大,同样张数按照点数排序,同花顺大于任意不超过5张的炸弹,天王炸为2张大王和2张小王为最大牌型.

6) 牌点大小. 掼蛋中牌点从大到小依次为:大王、小王、级牌、A、K、Q、J、10、9、8、7、6、5、4、3、2. A在搭配成三连对、二连三、顺子、同花顺时,可视作1.

7) 进贡、还贡. 从第2小局开始,由上一轮的下游向上游进贡,挑选1张除红心级牌之外最大的牌给上游. 上游选择1张不大于10的牌给下游还贡. 如果上一局出现一方队伍获得三游和下游,则队伍2人均向对方队伍分别进贡和接受还贡. 如进贡方有2个大王,则可以不进贡.

掼蛋由于使用2副牌,因此具有更高的求解复杂度,对算法训练效率提出了更大挑战. 仅第1轮发牌后的信息集的数量级约为1020,远超斗地主等扑克博弈(斗地主的第1轮发牌后数量级约1014,如考虑去除斗地主的花色影响约为108). 同时考虑到各个玩家拥有更多的手牌产生的指数级增长的可选动作以及等级、逢人配等因素,掼蛋实际信息集数量与大小远超斗地主等扑克博弈.
如上文掼蛋扑克介绍的,掼蛋胜负取决于队伍积分是否超过A,因此通过判断大局胜利的方式给予2队智能体奖励,可能会导致较差的小局内策略获得正奖励,因此在掼蛋环境训练过程中,当小局结束时,对双方队伍给定奖励,奖励分配方式如表2所示,1—1—2—2表示完牌顺序分别为队伍1、队伍1、队伍2、队伍2的选手.
推荐 | 南京大学高阳团队带您“玩转”掼蛋(图10)
首先验证了经过30天训练的SDMC与其他方法的最终胜率与净胜小分,每场对战均进500次,并重复验证5次,最终胜率与标准差如表3所示. 表3中的数据表示算法1对阵算法2时的胜率,如SDMC对抗2nd Top 16胜率为97.5%,算法的排名顺序按照击败(胜率>50%)其他算法的顺序进行排序.

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图11)

同时对于净胜小分,我们详细列出了各种算法之间对战过程中双方小分的获得情况与净胜分,如表4所示. 可以看到SDMC在对战其他参赛方法的时候具有很高的3分得分率,即在掼蛋中有很高的双上(队伍分别以上游和二游完牌)概率,在对战1st Champion时达到44.3%,对战2nd Top 16时达到48.4%,对战1st Top 16时达到68.4%,因此对战过程中的净胜分非常高,对战1st Champion时平均每局净胜达到4955.6分. 同时观察到SDMC与SDMC-无SAS在对抗过程中无论是3分、2分、1分的占比还是净胜分均是SDMC更胜一筹,且SDMC在对战除2nd Top 16的对手时,净胜分均高于SDMC-无SAS.

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图12)

最后为了验证本文提出的软启动方法的实验效果,我们比较了DMC方法、已有策略预训练的方法(基于策略启动的DMC)以及我们提出的采用软启动的SDMC方法对抗1st Top 16时的胜率与平均每小局净胜分曲线,如图3所示,其纵坐标分别为对抗的胜率与平均每小局净胜分,横坐标为训练所用的时间步. 对于每种方法,每次测试记录200局与1st Top 16的胜率与每小局净胜分结果,测试3次,图3绘制了测试的平均值与标准差. 其中基于策略启动的DMC采取与DMC和SDMC相同的神经网络架构与训练方式,不同之处在于基于策略启动的DMC每次自博弈生成轨迹是依据已有策略进行推荐 | 南京大学高阳团队带您“玩转”掼蛋(图13)贪心采样,训练基于策略启动的DMC模型. 基于策略启动的DMC所采用的已有策略与SDMC相同,均为1st Champion.

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图14)

从图3(a)中可以看到SDMC相较于DMC在训练初始阶段取得了较高的胜率提升速度,如在胜率达到60%时,SDMC需要约推荐 | 南京大学高阳团队带您“玩转”掼蛋(图15)个时间步,而DMC则需要约推荐 | 南京大学高阳团队带您“玩转”掼蛋(图16)个时间步,对于60%胜率,SDMC仅需DMC的68%训练开销. 同样地,在图3(b)中对于净胜小分,SDMC仅需推荐 | 南京大学高阳团队带您“玩转”掼蛋(图17)个时间步即可达到净胜分大于0,而DMC需要约推荐 | 南京大学高阳团队带您“玩转”掼蛋(图18)个时间步,SDMC降低了约35%的时间需求.

总结

本文提出了一种针对掼蛋扑克博弈的软深度蒙特卡洛SDMC方法. SDMC方法在学习过程中不仅采用了软启动方法,结合已有策略,加速模型训练过程,同时采取软动作采样,在实际对战过程中,保证选择的策略在当前模型下的评估值变化不大的情况下对动作进行采样,降低训练过程中方差带来的影响,并增加被对手利用的难度. 在掼蛋环境下的实验表明,本文所提方法SDMC相较于现有方法有着更高的对战胜率与净胜得分. 之后,拟从软动作采样的角度出发,依据现有模型的动作评估值,结合子博弈求解方法提升在实战环境下的策略强度,致力于得到在团体对战情况下的团队最大最小均衡等博弈论角度下的最优策略,最终实现在掼蛋等扑克博弈环境下战胜人类的职业选手.

葛振兴, 向帅, 田品卓, 高阳. 基于深度强化学习的掼蛋扑克博弈求解[J]. 计算机研究与发展, 2024, 61(1): 145-155. DOI: 10.7544/issn1000-1239.202220697

Ge Zhenxing, Xiang Shuai, Tian Pinzhuo, Gao Yang. Solving GuanDan Poker Games with Deep Reinforcement Learning[J]. Journal of Computer Research and Development, 2024, 61(1): 145-155. DOI: 10.7544/issn1000-1239.202220697





END



掼蛋这种来源于民间的游戏活动,已开始成为一种正规的棋牌竞技。首届由国家体育总局棋牌运动管理中心,主办的全国掼牌(掼蛋)公开赛总决赛不久前落幕。上海队最终获得男双和女双两个项目的亚军。全国各种掼蛋比赛纷纷开启!

推荐 | 南京大学高阳团队带您“玩转”掼蛋(图19)

为放大掼蛋游戏的竞技性和产业属性,即将于5月17-18日上海举办的“AI+研发数字峰会(AiDD)”,将邀请南京大学高阳团队带来“基于深度强化学习的掼蛋扑克博弈求解”相关主题内容分享,并在峰会晚宴的掼蛋比赛上进行指导参与。敬请期待!欢迎报名参会参赛~



推荐 | 南京大学高阳团队带您“玩转”掼蛋(图20)

点击阅读原文了解峰会详情~




人才培养的专属成长地图,数字化转型的方法 + 智库。" data-from="2" data-is_biz_ban="0" data-origin_num="109" data-isban="0" data-biz_account_status="0" data-index="0" data-filtered="filtered" style="color: initial; font: initial; font-palette: initial; font-synthesis: initial; forced-color-adjust: initial; text-orientation: initial; text-rendering: initial; -webkit-font-smoothing: initial; -webkit-locale: initial; -webkit-text-orientation: initial; -webkit-writing-mode: initial; writing-mode: initial; zoom: initial; accent-color: initial; place-content: initial; place-items: initial; place-self: initial; alignment-baseline: initial; animation: initial; app-region: initial; appearance: initial; aspect-ratio: initial; backdrop-filter: initial; backface-visibility: initial; background: initial; background-blend-mode: initial; baseline-shift: initial; block-size: initial; border-block: initial; border: initial; border-radius: initial; border-collapse: initial; border-end-end-radius: initial; border-end-start-radius: initial; border-inline: initial; border-start-end-radius: initial; border-start-start-radius: initial; inset: initial; box-shadow: initial; break-after: initial; break-before: initial; break-inside: initial; buffered-rendering: initial; caption-side: initial; caret-color: initial; clear: initial; clip: initial; clip-path: initial; clip-rule: initial; color-interpolation: initial; color-interpolation-filters: initial; color-rendering: initial; color-scheme: initial; columns: initial; column-fill: initial; gap: initial; column-rule: initial; column-span: initial; contain: initial; contain-intrinsic-block-size: initial; contain-intrinsic-size: initial; contain-intrinsic-inline-size: initial; container: initial; content: initial; content-visibility: initial; counter-increment: initial; counter-reset: initial; counter-set: initial; cursor: initial; cx: initial; cy: initial; d: initial; display: initial; dominant-baseline: initial; empty-cells: initial; fill: initial; fill-opacity: initial; fill-rule: initial; filter: initial; flex: initial; flex-flow: initial; float: initial; flood-color: initial; flood-opacity: initial; grid: initial; grid-area: initial; height: initial; hyphenate-character: initial; hyphens: initial; image-orientation: initial; image-rendering: initial; inline-size: initial; inset-block: initial; inset-inline: initial; isolation: initial; letter-spacing: initial; lighting-color: initial; line-break: initial; list-style: initial; margin-block: initial; margin: 0px; margin-inline: initial; marker: initial; mask: initial; mask-type: initial; max-block-size: initial; max-height: initial; max-inline-size: initial; max-width: 100%; min-block-size: initial; min-height: initial; min-inline-size: initial; min-width: initial; mix-blend-mode: initial; object-fit: initial; object-position: initial; object-view-box: initial; offset: initial; opacity: initial; order: initial; orphans: initial; outline: 0px; outline-offset: initial; overflow-anchor: initial; overflow-clip-margin: initial; overflow: initial; overscroll-behavior-block: initial; overscroll-behavior-inline: initial; overscroll-behavior: initial; padding-block: initial; padding: 0px; padding-inline: initial; page: initial; page-orientation: initial; paint-order: initial; perspective: initial; perspective-origin: initial; pointer-events: auto; position: initial; quotes: initial; r: initial; resize: initial; rotate: initial; ruby-position: initial; rx: initial; ry: initial; scale: initial; scroll-behavior: initial; scroll-margin-block: initial; scroll-margin: initial; scroll-margin-inline: initial; scroll-padding-block: initial; scroll-padding: initial; scroll-padding-inline: initial; scroll-snap-align: initial; scroll-snap-stop: initial; scroll-snap-type: initial; scrollbar-gutter: initial; shape-image-threshold: initial; shape-margin: initial; shape-outside: initial; shape-rendering: initial; size: initial; speak: initial; stop-color: initial; stop-opacity: initial; stroke: initial; stroke-dasharray: initial; stroke-dashoffset: initial; stroke-linecap: initial; stroke-linejoin: initial; stroke-miterlimit: initial; stroke-opacity: initial; stroke-width: initial; tab-size: initial; table-layout: initial; text-align: initial; text-align-last: initial; text-anchor: initial; text-combine-upright: initial; text-decoration-line: initial; text-decoration-skip-ink: initial; text-emphasis: initial; text-emphasis-position: initial; text-indent: initial; text-overflow: initial; text-shadow: initial; text-size-adjust: inherit; text-transform: initial; text-underline-offset: initial; text-underline-position: initial; touch-action: initial; transform: initial; transform-box: initial; transform-origin: initial; transform-style: initial; transition: initial; translate: initial; user-select: initial; vector-effect: initial; vertical-align: initial; visibility: initial; border-spacing: initial; -webkit-box-align: initial; -webkit-box-decoration-break: initial; -webkit-box-direction: initial; -webkit-box-flex: initial; -webkit-box-ordinal-group: initial; -webkit-box-orient: initial; -webkit-box-pack: initial; -webkit-box-reflect: initial; -webkit-highlight: initial; -webkit-line-break: initial; -webkit-line-clamp: initial; -webkit-mask-box-image: initial; -webkit-mask: initial; -webkit-mask-composite: initial; -webkit-print-color-adjust: initial; -webkit-rtl-ordering: initial; -webkit-ruby-position: initial; -webkit-tap-highlight-color: initial; -webkit-text-combine: initial; -webkit-text-decorations-in-effect: initial; -webkit-text-fill-color: initial; -webkit-text-security: initial; -webkit-text-stroke: initial; -webkit-user-drag: initial; -webkit-user-modify: initial; white-space: initial; widows: initial; width: initial; will-change: initial; word-break: initial; word-spacing: initial; x: initial; y: initial; z-index: initial; box-sizing: border-box !important; overflow-wrap: break-word !important;">


推荐 | 南京大学高阳团队带您“玩转”掼蛋(图22)


返回列表