说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

程序员游戏Style:亚特兰大极客使用机器学习玩转Flappy Bird

HTML文档下载 WORD文档下载 PDF文档下载
无限的重开始和撞柱子,这绝对不是程序员玩Flappy Bird该有的节奏。对于极客光环笼罩的人类,节奏绝对该是这样的:XX小时的重开始后,笨鸟完全停不下来了!

【编者按】Flappy Bird虽然下架了,但是相信仍有一大部分人还挣扎在它的阴影之下——游戏看似简单,但得分只在小两位数上徘徊,有时甚至是可怜的一位数。搜狗产品经理@光芊源更简单的分析了这个游戏会火的原因:用户往往抱着“可以拿高分”的心态,却总是因为“没注意”而失败。在回答中,网友@任杰还进行了适当的补充:1,Restart成本很低,秒秒钟的事情;2,平滑的难度曲线,再开始不会感到突兀。不管出于什么原因,Flappy Bird确实火了一把——不仅稳坐App Store和Google Play免费应用排行榜将近一个月,下载量高达5000万次,好评59万条,应用内平均每天广告收入更达5万美元。然而,这个火爆绝对是建立在无数玩家的“痛苦”之上,于是在几番高分无果的情况下,来自CAMPUS BUZZ的小伙SarvagyaVaish决定从自己的专业入手,使用机器学习玩转这头笨拙的小鸟。

以下为译文:

观看视频请访问原文

这是流行游戏Flappy Bird上的一次极客运动,尽管这个游戏已经在App Store和Google Play下架,但是网络上还流行着许多山寨应用,比如Flappy Bird Typing Tutor和Flappy Math Saga。在玩了几分钟这个游戏后,我看到了一个检验自己机器学习技巧的实践机会——让小鸟学会如何自己来玩游戏,而上面这个视频也证明了经过良好训练的Flappy Bird基本上已经可以完全躲避障碍。

机器学习过程

开始时我的选择是Android应用,计划使用Monekyrunner来获取画面和点击命令,然而Monekyrunner 1到2秒的画面捕捉时间完全满足不了我的最低需求。随后,我发现了@mrspeaker的游戏引擎、Omega500以及用于typing的Flappy Bird版本,这些都非常适合我们的用例,于是我就果断拆掉了它的typing组件并添加了一些Q Learning代码。

强化学习

这里有一些基本规则:智能体,也就是这里的Flappy Bird,在某个状态下总会执行一个特定的动作,而在状态发生改变后会得到相应的奖励。基于情况的不同,有许多不同的变体会被使用,比如:Policy Iteration、Value Iteration、Q Learning。

关于Q Learning的详细介绍可以点击这里,下面则是算法:


状态矢量空间

在这里一共设计了3个参数:1,小鸟与低管道的垂直距离;2,小鸟与下一个管道出口的水平距离;3,小鸟是否死亡。


行为

对每个状态,我设计了两个可能存在的行为:点击或者是什么都不做。

奖励

奖励完全依赖于“Life”参数,仍然存活则+1,失败则-1000。

学习循环

数组Q初始化为0,同时也总采取最佳操作,这些操作将最大化我的预期奖励。

第一步,观察Flappy Bird所处的状态,并执行可以最大化预期奖励的操作。让游戏引擎执行“tick”操作,随之Flappy Bird进入下一个状态s’。

第二步,观察s’及状态下的奖励,+1则表示小鸟还活着。

第三步,通过Q Learning规则来修改Q数组。Alpha的值被设置成0.7,因为我们需要一个确定的状态,也让学习的可能最大化;同时,Y和lambda都被设置成了1。

第四步,将当前状态设置为s’并重新开始。

结语

完整视频请访问原文

初步训练成功大约花了6-7个小时(得分150+),学习速度通过使用更多的例子来提升,最后将它们的经验贡献给同一个数组。另一个提升学习途径的方式是输入更好的学习数据。更多代码详情可见FlappyBirdRL GitHub页面。

原文链接: Flappy Bird hack using Reinforcement Learning(编译/仲浩 审校/毛梦琪)

