HTML5技术

程序员带你一步步分析AI如何玩FlappyBird - yhthu(2)

字号+ 作者:H5之家 来源:H5之家 2017-04-13 09:03 我要评论( )

可以理解为,比如从一张图像中的某个局部(卷积核大小)提取了某种特征,然后以这种特征为探测器,应用到整个图像中,对整个图像顺序进行卷积,得到不同的特征。 每个卷积都是一种特征提取方式,就像一个筛子,将图

可以理解为,比如从一张图像中的某个局部(卷积核大小)提取了某种特征,然后以这种特征为探测器,应用到整个图像中,对整个图像顺序进行卷积,得到不同的特征。

卷积过程(图片来自互联网)

每个卷积都是一种特征提取方式,就像一个筛子,将图像中符合条件(激活值越大越符合条件)的部分筛选出来,通过这种卷积就进一步降低训练参数的量级。

  • 3. 多卷积核
  • 如上,每个卷积都是一种特征提取方式,那么对于整幅图像来讲,单个卷积核提取的特征肯定是不够的,那么对同一幅图像使用多种卷积核进行特征提取,就能得到多幅特征图(feature map)。

    不同的卷积核提取不同的特征(图片来自互联网)

    多幅特征图可以看成是同一张图像的不同通道,这个概念在后面代码实现的时候用得上。

  • 4. 池化
  • 得到特征图之后,可以使用提取到的特征去训练分类器,但依然会面临特征维度过多,难以计算,并且可能过拟合的问题。从图像识别的角度来讲,图像可能存在偏移、旋转等,但图像的主体却相同的情况。也就是不同的特征向量可能对应着相同的结果,那么池化就是解决这个问题的。

    池化过程(图片来自互联网)

    池化就是将池化核范围内(比如2*2范围)的训练参数采用平均值(平均值池化)或最大值(最大值池化)来进行替代。

    终于到了展示模型的时候,下面这幅图是笔者手画的(用电脑画太费时,将就看吧),这幅图展示了本文中用于训练游戏所用的卷积神经网络模型。

    卷积神经网络模型

    图像的处理过程

    可以看出,该模型实现了端到端的学习,输入的是游戏屏幕的截图信息(代码中经过opencv处理),输出的是游戏的动作,即是否点击屏幕。深度学习的强大在于其数据拟合能力,不需要传统机器学习中复杂的特征提取过程,而是依靠模型发现数据内部的关系。

    不过这也带来另一方面的问题,那就是深度学习高度依赖大量的标签数据,而这些数据获取成本极高。

    三、算法:Deep Q Network

    有了卷积神经网络模型,那么怎样训练模型?使得模型收敛,从而能够指导游戏动作呢?机器学习分为监督学习、非监督学习和强化学习,这里要介绍的Q Network属于强化学习(Reinforcement Learning)的范畴。在正式介绍Q Network之前,先简单说下它的光荣历史。

    2014年Google 4亿美金收购DeepMind的桥段,大家可能听说过。那么,DeepMind是如何被Google给盯上的呢?最终原因可以归咎为这篇论文:

    Playing Atari with Deep Reinforcement Learning

    DeepMind团队通过强化学习,完成了20多种游戏,实现了端到端的学习。其用到的算法就是Q Network。2015年,DeepMind团队在《Nature》上发表了一篇升级版:

    Human-level control through deep reinforcement learning

    自此,在这类游戏领域,人已经无法超过机器了。后来又有了AlphaGo,以及Master,当然,这都是后话了。其实本文也属于上述论文的范畴,只不过基于TensorFlow平台进行了实现,加入了一些笔者自己的理解而已。

    回到正题,Q Network属于强化学习,那么先介绍下强化学习。

    强化学习模型

    这张图是从UCL的课程中拷出来的,课程链接地址(YouTube):
    https://www.youtube.com/watch?v=2pWv7GOvuf0

    强化学习过程有两个组成部分:

  • 智能代理(学习系统)
  • 环境
  • 如图所示,在每步迭代过程中,首先智能代理(学习系统)接收环境的状态st,然后产生动作at作用于环境,环境接收动作at,并且对其进行评价,反馈给智能代理rt。不断的循环这个过程,就会产生一个状态/动作/反馈的序列:(s1, a1, r1, s2, a2, r2.....,sn, an, rn),而这个序列让我们很自然的想起了:

  • 马尔科夫决策过程
  • MDP:马尔科夫决策过程

    马尔科夫决策过程与著名的HMM(隐马尔科夫模型)相同的是,它们都具有马尔科夫特性。那么什么是马尔科夫特性呢?简单来说,就是未来的状态只取决于当前的状态,与过去的状态无关。

    HMM(马尔科夫模型)在语音识别,行为识别等机器学习领域有较为广泛的应用。条件随机场模型(Conditional Random Field)则用于自然语言处理。两大模型是语音识别、自然语言处理领域的基石。

    上图可以用一个很形象的例子来说明。比如你毕业进入了一个公司,你的初始职级是T1(对应图中的 s1),你在工作上刻苦努力,追求上进(对应图中的a1),然后领导觉得你不错,准备给你升职(对应图中的r1),于是,你升到了T2;你继续刻苦努力,追求上进......不断的努力,不断的升职,最后升到了sn。当然,你也有可能不努力上进,这也是一种动作,换句话说,该动作a也属于动作集合A,然后得到的反馈r就是没有升职加薪的机会。

    这里注意下,我们当然希望获取最多的升职,那么问题转换为:如何根据当前状态s(s属于状态集S),从A中选取动作a执行于环境,从而获取最多的r,即r1 + r2 ……+rn的和最大 ?这里必须要引入一个数学公式:状态值函数。

    状态值函数模型

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS) - 失足程序员

      net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS) - 失足

      2017-04-13 11:05

    • [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三) - 反骨仔(二五仔)

      [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三) - 反

      2017-04-02 11:00

    • net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 - 失足程序员

      net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 -

      2017-04-02 10:11

    • 微服务--webapi实现,脱离iis,脱离tomcat - 失足程序员

      微服务--webapi实现,脱离iis,脱离tomcat - 失足程序员

      2017-03-30 11:00

    网友点评
    /