专栏名称: Python新手营
数据,算法,人工智能
目录
相关文章推荐
黄建同学  ·  揭秘 Antropic ... ·  12 小时前  
云技术  ·  20万元,DeepSeek系统硬件及AI服务 ... ·  20 小时前  
云技术  ·  20万元,DeepSeek系统硬件及AI服务 ... ·  20 小时前  
爱可可-爱生活  ·  【[181星]repo-level-code ... ·  昨天  
爱可可-爱生活  ·  【[28星]Ecne-AI-Podcaste ... ·  昨天  
51好读  ›  专栏  ›  Python新手营

手把手教你用TensorFlow玩转Flappy Bird!

Python新手营  · 公众号  · AI  · 2017-04-19 19:24

正文

请到「今天看啥」查看全文



全连接与局部连接的对比(图片来自互联网)


从上图中可以看出,采用局部连接之后,可以大大的降低训练参数的量级。

  • 2. 参数共享

虽然通过局部感知降低了训练参数的量级,但整个网络需要训练的参数依然很多。

参数共享就是 将多个具有相同统计特征的参数设置为相同 ,其 依据 是图像中一部分的统计特征与其它部分是一样的。其 实现 是通过对图像进行卷积(卷积神经网络命名的来源)。

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


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


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

  • 3. 多卷积核

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


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


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

  • 4. 池化

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


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


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

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


卷积神经网络模型


图像的处理过程


  1. 初始输入四幅图像80×80×4(4代表输入通道,初始时四幅图像是完全一致的),经过卷积核8×8×4×32(输入通道4,输出通道32),步距为4(每步卷积走4个像素点),得到32幅特征图(feature map),大小为20×20;

  2. 将20×20的图像进行池化,池化核为2×2,得到图像大小为10×10;

  3. 再次卷积,卷积核为4×4×32×64,步距为2,得到图像5×5×64;

  4. 再次卷积,卷积核为3×3×64*64,步距为2,得到图像5×5×64,虽然与上一步得到的图像规模一致,但再次卷积之后的图像信息更为抽象,也更接近全局信息;

  5. Reshape,即将多维特征图转换为特征向量,得到1600维的特征向量;

  6. 经过全连接1600×512,得到512维特征向量;

  7. 再次全连接512×2,得到最终的2维向量[0,1]和[1,0],分别代表游戏屏幕上的是否点击事件。

可以看出,该模型实现了 端到端的学习 ,输入的是游戏屏幕的截图信息(代码中经过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 ),你在工作上刻苦努力,追求上进(对应图中的







请到「今天看啥」查看全文