卷积神经网络CNN简介

2016-10-26陈伟才人工智能学堂;)

眼前几篇都是轻松愉快的篇章,这首就来点烧脑的,调节调节。本文主要教授卷积神经网络CNN,这为是TensorFlow
MNIST官方进阶篇采用的吃水上算法。深度上是机器上之一个第一分支,特别是当下几乎年超级互联网企业如Google以及数据的促进下,取得新的拓展及突破。

同样、神经网络

神经网络Neural
Networks方面的研讨该实际二十世纪四十年代就开了,尤其为N-P神经元模型呢代表,掀起了神经网络发展之首先独高潮期。当时单层的神经网络无法化解非线性问题域,导致这之神经网络适应场景受限,对神经网络的研究就便跌落入峡谷。

以至二十世纪八十年代,BP算法的轰动,解决了大多叠神经网络训练之算法问题,从而促进神经网络解决了非线性问题领域,推动神经网络第二不成高潮。

乘进入二十一世纪,互联网技术,分布式系统,特别是当下几年提计算、大数量在互联网企业如果Google,Facebook的有助于产,神经网络分支下的“深度上Deep
Learning”再次拿神经网络推向高潮。

轰动世界之2016年3月AlphaGo一款围棋人工智能程序,由谷歌(Google)旗下DeepMind公研制。这个顺序于2016年3月以及围棋世界冠军、职业九段落选手李世石进行人机大战,并因4:1之毕竟比分战胜。该次的原理就是是深度上,引领在大家对神经网络学习的老三不成浪潮。本公众号“人工智能学堂”也是在这次浪潮的递进产产生的。

M-P神经元模型

神经网络,大家好易想到高中生物课本上之神经细胞细胞组织,每个神经元只生一个轴突,可以拿化学物质传送至另外一个神经元,收到神经元同样会做出相应的反射,把消息传送到下一个神经元,如此循环。

神经网络就是吃生物学神经系统的启发,来法生物神经系统对外面真实环境做出的交付式反应。这里要澄清的凡,神经网络的目的不是单纯以生物神经系统,而是为落实同效网络,能够上,并且能做出相应的反响。

神经网络中尽核心的元素是神经元模型,目前最为经典的范是M-P神经元模型,是1943年由于McCulloch
and Pitts提出的。如下图所示:

如果达到图所示,神经元模型中,神经元接受来自 n
个其他神经元(xi)传递过来的信号,这些信号是富含权限Weight(Wij),对这些神经元传递的信息进行求和,并与该神经元的阈值进行比对,然后才经激活函数f的拍卖,给闹最后的出口,该出口即该神经元对本次输入的信号做出的反射。如下公式表示上述过程:

于激活函数,其功能就是是Yes和No的判定,也便是因此一个阶跃函数即可。但是阶跃函数的非总是缺陷,目前界内用的比多的凡Sigmoid函数。

Sigmoid函数取值范围是[0,
1],正无根本大则没有于1,负无穷大则收敛于0,切在周区间是连续的,光滑的,如下图所示:

其次、传统神经网络

拿众多个神经元连接起来,上一个输入,经过本神经元处理后的消息,作为下一个神经元的输入,如此下去,便做了神经网络。我们事先押片个输入神经元的面貌。

套入上同样节约之公式得:

y = f(X1 * W1 + X2 * W2 -θ)

上述模型,很轻实现同、或、非:

同:即 X1 = X2 = 1常,y = 1,显然只是需要让 W1 = W2 = 1,θ = 2;

要么:即 X1 = 1 或 X2 = 1,时,y = 1,显然只是需要让 W1 = W2 = 1,θ = 0.5;

莫:即 X1 = 1 时,y = 0,或者X1 = 0 时,y = 1,显然只是待让 W = -0.6, W2
= 0,θ = 0.5;

单层的神经系统,其深造能力是片的,对于广大题目,如非线性问题,单层神经系统是心有余而力不足缓解之。

差不多交汇前馈神经网络

假定化解非线性可划分问题,需要考虑采用多层功能的神经系统。多重合升级系统具备如下特点:

每一样重叠的神经细胞与生一样叠神经元全连

同层神经元之间不存同层连接

莫存超层神经元连接

怀有上述3单特点的神经系统,一般叫多层前馈神经网络,multi-layer
feedforward neural networks,如下图所示:

齐图备受,输入层神经元接收外界的输入,隐含层与输出层神经元对信号进行处理加工,最终之结果是由此输出层对外输出的。即输入层神经元只承担信息的吸纳,而隐含层和输出层神经元是用对信息进行加工处理的。

老三、卷积神经网络

高达省被多重合前馈神经网络扩展性不好,原因要出半点触及,一凡是神经元是都连的,二凡同层的神经细胞是相独立的。这样造成随着隐含层层数或者隐含层的神经细胞个数的充实,需要树立之链接是指数级的滋长,其计算量是巨的挑战,或者用机器上园地的专有词汇描述是overfitting,即过度拟合。

盖CIFAR-10为例,一布置图的深浅是 32*32*3 (32 width,32 height, 3
colors),如果是特层都连神经网络,则要32*32*3 =
3072个weights,如果图片大小是200*200*3(200 width,200 height, 3
colors),则需要200*200*3 = 120000个weights。

差不多交汇前馈神经网络需要进行改进,提升其扩展性才能够满足实际用来的急需。为这个,卷积神经网络CNN(Connetional
Neural Networks)应用而异常。那么CNN是如何就降低参数的了?

部分连通性

先是单凡是Local
Connectivity,局部连通性。与全连接神经网络不同之是,CNN的神经细胞和下一致叠神经元不是均连的。我们得这么来明,对于同样摆放图纸,图片本身也是分开不同部分构成的,而每个片,他们得以具有近乎的权值参数。