VB如何编制带有不定个数参数的过程。 VB如何充分扩充VB功能 VB如何传递不固定个数的叁数? VB如何打开和关闭光驱门 VB如何导出收藏夹到文件或者导入文件到收藏夹 VB如何得到磁盘上剩余空间的值 VB如何得到应用程序的资料! VB如何调用chm格式的帮助文件 VB如何调用控制面版中的应用程序 VB如何动态更新数据报表 VB如何改变 NT 预设的打印机? VB如何改变 Windows 预设的打印机 VB如何关闭其他程序 VB如何过滤键盘录入 VB如何获得Windows95已经运行的时间 VB如何检测左右键同时按下? VB如何检查您的电脑是否打开 ActiveDesktop? VB如何将程序建立成“启动”文件夹的捷径? VB如何将程序建立成「启动」资料夹的捷径。 VB如何结束 Shell 所启动的程序? VB如何拦截键盘输入 如何判定VB调用的一个EXE程序已经结束. VB如何判断某一个Drive是否为光碟机? VB如何清空回收站? VB如何取得汉字的区位码 VB如何去优化你的VB程序 VB如何让点阵打印机每次印出一行? VB如何设计一个可中断循环的按钮。 VB如何实现VB程序登录密码加密 VB如何使程序不出现在任务列表中 VB如何使键盘、Mouse失效(JournalPlayBack Hook) 當手機 被盜 後的措施 好象没什么人啊 祝斑竹zxyufan(宇凡)考试顺利 :) 高手请进!!!!!!! 怎么从一个字符串中截取字符串 关于软件的序列号的问题? 哪位高手给解释一下啊??? 各位DX:怎样在填完一个文本框后光标自动跳到下一个框里?很急的,解决一定给分! treeview问题,我只能给这么多分了,拜托大家,急死我了!!!! 连接数据库的一个参数:Initial Catalog=Music 是什么东西,在那里设置? 在DELPHI中能用ADO连接远程有固定IP的数据库服务器上的数据库吗?怎么连接? 各位兄弟姐妹,快来看呀! 请教各位大虾:我在上网的时候为什么老是死机,鼠标键盘一动不动了!!! pb中访问数据库必须通过datawindow么? 为什么就差这么一点了~???快帮帮忙啊~! OO里面的"is a"和"has a"应该如何理解啊?举个例子看看 请问在哪可以找到可以做简历封面的图片呀?后天就是招聘会啦,快快帮忙呀~~~ javaServlet的一个问题。急! DELPHI高手!-----300分 ASP开发问题,如何在用户提交注册信息时自动分配给它一个用户ID号? 我想在 Excel 中给文件字加双下划线,可是编译时提示变量没有定义 有谁能给我一份简单的COM代码? 有关interface??? 昨晚,初恋情人不经意的出现在梦中,你到底离你的初恋情人有多远,撒分了 一个昨天没搞明白的问题! redhat 7.2中如何设置代理服务器 求教高手一个Java中一直困扰我的问题,急!急!急! 谁能够给我个例子实现 Dll向应用程序单向通信 Dll->EXE?50分? 请问.......... 在数据窗口拖动垂直滚动条死机。只能ctrl+alt+del结束任务。倾听你的声音。 请教各位大虾两个Sql语句 哪里有visual studio.net下载? 那里有sql server 2000企业版下载的 xml的学习??????双儿 怎么比较两个LPTSTR字符串啊??? 语句“rs.Open sql,conn,1,1”中后边的两个数字参数是何意思? 如何获取datawindow中文本框内容? 请教公司大院网络系统设计方案要怎写?会遇到什么问题? 关于clientdataset的返回值问题 关于报表打印的问题!火急。。 这个世界上有多少C/C++程序员? 关于ARP广播域的问题????????????????、 请问什么服务器支持global.jsa 安装oracle数据库出错!!!!!!!!!!!! 如何在对话框的OnPaint()函数中得到该对话框的窗口大小? 一个看似简单却很棘手的问题,不得不请教各位。。。 哪里有将rm文件转换成avi或者mpg格式的软件? 关于ARP广播域的问题?????????????? 请问,,怎么设定mshflexgrid的属性,使其各列的宽度与数据源字段的宽度一致 请问这几个对象是否代表同一个对象? 菜鸟问题:如何跟随鼠标拉出一虚线矩形框?回复就有分! 石灰与石膏怎么区分刷在墙上的是石灰还是石膏 石灰加水会爆炸吗? 已知10%的硫酸与98%的硫酸密度之比小于0.98.现将98%的浓硫酸配制成100ml10%的硫酸.所需要的量筒规格是:10ml和100ml为什么? 石膏和石灰是一样的吗?现在的石灰是袋装的,像浆状的,和以前的干石灰一样的吗? 虎门销烟中为什么用石灰加水?发生了什么化学反应? M5水泥砂浆砌筑外墙中的M5是什么意思啊 M5水泥砂浆中的M5是什么意思啊 砂浆强度等级和砼的强度等级一样吗?各有哪些等级啊?很多兄弟都说的对,可惜只能选一个答案~那我只好选第一个告诉 石膏和石灰之间到底是什么关系?石膏粉加水变石灰,还是石灰粉加水变石膏啊? 石灰加水为何会产生热能>?建筑房子时,石灰加水就会达到上百度,这是为何?请给出化学公式与说明```` M5水泥砂浆配比PS32.5 she变复数 石灰加水,能腐蚀纸吗? 配制500克30%的硫酸溶液,需要98%的浓硫酸多少克 几道英语题变复数.Who is I 改为复数 Who ___ ___?Who is she 改为复数 Who ___ ___?RT 在100千克浓度为50%的硫酸溶液中,再加入125千克浓度为5%的硫酸溶液,就可以配制成浓度为多少的硫酸溶液? 两个不可数名词一起做主语,谓语动词用单数还是复数? 在浓度为50%的硫酸溶液100kg中在加入多少kg浓度为5%的硫酸溶液就可以配制成浓度为25%的硫酸?(算式) 当先行词是one of .时 ,关系代词作主语,谓语动词用单数还是复数 动名词做主语时,谓语动词用单数还是复数? 50%的硫酸100kg和10%的硫酸500kg能配制多少kg30%的硫酸溶液? only one of,the only one of 做主语,谓语动词分别用单数还是复数?尤其是only one of. 主语是不可数名词时,谓语动词用单数还是复数?(这里的谓语动词不是Be动词!是像do等……词)单三还是普通? 某钢厂欲配制20%的硫酸溶液500kg,已有51%的硫酸溶液100kg,还需98%的浓硫酸()kg.水()kg one-fifth of the five apples 做主语,谓语动词用单数还是复数啊? 1:2.5的水泥砂浆是质量比还是体积比?在工地上用铁锹怎么混合? 配制100克百分之20的稀硫酸,需百分之98的浓硫酸多少ml?需加水多少ml?百分之98的浓硫酸的密度为1.84g/ml 有浓度90%的硫酸溶液100kg和浓度10%的硫酸溶液500kg,问使用这两种硫酸溶液最多能配成浓度为30%的硫酸溶液答案是400 为什么不是1400/3 干石灰1方有多少吨 水泥石灰砂浆1:0.2:2的配合比是怎么样的 一立方石灰等于多少吨 one or two +名词复数 谓语动词用单数还是 复数,请举例其他情况, 有100千克浓度为50%的硫酸溶液,在加上多少千克浓度为5%的硫酸,硫酸溶液就被稀释成了25%的浓度? 一立方生石灰(粉)等于多少吨? 配制40%的稀硫酸溶液100ml,需要98%的浓硫酸多少毫升? 在100千克浓度为50%的硫酸溶液中,再加入多少千克浓度为5%的硫酸溶液,就可以配成浓度为25%的硫酸溶液? 英语语法:名词单数变复数的几种形式 one or two 做主语事谓语动词用单数还是复数 数学应用题在100千克浓度为50%的硫酸液中再加入多少浓度为5%的硫酸溶液 ,可以配成浓度为25%的硫酸溶液. 英语单词,将名词单数形式改为复数形式boytomatomonthcomedypartykeyeggmovieclass就这些,有点多,改成复数形式,不确定的不要 经计算 配制100ml 1mol L的稀硫酸需要用量取上述浓硫酸的体积Ⅱ.现用该浓硫酸配制100 mL 1 mol/L的稀硫酸.可供选用的仪器有:①胶头滴管;②烧瓶;③烧杯;④ 药匙;⑤量筒;⑥托盘天平.请 WE的单数形式 SHE的复数形式 英语的名词单数变复数怎样变 One or two 之后的谓语动词用单数还是复数,那么,A book or two 呢 一堆沙,甲车运走十三分之五吨,剩下的沙占沙总量的九分之八,剩下多少吨沙?只求列式! 英语复数形式和单数形式复数形式和单数形式是什么.详解. 水泥砂浆楼地面和水泥砂浆找平的区别地面面层/水泥砂浆楼地面20mm厚,与地面水泥砂浆找平20mm不都是一样的吗,l两道工序有什么区别吗? she is a girl复数 在100千克浓度为50%的硫酸溶液中.再加入多少千克浓度为5%的硫酸溶液,就可以配制成浓度为25%的硫酸溶液?求算示,过程. 水泥砂浆找平层?水泥砂浆找平层,厚度每增减5mm是什么意思? She's a good girl 变复数 用碎砖的三合土配合比是怎样,一立方要多少石灰? 请问楼面水泥砂浆找平 需要压光吗,远设计有点坡度··现在用炉渣填平整了,在做面层砂浆找平层,需要压光吗?面层还有地板砖!急在补充一下··因为原先是作为屋面用的 有坡度,现在改为楼面 在100千克浓度为百分之50的硫酸溶液中,再加入多少千克浓度为百分之5的硫酸溶液,就可配置浓度百分之25硫酸溶液? 能不用方程就不用 石灰是由什么做成的?求大神帮助 1.much+不可数名词 作主语,谓语动词用单数还是复数?2.two/many pieces of+不可数名词 作主语,谓语动词用单数还是复数? 一堆沙,运走了它的8分之3,正好剩下24吨,这堆沙有9( )吨.数量关系(文字表示)( ) 列式:( ) 石灰学名叫什么求大神帮助 用98%的浓硫酸配制100g10%的稀硫酸,所需的仪器有____在实验前先要_____,需要查找的数据有_____浓度为5%的某溶液,蒸发掉64.3g水后,无晶体析出,剩余溶液体积为30ml,密度为1.19g/立方厘米,求剩余 用文字好了 [2又3分之1+(5.4-3又3分之2)×1又3分之2]÷3又9分之4 石灰加水什么样 浓硫酸配制稀硫酸的实验器材
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn