卷积神经网络1

简介

卷积神经网络(CNN)最初是为了解决图像识别等问题设计的,现在不仅限于图像和视频,还可以应用于音频信号、文本数据等。

早期研究中,最大的挑战是如何组织特征,因为 图像数据不像其他类型的数据那样可以通过人工理解来提取特征。譬如股票预测模型中的许多金融因子等等。在深度学习出现之前,大多使用SIFT、HoG算法进行提取具有良好区分性的特征,但还是很有局限性,错误率高,常年难以突破。

卷积神经网络不需要将特征提取和分类训练两个过程分开,在训练时就自动提取了最有效的特征。CNN可以直接使用图像 的原始像素作为输入,不必使用SIFT等算法进行特征提取,减轻了传统算法如SVM等所需要做的大量数据预处理工作。同时,CNN具有很强的泛化性,最大的特点在于卷积的权值共享,可以大幅减少神经网络的参数量,防止过拟合的同时又降低了模型的复杂度

基于全连接的模型与基于CNN的模型对比

我们可以看到CNN和基于Affine层的区别,CNN中新增了Conv层和Pooling层,连接顺序变为了convolution-ReLu-(Pooling层有时候会省略)。

卷积层

全连接层存在的问题

全连接层会忽略数据的“形状”,在输入数据时,强行将数据拉为一维数据,从而忽视形状,无法利用与形状相关的信息,而卷积层可以保持形状不变

CNN中,有时候将卷积层的输入输出数据称之为特征图。

卷积运算

卷积层进行的运算就是卷积运算,卷积运算相当于图像处理中的“滤波器运算”。

卷积运算的例子

如图所示,卷积运算对输入数据应用滤波器,对于输入数据,卷积运算以一定间隔滑动滤波器的窗口并应用,如图所示,

卷积运算的计算顺序

将各个位置上对应滤波器的元素和输入的对应元素进行相乘,然后再求和(乘积累加运算),然后将结果保存到输入的对应位置。

CNN中也存在偏置,如图所示,向应用了滤波器的结果数据加上了偏置,偏置通常为1×1的数据,向滤波器的所有元素上加。


卷积运算的偏置

填充

在进行卷积层的处理前,有时候需要向输入数据的周围填入固定的数据,称之为填充,如图,向输入数据周围填入0,这样做主要是为了调整输出的大小

填充

步幅

应用滤波器之间位置的间隔称之为步幅,之前的例子都是步幅为1,如图所示,将步幅设置为2,


步幅设置为2的卷积运算

综上,增大步幅后,输出大小会变小;增大填充后,输出大小会变大

若设置输入大小(H,W),输出大小(OH,OW),滤波器大小(FH,FW),填充P,步幅S,则有


三维数据的卷积运算

这里可以看出,以图像作为比方,图像都是三通道的,所以我们也采用一个三通道的滤波器,然后按照通道进行输入数据与滤波器之间的卷积运算,并将结果相加,注意,每一个通道的大小必须相同,通道数只能设定为何输入数据相一致的值

三维数据的卷积运算示例

三维数据的卷积运算过程


基于多个滤波器的卷积运算的例子

卷积运算的处理流

tip:对于其中的偏置,可以使用numpy的广播功能进行实现。

批处理

在这个批处理版本的数据流中,各个数据都加了批用的维度,在这里数据以4维进行传输,网络间传递的是4维数据,对这N个数据进行了卷积运算,也就是将这N次处理汇总成了1次。

卷积运算的处理流(批处理)

池化层

池化是缩小高、长方向上空间的运算,如图所示,将一个2×2的区域缩小成1个元素的处理。

Max池化示例

图上所示为按照步幅为2的顺序,进行2×2范围的max池化(即为获取最大值),一般来说,池化的窗口大小会和步幅大小一致。除max池化之外,还有average池化等,在图像识别领域中主要使用max池化

池化层有以下特征:

  1. 没有需要学习的参数,池化并不是一个学习过程,只是从目标区域中取出所需要的值,最大值或者平均值;
  2. 通道数不发生变化,池化是按照通道独立进行的;
  3. 对微小的位置变化具有鲁棒性(健壮性),即输入数据即使发生微小变化,池化仍会返回相同结果。

你可能感兴趣的:(卷积神经网络1)