A SOLUTION TO CHINA COMPETITIVE POKER USING DEEP LEARNING
概要
当AI遇到游戏才是最有趣的,本文里利用CNN玩斗地主(China Competitive Poker),在一定条件下可以击败人类选手了,也算SOA吧。文中斗地主规则如下
- 三个玩家,一个地主,两个农民
- 每个玩家17张牌,地主可以获得额外的3张牌,但开局前要向农民展示
- 三张可以带一张或一对,这三张称为Main Group,带出去的牌称为Kicker Card
- duplicate Mode
因为每一轮每个玩家拿到的牌是随机的,难以分辨哪个玩家更厉害,文中提出用duplicate Mode来比较两组玩家: A,B两组玩家(实验中似乎一组是人,另一组是AI),每组三个玩家,A中抽取一个人做地主,B中抽取两个人做地主,组成一桌游戏;B中余下的一个人做地主,A中余下的人做农民,构成第二桌游戏。游戏牌有裁判分发,保证两个桌上相同角色的牌是一样的,如此比赛多次,地主胜率高的一组牌技比较厉害。
框架
Bid Network
叫牌模块,根据手中的牌决定是否当地主,不在本文的讨论范围内
Policy Network
10层的CNN网络,包括一个全连接层,激活函数是relu。利用(state,action)对训练,文中采用8百万条游戏记录训练该网络,每个游戏记录都是完整的一场游戏,可以被拆分成很多(state,action)对。
该网络的输入是15x19x21的二值向量,第一个维度15表示牌的类别,3到大王;第二个维度19表示每个牌的属性,单牌,对子,数目(1到4)等,最后一个维度21包含一些时序信息,记录最近6轮每个玩家出的牌,如下图
网络的输出是309个action的概率
Kicker Network
理论上有上述两个模块就可以完成游戏,但是三个或四个带牌的不同,导致Policy Network的输出达到上千个,为此引入Kick Network。Policy只预测Main Group以及
Kick Card类型(单牌/双牌),Kicker Network预测具体的Kick Card类型。
网络的输入是当前剩余的牌和Policy Network的输出,输出是具体的Kicker Card, 包括15种单牌和13种双牌,共计28种类型。