详解卷积神经网络

在了解卷积神经网络之前,我们先了解一下什么是神经网络

推荐B站吴恩达的神经网络和深度学习视频  https://www.bilibili.com/video/av34661735

如果觉得视频太长,推荐文章  https://blog.csdn.net/qq_45021489/article/details/90286792#seventh

现在你对神经网络已经有了一些了解,你需要回答下面几个问题:

1、神经元的输入输出是什么,神经元都有哪些参数,参数的数量如何计算

2、什么是激活函数,为什么需要激活函数,什么是损失函数

3、什么是前向传播和反向传播,梯度下降法的作用,梯度下降法运用在什么过程

当你对这些概念有一些认知了的时候,我们开始学习卷积神经网络。


在卷积神经网络出现之前,我们对图片的处理是通过全连接进行的,即第一层的每一个神经元都与图片的每一个像素相连,假设图片大小为1000*1000,第一层有1000个神经元,那么就有1000*1000*1000个参数需要计算,这个参数的数量是极大的,这还只是第一层的参数。所以卷积神经网络一经提出就受到了广泛关注。

第一步,将每一个神经元与图片的某一固定大小区域的像素相连,而不是整个图片,我们以手写字母的识别为例讲解。

与神经网络不同的是卷积神经网络的神经元的数目不是随意决定的,而是由图像大小和卷积核大小共同决定的。前面说过每个神经元与部分区域相连,这个区域的像素大小就是神经元的输入,神经元对这些像素的操作即为卷积(卷积与滤波的差别?),对于一个32*32的图片,使用5*5的卷积核进行卷积,得到一个28*28大小的图片称为Feature Map,则神经元的数目等于Feature Map的大小,即28×28=784个,卷积核的数值也就是神经元的参数W,需要通过学习获得。此时我们还忽略了一个问题,每一个神经元都有25+1(偏置)个参数,784个神经元是不是就需要26*784个参数呢?答案是否定的,这里就要提到一个概念——权值共享,同一个Feature Map中所有神经元使用相同的权值,也就是所有神经元都是用的同一个卷积核,道理是很容易理解的,我们拿滤波举例,我们不可能用sobel算子把一张图像处理一半然后对剩下的一半改用candy算子。

此时你可能有一个困惑,为什么经过一次卷积(convolutions),C1的feature map竟然有6层,这是为了得到多样化的特征,我们使用了6个卷积核,同样以图像处理举例,对于一张图象,为了达到不同目的,我们可以用高斯滤波,也可以用中值滤波。这个滤波器的个数是需要我们认为指定的,人脸识别第一层的滤波器可能有上百个。现在第一层的参数的个数是多少呢?现在是(5*5+1)×6=156个。

现在轮到讲S2层了,这是一个池化层,池化的单词是pooling,这里为什么是subsampling呢,因为池化的本质是降采样,所以有6个14*14的Feature Map. 特征图中的每个单元与C1中相对应特征图的2*2邻域相连接,而且互不重回。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置,也有不是4个输入相加而是取4个输入的最大值的。S2层有6*(1+1)=12个可训练参数。

同理,我们用16个5*5的卷积核对S2的6层Feature Map进行处理,得到16个10*10的特征图。现在我们来思考一个问题,S2有6层,当我们用16个卷积核来处理为什么得到的C3是16层而不是6*16=96层呢?用一个卷积核来处理6层为什么没有得到6层呢,这之间执行了什么操作呢?答案就是叠加操作,得到的这6层对应位置的结果相加,变为一层。事实上,C3中每个特征图由S2中所有6个或者几个特征map组合而成。为什么不把S2中的每个特征图连接到每个C3的特征图呢?原因有2点。第一,不完全的连接机制将连接的数量保持在合理的范围内。第二,也是最重要的,其破坏了网络的对称性。由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征(希望是互补的)。

   例如,存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。这样C3层有1516 (6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+(25*6+1)=1516)个可训练参数

S4层是一个降采样层,由16个5*5大小的特征图构成。特征图中的每个单元与C3中相应特征图的2*2邻域相连接,跟C1和S2之间的连接一样。S4层有32个可训练参数(每个特征图1个因子和一个偏置16*(1+1)=32

 C5层是一个卷积层,有120个特征图。每个单元与S4层的全部16个单元的5*5邻域相连。由于S4层特征图的大小也为5*5(同滤波器一样),故C5特征图的大小为1*1,这构成了S4和C5之间的全连接。之所以仍将C5标示为卷积层而非全相联层,是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比1*1大。C5层有120*(16*5*5+1)=48120由于与全部16个单元相连,故只加一个偏置)个可训练连接。

F6层有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连。有10164(84*(120*(1*1)+1)=10164)个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。

输出层和普通神经网络一致。

你可能感兴趣的:(详解卷积神经网络)