科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网服务器频道虚拟化/云计算亚特兰大极客使用机器学习玩转Flappy Bird

亚特兰大极客使用机器学习玩转Flappy Bird

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:Sarvagya Vaish 来源:CSDN 2014年3月5日

关键字: Flappy Bird 机器学习

  • 评论
  • 分享微博
  • 分享邮件

尽管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

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章