浅谈卷积神经网络

一、 卷积层、激活函数层、池化层、全连接层
1、 卷积层:
一般的,标准数码相机的图像将有三个通道——红、绿、蓝——我们可以把它们想象成三个相互叠加的2d矩阵(每种颜色一个),每个像素值在0到255之间(颜色越亮数值越大)。卷积在卷积网络中的主要目的是从输入图像中提取特征。卷积通过使用输入数据的小方块学习图像特征来保持像素之间的空间关系。
下面仅以0,1的二维矩阵进行举例(实际过程中为0-255)。
在这里插入图片描述

三通道中的其中一个通道,其二维矩阵例举如上。
在这里插入图片描述

所用的卷积核(谨以此为例)。

一个卷积核在此通道上进行卷积的结果
在这里插入图片描述
在这里插入图片描述

这里有一个图片, 我们可以执行诸如边缘检测、锐化和模糊等操作,只需在卷积操作之前改变滤波器(卷积核)矩阵的数值——这意味着不同的滤波器可以从图像中检测出不同的特征,例如边缘、曲线等。不同滤波器的效果如下从上到下分别为(单位矩阵,边缘检测、锐化、标准化模糊、高斯滤波):
在这里插入图片描述

下面的动画为卷积层的工作过程:在这里插入图片描述

滤光片(带红色轮廓)滑过输入图像(卷积运算)以产生特征映射。另一个过滤器(绿色轮廓)的卷积,在相同的图像上给出一个不同的特征图,如图所示。卷积操作捕获了原始图像中的局部依赖性。还要注意这两个不同的过滤器是如何从相同的原始图像生成不同的特征映射的。,图像和上面的两个过滤器只是我们上面说明的的数字矩阵。
在运用过程中,CNN在训练过程中自己学习这些过滤器的值(虽然我们在训练过程之前还需要指定一些参数,比如过滤器的数量,过滤器的大小,网络的架构等)。我们拥有的过滤器越多,提取的图像特征就越多,我们的网络在识别不可见图像中的模式方面也就变得越好。
卷积层相关的参数:
1、 depth: depth对应于我们用于卷积操作的过滤器的数量。在下图所示的网络中,我们使用三个不同的过滤器对原始船图像进行卷积,从而产生三个不同的特征映射。这三个特征映射想象成堆叠的2d矩阵,所以,特征映射的“深度”应该是3。
在这里插入图片描述

2、 stride:stride是我们在输入矩阵上滑动过滤器矩阵的像素数。当stride为1时,我们每次移动滤镜一个像素。当步幅为2时,当我们滑动它们时,过滤器一次跳跃2个像素。更大的步幅会产生更小的特征图。相关的计算公式在前几天的caffe文献中有所说明。
3、 Zero-padding:零填充:有时候,用0填充输入矩阵是很方便的,这样我们可以对输入图像矩阵的边界元素应用过滤器。零填充的一个很好的特性是,它允许我们控制特征映射的大小。添加零填充也称为宽卷积,不使用零填充则为窄卷积。
综上:卷积层的主要作用就是对图像的特征增强以及提取,通过不同的卷积核会提取出不同的特征,用作后期学习的重要数据。同时通过调整卷积的步长也可以调整我们的感受野。
二、 ReLu数层
在每个卷积操作之后都会使用激活函数来额外操作。这里以ReLu举例,ReLU为整流线性单元,是一种非线性操作。其输出如下所示:在这里插入图片描述

ReLU是一个基于元素的操作(应用于每个像素),它将feature map中的所有负像素值替换为0。卷积是一个线性操作——对应位置上元素的矩阵乘法和加法操作,但是我们在学习时大多数的真实数据是非线性的,所以我们考虑通过引入一个非线性函数如ReLU,ReLU ReLU的目的是我们在学习之前引入非线性这一概念。
从下图可以清楚地理解ReLU操作。它显示了将ReLU操作应用下图获得的一个特性映射。输出特征映射在这里也被称为“矫正”特征映射。也可以使用其他非线性函数,如tanh或sigmoid,来代替ReLU,但是ReLU在大多数情况下性能更好。
在这里插入图片描述

