CNN之LeNet-5(二)
LeNet-5初理解
一. 模型介绍
LeNet-5出自1998年YE Cun的论文《Gradient-Based Learning Applied to Document Recognition》,在上篇blog中有网盘链接可以下载~这篇文章指出LeNet-5对于手写数字识别是一个非常高效的网络。下图是该网络的结构:
可以看到:
- 除了输入层之外,LeNet-5一共含有7层;
- 每层都包含可训练参数;
- 每层包括多个feature map。
二. 各层详解
1. 输入层-INPUT
从上图中可以看到,输入是二维图像,大小为,它要比数据库中最大的还要大一点,这是因为我们希望潜在的不同的特征(例如终点或角点)能出现在更深层的特征检测子的接收区域的中心。
2. 卷积层-C1
C1层是对输入图像进行第一次卷积运算,它采用了6个的卷积核,得到的是6个的feature map(32-5+1=28)。
由于卷积核的大小为,需要学习的weight和bias总共就有 个参数,+1即表示一个核有一个bias。
对于卷积层C1,由于feature map的每个像素都与卷积核中的5*5个像素和1个bias有连接,所以总共有个连接(connection)。
然而我们只需要学习156个参数,这是因为CNN的主要特点之一权值共享。
总结:
参数 | 说明 |
---|---|
input size | |
filter size | |
filter num | 6 |
feature map size | |
params | |
connections | 122304 |
3. 池化层-S2
池化即下采样,LeNet-5使用了的filter,对C1中的每个feature map接受到的2*2区域内的像素求和,再乘以一个可训练参数weight,再加上一个可训练参数偏置bias,最后这个结果还会通过sigmoid**函数,从而获得S2层的6个feature map。
需要学习的参数为个,连接数为。
总结:
参数 | 说明 |
---|---|
input size | |
filter size | |
filter num | 6 |
feature map size | |
params | 12 |
connections | 5880 |
4. 卷积层-C3
该卷积层采用了16个大小为的filter,得到的C3中的feature map大小为,这些feature map是由S2中所得特征通过不同的组合方式产生的。
总结为:
参数 | 说明 |
---|---|
input size | |
filter size | |
filter num | 16 |
feature map size | |
params | 1516 |
connections | 151600 |
说明:
C3层中的feature map是与S2中的某几个feature map相连接的,也就是说C3层的feature map是S2层提取到的feature map的不同组合。文章中指出,这些组合方式包括:
-
C3层的前6个feature map是以S2层中3个相邻的feature map子集作为输入;
-
接下来6个feature map以S2层中4个相邻的feature map子集为输入;
-
接下来3个feature map以S2层中不相邻的4个feature map子集作为输入;
-
最后一个feature map以S2层的所有feature map作为输入。
如下图所示:
为什么要采取这种方式而不是将S2层的每个feature map与C3层的每个feature map相连接呢?原文中给出了两个原因: -
有效的减少参数量;
-
有利于提取多种不同的特征;
那么需要训练的参数为:
连接数为:
5. 池化层-S4
这是第二个池化层,该层所使用的filter大小仍为,以C3层中的16个大小为的feature map作为输入,得到的S4为16个大小为的feature map。此处的连接方式与C1-S2的连接方式是相同的。
那么需要学习的参数为个,连接数为。
总结:
参数 | 说明 |
---|---|
input size | |
filter size | |
filter num | 16 |
feature map size | 5*5 |
params | 32 |
connections | 2000 |
6. 卷积层-C5
C5是第三个卷积层,该层的输入是16个大小为的feature map,使用的filter大小也是,因此C5中的feature map大小为。C5共有120个feature map,每一个都和上一层的16个feature map相连,因此可训练参数为:,连接数也是48120。之所以称该层为卷积层而不是全连接层是因为,如果LeNet-5的输入在其他设置都保持不变的情况下变大,feature map的维数将大于。
总结:
参数 | 说明 |
---|---|
input size | |
filter size | |
filter num | 120 |
feature map size | |
params | 48120 |
connections | 48120 |
7. 全连接层-F6
第6层是全连接层,该层有84个unit,这里的84是由输出决定的,它对应于一个7x12的比特图。
以C5的120个的vector作为输入,该层会计算输入vector与权重vector的点积,再加上偏置后通过sigmoid函数输出结果,因此该层的训练参数和连接数为:。
8. 输出层-F7
输出层也是一个全连接层,该层有10个unit,分别代表了数字0-9,若第i个unit的值为0,就说明网络识别结果为数字i。
该层采用的连接方式为RBF(径向基函数),是F6的输出(即F7的输入),记为F6中,那么:,其中
记为F7的输出,,那么计算方式为:
其中的值由数字的比特图编码确定,,。RBF输出的值越接近于0,则识别结果越接近于字符,即越接近于数字的ASCII编码图,也就是说表示当前网络输入的识别结果是字符。
对于该层的每个unit,都有84个input,因此可训练参数为:,同样连接数也是840个。
9. 损失函数
LeNet-5采用的Loss Function是MSE(the Minimum Mean Squared Error),即:
其中是整个网络的输入,是RBF中第个单元的输出。
三. 小结
原文并没有完整的读下来,粗略的看了一下网络结构,如有不足请批评指正~