首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

人工智能发展史(七)CNN卷积神经网络那些事儿

在大风中紧紧抓住你的帽子,紧紧抓住你的希望,别忘了给你的钟上发条。明天是新的一天。 by怀特

首先祝大家平安夜快乐,明天的圣诞节快乐~

这周我们用最通俗的解释方法来聊聊最近几年非常火热的CNN卷积神经网络,并以最基础的LeNet-5为大家分析基本的卷积神经网络元部件,让大家能够在短时间内对CNN有更为直观的理解和认识。

1

BP神经网络在图像处理技术上的缺点

假设现在我们需要解决的任务是手写体数字的识别,根据前几次学习,我们的第一反应是采用BP神经网络来做一个分类问题。我们假设图片的大小是50*50,那么BP神经网络是否是一个明智的选择呢?

我们看看上图,传统的BP神经网络,采用全连接的方式,那么对于50*50的图片有2500个输入,同时有2500*n个权值(n为隐层节点的个数),这就需要很多的样本去训练,导致计算困难。因此,看来BP并不是合适的选择,那么怎样应对呢?

首要的任务是看能否减少权值?怎样减少?这就要感谢,1962年Hubel和Wiesel通过对猫的视觉皮层细胞的研究,提出感受野(receptive field)的概念,而且在1984年日本学者 Fukushima基于感受野概念提出了神经认知机(neocognitron),这也可以看做是卷积神经网络的第一个实现网络,也是感受野概念在AI领域的首次应用。那么,到底什么是“感受野”?通俗的解释就是动物的视野是“局部的”,随着物体的局部信息的移动,并不是所有的神经元受到刺激,而是相应的局部神经元受到刺激。受到这种启发,我们是否可以将上面的全连接模式改成如下的局部连接模式?

也就是说局部连接模式会有若干套不同的权值,而且在每次卷积的过程中(对于每个特征图来说)每一套权值都是共享的,这样就可以大大减少权值的数量,降低计算量,并且更符合实际的视觉行为,最终达到“局部连接,权值共享”的优势。至于什么是卷积,数学上的解释非常多,这里大家看下面这张图就可以了。

这张图非常形象,假设我们的图片是7*7的图片,采用BP神经网络,就需要49个权值,但是我们采用一个5*5的卷积核,在整张图片上进行移动卷积,此时我们只用了25个权值,并且将图片降维到了一个3*3的局部特征图。具体的步骤是讲蓝色的小方块中的值与对应的5*5的权值进行相乘并进行加和(线性加和),并加上一个偏置值,然后将得到的一个数值经过激活函数f()后作为绿色的方块中的值,我们将这样的步骤称为卷积层操作,一般用C层来表示。

以上讲述的其实就是卷积神经网络最为突出和重要的思想和方法。

2

LeNet-5

LeNet-5是Yann LeCun在1998年设计的用于手写数字识别的卷积神经网络,是早期卷积神经网络中最有代表性的实验系统之一。因此,也是我们入门CNN最为经典和基础的网络结构,下面我们就看看其网络结构图:

上图中就是LeNet-5的网络架构图,包括输入输出层,一共有8层,下面我们就就每一层给大家进行详细的分析。

输入层和C1层:

输入层是一个32*32的图片。我们选用的是5*5的卷积核,共25个不同的权值,而且在卷积过程中是共享的,那么根据上面的分析,我们知道对于C1层的特征图的大小应该为(32-5)+1=28,也就是28*28的大小。那么可能会有同学问,为什么C1层有6张不同的特征图?这是因为我们采用了6个不同的5*5的卷积核分别得到了6个不同的28*28的特征图。那么,问题来了?请问输入到C1层中一共有多少连接数和权值数目?大家可以先手算一下,连接数答案是:(5*5+1)*(28*28*6)=122304个,其中1为偏置值,我们一般将偏置值也当做一个神经元连接;权值数目为:(5*5+1)*6=156。

S2层:

S2层是一个下采样层,也叫池化层,简单的说,由4个点下采样为1个点,也就是由2*2的4个数的加权平均或者取最大值,那么这样输出就是一个28/2=14的14*14的特征图了。

看上图,和卷积层,最大的区别就是池化作用于图像中不重合的区域,这样就再次将特征图进行了压缩。

C3层:

首先观察C3层,有16个特征图,大小是10*10,S2是6张14*14的图,其中对于从14*14到10*10的过程是因为我们仍然采用了5*5的卷积核。但是从6张特征图到16张特征图是怎样得到的是这里的难点。其实我们只需要按照一定的顺序组合这些层就可以了。具体的组合规则,在 LeNet-5 系统中给出了下面的表格:

简单的说,例如对于C3层第0张特征图,其每一个节点与S2层的第0张特征图,第1张特征图,第2张特征图,总共3个5*5个节点相连接。后面依次类推,而且C3层每一张特征映射图的权值是相同的。问题又来了,该层有多少连接数和多少权值呢?连接数的答案:[(5*5*3)+1]*(10*10)*6+[(5*5*4)+1]*(10*10)*9+[(5*5*6)+1]*(10*10)*1=151600个连接数;权值个数呢?答案是:(5*5*3+1)*6+(5*5*4+1)*9+(5*5*6+1)*1=1516个权值。计算的过程是对网络理解非常有促进作用的,所以希望大家能够动动手指手算一下,有不清楚的欢迎大家留言或者私信。

S4层:

S4 层是在C3层基础上的一个池化层,前面已述。在后面的层由于每一层节点个数比较少,这个比较简单,不再赘述。

C5层:

C5层是一个卷积层,有120个特征图,每个C5单元与S4层的S4层所有的16个单元进行连接,所以这里也就可以理解为是一个全连接层。连接数和权值个数为:(5*5*16+1)*120=48120。

F6层:

全连接层,连接数为(120+1)*84=10164。

3

LeNet-5的训练算法

上面分析LeNet-5的结构,下面我们分析一下其大概的训练步骤,其训练算法和传统的BP算法差不多,主要包括4步,这4步被分为两个阶段:

第一个阶段:向前传播阶段

(1)从样本集中取一个样本(X,Y),将X送入网络输入。

(2)计算相应的实际输出。在此阶段,讯息从输入层经过诸暨的变化,传送到输出层,这个过程也是网络在训练正常运行时的执行过程。

第二个阶段:向后传播阶段

(1)算出实际输出与相应的理想输出之间的差值。

(2)按照误差最小化的方法反向传播调整权值。

4

总结

本周我们详细为大家介绍了CNN中最经典的LeNet-5的基本结构和训练步骤,可以直观地了解一个卷积神经网络的基本构建方法,为分析、构建更复杂、更多层的卷积神经网络做准备。

其实到目前为止,各种卷积神经网络的发展已经非常迅速,网络结构也层出不穷,例如AlexNet,VGG系列,GoogLeNet,Inception系列,ResNet等等,这些网络的出现也不断刷新了人们对深度学习的期望和认识,但是作为CNN在DL中的开衫鼻祖,LeNet-5的精髓任然在所有的网络中都能找到影子,因此希望大家可以好好体会LeNet-5的精髓。本来今天还要和大家一起来分享AlexNet,但是由于篇幅的原因就没有加进来,不过在今后我们会在其他系列的文章中继续介绍和分享其他的CNN模型,敬请期待。

由于精力有限,文中难免有一些错误,请读者不吝赐教!

系列预告Next

《人工智能发展史(八)之RNN循环神经网络那些事儿》

《人工智能发展史(九)之ResNet残差网络那些事儿》

《人工智能发展史(十)之强化学习那些事儿》

《人工智能发展史(十一)之计算机博弈那些事儿》

关注有惊喜!

深度学习那些事

深度Deeper

关注微信号每周收听我们的消息

如果喜欢,请点赞~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171224G0P7N200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券