神经网络—卷积神经网络CNN

时间:2024-10-27 07:55:45

定义

卷积神经网络(convolutional neural network)简称CNN,主要用于处理图像数据,但仍然可以处理其他形式的数据,像语音数据等。其最擅长的就是图片的处理,它具有人工神经元,能够在一定范围内和其他单元相应,从而能很好地处理图像,尤其是大型图像。

对于卷积神经网络,典型的应用就是分类,给它一个输入的图像,它就会给出一个分类的结果,换言之如果你输入一张猫的图像,它的输出标签就会是“猫”,如果你输入一张狗的图像,它的输出标签就会是“狗”。

CNN做的事情:给定n个标签,输入一个图像,图像是什么未知,需要用模型判断这个图像是个什么东西,总之输出一个结果(结果是给定的某一标签)。

层级结构

1、输入层(input)

是将原始数据或者其他算法预处理后的数据输入到卷积神经网络中,数据没有明确定义,可以是数字图像,也可以是音频识别领域经过傅里叶变换的二维波形数据,也可以是自然语言处理中一维表示的句子向量。输入层的作用是将输入数据送入卷积神经网络进行特征提取,然后获得我们想要的结果。

一、数据预处理

预处理的原因:

1、数据的单位不同,会导致神经网络训练时间长,收敛速度慢。

2、数据范围大的输入在模式分类中的作用可能偏大,而数据范围小的作用就有可能偏小。

3、激活函数有值域限制,需要将网络训练的目标数据映射到激活函数的值域中。

4、S形激活函数(sigmoid)在(0,1)区间以外区域很平缓,区分度太小。

二、常见的数据预处理方式

1、归一化

把所有的数据都归一到同样的范围,使得不同维度的数据具有相同的分布。对于每个属性,设minA和maxA分别为属性A的最小值和最大值,将A的一个原始值x通过min-max标准化映射成在区间[0,1]中的新值x1,公式为:x1 = (x - minA) / (maxA - minA)。

2、去均值(中心化)

把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果。数据有过大的均值,可能会导致参数的梯度过大。去均值并不会消除像素之间的相对差异。

数据中心化:是指变量减去它的均值。

新数据= 原数据 - 均值。

3、PCA/白化(whitening)

一、PCA:用PCA进行降维。

二、PCA白化:对数据的每个特征抽上的幅度归一化,又称漂白或者球化。是对原始数据x实现一种变换,变换成x_Whitened,使x_Whitened的协方差矩阵为单位阵。

白化的目的是去除输入数据的冗余信息。假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的目的就是降低输入的冗余性。

PCA如果不降维,而是仅使用PCA求出特征向量,然后把数据x映射到新的特征空间,这样个映射过程,就满足了白化的第一个性质:除去特征之间的相关性。因此白化算法的实现过程:第一步就是PCA,求出新特征空间中x的新坐标,然后再对新的坐标进行方差归一化操作。

2、卷积层(conv)

负责特征提取

卷积层是 CNN 的基础,因为它包含学习的内核(权重),这些内核提取和区分不同图像的特征达到分类的效果。

卷积层的作用是提取输入图片中的信息,这些信息被称为图像特征,这些特征是由图像中的每个像素通过组合或者独立的方式所体现,比如图片的纹理特征,颜色特征。

卷积层有很多卷积核,通过做越来越多的卷积,提取到的图像特征会越来越抽象。

详细分析: /weixin_58420524/article/details/128741540?spm=1001.2014.3001.5501

3、激励层(relu)

由于卷积也是一种线性运算,因此需要增加非线性映射。使用的激励函数一般为ReLu函数,卷积层和激励层通常合并在一起称为“卷积层”。

详细分析: /weixin_58420524/article/details/128902630?spm=1001.2014.3001.5501

4、池化层(pool)

负责特征选择

池化层的作用是对卷积层中提取的特征进行挑选,常见的池化操作有最大池化和平均池化,池化层是由n×n大小的矩阵窗口滑动来进行计算的,类似于卷积层,只不过不是做互相关运算,而是求n×n大小的矩阵中的最大值、平均值等。

池化层主要有以下几个作用:

1. 挑选不受位置干扰的图像信息。

2. 对特征进行降维,提高后续特征的感受野,让池化后的一个像素对应前面图片中的一个区域。

3. 因为池化层不进行反向传播的,且池化层减少了特征图的变量个数,所以池化层可以减少计算量。

详细分析: /weixin_58420524/article/details/128741781?spm=1001.2014.3001.5501

5、全连接层(full connect)

负责分类

池化层的后面一般接着全连接层,全连接层将池化层的所有特征矩阵转化成一维的特征大向量,全连接层一般放在卷积神经网络结构的最后,用于对图片进行分类,到了全连接层,神经网络就要准备输出结果。

从池化层到全连接层会进行池化操作,数据会进行多到少的映射,进行降维。

数据慢慢减少,说明离输出结果越来越近,从全连接层到输出层会再一次减少数据,变成更加低维的向量,这个向量的维度就是需要输出的类别数。然后将这个向量的每个值转换成概率表示,这个操作一般叫做softmax,softmax使得向量中每个值范围在(0,1)之间,它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。

因为从卷积层过来的数据太大,全连接层的作用主要是对数据进行降维操作,不然数据骤降到输出层,可能会丢失一些图像特征的重要信息。

详细分析: /weixin_58420524/article/details/128741800?spm=1001.2014.3001.5501

典型的卷积神经网络

1、LeNet-5模型

第一个成功应用于数字数字识别的卷积神经网络模型。卷积层的卷积核边长都是5,步长都为1;池化层的窗口边长都为2,步长都为2。

2、AlexNet 模型

经典的卷积神经网络结构。卷积层的卷积核边长为5或3,池化层的窗口边长为3。

3、VGGNet 模型

和 AlexNet模型在结构上没多大变化,在卷积层部位增加了多个卷积层。

4、GoogleNet 模型

是全卷积结构(FCN)的,最后没有使用全连接层,这样可以减少参数的数目,不容易过拟合,同时也造成了一些空间信息的丢失。代替全连接层的是全局平均池化(GAP)的方法,思想是:为每一个类别输出一个 feature map ,再取每个 feature map上的平均值,作为最后softmax层的输入。

5、ResNet模型

将低层学习到的特征和高层学习到的特征进行融合,这样反向传递时,导数传递更快,减少梯度弥散的现象。

reference:(77条消息) 图解CNN:通过100张图一步步理解CNN_v_JULY_v的博客-****博客_图解cnn