机械必威体育网址

标题: 如何让机器人通过自学习的方式学会玩“石头、剪刀、布”游戏? [打印本页]

作者: 刘景亚    时间: 2016-4-8 17:44
标题: 如何让机器人通过自学习的方式学会玩“石头、剪刀、布”游戏?
本帖最后由 刘景亚 于 2016-4-11 18:26 编辑
& ]  g  o: M& _) w  M; F' A; l6 h) R8 A1 p
前段时间的人机围棋大战赚足了人们的眼球,Google公司的AlphaGO也使机器学习和深度学习让更多的人有了一定的了解,可谓做了一次很好的科技普及。
& q, z+ h& Q/ _3 k现在我们从简单问题入手,如何基于机器学习,通过自学习的方式让机器人学会玩“石头、剪刀、布”游戏?  ^! J* h9 ?1 L& [* c
不知大家有何建议?欢迎大家发言参加讨论。
$ |0 r6 j  z5 N% Z8 ?. d
*******************************************************************************************
9 N: W3 _0 P( A0 D1 t& y; _, i分割线以上为原贴
! |$ b) l" J# [( t9 B: n*******************************************************************************************
( t& X/ K8 g0 D非常感谢各位大侠的参与和讨论。
/ t0 r. O& w/ V1 G1 R" s5 i# d关于机器人玩“石头、剪子、布”游戏,我本打算分三个问题和步骤和大家一起探讨。看到讨论中,大家对这三个方面都有所涉及。! D& [- _8 f2 O9 t" ^, x  Z
下面我把我对这个问题的认识抛出来与大家交流分享。+ H5 V. L' I6 y, }; @0 k' E
要让一个机器人玩“石头、剪刀、布”,我们分三步走。
& x+ V* q3 U: T; `* s第一步,如何让机器人通过自学习的方式学会游戏规则?比如,一开始机器人并不知道石头、剪子和布,哪个赢哪个,要玩游戏首先得学会规则。当然要实现这一步,有比较简单的办法,最直接的是程序员编程时,直接定义这个规则,这是以前经常用的传统的方法。现在我们想通过一种新的方法来实现,让机器人像小孩一样,通过不断地实践、摸索和总结掌握这个规则,也就是自学习和机器学习。1 v1 J, Q& s+ f1 I5 g$ ], b4 u4 d, A
第二步,如何让机器人在掌握规则后大概率获胜?
, ], X" {& s/ j. U5 M$ w' Q第三步,能不能通过一种方法,使机器人在每局对战时100%获胜?
9 m, w! n: t* n) e0 Q! L) t*****************************************************************************************/ D2 Y+ x" a' M+ ^: p# p2 B
关于第一步,可以用如下方法实现:让机器人和人对战,在对战的实践过程中训练机器人,使其不断自学习以掌握规则。在对战,人始终随机出,机器人一开始并不知道规则,也随机出。赢了有奖励,输了有惩罚,随着对战次数的增多,机器人就会对出拳的种类形成“价值判断”。在训练过程中,机器人会反复判断,是随机出还是基于已经学到的部分知识。经过不断训练,机器人就会学会游戏规则。这个过程区别于以往的程序员直接定义,和人类的学习过程十分类似。% _, }7 }/ f8 F: x
那么这个方法有没有效果,我们验证一下。9 {) ]1 G; n# x( p# Y
下图是我与机器人玩25局的情况,注意这个机器人一开始并不知道游戏规则。我随机出拳,机器人一开始也随机出,赢了奖励,输了惩罚。大家会发现,从第11局开始,机器人就已经完全掌握了规则。0 C5 E9 Z6 ?/ @$ S5 H. P. ^

8 P! m0 V0 q$ Z* r
[attach]383558[/attach]
; @* e2 X& d! N- q( F5 c$ ~3 v; _1 b) z( z6 j4 B4 ~! W) I* J7 y5 E2 n; Z/ {

5 [+ A. m( V! b+ P( _% ]- y, M5 L& G, `

作者: pacelife    时间: 2016-4-8 17:54
这种纯概率的东西,要做算法是很简单,但是胜率要提上去不容易啊
作者: 2266998    时间: 2016-4-8 18:15
应该上一个图形处理系统,先分辨对面这家伙是谁,再决定怎么玩,( ~8 D& d/ g+ m0 E; Q4 }5 `- N
8 u1 g8 \8 S9 D& Y' g& I
人的活动,是有固定姿态的,比如下一步怎么活动,有细微表现,总结了这些姿态,就可以胜了对面的家伙,
3 ?5 V9 R9 L3 L7 E' Y, I& }* {- d! N8 c. a

作者: crazypeanut    时间: 2016-4-8 18:38
本帖最后由 crazypeanut 于 2016-4-8 18:39 编辑
( s9 U- U0 F5 z' f! X9 M$ U; R0 Q8 E: P2 q$ E$ H$ @( {& z$ ?+ }
如果不考虑心理学因素的话,猜拳不是博弈系统,是一个纯概率系统,样本空间为(剪,石),(剪,布),(剪,剪),(石,剪),(石,布),(石,石),(布,剪),(布,石),(布,布)
8 U5 z' w9 a" l, J- `. s$ z* T1 U: w  W/ z$ ], L
获胜组合是(剪,布),(石,剪),(布,石),概率为1/3,相应的,平局组合和输掉组合均为1/35 i! z# Y) v" }( D/ W

9 D( }2 e$ k* c: j: y0 @5 ^4 m因此,如果没有心理学算法在里面,用随机算法随机选择出拳的话,获胜几率不会超过1/32 ?6 ~! V+ q1 F" G

! u7 A/ u* U; q$ _( N# ~而将心理学因素考虑进去,就像8爷所说的,要加上图形系统,增加了复杂性,也偏离了正道- N7 _. t1 X  k8 U+ s

( w4 F$ V' ~! A4 U/ k" a7 P" N个人建议,选择五子棋或者黑白棋作为研究对象更合适,五子棋和黑白棋应该算是最简单的博弈系统了,棋子就黑白两种,相对容易处理0 I# w/ ?/ I% s) B- ~( B1 l# @
; j% r& W" k: ^- C8 B" L: i
有人可能说井字棋更简单,但是作为博弈系统,井子棋有不败的策略,没有太大的研究价值
作者: 木子12    时间: 2016-4-8 19:06
crazypeanut 发表于 2016-4-8 18:38 # x* Z9 F' E( y9 k
如果不考虑心理学因素的话,猜拳不是博弈系统,是一个纯概率系统,样本空间为(剪,石),(剪,布),(剪 ...

2 P3 [/ j  h% F3 D之前好像有一个日本的机械手,就是这么干的,动作相当灵活
6 Q! g; y( L1 \: q. C8 o; g$ z0 r: ~
作者: fiyu1314    时间: 2016-4-8 19:54
     玩石头剪刀布没问题。很简单。生成1 2 3 随机数分别代表石头剪刀布。  自学习估计这个必威APP精装版下载里懂得就少了。去个程序员必威APP精装版下载估计能弄明白自学习的程序的都不多。顶多就是 分析下 这个人出什么的概率,和出完什么再出什么的概率。然后弄个算法分析下他会出什么的概率最大。再高科技点,就分析他出什么之前的浑身表情动作等。
作者: 冷月梧桐    时间: 2016-4-8 20:25
这是一个随机概率的问题,石头,剪刀,布就是三个动作点,然后随机输出一个动作点就会呈现一个动作就好了,从理论上来讲是完全可行的
作者: shiqi67    时间: 2016-4-8 20:45
楼主的意思应该是“如何让机器人学会玩剪刀石头布”,而不是“使机器人玩”剪刀石头布吧……
# {0 Q/ K$ R+ G2 z+ z+ P+ v( k5 E" b楼上都跑偏了吧
作者: huiyu788    时间: 2016-4-9 07:58
可以根据对方出拳的情况,用多项式拟合,然后用多项式预测下一步对方出什么,对方每出一次拳,就修正多项式
作者: wsxm82    时间: 2016-4-11 10:14
用上“分歧终端机”呢,非诚勿扰里的那个
作者: 刘景亚    时间: 2016-4-11 18:42
下图是我与机器人每次玩25局,重复了6次的实验结果。
* }4 q+ @& K7 W/ w+ t5 S) j图中1表示机器人胜,2表示机器人负,3表示平局。8 q  n6 X, ]( n$ |8 O: e
可以看出,机器人基本上在10局左右,就会掌握规则。

) N/ A; p; F: k6 c. `: ][attach]383559[/attach]+ Q6 ~% m7 [+ S0 |. t7 }* \

$ W  C4 ]5 m  a+ a: U. {% |4 |" A4 `6 `# F  i, i

作者: ywjianghu    时间: 2016-5-8 09:46
楼主位没有说明,这个机器人是带视觉识别系统的吧?
, a* O, v( D) X, X4 G3 e单纯从概率和经验上,是无法判断人接下去出什么的。: t! c$ E" Q4 |





欢迎光临 机械必威体育网址 (//www.szfco.com/) Powered by Discuz! X3.4