卷积神经网络基本概述
1 CNN
1.1概述
卷积神经网络(Convolutional Neural Network,CNN或ConvNet)受生物学上感受野机制启发提出,被广泛应用于深度学习、计算机视觉领域。
密集连接模型(Dense)从输入特征空间中学到的是全局模式;而CNN针对局部模式,图像可以被分解为纹理、边缘等信息处理。和Dense相比,CNN的参数更少,测试精度略高,错误率大大降低。
因为视觉世界根本上具有平移不变性,CNN只需要更少的训练样本就可以具有泛化能力;此外,CNN可以学习模式的空间层次结构,学习过程中越来越复杂、抽象,这也符合人脑处理视觉世界的过程,局部的特征构成了高级概念,如猫的眼睛、耳朵、鼻子,到猫的局部边缘,“猫”则是组合成的高级概念。
CNN的权重共享可以理解为一个滤波器只捕捉输入数据中的一种特定的局部特征。因此,如果要提取多种特征就需要使用多个不同的滤波器。这也是Dense不具备的优点。
CNN通过卷积层(Convolution)、池化层(Pooling)和全连接层(Fully-connected)交叉堆叠成前馈神经网络,使用反向传播算法进行训练。几种典型的CNN有LeNet-5,AlexNet,VGG,Inception,ResNet等。
1.2卷积运算
在数字图像处理中,卷积一般指二维卷积。给定图像和一定大小的卷积核(kernel)旋转180°做乘积,最后输出结果。卷积核也可以视为滤波器(filter),就像是用一双眼睛去看这个世界,每个人看到的也只是局部信息,有自己的偏重和偏好,这就像滤波器中的参数。不同滤波器能提取出不同的边缘特征,在被机器视觉滤波和边缘检测得到了广泛应用,按需求使用不同的算子模板,其实现过程不难,在此不作具体介绍。
对于三维图像(第三维为通道),灰度图的深度D=1,彩色图RGB深度D=3。经过卷积对图像提取到的特征,称为特征映射(feature map)。 不同的卷积核可以提取出不同的特征。
1.3填充
对输入数据周围填入固定的数据(比如最常见的为0),称为填充(padding)。幅度表示在周围像素填充了多少。填充的目的是使得输出特征图的空间维度与输入相同,如果不填充会缩小空间,这样在多次卷积运算后就会产生严重问题。
1.4步幅
滤波器的步幅(stride)是指滤波器的滑动间隔。例如输入图像大小为77,步幅为2时,输出大小变为33。
1.5池化层
池化(pooling)(下采样)的目的是缩小长和高方向上的空间运算,达到减少整个网络参数的目的,可以加快处理速度以及防止过拟合。池化的类型有Max池化、Average池化等。池化不存在要学习的参数,通道数也不会发生变化,对微小的位置变化具有鲁棒性。