三、 池化层
空间池化(也称为子采样或下采样)降低了每个特征图的维数,但保留了最重要的信息。空间池化可以有不同的类型:Max、Average、Sum等。
在最大池化的情况下,我们定义一个空间邻域(例如,一个2×2的窗口),并从该窗口内的修正特征映射中取最大的元素。我们也可以取平均值(平均池)或该窗口中所有元素的总和,而不是取最大的元素。在实践中,最大池化已经被证明可以更好地工作。
下图是一个使用2×2窗口对经过卷积+ ReLU操作得到的修正后的Feature map进行最大池化操作的例子。
在这里插入图片描述

我们将2×2的窗口滑动2个单元格(也称为“步幅”),并在每个区域中取最大值。如上图所示,这减少了我们的feature map的维数。
在下图所示的网络中,池操作分别应用于每个特性映射(注意,由于这个原因,我们从三个输入映射得到三个输出映射)。
在这里插入图片描述

下图显示了池化对我们在上图中的ReLU操作后接收到的修正后的特征映射的影响。
在这里插入图片描述

池化的作用是逐步减少输入表达的空间大小。具体如下:
使输入表达(特性维度)更小,更易于管理
减少了网络中参数和计算的数量,因此控制过拟合
使网络不受输入图像中小的变换、变形和平移的影响(输入中小的失真不会改变池的输出-因为我们取一个局部邻域的最大值/平均值)。
帮助我们得到图像的比例几乎不变的表达(准确的术语是“等变的”)。无论检测图像中的对象位于哪里我们都可以检测到。
四、 全连接层
全连接层是一个传统的多层感知器,在输出层使用softmax激活函数(其他分类器如SVM也可以使用)。“全连接”意味着上一层的每个神经元都与下一层的每个神经元相连。
卷积层和池化层的输出表示输入图像的高级特征。全连接层的目的是利用这些特征根据训练数据集将输入图像分类成不同的类。例如,我们开始执行的图像分类任务有四种可能的输出,如
卷积层和池化层的输出表示输入图像的高级特征。全连接层的目的是利用这些特征将训练数据集将输入图像分类成不同的类。例如,我们开始执行的图像分类任务有四种可能的输出,如下图。在这里插入图片描述

除了分类之外,添加一个完全连接的层也是学习这些特征的非线性组合的一种廉价方法。来自卷积层和池化层的大多数特性可能对分类任务很好,但这些特性的组合可能更好。
全连通层输出概率之和为1。这是通过在全连接层的输出层使用Softmax作为激活函数来保证的。Softmax函数取一个由任意实值分数组成的向量,并将其压缩为一个由0到1之间的和为1的值组成的向量。
到目前为止,我们已经看到了卷积、激活函数层和池化是如何工作的。重要的是要理解这些层次是任何CNN的基本构建块。如下图所示,我们有两组卷积、ReLU和Pooling层-第2个卷积层使用6个过滤器对第1个Pooling层的输出进行卷积,总共产生6个feature map。然后将ReLU分别应用于所有这六个特性映射。然后,我们对这六个修正后的特征映射分别执行最大池操作。
这些层一起从图像中提取有用的特征,在我们的网络中引入非线性,降低特征维数,同时使特征在缩放和转换时具有一定的等变性。
在这里插入图片描述

