CNN入门讲解:如何理解卷积神经网络的结构


原创文章,一家之言。

个人公众号:follow_bobo

知乎号:蒋竺波

转载请通知本人。


大家好,我是波波,欢迎再次来到CNN入门讲解。


上次我们讲什么卷积以及卷积在卷积神经网络里的作用,那我们这一期来理一理卷积神经网络大致的结构






















吗?

我不!!


惊不惊喜?!


抱歉,我就是这样一个水性杨花,做事看心情的美男子。


不服,请点赞。



哈哈哈哈哈哈哈哈哈哈[email protected]&^EU#(kjt








(一阵尴尬的沉默)



CNN入门讲解:如何理解卷积神经网络的结构


上一期我们讲了,卷积实际上可以充当一个对原图像进行二次转化,提取feature 的作用,

相当于信号处理的滤波器,大家可以再去了解一下高斯滤波,拉普拉斯滤波等,这些都可以写成卷积的形式

比如这样:

CNN入门讲解:如何理解卷积神经网络的结构网上找的,侵删


神经网络想必大家都有了解,评价神经网络好坏的一个重要的依据就是:


以最少的代价,使神经网络获得最好的准确率


关键词:代价,准确率


那我们来看看下面这张图:


我们先来看一个手写体的‘2’(大小是32*32)



正常情况下,我们人眼看这张图的全局,立马就能识别出这是个数字‘2’

机器如何去看全局呢

实际上,就是把所有pixels 一股脑全放进一个神经网络

让神经网络去处理这些pixels

这个神经网络,我们先叫他全连接层吧

就像下图一样:

CNN入门讲解:如何理解卷积神经网络的结构


感觉就是暴力解决嘛

抛开准确率不说

我们大概会得到3*32*32*1024*512 = 1610612736 个参数,这些参数量是非常大的了

而这仅仅是一个32*32 的图像,运算量非常大了

同时,由于参数过多,极其容易产生训练结果好,检测结果差的现象(overfitting)


但我们仔细看这个图,我们肉眼其实也是有选择性的,我们并不太关心上图中灰色的区域,以及数字’2‘中的黑色区域

我们更关心’2‘与灰色区域的相交的边缘,因为这才是我们判断的主要依据

那我们会不会也可以在计算机里也这么做,主要提取边缘特征,对于灰色和黑色这种冗余或者不重要的的区域特征,我们尽量丢弃或者少保留,那么这样可能会减少参数或者减少提参数的过程


既然这样,那我们干脆在全连接层前面,对输入图像进行一个预处理吧

把那些没用的

烂糟的

统统扔掉

于是我们加了个采集模块

我们只保留那些我们想要的,或者相对比较重要的pixels

我们就叫它采样层吧

所以,我们得到下面这个网络:

CNN入门讲解:如何理解卷积神经网络的结构


然后,我们再来看一个问题:


我们来把这个’2‘分成块,一块一块看:



CNN入门讲解:如何理解卷积神经网络的结构CNN入门讲解:如何理解卷积神经网络的结构CNN入门讲解:如何理解卷积神经网络的结构


你一块块看

是不是仍然会发现这是个数字’2‘?

也是说,你大脑会自动把这些分散的图片组合起来进行识别

同时如果我们这么看:




CNN入门讲解:如何理解卷积神经网络的结构CNN入门讲解:如何理解卷积神经网络的结构CNN入门讲解:如何理解卷积神经网络的结构



是不是你就识别不出来这是‘2’


也就是说,我们发现了两个现象:

  • 如果我们只知道局部的图片,以及局部的相对位置,只要我们能将它正确组合起来,我们也可以对物体进行识别
  • 同时局部与局部之间关联性不大,也就是局部的变化,很少影响到另外一个局部


我们还要解决两个问题:

  • 输入的只是原始图片,我们还没有提取图片的特征
  • 我们目前要处理的参数仍然非常多,我们需要对原始输入进行降维或者减少参数


我们现在回到上次讲的卷积:


CNN入门讲解:如何理解卷积神经网络的结构


