Suphx:微软麻将AI算法以及Q&A摘要

注:微软研究院的Suphx团队已经对论文进行了详细的解读,这里只是我自己读原论文算法部分的记录,以及对Suphx团队在4月9日的直播中的Q&A部分的摘要。

Suphx(Super Phoenix)是一个主攻4人日本麻将的AI,主要基于深度强化学习进行训练,除此之外还应用了全局奖励预测(global reward predictction)、先知教练(oracle guiding)以及运行时策略适应(run-time policy adaption)等新技术,在最大的日本麻将在线对战平台天凤(tenhou.net)上超过了99%的人类玩家。

麻将的困难之处

麻将是一个不完全信息多人游戏,它的复杂规则、计分方式和隐藏信息使它变成一个充满挑战的AI研究项目:

  • 游戏规则:麻将有许多种动作(actions),包括立直、吃、碰、杠、舍牌等,而且这些动作之间的顺序会被鸣牌、抢杠等打断。因此构建一个游戏树非常复杂,而且就算构造出来,在同一个选手的两个连续动作之间会包含大量的路径,因此在过往类似项目中效果很好的蒙特卡洛树搜索(Monte-Carlo tree search,MCTS)以及Counterfactual Regret(CFR)最小化都很难直接应用在麻将中。
  • 计分方式:一次麻将对战由许多局组成,比如日麻中最常见的半庄战通常由8-12局组成,最终排名由选手的累计分数决定,因此每局游戏的得失分数并不能反映选手打的好坏。比如最后一局中,分数最高的选手在领先优势较大的情况下可以选择给分数低的选手放铳来确保以一位结束比赛。另外麻将中和牌的大小跟概率通常负相关,因此分数和速度的取舍也是反应选手实力的重要部分。
  • 隐藏信息:在麻将中每个选手有最多13张牌是别的选手看不到的,除此之外牌山中还有14张牌是摸不到的,摸得到的70张牌也只会在被人摸到并打出之后才可见。因此在每个决策点有 1 0 48 10^{48} 1048种隐藏状态需要考虑,比之前研究过的不完全信息游戏(比如德州扑克)要多许多,因此AI也更难把奖励跟观察到的信息联系起来。

Suphx的决策流程

为了解决这些问题,Suphx使用了5个深度卷积神经网络:舍牌模型(Discard model)、立直模型(Riichi model)、吃模型(Chow model)、碰模型(Pong model)和杠模型(Kong model),每个模型的功能如下表所示:

模型 功能
舍牌模型 在通常情况下决定要舍哪张牌
立直模型 决定是否立直
吃模型 决定是否吃以及怎么吃
碰模型 决定是否碰
杠模型 决定是否杠

这些网络先用专业选手的牌谱进行训练,然后被用在深度强化学习中作为策略进行自我对局(self-play)。除此之外还有一个基于规则的模型来决定是否和牌。完整的决策流程见下图:
Suphx决策流程

模型结构

日本麻将中总共有34张不同的牌,所以Suphx中使用多个 34 × 1 34 \times 1 34×1的通道来表示场上的状态,比如手牌可以用四个通道来编码,如下图所示:
手牌编码

类似的,副露、宝牌以及舍牌顺序也通过这种方式进行编码。分类特征(categorical feature)用全为 0 0 0 1 1 1的多个通道来编码。整数特征(integer feature)则会被区间化,然后每个区间用全为 0 0 0 1 1 1的通道来编码。

除了这些直接可见的状态之外,作者还设计了look-ahead特征用来表示打出某一张牌后赢牌向听数和分数,例如使用一个特征来表示打出某张牌后能否在进3张牌后和出12000点。由于日麻中总共有89种面子和34种对子,能和的牌型数量非常多,所以作者没有考虑对手的行为(例如通过舍牌判断是否在做混一色/清一色),只是用深度优先搜索来计算自己和出各种牌型的概率。在这种简化之下,总共构建出100多种look-ahead特征,每种特征都用一个34维的向量来表示。

除了输入和输出维度之外,所有模型的网络结构都差不多,具体结构和维度如下图下表所示。在吃、碰、杠模型中,除了状态特征和look-ahead特征以外,还有对哪些牌吃、碰、杠的信息。另外,这些模型都是没有池化层的,因为每个通道中的每一列都有自己的含义,所以池化之后会导致信息损失。

各模型输入输出维度:

模型 输入维度 输出维度
舍牌模型 34 × 838 34 \times 838 34×838 34 34 34
立直模型 34 × 838 34 \times 838 34×838 2 2 2
吃模型 34 ×
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值