卷积神经网络(CNN)LeNet-5详解

 摘要:本文详细剖析了卷积神经网络的早期代表LeNet-5,包括每一层的输入、输出、权值和偏置(可训练参数)等细节,希望可以帮助入门卷积神经网络

1.卷积神经网络

卷积神经网络流行之前,我们做分类时常用的是“两段论”,即先用各种特征提取方法,如HOG、SIFT等,再连接分类器,如SVM、贝叶斯分类器等。这种方法工作量大,且最终效果并不好(一部分原因在于 不同特征提取方法和不同分类器的结合,效果无法预测)。而CNN采用的是端到端(end to end)的方法,将特征提取和分类方法全部由计算机自动计算,一方面减少了我们探寻特征提取和分类器的工作,另一方面也会使得分类效果更好。

卷积神经网络中的卷积操作实际为相关操作。我们之前学过的卷积都有一个翻转操作,但在卷积神经网络中的卷积没有翻转过程,所以实际为相关操作。这不光对最终结果其实没有任何影响,还可以减少计算量。简单解释为  在训练过程如果翻转,那在测试时也需要翻转,所以训练时如果不翻转,那么在测试也不用翻转,减少了测试阶段的运算时间。

下图为LeNet-5网络结构。

卷积神经网络(CNN)LeNet-5详解_第1张图片

2. LeNet-5网络结构详解:(共七层,神经网络层数不包括输入层,包括输出层)

    (1)输入:网络输入为32*32的单通道图像,我们利用LeNet-5分类时应resize图像为32*32.

    (2)第一层:卷积层(C1层):卷积层的目的是提取图像特征,神经网络结构中较前的卷积层主要提取图像的细节特征,较后的卷积层主要提取图像的全局特征。对输入的单通道32*32图像用六个不同的5*5卷积核(也称为滤波器)从左到右,从上到下进行卷积操作.最后结果为6个特征图(feature map,有几个卷积核就有几个对应的特征图),每个特征图大小为28*28(因为输入为32*32,卷积核为5*5,步长(stride)为1,且没有进行补边(padding)操作,所以输出大小为(32-5+1)*(32-5+1)=28*28).

      在这一层可训练的参数个数为(5*5+1)*6=156个(卷积核即为权重,每个卷积核有一个偏置,故每个卷积核有(5*5+1)个参数,共有6个卷积核)。

 

(3)第二层:池化层(pooling层,也称为下采样层(subsampling),S2层):下采样层主要降低数据维度。这一层在6个输入特征图做2*2 池化,步长为2(没有重叠池化),所以输出为6个14*14的特征图。具体池化过程为在输入特征图中2*2的范围将四个输入值相加,然后乘以一个权重,然后加上一个偏置,最后经过sigmoid激活函数输出。

这一层有6*2=12个可训练参数。(每个特征图有一个权重,一个偏置)

(4)第三层:卷积层(C3层):这一层输出为16个10*10的特征图。首先采用的卷积核仍然是5*5,所以输出的特征图大小为(14-5+1)*(14-5+1)=10*10.那么,上一层的6个特征图和这一层的16个特征图是如何连接的呢?如下图所示:

卷积神经网络(CNN)LeNet-5详解_第2张图片

        这里将 S2层的六个特征图分别编号0-5,将C3层的16个特征图分别编号0-15。上图的意思为:C3层的编号为0的特征图是由三个不同的卷积核分别与S2的编号为0、1、2的特征图卷积后求和,再加上偏置,最后经过sigmoid激活函数后得到。同理,其他C3 15个特征图与S2层特征图的连接如上图。值得注意的是,C3层编号0-5的特征图分别与S2的3个特征图连接,C3层编号6-14的特征图分别与S2的4个特征图连接,C3层编号15的特征图与S2的6个特征图连接.

这一层参数为(5*5*3+1)*6+(5*5*4+1)*9+(5*5*6+1)*1=1516个

(5)第四层:池化层(S4层):这一层输入为16个10*10的特征图,经过2*2的池化后输出为16个5*5的特征图。具体池化过程同S2层。

这一层可训练参数为16*2=32个

(6)第五层:卷积层(C5层):这一层输入为16个5*5的特征图,经过5*5的卷积核操作后,输出为120个1*1的特征图((5-5+1)*(5-5+1)=1*1)。

这一层参数为(5*5*16+1)*120=48120个

(7)第六层:全连接层(Full connection,F6层):这一层输入为120个1*1的特征图,即120*1维向量,输出为84个1*1的特征图,即84*1维向量,连接方式为全连接,即F6层的每一个神经元都与C5层的每一个神经元连接。输出为输入和权重卷积后加上偏置,在经过sigmoid激活函数后得到。

这一层参数为(120+1)*84=10164个

(8)第七层:全连接层(F7层,输出层):输入为84*1维向量,输出为10*1维向量(10个分类结果,LeNet-5最早应用于手写体数字识别,所以为10个类别)。这一层采用的是径向基函数(RBF)的网络连接方式。

这一层参数为84*10=840个参数。

3.总结

       如今看来,LeNet-5很简单,但其设计的卷积层、下采样层、全连接层等在深度学习的发展中有着里程碑式的意义。LeCun在其论文中总结如下:

Convolutional networks combine three architectural ideas to ensure some degree of shift, scale, and distortion invariance: 1) local receptive fields; 2) shared weights (or weight replication); and 3) spatial or temporal subsampling. 

       卷积网络有三个设计意图以确保一定程度的偏移、缩放和翻转不变:1)局部感受野

2)共享权值   3)空间或时间下采样

 

 

 

你可能感兴趣的:(深度学习,神经网络,卷积)