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

程序员游戏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使用API获取颜色 VB使用标签控件调出浏览器 VB使用调用外部程序函数实现API函数高级功能 未公开API函数揭秘——通用对话框-VB资料 显示文件属性对话框-VB资料 VB用 API 打开打印对话框 VB用API函数改进ListView控件的显示效果 VB用API函数控制光驱的开关 VB用注册表保存数据(VB函数篇) 有关Tray系统盒的VB API函数 在VB中调用API函数动态改变及恢复屏幕设置 在VB中控制Ctrl+Del+Alt键 在VB中使用API函数 (之二) 在VB中使用API函数 (之三) 在VB中使用API函数 (之四) 在VB中使用API函数 (之五) 在VB中使用API函数 (之一) 在VB中用API实现多媒体 VB怎样用VB在应用程序中调用API VB怎样在DELPHI中使用API函数 指定文件夹-VB资料 VB5中注册控件三法 Bug:维护 Internet Transfer Control 之 Username 及 Pass VB对低层硬件访问控制 HitTest的妙用 -VB资料 ListBox项的控制-VB资料 VB 6.0中类聚集关系的实现 VB6编程中如何获取硬盘分区信息 VB的坐标系统综述 VB调用C程序动态链接库的方法 VB对低层硬件的访问控制 請問 如何在IE中实现设置用户的分辨率!在线等待,急急急!!! 谁能提供XP和《Peopleware》的书下载。 怎么用C编算24的程序? 如果我想给date grid控件加一些功能,比如加一个复选框,可以判断哪项被选中,该怎么加? 分区问题 sos 请问如何在自己的软件中加入注册功能? 请教一个问题 请问怎样使动态创建的控件响应一个事件 windows编程高手请进 我真惊了,小弟刚用VB6,请问,VB6怎么会有乱吗问题?怎么解决!各位大侠请帮忙!! 如何使一段程序停止运行,并自动释放相应的堆栈? 请问西安哪儿能买到《The C++ programming Language》? 谁能告诉我#include <fstream>和#include <fstream.h>的区别? 条件?返回值1:返回值2???? 在CEDIT的CHANGE事件中怎么不可以用CEDIT::REPLACESEL()?? 打印高手请进 谢了 简单的键盘消息! 如何在表里添加列? dll调用的问题 请知道NotesSMEI的高手帮忙 奇怪错误 如何用ATL创建一个全局COM(只启动一个实例)供所有客户端使用? 如何修改一个域的值?用@SETfield吗? 怪! 怪! 怪! 为何存储不上数据???(急) 我真惊了,小弟刚用VB6,请问,VB6怎么会有乱吗问题?怎么解决!各位大侠请帮忙!! 急救!!用pb写登陆界面出现的大问题! 欢迎大家来! 急!如何在一个form窗体里面来移动线条,就象类似于画基本的电路图那样,谢谢高手的指教!!! 哪儿有<<新编计算机绘图>>下载啊? 给高分 急!如何在一个form窗体里面来移动线条,就象类似于画基本的电路图那样,谢谢高手的指教!!! 可以用网页文件重新启动机器吗? 高手请看看!!!如何用ATL创建一个全局COM(只启动一个实例)供所有客户端使用? 哪里能下载到vs.net正式版?(100分) pascal 谁知道有没有创建Service的好工具? 谁来介绍一下CORBA ? 请教ODBC SQL中 CONVERT的用法? 笔记本电脑开不了机!!!! 关于ClientDataSet SQL动态参数的问题? 关于在PB的script中直接嵌入SQL 单机使用什么数据库最好! 怎么远程启动一个程序? 一个XSLT的小问题 C++Builder高手回答!!(关于在NOVELL上的应用) 急!请问哪位高手知道怎么用VB来开发组态软件。请多提提建议! 大家好!~新人来了!~ 如何实现MicroHelp即状态栏的分段 麻烦各位介绍几个有SCJP模拟题的网址!谢谢!!!! 关于Read&Data! 混凝土泵车和混泥土搅拌车空车时整部车的重量有多少吨.泵车47米 有关化学反应热的.在相同温度和压强下,将等质量的硫分别放在足量的纯氧气中和空气中燃烧,设前者出的热量为Q1,后者放出的热量为Q2,他们相对大小如何》》? 三线接近开关怎么接? 混凝土泵车是和混凝土搅拌车一起用的吗 是不是搅拌车搅拌完成后现场把料送给泵车?谢谢了! 任何化学反应一定有热效应么 三线接近开关与两线接近开关怎样串联 问有关高中化学喷泉试验物质的量浓度问题求用下列气体做喷泉试验后所得溶液的物质的量的浓度:1.充满氯化氢气体的烧瓶2.充满氨气的烧瓶3.用排空气法收集的氨气对氢气的相对密度为104. 画电路图时电流从正极出发,先经过用电器还是开关最好能画图说明 两线接近开关和三线有什么区别? 高中化学有关喷泉实验题同温同压下,在甲乙两个等体积的干燥圆底烧瓶中分别充满NH3、NO2进行喷泉实验,实验结束后,甲烧瓶中溶质的物质的量浓度_____(>或 减少汽车尾气污染环境的办法最好是能在已有交通工具上改进,比如燃料,利用率之类的. 3线接近开关控制2线气控电磁阀如何接线 酵母菌在无氧情况下分解葡萄糖除了酒精和二氧化碳有能量吗 汽车尾气量污染环境大?还是火山喷发污染环境大? 细菌呼吸作用有哪几种类型?各有什么特点? 酵母菌在无氧条件下分解葡萄糖后的产物是 汽车尾气污染环境 生物的呼吸作用表示为:有机物+O2——CO2+H2O+能量.以下关于有机物组成元素推断正确的是( )A只含碳元素B只含碳元素和氢元素C一定含碳元素氢元素和氧元素D一定含有碳元素和氢元素,可能含 在酵母菌培养过程中,由有氧环境转变为无氧环境,下列过程显著加快的是:A、葡萄糖的利用 B、二氧化碳的释放 英语翻译 车辆尾气 硝化细菌只能进行有氧呼吸吗 发酵中的酵母菌由有氧变为无氧时葡萄糖分解量是升高还是降低 英语翻译 硝化细菌固定CO2时会产氧气吗?据说所有自养型生物都会产生氧气(当然指非厌氧型的),是不是? 在密闭容器中进行反应x(g)+y(g)[可逆反应符号]2z(g),已知x、y、z的起始浓度分别为0.1(mol乘以L的负一次幂)、0.3(mol乘以L的负一次幂)、0.2(mol乘以L的负一次幂),在一定条件下当反应达到平 六年级下册教育科学出版社科学提纲 硝化细菌怎么进行有氧呼吸 反应N2(g)+3H2(g)===2NH3(g) ,达到平衡.在温度不变时,欲时[N2]/[NH3]的比值增大.可采取:A保持容器体积不变,增加N2的物质的量B保持容器体积不变,增加NH3的物质的量C使容器体积扩大到原来的2倍D保持 呼吸作用一定产生二氧化碳吗 硝化细菌能进行有氧呼吸? 对于可逆反应4NH3+5O2=4NO+6H2O(其中为可逆)化学反应速率关系是:2V正(NH3)=3V逆(H2O),为什么错了,比例系数不是正好吗?怎么比错了? 小学六年级英语活动手册45——49页的答案.教育科学出版社的. 饱和碳酸钠溶液,澄清石灰水可选用鉴别的试剂有;A盐酸 B硫酸 C硝酸 D氯化钡溶液 E氯化钠溶液 答案为ABCD 问:1.问什么硝酸能鉴别出饱和碳酸钠溶液,澄清石灰水?2.它们加入硝酸后都无明显变 某石油液化气的成分中丙烷和丁烷的质量分数分别为80%和20%,已知完全燃烧1g的丙烷和丁烷放出热量均为50kJ.现用0.8kg容积为4L的铝锅,把一壶20摄氏度的水烧开,消耗液化气0.056kg,求燃料利用率.已 六年级下册活动手册unit5怎么做啊. 分别写出下列反应的化学反应方程式及离子方程式:一、向NaHSO4溶液中逐滴加入Ba(OH)2.①SO42ˉ恰好完全沉淀.②溶液恰好呈中性.③向②中继续滴加Ba(OH)2.二、向Ba(OH)2溶液中逐滴加入NaHSO4.①Ba2 气体A由C H F S 中的三种元素组成,将标准状况下1.12L的气体A在过量的氧气中完全燃烧,恢复到原来状态放出Q千焦的热量.已知气态生成物全被过量的Ca(OH)2溶液吸收,可得到6.95g沉淀.再取相同条件 两线制接近开关与三线制接近开关的区别大侠好,请问两线制接近开关与三限制接近开关在接线上有什么区别,在用途上有什么区别,在电路中怎么选择用两线制的还是用三线制的接近开关,二者 高中化学离子反应简单习题 化学反应与能量 典型例题要一道就够,选择题或答题皆可 接近开关二线 三线 区别 重庆液压油缸厂电话? 第三题的计算怎么算 六年级下册语文七色光1记一次体育比赛作文 西安液压油缸 物理3个开关2个用电器的电路图 六年级下学期作文《记一次体育比赛》 武汉液压油缸 物理电路图中开关算用电器吗? 记一次体育比赛作文 有什么好方法吗?举例说明下. 细菌和真菌的生存需一定的条件;如需要(),适宜的(),还要有(). 两个开关控制一个用电器是什么电路两个开关同时关时,用电器断电,一个开一个关时,用电器通电,一个先打开了,另一个先打开再关闭也可以使用电器断电 作文:记一次体育比赛最好不是拔河,拔河千篇一律,太老套 细菌和真菌的生活需要什么条件?ps:简略些。 电路图中电流先经过用电器再经过开关会怎样? 记一次体育比赛的作文 有关高中化学的反应速率好比水中加入1NA块 常理都是2块比一块产生气泡块 为什么老师总是说反应速率不变? 有关化学反应热效应已知热化学方程式:SO2(g)+ O2(g) = SO3(g) △H = ―98.32kJ/mol在容器中充入2molSO2和1molO2充分反应,最终放出的热量为 ( ).A.196.64kJ B.196.64kJ/mol C.< 196.64kJ D.> 196.64kJ对不起,刚才题 三线接近开关与四线接近开关的区别?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