微软亚洲研究院■它的十段功力是如何修炼的,微软麻将AI超越99%人类玩家( 二 )


微软亚洲研究院■它的十段功力是如何修炼的,微软麻将AI超越99%人类玩家
文章图片
Suphx的决策流程及模型架构Suphx的打牌策略包含5个需要训练的模型 , 以应对麻将复杂的决策类型——丢牌模型、立直模型、吃牌模型、碰牌模型以及杠牌模型 , 5个模型都基于深度残差卷积神经网络 。 另外Suphx还有一个基于规则的赢牌模型决定在可以赢牌的时候要不要赢牌 。
微软亚洲研究院■它的十段功力是如何修炼的,微软麻将AI超越99%人类玩家
文章图片
图2:Suphx决策流程
微软亚洲研究院■它的十段功力是如何修炼的,微软麻将AI超越99%人类玩家
文章图片
丢牌模型结构
微软亚洲研究院■它的十段功力是如何修炼的,微软麻将AI超越99%人类玩家
文章图片
立直、吃牌、碰牌、杠牌模型结构这些模型的输入包含了两大类信息:1.当前可观测的信息 , 例如玩家自己的手牌、公开牌(包括丢出来的牌、碰的牌、明杠的牌) , 以及每个玩家的累计得分、座位、段位等等 。 2.对将来进行预测的信息 , 比如打某张牌还需要拿几张牌才能胡牌、能够赢多少分、胡牌概率有多大 , 等等 。 Suphx训练算法Suphx训练过程分为三个主要步骤:首先使用来自天凤平台的高手打牌记录 , 通过监督学习来训练这5个模型 , 然后使用自我博弈强化学习以及由微软亚洲研究院Suphx研发团队设计的两个技术解决麻将本身的独特性所带来的挑战 , 最后在实战时采用在线策略自适应算法来进一步提高Suphx的能力 。 分布式强化学习Suphx的整个训练过程十分复杂 , 需要多GPU和多CPU协同 , 因此Suphx研发团队采用了分布式架构(图3所示) 。 架构包括一个参数服务器以及多个自我博弈节点 , 每个节点里包含了多个麻将的模拟器以及多个推理引擎来进行多个策略之间的博弈(即打麻将) 。 每个自我博弈节点定期将打牌的记录发送给参数服务器 , 参数服务器会利用这些打牌记录来训练提高当前策略 。 每过一段时间 , 自我博弈节点就会从参数服务器拿回最新的策略 , 用来进行下一阶段的自我博弈 。
微软亚洲研究院■它的十段功力是如何修炼的,微软麻将AI超越99%人类玩家
文章图片
图3:分布式训练全局奖励预测麻将的计分规则很复杂——玩家每局有得分 , 一轮游戏根据多局累计分数的排名计算点数 。 如何让麻将AI知道自己打得好不好呢?无论是每局得分还是一轮游戏的最终点数 , 都不适合用来做强化学习训练的反馈信号 。 以最终奖励点数作为反馈信号不能区分打得好的局和打得差的局 , 因此研究员们需要对每局都单独提供强化学习的训练信号 。 但单独计算每局分数也未必能反映出一局打的好坏 , 因为顶级玩家会策略性输牌 , 比如 , 在一轮游戏的最后一两局中 , 累计得分排位第一的选手在累计分数领先较大的情况下 , 会有意识地让排位第三或第四的选手赢下这一局 , 不让排第二位的玩家赢 , 这样就可以稳稳地保住总排位第一 。 也就是说 , 某一局得分为负不一定意味着策略不好 。 因此 , 为了给强化学习训练提供有效的信号 , 需要将最终的游戏奖励适当地归因到每一轮的游戏中 。 Suphx研发团队引入了一个全局奖励预测器 , 它可以基于本局的信息和之前的所有局信息预测出最终的游戏奖励 。 在Suphx中 , 奖励预测器是一个递归神经网络(GRU) , 训练数据来自于高手玩家在天凤平台的历史记录 。 预测器训练好后 , 对于自我博弈生成的游戏 , Suphx研发团队用当前局预测的最终奖励和上一局预测的最终奖励之间的差值作为该局强化学习训练的反馈信号 。 先知教练麻将中存在着丰富的隐藏信息 , 如其他玩家的手牌、墙牌等 , 如果不能获得这些隐藏信息 , 那么就很难确保某个动作(例如丢三万)的好坏 , 这也是麻将很难的一个根本原因 。 在这种情况下 , 虽然Suphx可以通过强化学习来提高策略 , 但学习速度会非常慢 。 为了加快强化学习训练的速度 , Suphx研发团队引入了一个“先知” , 它可以看到所有的信息 , 包括(1)玩家自己的私有手牌 , (2)所有玩家的公开牌 , (3)其他公共信息 , (4)其他三个玩家的私有手牌 , (5)墙牌 。 只有(1)(2)和(3)是正常的玩家可以获得的 , 而(4)和(5)是只有“先知”才能获得的额外的"完美"信息 。


推荐阅读