只要说一样摆设人头的照片,有头发,鼻子,耳朵,嘴巴,牙齿,眼睛等等。所以我们当展开学习之时段,没必要多所有人口进行全量学习,而是先对堵塞之部位开展学习,最后再集中到学习。这样实实在在降低了神经网络权值参数的习成本。

及图假如是1000*1000之图形,左边是全连接神经网络,对于1M底神经细胞来说,它必须学习有的input信息,就象征她必须上1000*1000*1M=10^12
的权值参数。右边便是CNN,如果滤波的尺寸10*10,10*10*1M=10^8,降低了4独数据级。

下图是 RGB CIFAR-10 image,32*32*3
(width,height,colors),作为输入层,假如CNN的滤波大小是5*5,所以对诺输入层5*5*3底区域,卷积层的每个神经元需要全连的权值参数个数为
5*5*3 =
75。注意,虽然是5*5的区域,但是要是清一色深度的求学,即depth为3.途中出5只神经元,每个神经元的权值参数个数为75.

有关滤波,还有点儿个主要之定义,一个凡是stride,一个凡是zero-padding。stride是步轴大小,即每次滤波学习区域活动的增长率,zero-padding则是用0填充,可以设想一下,对于图片边缘的有些,学习之力度肯定没有图中的数,所以我们用图纸四周都用0来填充,用0来包裹。

达图可以看来,input的数组为5个(1,2,-1,1,-3),两限用0填充则变为(0,1,2,-1,1,-3,0)。假设filter
size为3,如果stride为1,则output有5个出口(-2,2,1,2,1),如果stride为2,则output只出3只(-2,1,1)。

参数共享

老二个是参数共享。先选一个真正的例子,2012年之ImageNet挑战赛。输入是227*227*3的图纸。假设filter
size F = 11,stride S = 4,没有举行zero
padding(实际上是召开了底,原因是图片原始大小是224*224*3,只是没有特意提出来),
所以 (227 – 11)/4 + 1 = 55,且卷积层的深浅K = 96,所以卷积层一共需要55
*55 * 96 =
290400独神经元,每个神经元对承诺出入图片227*227*3中的11*11*3的区域。即11*11*3这么一个3D区域对应一个神经元,这样一个神经元需要11*11*3

  • 1 = 364独全权值参数。所以,对诺227*227*3底图形输入,卷积层一共需要
    364 * 290400 = 105705600 独权值参数。

227*227*3卷积层就需要105705600单weights,如果是又甚之图样了,这肯定也是可怜的,虽然和全连接神经网络已经优化好几单数据级了。

于地方还足以观测到,11*11*3区域对应一个神经元,同时起深度方向看,depth维度的96只神经元对应同一个11*11*3区域。从depth切面看,一共有96个切片,227*227*3对诺的切换一共发
55 * 55
单神经元。如果我们对同一个depth的切换的55*55独神经元采用相同之weights和bias,这样一个切换就需11*11*3

  • 1 = 364只权值参数了。对于227*227*3的图片就待 364 * 96 = 34944.
    如此权值参数的数量级以下降了4只。

此处的以及一个断面的神经细胞采用相同的权值参数进行个数优化,在CNN中谓参数共享,Parameters
Sharing。

这里需要提点一下,为什么是同一个断面是采取参数共享,而无是深浅维度采用参数共享了,笔者于率先潮学习参数共享斯特点即时有发生这个谜。我可以简单想象一下,不同的断面就象征不同层次的卷积,每一样层次的卷积作为下一个卷积的输入,所以极好照卷积的层次为便是沉稳说之断面,不同的切面采用不同的权值参数,而跟一个断面的神经细胞采用参数共享。

CNN图解

下坐现实列子进行CNN局部连通性和参数共享进行现身说法。下图备受是5*5*3之蓝色图片区域是原本的input,为了演示方便,将3D的图样切成3单面纵向排列。蓝色之方圆都采用0进行填空充,灰色部分,可以zero
padding = 2,中间 3
*3底区域是滤波器的轻重缓急,我们好掌握之CNN卷积层是有零星交汇的滤波器,每一样重叠的滤波器采用同样之权值参数,所以每一样层的权值参数个数为
3*3*3 + 1= 28。

咱上述图也例,卷积神经元的output是哪计算出的。蓝色区域及红色区域对应之数字进行互乘然后再行求和,最后跟Bias相加,得到相应之数字,依次存放到绿色矩阵里面。第一单矩阵结果是3,
第二只矩阵的结果是2,第三个矩阵的结果是0,所以3 + 2 + 0 =
5,最后加上第一个Bias参数1,所以率先只3*3*3的区域神经输出结果是 6.

自打上面的图可以看,这个CNN卷积层需要学习及之权值参数的个数是2 * 28 =
56个,即途中红色部分。

CNN的可视化

CNN卷积过程是老复杂的,整个过程为不是深直观的,所以,对于神经网络CNN可视化,也是一个生烫的天地,下图是北京大学可视化和可视分析研究小组对CNN卷积的可视化系统,系统demo地址是http://shixialiu.com/publications/cnnvis/demo/。

参考资料

Machine Learing机器学习,周志华,清华大学出版社

http://cs231n.github.io/convolutional-networks/

http://vis.pku.edu.cn/blog/%E6%9B%B4%E5%A5%BD%E7%9A%84%E7%90%86%E8%A7%A3%E5%88%86%E6%9E%90%E6%B7%B1%E5%BA%A6%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%EF%BC%88towards-better-analysis-of-deep-convolutional-neural-net/

                                                       
 长按二维码关注群众号人为智能学堂

相关文章