LeNet5网络的来源:Lécun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11):2278-2324.
1. 卷积神经网络(Convolutional Neural Network,CNN)基本介绍
1.1 CNN的组成部分
卷积神经网络CNN(Convolutional Neural Network),是一类深度神经网络,最常用于分析视觉图像。一个卷积神经网络通常包括输入输出层和多个隐藏层,隐藏层通常包括卷积层和RELU层(即激活函数)、池化层、全连接层和归一化层等。
1.输入层
CNN的输入一般是二维向量,可以有高度,比如,RGB图像。
2.卷积层
卷积层是CNN的核心,层的参数由一组可学习的滤波器(filter)或内核(kernels)组成,它们具有小的感受野,延伸到输入容积的整个深度。卷积层的作用是对输入层进行卷积,提取更高层次的特征。
3.池化层
池化层(又称为下采样),它的作用是减小数据处理量同时保留有用信息,池化层的作用可以描述为模糊图像,丢掉了一些不是那么重要的特征。池化层一般包括均值池化、最大池化、高斯池化、可训练池化等。
4.激活层
激活层主要是把卷积层输出结果做非线性映射,常用的激励函数有ReLU、sigmoid、tanh、LeakyReLU等。CNN采用的激励函数一般为ReLU(The Rectified Linear Unit,修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱。
5.全连接层
全连接层是一个常规的神经网络,它的作用是对经过多次卷积层和多次池化层所得出来的高级特征进行全连接(全连接就是常规神经网络的性质),算出最后的预测值。
6.输出层
输出层输出对结果的预测值,一般会加一个softmax层。
1.2 CNN的特点
CNN主要有三大特色,分别是局部感知、权重共享和多卷积核。
1. 局部感知
局部感知就是我们上面说的感受野,实际上就是卷积核和图像卷积的时候,每次卷积核所覆盖的像素只是一小部分,是局部特征,所以说是局部感知。CNN是一个从局部到整体的过程(局部到整体的实现是在全连通层),而传统的神经网络是整体的过程。
2. 权重共享
权值共享:不同的图像或者同一张图像共用一个卷积核,减少重复的卷积核。同一张图像当中可能会出现相同的特征,共享卷积核能够进一步减少权值参数。
3. 多卷积核
一种卷积核代表的是一种特征,为获得更多不同的特征集合,卷积层会有多个卷积核,生成不同的特征,这也是为什么卷积后的图片的高,每一个图片代表不同的特征。
2. LeNet5
LeNet5源自Yann LeCun的论文“Gradient-Based Learning Applied to Document Recognition”,是一种用于手写体字符识别的非常高效的卷积神经网络。
2.1 LeNet5结构
LeNet5网络虽然很小,但是包含了深度学习的基本模块:卷积层、池化层、全连接层。LeNet5共有七层,不包含输入,每层都包含可训练参数,每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每Feature Map有多个神经元。
输入: 32 ∗ 32 32*32 32∗32的手写字体图片,这些手写字体包含0-9数字,也就是相当于10个类别的图片。
输出: 分类结果,0-9之间的一个数(softmax)
2.2 各层结构及参数
1. INPUT(输入层)
32 ∗ 32 32*32 32∗32的图片,共有1024个神经元。
2. C1(卷积层)
选取6个 5 ∗ 5 5*5 5∗5卷积核(不包含偏置),得到6个特征图,每个特征图的大小为 32 − 5 + 1 = 28 32-5+1=28 32−5+1=28,也就是神经元的个数由1024减小到了 28 ∗ 28 = 784 28*28=784 28∗28=784 。
输入层与C1层之间的参数: 6 ∗ ( 5 ∗ 5 + 1 ) 6*(5*5+1) 6∗(5∗5+1) ,对于卷积层C1,每个像素都与前一层的 5 ∗ 5 5*5 5∗5个像素和1一个bias有连接,有 6 ∗ ( 5 ∗ 5 + 1 ) ∗ ( 28 ∗ 28 ) 6*(5*5+1)*(28*28) 6∗(5∗5+1)∗(28∗28)个连接。
3. S2(池化层)
池化层是一个下采样层,有6个 14 ∗ 14 14*14 14∗14的特征图,特征图中的每个单元与C1中相对应特征图的 2 ∗ 2 2*2 2∗2邻域连接。S2层每个单元对应C1中4个求和,乘以一个可训练参数,再加上一个可训练偏置。
C1与S2之间的参数: 每一个 2 ∗ 2 2*2 2∗2 求和,然后乘以一个参数,加上一个偏置,共计 2 ∗ 6 = 12 2*6=12 2∗6=12个参数。S2中的每个像素都与C1中的 2 ∗ 2 2*2 2∗2个像素和1个偏置相连接,所以有 6 ∗ 5 ∗ 14 ∗ 14 = 5880 6*5*14*14=5880 6∗5∗14∗14=5880个链接。
4. C3(卷积层)
选取卷积核大小为 5 ∗ 5 5*5 5∗5,得到新的图片大小为 10 ∗ 10 10*10 10∗10。
S2与C3之间的组合: 如图所示 前6个feature map与S2层相连的3个feature map相连接,后面6个feature map与S2层相连的4个feature map相连接,后面3个feature map与S2层部分不相连的4个feature map相连接,最后一个与S2层的所有feature map相连。卷积核的大小依然为 5 ∗ 5 5*5 5∗5,总共有 6 ∗ ( 3 ∗ 5 ∗ 5 + 1 ) + 6 ∗ ( 4 ∗ 5 ∗ 5 + 1 ) + 3 ∗ ( 4 ∗ 5 ∗ 5 + 1 ) + 1 ∗ ( 6 ∗ 5 ∗ 5 + 1 ) = 1516 6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516 6∗(3∗5∗5+1)+6∗(4∗5∗5+1)+3∗(4∗5∗5+1)+1∗(6∗5∗5+1)=1516个参数。而图像大小为 10 ∗ 10 10*10 10∗10,所以共有151600个连接。
5. S4(池化层)
窗口大小为 2 ∗ 2 2*2 2∗2,有16个特征图,共有32个参数。
C3与S4之间的参数: 16 ∗ ( 25 ∗ 4 + 25 ) = 2000 16*(25*4+25)=2000 16∗(25∗4+25)=2000个连接。
6. C5(卷积层)
总共120个feature map,每个feature map与S4层所有的feature map相连接,卷积核大小为 5 ∗ 5 5*5 5∗5,而S4层的feature map的大小也是 5 ∗ 5 5*5 5∗5,所以C5的feature map就变成了一个点,共计有 120 ∗ ( 25 ∗ 16 + 1 ) = 48120 120*(25*16+1)=48120 120∗(25∗16+1)=48120个参数。
7. F6(全连接层)
F6相当于MLP(Multi-Layer Perceptron,多层感知机)中的隐含层,有84个节点,所以有 84 ∗ ( 120 + 1 ) = 10164 84*(120+1)=10164 84∗(120+1)=10164个参数,F6采用了sigmoid函数。
8. Output(输出层)
全连接层,共有10个节点,采用的是径向基函数(RBF)的网络连接方式。
3. 总结
- LeNet5是一种用于手写体字符识别的非常高效的卷积神经网络。
- 卷积神经网络能够很好的利用图像的结构信息。
- 卷积层的参数较少,这也是由卷积层的主要特性即局部连接和共享权重所决定。
4. 参考
- CNN初探
- Concolutional neural network----WikiPedia
- 卷积神经网络(CNN)详解
- 卷积神经网络(CNN)详解
- LeNet-5详解
- LeNet-5网络结构解析
- 1.CNN学习笔记——理解结构,LeNet5介绍