一个3x3 source pixels 经过一个3x3的卷积核后,source pixels 的特征映射成一个1x1 destination pixel


然后我们再加上以上我们提到一些人眼识别图像的性质


那么


我们就会发现


来着早不如来得巧,卷积加上刚刚好


好了 ,我们得到了如下神经网络:


CNN入门讲解:如何理解卷积神经网络的结构


(大家请忽略图上的数字,以后会讲的)


实际上,我们还会遇到两个问题:

  • 一张图片特征这么多,一个卷积层提取的特征数量有限的,提取不过来啊!
  • 我怎么知道最后采样层选出来的特征是不是重要的呢?


烦人!


CNN入门讲解:如何理解卷积神经网络的结构

啊哈哈


我这里又要提一个新概念----级联分类器(cascade of classifiers

这个概念我以后会在机器学习入门上会细说,是个很常用的方法

我来大概介绍一下级联分类器

大概意思就是我从一堆弱分类器里面,挑出一个最符合要求的弱分类器,用着这个弱分类器把不想要的数据剔除,保留想要的数据

然后再从剩下的弱分类器里,再挑出一个最符合要求的弱分类器,对上一级保留的数据,把不想要的数据剔除,保留想要的数据。

最后,通过不断串联几个弱分类器,进过数据层层筛选,最后得到我们想要的数据

(你们也可以去搜搜Adaboost)



那么,针对刚才的问题,我们是否也可以级联一个卷积层和采样层?

是的,效果还不错

于是,如下图所示:


CNN入门讲解:如何理解卷积神经网络的结构


灯,等灯等灯


最简单的一个卷积神经网络,就诞生了


我想要申明的是,这是一个最简答的CNN结构,往后我会慢慢把结构加深


好了,我们来总结一下


CNN主要由3钟模块构成:

  • 卷积层
  • 采样层
  • 全连接层


大致上可以理解为:

  • 通过第一个卷积层提取最初特征,输出特征图(feature map)
  • 通过第一个采样层对最初的特征图(feature map )进行特征选择,去除多余特征,重构新的特征图
  • 第二个卷积层是对上一层的采样层的输出特征图(feature map)进行二次特征提取
  • 第二个采样层也对上层输出进行二次特征选择
  • 全连接层就是根据得到的特征进行分类



初学者是不是有点懵逼


其实整个框架很好理解,我举个生动形象的例子:


输入图像好比甘蔗。

卷积层好比A君要吃甘蔗,吃完之后(卷积),他得出一系列结论,这个甘蔗真好吃,我还想再吃!

啊不是,说错了

他得出结论,这个甘蔗是圆柱形,长条,甜的,白的,多汁的等等(提取特征)

采样层就好比第一个吃甘蔗的人告诉B君,吃甘蔗,重要的是吃个开心,为什么开心,因为它又甜又多汁,还嘎嘣脆(特征选取)

第二个卷积层就好比,B君并没有去吃剩下的甘蔗,而是

头也不回。

拦也拦不住的

去吃A君吐出的甘蔗渣

然后得出结论,嗯~~,

咦~~?

哦~~!

‘原来这甘蔗渣是涩的,是苦的,不易嚼,不好咽’B君这么说道(二次提取特征)

第二个采样层就好比,B君对别人说,这个甘蔗渣啊,吃的我不开心,因为它很涩,不好咽(二次特征选取)

如果你们要吃,注意点!

注意点!

意点!

点!

CNN入门讲解:如何理解卷积神经网络的结构



全连接层的作用,就好比是一个决策者,他听取了A,B君的描述

这样,如果有人吃很多东西,其中就有甘蔗

他们吃的时候,有一样东西吃起来,感觉和A,B君描述的非常接近,那么决策者就认为

这个很大概率是甘蔗了


好了,我讲了这么多,是不是大概有点理解CNN了?

什么

没有

你那按我说方法去吃甘蔗试试?

CNN入门讲解:如何理解卷积神经网络的结构

「你赞赏了,我才有动力写啊,么么哒」