机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 9240|回复: 11

如何让机器人通过自学习的方式学会玩“石头、剪刀、布”游戏?

[复制链接]
发表于 2016-4-8 17:44:57 | 显示全部楼层 |阅读模式
本帖最后由 刘景亚 于 2016-4-11 18:26 编辑 : e) V  U0 R8 h$ w0 V6 a

$ {6 J1 c, O/ I( r( l; t% S& k前段时间的人机围棋大战赚足了人们的眼球,Google公司的AlphaGO也使机器学习和深度学习让更多的人有了一定的了解,可谓做了一次很好的科技普及。$ ~- ]  P- m6 G
现在我们从简单问题入手,如何基于机器学习,通过自学习的方式让机器人学会玩“石头、剪刀、布”游戏?
! w1 ^- \/ `. Z不知大家有何建议?欢迎大家发言参加讨论。
* w. P0 f- G! x7 _- n5 f
*******************************************************************************************
) g! v# Q- K; g8 w5 q; t分割线以上为原贴4 U( p- W% g! g4 Z4 |6 L
*******************************************************************************************
7 y7 u( k% O; t4 N/ X3 k9 n. [非常感谢各位大侠的参与和讨论。3 p8 A! I& d5 C7 H
关于机器人玩“石头、剪子、布”游戏,我本打算分三个问题和步骤和大家一起探讨。看到讨论中,大家对这三个方面都有所涉及。6 {: ^) H+ R7 N7 @4 t8 ~/ D4 s
下面我把我对这个问题的认识抛出来与大家交流分享。
# h# k3 Z; @/ \. u/ I' C9 }要让一个机器人玩“石头、剪刀、布”,我们分三步走。
* A6 g) F. f  n8 a第一步,如何让机器人通过自学习的方式学会游戏规则?比如,一开始机器人并不知道石头、剪子和布,哪个赢哪个,要玩游戏首先得学会规则。当然要实现这一步,有比较简单的办法,最直接的是程序员编程时,直接定义这个规则,这是以前经常用的传统的方法。现在我们想通过一种新的方法来实现,让机器人像小孩一样,通过不断地实践、摸索和总结掌握这个规则,也就是自学习和机器学习。
/ h6 F7 @; Q" C" D第二步,如何让机器人在掌握规则后大概率获胜?0 i) v+ l) G2 l- L, x( v( y
第三步,能不能通过一种方法,使机器人在每局对战时100%获胜?
& ]( p0 a  s& T1 ^0 v- p*****************************************************************************************
; c# t" E! h* W5 a# N" T关于第一步,可以用如下方法实现:让机器人和人对战,在对战的实践过程中训练机器人,使其不断自学习以掌握规则。在对战,人始终随机出,机器人一开始并不知道规则,也随机出。赢了有奖励,输了有惩罚,随着对战次数的增多,机器人就会对出拳的种类形成“价值判断”。在训练过程中,机器人会反复判断,是随机出还是基于已经学到的部分知识。经过不断训练,机器人就会学会游戏规则。这个过程区别于以往的程序员直接定义,和人类的学习过程十分类似。
: s! b! E  x- D% i- G  W* E. z+ W那么这个方法有没有效果,我们验证一下。+ [8 }  c, m3 o6 m) d1 H8 m
下图是我与机器人玩25局的情况,注意这个机器人一开始并不知道游戏规则。我随机出拳,机器人一开始也随机出,赢了奖励,输了惩罚。大家会发现,从第11局开始,机器人就已经完全掌握了规则。
4 l8 w; m6 o1 b/ C. x: C7 `: L/ ~- c' D3 N' K+ r# \
$ @( x% H6 R( h/ w
- y3 L6 }9 R6 I2 ?" ^# u
) j0 i, b' ^* X. b6 F

8 c7 o- S4 g% z- n/ C" O

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
回复

使用道具 举报

发表于 2016-4-8 17:54:56 | 显示全部楼层
这种纯概率的东西,要做算法是很简单,但是胜率要提上去不容易啊
回复 支持 1 反对 0

使用道具 举报

发表于 2016-4-8 18:15:31 | 显示全部楼层
应该上一个图形处理系统,先分辨对面这家伙是谁,再决定怎么玩,
4 [& H% Y  h' D, |1 ~0 Y% v4 r7 G/ J* h6 V
人的活动,是有固定姿态的,比如下一步怎么活动,有细微表现,总结了这些姿态,就可以胜了对面的家伙,5 ~$ ^4 G, J" v0 R& h2 v& P

7 U' R# \* E0 R' L4 D
回复 支持 反对

使用道具 举报

发表于 2016-4-8 18:38:22 | 显示全部楼层
本帖最后由 crazypeanut 于 2016-4-8 18:39 编辑
& l4 X; B5 @. j; r# G" f+ f
' d( ~" @7 l: m/ c2 s如果不考虑心理学因素的话,猜拳不是博弈系统,是一个纯概率系统,样本空间为(剪,石),(剪,布),(剪,剪),(石,剪),(石,布),(石,石),(布,剪),(布,石),(布,布): l) O. B4 C6 W0 G$ F% _

0 a$ ^) r6 }3 W+ V获胜组合是(剪,布),(石,剪),(布,石),概率为1/3,相应的,平局组合和输掉组合均为1/37 h. Y6 d5 q) @

