上次我们说到用深度学习来做斗地主游戏AI的一个实验项目,这次我们来说说技术实现层面的一些问题。
对于这样一个应用场景来说,我们是可以把它当做类似于图片分类的场景去做的。玩家的手牌、牌池里的牌、上下家打出的牌,这些都可以向量化成为用来描述盘面信息的输入向量。或者简单理解成,用这些向量来画一幅图片,图片的内容就是盘面描述。
既然是图片,显然我们可以考虑使用卷积网络来进行处理,设计合适的卷积核来做特征提取,并通过训练来得到合适卷积核参数。
玩过卷积网络的人应该不会陌生,它通过一层一层的卷积核把一个图片进行逐层扫描处理,并在后端输出相应的预测结果。在这样一个训练场景中,我们可以认为一个赢家在短暂的牌局中,每一步都是一个“正样本”——即在当前的牌局情况下,赢家的出牌是一个“好”的出牌样例。那么这个“好”的出牌样例可以作为预测的对象。
每一轮的牌局都不相同,每一轮的出牌内容也不相同,这样就形成了用不同轮的牌局画像信息作为输入,每一轮的赢家出牌作为输出的多个训练样本。
在这个输入的向量中,我们用一个7*15的矩阵来表示其内容,其中:
第一行:代表玩家现在的手牌状态;
第二行:代表玩家上轮出牌记录;
第三行:代表上家上轮出牌记录;
第四行:代表下家上轮出牌记录;
第五行:代表玩家的所有出牌记录;
第六行:代表上家的所有出牌记录;
第七行:代表下家的所有出牌记录;
每一行的15个向量维度分别指A~K以及小王大王的牌数量。
在通过卷积网络后,会形成一个55维的向量:
前面的13个就是A~K各有4个独热维度5种状态,分别表示出0张牌、1张牌……4张牌。后面的三个维度分别指是否出小王,是否出大王,是否过牌。
一旦这种方式确定以后,就可以采用传统的交叉熵损失函数进行训练了,这点和图片的分类预测差别不大。
当训练结束后,在工作时,输入就是盘面信息向量,那么输出的预测值就是机器人认为的最优的出牌策略。这里有个小技巧,就是输出的向量会产生一个排列组合,在这个排列组合中要过滤掉那些不符合规则以及手牌当前不满足的出牌方案,其余的才是真的可以出的牌,选那个precision最高的方案就可以了。
好了,这就是卷积网络打斗地主的一种解决方案。相信未来在众多的方案中会有更多的优秀模型脱颖而出。
【节选自即将由电子工业出版社出版的《数据科学家养成手册》第一章】 什么是科学家 从我们每个人上学前班的时候,我们就开始受到各种各样的启蒙教育,哪怕是捏橡皮泥、跳皮筋、玩弹球这些最最普通最最不起眼的游艺项目,都是我们在锻炼协调性和认识...
本文节选自即将由电子工业出版社出版的《数据科学家养成手册》第三章 中国最早的数学专著是《周髀算经》——原名《周髀》,是算经十书之一。它们是汉、唐一千多年间来民间数学研究方面的专业著作,也曾经一度作为隋唐时代国子监算学科的教科书。 ...
小编说:数据科学存在于生产和生活的各个方面,贯穿于人类社会发展的始终。数据科学作为科学,首先应该满足科学的基本定义。在此基础上,数据科学兼具数据本身的一些特性。本文内容整理自《数据科学家养成手册》认知篇 数据科学是一个巨大而抽象的...
深度学习(deep learning)核心技术开发与应用技术培训班
2017年08月24日 — 2017年08月27日 北京
联系人: 王晓艳 手机:13261770596(微信同号) 咨询QQ:2234927315
深度学习大群QQ群群号:372526178(加群备注:王晓艳邀请)
敬请您转发此信息谢谢!
祝工作顺利!