前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >游戏AI小试牛刀(1)

游戏AI小试牛刀(1)

作者头像
刀刀老高
发布2018-04-10 17:50:05
6430
发布2018-04-10 17:50:05
举报
文章被收录于专栏:奇点大数据奇点大数据

现在大家在各种领域使用机器人的事情是越来越多,包括在家政领域和教学领域等等这些在我们身边每天都能接触到的领域。而游戏中使用AI也是一件非常有趣的事情。

为此,我们也做了一些有趣的尝试,比如用它来玩斗地主。

首先是样本的准备,一部分样本是可以从某些平台上获取的,一部分样本也是可以通过程序来自动生成的——这并不新鲜,反正AlphaGo也是这么干的。

其次是建模。建模的方式有很多种,因为建模的本质是建立一种数据逻辑的假说,然后通过样本来进行验证和调整。在这个模型中当然我们首选还是使用基于深度学习模型的CNN网络和DQN网络了。

最后是训练与对抗。在这个过程中,当然还是有很多技巧存在的,在这个不断给予机器人越来越多样本的过程中,机器人也是在不断学习与进化。细节我们有机会再为大家展开。

任何机器人模型在最后训练完了都是一个偌大的权重矩阵,把那个东西给大家看显然不合适,也看明白是在做啥。那我们就不妨看看机器人加了人机接口以后的表现吧。

以我们目前做的这个机器人初级版本为例。首先是选择身份,即手动选择地主,还是下家农民或上家农民。

请选择角色:0为地主,1为先出牌农民,2为后出牌农民:

1

一旦选择以后就可以开始发牌了,这次我们选择了一个下家的农民,这样一来上家的地主,下家的农民就都由机器人来扮演,它们都希望自己能获胜,先来看看配合效果如何。

手牌

当前手牌 3 4 4 5 5 6 6 7 8 9 9 10 J Q Q K 2

地主牌数 20

农民2牌数 17

地主出牌

3 4 5 6 7 8 9

#################

手牌

当前手牌 3 4 4 5 5 6 6 7 8 9 9 10 J Q Q K 2

地主牌数 13

农民2牌数 17

*****************

所有可选出牌

['4 5 6 7 8 9 10', '5 6 7 8 9 10 J', '6 7 8 9 10 J Q', '7 8 9 10 J Q K', '']

出牌:

地主一下子出了一大串3~9,这时我们的选择也比较多4~10,5~J,6~Q,7~K。不过鉴于散牌比较多,这一把就先不出了。

农民2出牌

[]

地主出牌

5

#################

手牌

当前手牌 3 4 4 5 5 6 6 7 8 9 9 10 J Q Q K 2

地主牌数 12

农民2牌数 17

*****************

所有可选出牌

['6', '7', '8', '9', '10', 'J', 'Q', 'K', '2', '']

出牌:

10

地主出5,那么我们把10先垫出去。

农民2出牌

K

地主出牌

A

#################

手牌

当前手牌 3 4 4 5 5 6 6 7 8 9 9 J Q Q K 2

地主牌数 11

农民2牌数 16

*****************

所有可选出牌

['2', '']

出牌:

最大就是2,在没有大小王出来前不能白白送死,还是过。

农民2出牌

2

地主出牌

B

#################

手牌

当前手牌 3 4 4 5 5 6 6 7 8 9 9 J Q Q K 2

地主牌数 10

农民2牌数 15

*****************

所有可选出牌

['']

出牌:

上家的农民还是挺不善的,直接出了2,把地主的大王斗了下来。

农民2出牌

[]

地主出牌

6

#################

手牌

当前手牌 3 4 4 5 5 6 6 7 8 9 9 J Q Q K 2

地主牌数 9

农民2牌数 15

*****************

所有可选出牌

['7', '8', '9', 'J', 'Q', 'K', '2', '']

出牌:

7

地主出了6,看来它散牌也不少,那我们赶紧把7打出去。

农民2出牌

S

地主出牌

[]

#################

手牌

当前手牌 3 4 4 5 5 6 6 8 9 9 J Q Q K 2

地主牌数 9

农民2牌数 14

*****************

所有可选出牌

['']

出牌:

木想到下家农民兄弟一下子出了小王,而且大家都没炸弹。

农民2出牌

7 8 9 10 J

地主出牌

[]

#################

手牌

当前手牌 3 4 4 5 5 6 6 8 9 9 J Q Q K 2

地主牌数 9

农民2牌数 9

*****************

所有可选出牌

['']

出牌:

上家农民兄弟果然是想搞事情,出了7~J,地主是木有的压,我们是压根没有能压的,好尴尬……

农民2出牌

3 3 A A A

地主出牌

[]

#################

手牌

当前手牌 3 4 4 5 5 6 6 8 9 9 J Q Q K 2

地主牌数 9

农民2牌数 4

*****************

所有可选出牌

['']

出牌:

上家的农民兄弟更猛了,直接出了3个A带2个3,地主还有9张牌,我们还有4张。看来这次胜利在望。

农民2出牌

4

地主出牌

7

#################

手牌

当前手牌 3 4 4 5 5 6 6 8 9 9 J Q Q K 2

地主牌数 8

农民2牌数 3

*****************

所有可选出牌

['8', '9', 'J', 'Q', 'K', '2', '']

出牌:

8

刚说完,这农民兄弟就打了一个4,估计刚才那么猛是这张小4给憋的。那我们跟着地主的7出个8。

农民2出牌

J

地主出牌

2

#################

手牌

当前手牌 3 4 4 5 5 6 6 9 9 J Q Q K 2

地主牌数 7

农民2牌数 2

*****************

所有可选出牌

['']

出牌:

上家农民果断打了J,地主出了当前最大的2。好吧,算你狠,你走牌。

农民2出牌

[]

地主出牌

8

#################

手牌

当前手牌 3 4 4 5 5 6 6 9 9 J Q Q K 2

地主牌数 6

农民2牌数 2

*****************

所有可选出牌

['9', 'J', 'Q', 'K', '2', '']

出牌:

J

一张8而已,看来地主也是一堆散牌,我们出个J看能不能放上家农民走。

农民2出牌

[]

地主出牌

2

#################

手牌

当前手牌 3 4 4 5 5 6 6 9 9 Q Q K 2

地主牌数 5

农民2牌数 2

*****************

所有可选出牌

['']

出牌:

我去,居然不出,什么情况。倒是把地主的2给勾搭下来了。好,我忍。

农民2出牌

[]

地主出牌

Q Q

#################

手牌

当前手牌 3 4 4 5 5 6 6 9 9 Q Q K 2

地主牌数 3

农民2牌数 2

*****************

所有可选出牌

['']

出牌:

地主一对Q,大牌啊!

农民2出牌

[]

地主出牌

K K

#################

手牌

当前手牌 3 4 4 5 5 6 6 9 9 Q Q K 2

地主牌数 1

农民2牌数 2

*****************

所有可选出牌

['']

出牌:

地主一对K,还是大牌啊!

农民2出牌

[]

地主出牌

J

地主胜利

木办法,眼睁睁看着地主走掉。

这一局斗地主虽然看上去平淡无奇,但是却是应用了基于深度学习的模型,可以在对抗中进化。这种技术的意义更在于其实现可以进行迁移,可以应用于其它棋牌类游戏和博弈类场景中,这已经带给我们足够的想象力了。我们期待着它的逐步进化。关于实现原理的讨论,以后在相关场合我们再做分享。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奇点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档