DL —— 卷积神经网络(convolutional neural networks,CNN)

  • Post author:
  • Post category:其他


卷积神经网络是深度学习最核心的部分;

最早用于美国银行系统识别手写支票;



卷积神经网络



一、训练数据

因为卷积神经网络是为了解决图像领域的应用而提出的网络结构,所以训练数据一般为视频图像数据(张量数据,tensor);可以根据图像的性质对CNN的结构进行设计,使得CNN相比一般的神经网络结构更加高效、性能更好。

在这里插入图片描述

其中:

X(i)是第i张图像;

H * W * D是每个图像的尺寸;

D表示整个训练集,也表示图像的深度;



二、网络层次

在这里插入图片描述

上图中左侧(普通神经网络)中每一层的神经元按一个维度排成向量;

而右侧(CNN)的输入变成了张量,即每层神经元按三个维度(高H、宽W、深D)排成张量,最后一层的神经元输出维度是1 * 1 * K(K表示最终分类的类别数);

普通神经网络每层都是一个全连接层(仿射运算 + 非线性变换);

而CNN每层都有4中选择:卷积层(convolutional layer,conv)、池化层(pooling layer,pool)、线性整流层、全连接层(fc);


卷积层(convolutional layer,conv)

:通过卷积核做卷积变换(线性变换)提取特征的响应,将卷积核代表某种特征,得到的结果叫特征响应图,相似度越高得到的响应越大;

卷积层的简化——稀疏连接:在图像识别中,关键性特征(边缘、角点等)只占了图像的一小部分,图像中相距很远的两个像素间相互有影响的可能很小,全连接就是一种资源的浪费,所以产生了稀疏连接,每个神经元只需要和一小部分输入神经元相连,大大降低了数据量、计算量。

局部连接的空间范围称为感受野,而沿深度轴的连接数总是等于输入的深度D(即沿高、宽轴是局部连接的,沿深度轴是全连接的)。

稀疏性是CNN相比一般神经网络的一个巨大优点,极大降低了模型的计算量。

实际操作中,卷积核一边做卷积运算,一边沿着高和宽滑动(如下图):

在这里插入图片描述

在这里插入图片描述

卷积层的简化——共享参数:如果一组权重(即卷积核)在图像中某个区域提取有效表示,也能在另外区域提取有效表示。

即卷积核与所滑动到的图像任一区域对应相乘求和(卷积操作),卷积核是不变的,相当于卷积核所在区域与同一套权重相乘。大幅减少了参数数量。

一般用4个量来描述卷积层:

1、滤波器filter(即卷积核)的数目D1;

2、滤波器感受野F1 * F2:即滤波器的尺寸;

3、步幅(stride)S:在一个激活映射中,在空间上每跳过S个位置计算一个输出神经元,即上图中的步长;

4、0填充(zero-padding)P:在进行卷积前,四周填充一些0,填充的宽度为P,这可以控制输出特征映射的大小(如下图):蓝色区域为原图像大小,虚线部分为填充(此处P=1),绿色为输出特征映射。

在这里插入图片描述


池化层(pooling layer,pool)

:相当于大脑视觉皮层中的复杂细胞,模拟感受野;

池化层根据神经元空间上局部统计信息进行采样,在保留有用信息同时减少神经元空间大小,使参数量减少并降低了过拟合可能;

pool操作在各深度分量上独立进行;

最常用的是最大池化(max-pooling)、滤波器大小为2 * 2,步幅为2,这可以舍弃75%的信息,如下图:

在这里插入图片描述


线性整流层

:激活函数层,常用relu;

与一般神经网络中的激活函数操作相同,如使用relu时,逐元素进行relu操作,不会改变维度;

通过激活函数实现了非线性变换;

使用relu激活函数也是使网络快速收敛的一个手段,大于0时梯度为1,避免了梯度弥散与梯度消失。


激活函数总结【点击此处】


全连接层(fc)

:层与层之间每个神经元都有连接。与一般神经网络操作相同。



三、损失函数

损失函数度量的是模型预测值与真实值之间的误差(这里叫损失函数或代价函数,在优化时会使其最小化,这个需要最小化的函数叫目标函数);

通过损失函数的优化来实现整个系统的优化,损失函数的设计不仅定义了问题,还直接决定了优化算法收敛的性能;

(损失函数总结笔记后续整理)



四、优化

使损失函数(目标函数)最小化。

与一般神经网络同样使用梯度下降法(前向传播、反向传播),不同点在于池化层与卷积层的反向传播操作。

卷积层的反向传播:利用链式求导法则,用损失函数分别对W、b、X求偏导,计算如下图(重在理解):

在这里插入图片描述

在这里插入图片描述

池化层的反向传播:池化层没有参数,不需要进行参数更新,因此池化层在反向传播时需要完成的工作是将第L层的导数传播到第L-1层,以最大池化为例:

在这里插入图片描述

在这里插入图片描述

上图不太清楚,内容描述的是 假设知道了损失函数对z的导数,要计算对x、y的导数,依然使用链式法则即可。



五、预测

对于一个未知输入数据x,分类模型的预测是:

在这里插入图片描述

即:找到分类器输出分数最大的那项对应的类,作为x的标记。

如:共有三个类别A、B、C,对应分数为(0.1, 0.6, 0.3),其中0.6最大,那么就预测x属于B类。



六、评估

简单来说就是,用 预测正确的样本数占样本总数的比例 来评估模型。

具体如下:

在这里插入图片描述

其中:

m为测试集样本总数;

I{*}为指示函数,预测值与真实值相等时,指示函数为1,否则为0。

从上式可知,测试集全部分类正确时,Acc = 1,否则Acc < 1。



版权声明:本文为yizhishuixiong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。