* x0 @' [6 d3 [# X6 K. ?因此,如果没有心理学算法在里面,用随机算法随机选择出拳的话,获胜几率不会超过1/35 L# {, r6 M8 b* }+ [5 w

/ P  e. t; i& v  V4 W9 G1 e而将心理学因素考虑进去,就像8爷所说的,要加上图形系统,增加了复杂性,也偏离了正道
5 d! U8 h5 `$ p+ v& e/ D( C6 y, j0 k0 W
个人建议,选择五子棋或者黑白棋作为研究对象更合适,五子棋和黑白棋应该算是最简单的博弈系统了,棋子就黑白两种,相对容易处理
5 E6 j, ]+ w) t0 U  V3 s6 }+ @- e) B+ ]7 b! P+ ^9 b; ^* _
有人可能说井字棋更简单,但是作为博弈系统,井子棋有不败的策略,没有太大的研究价值
回复 支持 反对

使用道具 举报

发表于 2016-4-8 19:06:20 | 显示全部楼层
crazypeanut 发表于 2016-4-8 18:38 " @2 _! e3 U5 ]* C
如果不考虑心理学因素的话,猜拳不是博弈系统,是一个纯概率系统,样本空间为(剪,石),(剪,布),(剪 ...

5 i7 S6 M7 F3 l1 c+ |, V% l+ u* p之前好像有一个日本的机械手,就是这么干的,动作相当灵活2 x2 P4 A$ E7 m. G0 I' n
回复 支持 反对

使用道具 举报

发表于 2016-4-8 19:54:31 | 显示全部楼层
     玩石头剪刀布没问题。很简单。生成1 2 3 随机数分别代表石头剪刀布。  自学习估计这个论坛里懂得就少了。去个程序员论坛估计能弄明白自学习的程序的都不多。顶多就是 分析下 这个人出什么的概率,和出完什么再出什么的概率。然后弄个算法分析下他会出什么的概率最大。再高科技点,就分析他出什么之前的浑身表情动作等。
回复 支持 反对

使用道具 举报

发表于 2016-4-8 20:25:16 | 显示全部楼层
这是一个随机概率的问题,石头,剪刀,布就是三个动作点,然后随机输出一个动作点就会呈现一个动作就好了,从理论上来讲是完全可行的
回复 支持 反对

使用道具 举报

发表于 2016-4-8 20:45:29 | 显示全部楼层
楼主的意思应该是“如何让机器人学会玩剪刀石头布”,而不是“使机器人玩”剪刀石头布吧……
8 }9 h) B7 z) p# v9 i楼上都跑偏了吧
回复 支持 反对

使用道具 举报

发表于 2016-4-9 07:58:07 | 显示全部楼层
可以根据对方出拳的情况,用多项式拟合,然后用多项式预测下一步对方出什么,对方每出一次拳,就修正多项式
回复 支持 反对

使用道具 举报

发表于 2016-4-11 10:14:52 | 显示全部楼层
用上“分歧终端机”呢,非诚勿扰里的那个

点评

可作为应用案例  发表于 2016-4-11 18:25
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-4-3 11:26 , Processed in 0.085694 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表