如上所述,卷积+池化层作为输入图像的特征提取器,而全连接层作为分类器。、
五、总结
卷积网络的整体训练过程总结如下:
Step1:用随机值初始化所有的过滤器和参数/权重
Step2:网络以训练图像为输入,进行前向传播步骤(卷积、ReLU、池化操作以及全连通层的前向传播),求出每个类的输出概率。
假设上面的船图像的输出概率是[0.2,0.4,0.1,0.3]
由于第一个训练示例的权重是随机分配的,因此输出概率也是随机的。
Step3:计算输出层的总误差(所有4个类的总和)
总误差=∑½(目标概率-输出概率)²
Step4:使用Backpropagation计算误差相对于网络中所有权值的梯度,使用梯度下降更新所有滤波器值/权值和参数值,使输出误差最小化。权重按它们对总误差的贡献比例进行调整。
当再次输入相同的图像时,现在的输出概率可能是[0.1,0.1,0.7,0.1],这更接近于目标向量[0,0,1,0]。
这意味着网络已经学会通过调整其权值/滤波器来正确分类这一特定图像,从而减少输出误差。
过滤器数量、过滤器大小、网络架构等参数在第1步之前都已经固定,并且在训练过程中不会改变,只更新过滤器矩阵的值和连接权值。
Step5:对训练集中的所有图像重复步骤2-4。
以上步骤训练了ConvNet——这本质上意味着ConvNet的所有权值和参数现在都得到了优化,可以从训练集中正确地对图像进行分类。
当一幅新的(不可见的)图像输入到ConvNet时,该网络将进行前向传播步骤,并为每个类输出一个概率(对于一幅新图像,输出概率使用已优化的权值计算,以正确分类所有以前的训练示例)。如果我们的训练集足够大,网络将(有希望)很好地泛化新图像并将它们分类到正确的类别中。
在上面的例子中,我们使用了两组交替的卷积层和池层。但是,这些操作可以在单个ConvNet中重复任意次数。事实上,今天一些性能最好的ConvNets有几十个卷积和池化层,没有必要再每个卷积层之后都有一个池化层。如下图所示,在进行池化操作之前,我们可以连续进行多个卷积+ReLU操作。还要注意ConvNet的每一层在下面的图中是如何显示的。在这里插入图片描述

再举两个例子:
1、可视化卷积神经网络
一般来说,我们有越多的卷积步骤,我们的网络就能学习识别越复杂的特征。例如,在图像分类中,ConvNet可以学习从第一层的原始像素中检测边缘,然后使用边缘来检测第二层的简单形状,然后使用这些形状来阻止更高层次的特征,例如较高层次中的面部形状。下图演示了这一点-这些特征是使用卷积深度置信网络学习的,这里包含的图只是为了演示思想(这只是一个例子:现实生活中的卷积滤波器可以检测到对人类没有意义的对象)。在这里插入图片描述

2、手写数字识别
下面我们将看到网络对于输入“8”是如何工作的。注意,图18中的可视化并没有单独显示ReLU操作。在这里插入图片描述

输入图像包含1024个像素(32 x 32图像),第一个卷积层是由6个唯一的5×5滤波器与输入图像卷积而成。如图所示,使用6个不同的过滤器生成深度为6的特征图。!

在Convolutional Layer 1之后是Pooling Layer 1,在Convolutional Layer 1的六个feature map上分别做2×2最大的Pooling(stride 2)。在2×2网格中拥有最大值(最亮的那个)的像素会进入池化层。在这里插入图片描述

池化层1后面是16个执行卷积操作的5×5 (stride 1)卷积滤波器。接下来是池化层2,最大池化量为2×2(使用stride 2)。这两个层使用了与上面描述的相同的概念。
然后我们有三个完全连接(FC)层。有:
第一层FC层有120个神经元
第二层FC层有100个神经元
第三层的10个神经元对应10位数字-也称为输出层
请注意在下图中,输出层中的10个节点中的每一个都连接到第2个完全连接层中的所有100个节点(因此称为完全连接)。
另外,请注意输出层中唯一亮的节点是如何对应于“8”的——这意味着网络正确地分类了我们手写的数字(亮的节点表示它的输出更高,即在所有其他数字中,8的概率最高)。
在这里插入图片描述

以上就是卷积层、激活函数层、池化层、以及全部连接层的全部说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值