卷积神经网络
什么是卷积
计算机处理数据时,时间是离散的,使用离散卷积。
卷积也可以是多维的。如果将一个二维图像I作为输入,也许同样希望使用一个二维卷积核K:
卷积有交换性,上式可等价写作:
互相关的相关函数(除不翻转核函数外,其余跟卷积一样):
为什么要卷积
卷积提供了三个重要方法:稀疏交互、稀疏连接、参数共享、等价表达。
和只用全连接层相比,卷积层的两个主要优势在于参数共享和稀疏连接,CNN使用这两种方式减少参数。
- 参数共享:对模型中的多个函数使用相同的参数。参数共享的特殊形式使卷积层具有变换等价性。一个在图像中某一部分很有用的共享特征检测器(比如一个垂直边缘检测器),可能会对图像的另一部分也很有用。在减少模型所需要的内存空间的同时,提高了模型的统计效率。
- 稀疏连接:每一层中,每个输出值只依赖于一小部分输入,不会对输出产生任何影响。
卷积神经网络层次
- 输入层INPUT:图像的像素值作为输入。
- 卷积层CONV:卷积计算层(核心),卷积层连接输入的一个小区域,并计算卷积核与对应的输入小区域之间的点乘作为输出。
- 池化层POOL:取区域平均或最大。在空间维度(W,H)上执行一个降采样的操作。
- 全连接层FC:在分类任务中将计算每个类别对应的分数,和普通神经网络一样,FC层的每个神经元都将与其一层的输出相连。
卷积层的操作
卷积层的参数由一组可学习的卷积核Kernel(filter)构成。每个卷积核在空间中都是小尺寸的,但会穿过输入集的整个深度。
- 垂直边缘检测的例子:
- 边缘检测的类型:
通过卷积层后如何计算输出特征图的空间尺寸
输出特征图的尺寸由三个超参数控制:深度(卷积核数量)、步长、零填充值(不希望特征图在卷积过程中尺寸下降太快)。
设输入图像尺寸W、卷积神经元可视野尺寸F、采用的步长S、边缘填充值的数量P,输出特征图的尺寸计算公式:
- 如果想得到与输入尺寸相同的输出结果,设S=1,则
而F一般为奇数,原因有两点:
- P若为偶数,会导致只能使用一些不对称的填充。
- P为奇数时只有一个中心像素点,计算机处理更方便
- 卷积操作具体过程
卷积层操作的公式:
5. 常见的神经元模型(激励函数)线性神经元:
线性阈值神经元:
Sigmoid神经元:
Tanh(双曲正切)神经元:
ReLU神经元:整流线性单元
Leaky ReLU激活函数:
Maxout:
Softmax:
池化层的操作
- Max Pooling最大池化:
取视野范围内的最大值(现在常见)。最大池化很少用padding。 - Average Pooling平均池化:取视野范围内的平均值(过去常见)。
- 统计神经网络的层数时,通常只是统计具有权重和参数的层,而池化层只有一些超级参数,因此很多时候
把CONV和POOL1共同作为一个卷积。 - 神经网络另一种结构:一个或多个卷积层后面跟随一个池化层,然后一个或多个卷积层后面再跟随一个池化层,然后是几个全连接层。许多参数都存在于神经网络的全连接层。池化层和最大池化层无参数,卷积层参数较少。
全连接层的操作
全连接层(fully connected
layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为h*w的全局卷积,h和w分别为前层卷积结果的高和宽。
全连接的核心操作就是矩阵向量乘积。
本质就是由一个特征空间线性变换到另一个特征空间。目标空间的任一维——也就是隐层的一个
cell——都认为会受到源空间的每一维的影响。不考虑严谨,可以说,目标向量是源向量的加权和。
在 CNN 中,全连接常出现在最后几层,用于对前面设计的特征做加权和。比如
mnist,前面的卷积和池化相当于做特征工程,后面的全连接相当于做特征加权。
经典CNN网络与残差网络
- 经典CNN模型
- LeNet-5
- 经典LeNet-5网络在池化后进行了非线性函数处理,比如池化后使用了Sigmoid函数。大约有6万个参数。
- AlexNet
- 大约6000万个参数,远多于LeNET-5。 且使用了ReLU激活函数。
- VGG:简化了神经网络结构。
- 共包含1.38亿个参数,但是结构并不复杂,需训练的特征数量巨大。
- ResNet:残差网络(152层)
远跳连接:可以从某一网络层获取激活,然后迅速反馈给另外一层,甚至是更深的一层,优势深度超过1000层。残差块有了残差网络,网络越深,训练效果越好、出错越少。当输入输出维度相同时,可以使用恒等快捷连接。
深度残差网络的基本模块: