Python 板


LINE

嗨各位,最近花了一些时间学习机器学习相关主题,想说来用python设计一个会玩21点的 机器人好了,以下会简单介绍我使用的游戏环境,深度神经网路,和相关成果。 一、游戏环境:openAI的gym,简单程式码如下 https://imgur.com/wCFHI5t 可以看到要在python搭建Blackjack环境其实非常简单,import完gym之後用gym.make就能 搭建各种游戏环境。 二、规则: 而我们这个游戏是我们要担任player的角色和庄家(dealer)对赌,我们起始会有两张 手牌,庄家则会有一张。点数方面2~10都以牌面作为点数,J,Q,K都算10点,ace可算1或1 1? 我们只有两种动作可以选择:拿牌(hit)或不拿(stand)。 目标是让手牌点数和最靠近21点,若超过21点(爆牌)则直接判定输了。 在我们决定不拿牌後,换庄家开始拿牌,庄家若手牌和低於17点,必须继续要牌。 最後比谁的牌点数和最靠近21谁就赢了。 後续我还有改写gym的环境让我们可以做双倍加注(double),让玩家可以采取 更多策略,更符合实际情况。 总之这张图的重点在env.step(action)那行,简单说就是 我们随机采取了一个action(0代表stand, 1代表hit)然後observation就是游戏当前状态 ,会回传一组数字:(我方当前手牌和, 庄家手牌, 我方是否有ace),那reward就是强化 学习当中很重要的机制,可以让我们透过这种奖惩机制去训练模型,-1代表输了;0代表 我们还没爆牌或是平手;1代表我们赢了。done回传True或False表示当局结束与否。 在完全采取随机action的情况下玩10万场的胜率约27%。 三、训练方法:Deep Q Learning 我是用keras搭建神经网路的,因为比tensorflow简洁直观。附上我使用的超参。 https://imgur.com/Fbv8Nwp 我搭建了三层fully connected layer,activation function都用relu没问题, 但output layer的activation function就不能用relu了,因为在DQN中我们的input 是游戏的state也就是我们上面提到的observation,我们的output则是在碰到这样的 state,我们“采取各个动作预期的reward们” 打个比方:我们可能input [11, 6, 0],表示我们手牌和是11,庄家拿6,我们没ace。 这个神经网路的output应该要像这样 [-0.4 0.2],其中-0.4表示采取stand预期的 reward,0.2表示采取hit预期的reward,那我们当然希望reward越大越好所以就采取 hit这个动作。 因此这个output通常是有正有负的,不能用relu,那就用linear吧。 再简单提一下memory,是我们储存各个observation跟action的地方,在训练的时候 会从中随机抽样用TD的方法去不断更新我们的神经网路。 四、基本版训练成果: https://imgur.com/9l0Akrl 靠左的数字是我们的手牌,上面的数字是庄家的手牌,H(hit拿牌)或S(stand不拿) 则是这个神经网路打算采取的策略,会有两段是因为上面那段是手上没有ace的情况 ,下面是有ace的。 可以看到这个神经网路已经可以做出和人类非常相近的决策:在大牌选择stand, 小牌选择hit,并在手上有ace的时候更积极hit。而在这样策略下胜率提升到42%, 败率49%。 也就是说平均每下注一百元会输掉七元,虽然相较完全随机玩有显着的进步,但还有 进步空间,因此我决定加入其他战略(double)让玩家可以选择双倍下注,看能不能 让机器人有更聪明的表现。 五、加入double战略 由於openAI的原始程式码并没有double的功能因此我自己改写了一下他们的程式码, 简单来说现在玩家可以选择在第一手要不要double,要是double的话,玩家只能再拿 一张牌,然後庄家开始要牌。 神经网路方面我一样用DQN下去train,只是在output的时候变成输出三种动作的 期望reward。除此之外我参考了周莫烦的code和prioritised replay的paper实作了 优先回放,其中有用到sumtree的资料结构。也加入了doubleDQN的训练方法。 六、double版训练成果 在看这个神经网路的决策之前我们先看一下我们人类推算出的最佳21点战略表。 https://imgur.com/15vKVBF 然後这是我们的神经网路在面对各种情况所下的决策表。 https://imgur.com/eKQzWDW 可以看到明显它学习到在我们握有9, 10, 11且庄家是weak hand的时候可以进行 double,还有在手上有ace的时候该如何double等等。虽然不尽完美,但在我用这个 神经网路下去玩一百万场的结果平均每一百元大约输2.X元左右,如果真的要赢钱, 可能还要加上split的战略和算牌了。 七、结语 其实发文也同时是记录自己的学习笔记和找到同样对RL也有兴趣的朋友、前辈一起 讨论啦,感谢大家耐心看完。要是对我的程式码有兴趣欢迎去我的github按个星https:// github.com/blue0107/DQN-blackjack-pokerbot,欢迎大家讨论 指教啦! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.246.75.8
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1535618051.A.C96.html
1F:推 cutekid: 大推(Y)08/30 16:59
2F:推 Blankfein: 如果state space (observation) 设计成已经出现过的牌08/30 17:15
3F:→ Blankfein: + 自己手上的牌+ 庄家手上已摊开的牌的话 不知道会不08/30 17:16
4F:→ Blankfein: 会变猛很多 等於是让RL agent可以记牌的概念 08/30 17:16
5F:推 bcew: 推解说08/30 17:18
6F:→ b05703: 回BL大:感觉可以试试看 目前我自己写的环境跟gym的环境都08/30 17:28
7F:→ b05703: 是用无限副牌在发的~要改一下08/30 17:28
8F:推 seo074482: 推!08/30 22:07
9F:推 andrew8062: 推!很酷 希望有机会的话可以share出来 08/31 11:29
10F:→ st1009: 欢迎到DataScience板发文唷/ 08/31 13:07
11F:→ st1009: DataScience板是专门研究机械学习 NLP等等资料科学的板, 08/31 13:08
12F:→ st1009: 说不定可以找到一些同好08/31 13:09
13F:→ b05703: 已发 感谢~08/31 14:25
14F:→ b05703: 程式码上传到github罗08/31 21:16
※ 编辑: b05703 (27.246.75.8), 08/31/2018 21:21:10
16F:推 andrew8062: 感谢!周末找时间来研究研究 09/01 03:29
17F:推 admin520: 感谢分享和解说 09/01 17:22
18F:推 weilun911: 感想分享 09/01 21:14
19F:推 blackmaninEE: 推 09/01 23:23
20F:推 ssd860505da: 推 09/02 00:38
21F:推 powerkshs: 大推 09/02 16:33
22F:推 kyrie77: 有趣推个 09/02 20:39
23F:推 kwht: 有趣! 09/02 21:41
24F:推 apoopa: 推一个 09/03 17:00
25F:推 MCDDD: 好猛0.0 09/19 16:05







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP