1、图像卷积运算过程
卷积的离散公式为:
现在对于上面卷积过程进行分析:我们用来做例子的 A 矩阵为 m×m(3×3)二维矩阵(被卷积矩阵),K 为 n×n(2×2)的二维矩阵(卷积核)。
运算方式如下:
1、卷积核翻转180°:
2、被卷积矩阵扩展到(m+n)×(m+n)大小,将扩展部分用 0 代替,将卷积核 K 从左上角顺序地行移动,再换行,继续,直到抵达右下角。将对应元素相乘后相加:
5*5矩阵
3、依次类推,剔除为 0 的元素,5×5 矩阵结果为 4×4 矩阵,卷积计算结束。
2、池化层
1.全连接网络的问题
全连接网络:链接权过多,算的慢,难收敛,同时可能进入局部极小值,也容易产生过拟合问题
e.g. 输入为1000 × 1000图像,隐含层有1M个节点,则输入->隐含层间有1 × 1012数量级参数
解决算的慢问题:减少权值连接,每一个节点只连到上一层的少数神经元,即局部连接网络
解决难收敛、算的慢问题:权值过多极易产生过拟合。如何消除?
回想人类解决思路:信息分层处理,每一层在上层提取特征的基础上获取进行再处理,得到更高级别的特征。
2、池化层(特征提取)
池化过程在一般卷积过程后。池化(pooling) 的本质,其实就是采样。Pooling 对于输入的 Feature Map,选择某种方式对其进行降维压缩,以加快运算速度。
池化的方式分为两种,分别为最大池化和平均池化。采用较多的一种池化过程叫最大池化(Max Pooling),其具体操作过程如下:
池化过程类似于卷积过程,如上图所示,表示的就是对一个 4×4 feature map邻域内的值,用一个 2×2 的filter,步长为2进行‘扫描’,选择最大值输出到下一层,这叫做 Max Pooling。
max pooling常用的 =2 , =2 的效果:特征图高度、宽度减半,通道数不变。
还有一种叫平均池化(Average Pooling),就是从以上取某个区域的最大值改为求这个区域的平均值,其具体操作过程如下:
池化的作用:
(1)保留主要特征的同时减少参数和计算量,防止过拟合。
(2)invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)。
由多个卷积层和下采样层构成,后面可连接全连接网络
3、卷积NN的BP算法
如果当前层是卷积层,下一层是下采样层,误差将从下采样层回传:
如果当前是下采样层,下一层为卷积层,误差从卷积层回传:
卷积层+卷积层:
因此有:
卷积层+全连接层:
卷积层:
全连接层:
因此有:
4、LeNet-5网络
• 输入层: LeNet5 网络的输入为32 × 32 大小的图像
• C1 层( 卷积层):使用6 个大小为5 × 5 的卷积核对输入图像进行卷积操作,卷积后得到的特征图尺寸为28 ,因此产生6 个大小为28 × 28 的特征图。
• S2 层( Pooling 层):这里采用Max Pooling 操作, Pooling 窗口大小为2 × 2 。经过Pooling 层后得到6 个14 × 14 的特征图,作为下一层的输入。
• C3 层(卷积层):使用16 个大小为5 × 5 的卷积核对输入的特征图进行卷积操作。值得注意的是, C3 中输出的特征图是S2 中的特征图进行加权组合得到的。卷积的维数有3、4、5三种,共同作用,输出为16 个10 × 10 的特征图。
• S4 层( Pooling 层):同样采用Max Pooling 操作, Pooling 窗口大小为2 × 2 。最后输出16 个5 × 5 的特征图,神经元个数为400 ( 16 × 5 × 5 )。
• C5 层(全连接层):该层可以理解对S4 层产生的特征向量进行拉伸,每一个像素代表一个神经元,使用全连接操作输出特征为120 个神经元。
• F6 层:该层与C5 层进行全连接,输出特征为84 个神经元。
• 输出层:该层与F6 层全连接,输出长度为10,代表所抽取的特征属于哪个类别。
网络结构为:
与现在网络的区别
1)卷积时不进行填充(padding)
2)池化层选用平均池化而非最大池化
3)选用Sigmoid或tanh而非ReLU作为非线性环节激活函数
4)层数较浅,参数数量小(约为6万)
引用文献: