卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

一. CNN神经网络介绍

CNN是一种特殊的深度前馈神经网络,为了避免层级之间的全连接造成的参数冗余,而导致网络模型的训练依赖相当参数个数的数据量;他的设计是局部连接,符合生物神经元的稀疏响应特性(层级之间是稀疏连接的),这样大大的降低了网络模型的参数规模,相对而言,对训练数据的依赖性降低了。

CNN的基础模块为卷积流,其包括四个部分:卷积,池化,非线性,批量归一化。

卷积:利用卷积核对输入图片进行处理,可以学习到鲁棒性较高的特征。

数字信号处理中常用到的卷积类型:Full卷积,Same卷积,Valid卷积;假设输入的信号为一维,且滤波器为一维的,则有:

1)Full卷积

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

其中t = 12...n+m-1

2)Same卷积

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

其返回的结果为Full卷积中与输入信号尺度相同的中心部分。

3)Valid卷积

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

其中t=1,2...n-m+1,需要注意的是n>m

现在再看一下输入为图片格式(矩阵型),三种卷积的情况(FullValidSame)

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

卷积操作的核心:可以约减不必要的权值连接引入稀疏或局部连接,带来的权值共享策略大大的减少参数量,相对的提升了数据量,从而可以避免过拟合现象的发生;由于卷积操作具有平移不变性,使得学习到的特征具有拓扑对应性鲁棒性的特性。

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

权值共享:相邻神经元的活性相似,从而共享相同的权值参数。

*深度神经网络可塑性:旋转不变性,平移不变性,多尺度、多分辨、多通路特性,稀疏性。


池化:降采样操作,即在一个小区域内,采取一个特定的值作为输出值。

本质上,池化操作执行空间或特征类型的聚合,降低空间维度,其主要的意义是:减少计算量,刻画平移不变性;约减下一层的输入维度,核心是降低下一层级的参数,有效地控制过拟合风险。常见池化方式:最大池化,平均池化,随机池化,范数池化,对数概率池化,空域金字塔池化

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍 

空域金字塔池化:一种多尺度池化,可获取输入(卷积后的特征图)的多尺度信息;另外,空域金字塔池化可以把任意尺度的图像的卷积特征转化为相同维度,这不仅可以让卷积神经网络处理任意尺度的图像,还能避免拉伸与向量化操作所导致的一些信息丢失。

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

假设我们输入一个一张feature Map,将其按照3种不同刻度:4x4  2x2  1x1对其进行划分,便会得到16+4+1=21块子feature Map;现对每一块子feature Map各取出一个特征,然后将其合并为一个固定大小的21维特征。注:每种刻度对应金字塔一层,每个子feature Map称之为win_size;自己可以根据需求设计某一层输出的n x n个特征。


非线性即选择**函数,利用**函数的非线性操作,通过弯曲或扭曲实现表征能力的提升。

**函数的核心,通过层级(简单)非线性映射的复合使得整个网络的(复杂)非线性刻画能力得以提升,如果没有非线性操作,再多的层级组合仍是线性逼近,因而表征和挖掘深层数据的能力有限。现在用的比较多的**函数:

1)修正线性逼近ReLU:加速收敛,内蕴稀疏性

2)Softmax系:用于最后一层,为计算概率响应

3)Softplus函数:ReLU的光滑逼近

4)Sigmoid系:传统神经网络的核心

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

生物脑神经元**函数的主要变化有三点:

单侧抑制    ②相对较宽的兴奋边界    ③稀疏**性

 

Softplus函数具有生物脑神经元**函数的前两个特点,但不具备稀疏性,而ReLU函数恰好同时满足这三点特性,因而在现在的DNN神经网络中用的比较广泛。

 

批量归一化:优化操作,减少训练过程中的不稳定性。

归一化操作,目的是避免随着层级的加深而导致信息的传递呈现逐层衰减的趋势,因为数据范围大的输入在模式分类中的作用可能偏大,而在数据范围小的输入作用可能偏小,总之数据范围偏大偏小,可能导致DNN收敛较慢、训练时间长。2015年以前,经常在DNN中遇到各种各样的归一化层,但是近些年研究表明,这个层级似乎对最后的结果帮助不大,所以也开始慢慢摒弃。


二. 经典的分类网络——LeNet5


卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

InputN32*32的训练样本

输入图像为32*32大小。这要比MNIST数据库中最大的字母还大。这样做的原因是希望潜在的明显特征如笔画断点或角点能够出现在最高层特征监测子感受野的中心。

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

注意:绿框中未包含偏置项。如加入偏置项则每个输出多加上同一个偏置b,此时类似如:aw+bx+ey+fz+b等。所谓的权值共享是每个卷积运算使用同一个卷积核,在图中使用的是同一个卷积核,即共享权值


C1层:

输入图片大小:   32*32

卷积窗大小:    5*5

卷积窗种类:    6

输出特征图数量:  6

输出特征图大小:  28*28    (32-5+1)

神经元数量:    4707     (28*28)*6)

连接数:       122304    (28*28*5*5*6)+(28*28*6)

可训练参数:    156      5*5*6+6

65×5的过滤器进行卷积,结果是在卷积层C1中,得到6张特征图,特征图的每个神经元与输入图片中的5×5的邻域相连,即用5×5的卷积核去卷积输入层,由卷积运算可得C1层输出的特征图大小为(32-5+1)×(32-5+1)=28×28


S2层:

输入图片大小:     (28*28)*6                        

池化窗大小:       2*2

池化窗种类:        6

输出下采样图数量:     6

输出下采样图大小:    14*14      (28/2)*(28/2)

神经元数量:       1176       (14*14)*6

连接数:         5880     2*2*14*14*6+14*14*6

可训练参数:       12      1+1*6

解读:一般CNN神经网络池化层通常都是利用最大池化,但是在LeNet5中池化稍微复杂,采用C1中池化块像素求和、加权、加偏置,然后再利用**函数进行映射,从而得到降维后的feature map


卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

C3层:

输入图片大小:   (14*14)*6           

卷积窗大小:      5*5

卷积窗种类:      16

输出特征图数量:   16

输出特征图大小:  10*10     (14-5+1)

神经元数量:     1600     (10*10)*16)

连接数:       151600   1516*10*10

可训练参数:    1516    6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+1*(6*25+1)

连接解读:6MapS23个相邻Map,接下来6MapS24个相邻Map,接下来3个卷S24个不相邻Map,最后一个卷S2中所有Map。一共有6*3*5*5+1+6*4*5*5+1+3*4*5*5+1+1*6*5*5+1=1516个参数,一共有1516*10*10=151600个连接

具体来说就是如C3的第一个Map,由S2的前三个Map分别与第一个卷积核(一共16个)进行卷积运算,然后求和、加权、添偏置,以此类推(如上图所示)。

注:相关文献中说有两个原因:1)减少参数,2)这种不对称的组合连接的方式有利于提取多种组合特征。


S4层:

输入图片大小:       (10*10)*16

池化窗大小:          2*2

池化窗种类:          16

输出下采样图数量:     16

输出下采样图大小:    (5*5)*16

神经元数量:         400    (5*5)*16

连接数:           2000    (2*2*5*5*16)+(5*5*16)

可训练参数:        32      (1+1)*16

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


C5层:

输入图片大小:     (5*5)*16

卷积窗大小:       5*5

卷积窗种类:       120

输出特征图数量:    120

输出特征图大小:   1*1    (5-5+1)

神经元数量:      120    (1*120)

连接数:         48120   5*5*16*120*1+120*1

可训练参数:      48120     5*5*16*120+120

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

 

F6层:

输入图片大小:      (1*1)*120

卷积窗大小:       1*1

卷积窗种类:         84

输出特征图数量:      1

输出特征图大小:      84      

神经元数量:         84   

连接数:           10164     120*84+84

可训练参数:        10164     120*84+84

F6层有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连。有10164个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给Sigmoid函数产生单元i的一个状态


Output

输入图片大小:       1*84

输出特征图数量:   1*10

Output层也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是欧式径向基函数(ERBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:

卷积神经网络CNN的详细解读,及经典分类网络LeNet5的介绍

CNN是一种带有卷积结构的深度神经网络,通常至少有两个非线性可训练的卷积层,两个非线性的固定卷积层(又叫Pooling Layer)和一个全连接层,一共至少5个隐含层。卷积神经网络中,输入就是一幅幅的图像,权值W就是卷积,一般是卷积层和池化层交替,最后是全连接的神经网络。