卷积神经网络CNN

- 日理万妓 2022-10-19 09:24 451阅读 0赞

系列文章目录

上一篇文章简单的介绍了卷积神经网络及一些基础知识,比如说步长,填充,互相关运算等,这篇文章讲介绍卷积神经网络的组成及常见的几种神经网络。

CNN简单介绍及基础知识


文章目录

  • 系列文章目录
  • 前言
  • 一、卷积神经网络CNN
  • 二、三种常见的神经网络

    • 1.使用重复元素的网络VGG
    • 2.网络中的网络NIN
    • 3.含并行联结的网络GoogLenet
  • 总结

前言

卷积神经网络是全感知器模型的一种,其在处理声音,图像方面有着得天独厚的优势。常见的卷积神经网络模型有三种,即VGG,NIN,GoogLenet


一、卷积神经网络

卷积神经网络是很吸引人的。在短时间内,它们变成了一种颠覆性的技术,打破了从文本、视频到语音等多个领域所有最先进的算法,远远超出了其最初在图像处理的应用范围。

1,为什么要使用卷积神经网络?

  1. 传统算法处理图像的时候具有一定的局限性,通常的做法是,首先将图片按照像素逐行展开,然后输入到全连接层中去处理。这样做可以处理图片,但是随之而来的问题是会丢失图片的空间信息,而且,数据量过大,参数过多,效率低下。
  2. 比如说,一张图片由像素点组成,30\*30的矩阵,如果将其转换成一列数组,即30\*30=900,这一列向量和隐含层的10个神经元连接,就有900\*10=9000个权重w,隐含层和最后的输出层的10个神经元连接,就有9000\*10=90000个权重w,再加上隐含层的偏置项10个和输出层的偏置项10个,就是:90020个参数了.

85ed3acb7d3c93281040d09ab0d732ac.png

  1. 过多的参数和计算机技术的落后,限制了卷积神经网络的发展,直到CNN的出现,对于图像的处理才得到进一步的提升。cnn尝试去解决这个问题,一方面,卷积层保留输入形状,使得图像的像素在高和宽两个相关性上被有效识别,另一方面,卷积层通过滑动窗口将同一卷积核与不同位置的输入重复计算,从而避免参数尺寸过大。

2,CNN的组成

  1. 卷积神经网络是一种深度学习模型,类似于人工神经网络的多层感知器,常用来分析视觉图像。 CNN主要由数据输入层,卷积层,激励层,池化层,和全连接层,将这些层连接起来,形成了卷积神经网络。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MjE2Mg_size_16_color_FFFFFF_t_70

卷积神经网络的层级结构

  • 数据输入层
  • 卷积层
  • 激励层
  • 池化层
  • 全连接层

如下图,当我们对于小轿车识别时,有卷积层,激励层,池化层和全连接层,识别的结果最后一行中展示。

20160702205047459

2.1 数据输入层

CNN中输入 RGB图片,使用RGB图片的原因在于RGB三通道图片,输入图片有三通道,R通道,G通道,B通道,能够在每一层中完全展示图片处理的过程,并做预处理,通常的做法包括

  • 去均值 将输入数据各个维度都中心化为0,其目的在于将样本的中心拉回到坐标原点
  • 归一化 将数据归一化到同一幅度,即减少各维度数据取值范围的差异而带来的干扰。
  • PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化

去均值与归一化效果图:

a3f08c537f9e3c6185c0b4ebf2e406c1.png

去相关与白化效果图:

3d62d2a002d235b29ad3eb1cb9d2b7e4.png

2.2 卷积层

卷积层用来识别图像里的空间模式,如线条和物体局部,之后的最大池化层则用来降低卷积层对位置的敏感性。卷积层的本质类似于滤波器,通过保留图片中预留的信息,提取图片特征。

卷积层有三个非常重要的概念,局部感知,空间排列,和参数共享。

(1)卷积简单介绍

  1. 上一篇文章介绍了卷积及互相关运算,在此简单介绍卷积运算,对于输入的矩阵,通过和卷积核互相关运算,形成一个新矩阵,如下动图所展示,在原始矩阵中,按照一定的步长,和卷积核做互相关运算,得到新矩阵,新矩阵保留了原始数据的特征。

f85afac0d31d5209f92939f28383e962.gif

不同的卷积核对于原始矩阵提取的特征不同。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MjE2Mg_size_16_color_FFFFFF_t_70 1

对于实际图片而言,不同的卷积核保留的特征不同。

20160702214116669

(2)卷积层介绍

卷积层有三个基本特征,局部感知,空间排列,参数共享

  • 局部感知

    局部感知即网络部分连通,每个神经元只与上一层的部分神经元相连,只感知局部,而不是整幅图像。因为局部感知,可以得到更准确的局部信息,在更高的层面将局部信息整合起来,便可以得到全局信息,每个隐含单元仅仅只能连接输入单元的一部分, 感受野即每个隐藏单元连接的输入区域的大小是局部的,这样可以减少连接的数目。如下图,对于一张图片,选择局部区域进行卷积提取特征,然后将不同的局部信息整合起来,形成识别区域。

    20210710194254835.jpeg

  1. 虽然每个输出单元只是连接输入的一部分,但是值的计算方法是没有变的,都是权重和输入的点积,然后加上偏置,这点与普通神经网络是一样的,如下图所示:

计算方法

  • 空间排列

    神经元之间的空间排列所考虑的问题是输出数据的神经元数量和他们之间的排列方式,通常,三个超参数控制输出数据的格式,通道,步幅,填充

  • 将沿着深度方向排列、感受野相同的神经元集合称为深度列,即输入图片的通道上数
  • 步幅指的是卷积核做互相关运算时移动的距离
  • 对于原始图片做一些填充,可以控制输出数据体的空间尺寸
  • 参数共享

    权值共享是基于这样的一个合理的假设:如果一个特征在计算某个空间位置 (x1,y1)(x1,y1) 的时候有用,那么它在计算另一个不同位置 (x2,y2)(x2,y2) 的时候也有用。

    在卷积层中每个卷积核连接数据窗的权重是固定的,即卷积层的每个滤波器都会有自己所关注一个图像特征,比如垂直边缘,水平边缘,颜色,纹理等等,该卷积核去对图像做全图滤波,即是将图像各个位置的边缘都滤出来,这些所有神经元加起来就好比就是整张图像的特征提取器集合。

    参数共享的目的在于单一卷积核能够识别全局信息,这样做能够减少自由变量的个数,并且重复单元能够识别图片特征,而不考虑其位置

    如下动图,对杯子做卷积处理,可以提取其最重要特征。

20210711180824672.gif

小结:卷积层的目的在于提取特征,可以将其理解为特征提取器或者滤波器,

卷积运算是两个卷积核大小的矩阵的内积运算,不是矩阵乘法。即相同位置的数字相乘再相加求和。

卷积层有三个特征:局部视野,空间排列,参数共享

卷积层的作用:就是提取图片每个小部分里具有的特征,通过不断的改变卷积核,来确定能初步表征图片特征的有用的卷积核是哪些,再得到与相应的卷积核相乘后的输出矩阵。

2.3 激励层

  1. 生物神经元特性:接受一组输入信号并产生输出。 在神经科学中,生物神经元通常有一个阈值,当神经元所获得的输入信号累积 效果超过了该阈值,神经元就被激活而处于兴奋状态;否则处于抑制状态。而激励层的功能类似于生物神经元,即**决定数据是否保留**。

对于卷积层的信息做非线性的映射:

63fc6c9ed3d1f3e4785c44d4228a6d6b.png

常见的激励函数有:

f48e88ff9fd137ada253e97edfa90696.png

CNN采用的激励函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱,图像如下。

d32b06436993becce11ac3d1bd920bf7.png

激励层的实践经验:
①不要用sigmoid。
② 首先尝试RELU,其次尝试其他激活函数

2.4 池化层

  1. 池化层的输入就是卷积层输出的原数据与相应的卷积核相乘后的输出矩阵。对新矩阵做池化处理,其主要作用就是**压缩图片**,具体如下:
  • 特征不变性,池化相当于对图片resize,压缩掉无关紧要的信息.
  • 特征降维, 去掉冗余信息,显示重要特征。
  • 防止过拟合

c33bba15022ee7f1eb07d3a5ed30d41a.png

  1. 通常而言,设定卷积层规模为2\*2 步幅为2,对输入的每个深度切片进行下采样。每个MAX操作对四个数进行,如下图所示:

池化

常用的方法有最大池化和均值池化

  • MaxPooling:取滑动窗口里最大的值
  • AveragePooling:取滑动窗口内所有值的平均值

    1. ![20210711174706717.jpeg][]

2.5 全连接层

卷积层和池化层的工作就是提取特征,并减少原始图像带来的参数

全连接层的工作原理是池化层输出的张量重新切割成一些向量,乘上权重矩阵,加上偏置值,然后对其使用ReLU激活函数,用梯度下降法优化参数既可。全连接层则起到将学到的特征表示映射到样本的标记空间的作用。

9852fe7053166f9c4717694920433e4d.png

其主要工作过程是:

通过不断的设计卷积核的尺寸,数量,提取更多的特征,最后识别物体的不同特征。做完卷积层和池化层的工作后,我们就会把这些数据“拍平”,丢到Flatten层,然后把Flatten层的output放到full connected Layer里,采用softmax对其进行分类。

98a60dd00f1e08acf8158cf3110d6c8a.png

小结

  • 卷积神经网络就是含卷积层的网络。
  • LeNet交替使用卷积层和最大池化层后接全连接层来进行图像分类。
  • 卷积层和池化层的目的在于提取图片特征。

二、 三种常见的神经网络

" class="reference-link">CNNç»ææ¼å\_liupcçå­¦ä¹ ç¬è®°-CSDNå客

各个CNN模型比较:

这里写图片描述

0,AlexNet

LeNet分为卷积层块和全连接层块两个部分。

  1. 卷积层块里的基本单位是卷积层后接最大池化层,卷积层用来识别图像里的空间模式,如线条和物体局部,之后的最大池化层则用来降低卷积层对位置的敏感性。卷积层块由两个这样的基本单位重复堆叠构成。

这里写图片描述

  1. 卷积层块的输出形状为(批量大小, 通道, 高, 宽)。当卷积层块的输出传入全连接层块时,全连接层块会将小批量中每个样本变平(flatten)。也就是说,全连接层的输入形状将变成二维,其中第一维是小批量中的样本,第二维是每个样本变平后的向量表示,且向量长度为通道、高和宽的乘积。全连接层块含3个全连接层。它们的输出个数分别是1208410,其中10为输出的类别个数。
  2. 在很长一段时间里,leNet并不受欢迎,局限于缺乏有效数据集和计算机算力,直到AlexNet的出现,AlexNetLeNet的设计理念非常相似,但也有显著的区别,主要体现在以下方面:

第一,相对较小的LeNet相比,AlexNet包含8层变换,其中有5层卷积和2层全连接隐藏层,以及1个全连接输出层。

第二,AlexNet将sigmoid激活函数改成了更加简单的ReLU激活函数

第三,AlexNet通过丢弃法来控制全连接层的模型复杂度。而LeNet并没有使用丢弃法。

第四,AlexNet引入了大量的图像增广,如翻转、裁剪和颜色变化,从而进一步扩大数据集来缓解过拟合。

AlexNet第一层中的卷积窗口形状是11×11。因为ImageNet中绝大多数图像的高和宽均比MNIST图像的高和宽大10倍以上,ImageNet图像的物体占用更多的像素,所以需要更大的卷积窗口来捕获物体。第二层中的卷积窗口形状减小到5×5,之后全采用3×3。此外,第一、第二和第五个卷积层之后都使用了窗口形状为3×3、步幅为2的最大池化层。而且,AlexNet使用的卷积通道数也大于LeNet中的卷积通道数数十倍。AlexNet的结构图如下:

这里写图片描述

AlexNet在处理数据时:

这里写图片描述

AlexNet的网络结构示意一下:

这里写图片描述

激活函数:ReLU

Relu函数:f(x)=max(0,x)

这里写图片描述

1.使用重复元素的网络VGG

VGG提出了可以通过重复使用简单的基础块来构建深度模型的思路。

VGG块的组成规律是:连续使用数个相同的填充为1、窗口形状为3×3的卷积层后接上一个步幅为2、窗口形状为2×2的最大池化层。卷积层保持输入的高和宽不变,而池化层则对其减半

VGG网络由卷积层模块后接全连接层模块构成

其结构如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MjE2Mg_size_16_color_FFFFFF_t_70 2

2.网络中的网络NIN

LeNet、AlexNet和VGG在设计上的共同之处是:先以由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。其中,AlexNet和VGG对LeNet的改进主要在于如何对这两个模块加宽(增加通道数)和加深。卷积层的输入和输出通常是四维数组(样本,通道,高,宽),而全连接层的输入和输出则通常是二维数组(样本,特征)。

NIN提出了另外一个思路,即串联多个由卷积层和“全连接”层构成的小网络来构建一个深层网络。

NiN使用1×1 卷积层来替代全连接层,从而使空间信息能够自然传递到后面的层中去。AlexNet和NiN模型比较:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MjE2Mg_size_16_color_FFFFFF_t_70 3

  1. NiN块是NiN中的基础块。它由一个卷积层加两个充当全连接层的1×1卷积层串联而成。
  2. NiN去掉了AlexNet最后的3个全连接层,NiN使用了输出通道数等于标签类别数的NiN块,然后使用**全局平均池化层**对每个通道中所有元素求平均并直接用于分类。全局平均池化层即窗口形状等于输入空间维形状的平均池化层。NiN的这个设计的好处是可以显著减小模型参数尺寸,从而缓解过拟合。
  3. ![20210711192519300.png][]

NINnet优势在于

  • NiN重复使用由卷积层和代替全连接层的1×1卷积层构成的NiN块来构建深层网络。
  • NiN去除了容易造成过拟合的全连接输出层,而是将其替换成输出通道数等于标签类别数的NiN块和全局平均池化层。

3.含并行联结的网络GoogLenet

  1. Inception块相当于一个有4条线路的子网络。它通过不同窗口形状的卷积层和最大池化层来并行抽取信息,并使用1×1 卷积层减少通道数从而降低模型复杂度。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MjE2Mg_size_16_color_FFFFFF_t_70 4

GoogLeNet将多个设计精细的Inception块和其他层串联起来。其中Inception块的通道数分配之比是在ImageNet数据集上通过大量的实验得来的。

GoogLenet结构:

  1. ![这里写图片描述][70 1]

总结

  1. 卷积神经网络是全感知器模型的一种,是前馈神经网络,常见的卷积神经网络模型有三种,即VGGNINGoogLenet

参考:

  1. [卷积神经网络超详细介绍][Link 1]
  2. [5. 卷积神经网络][5.]

【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理

发表评论

表情:
评论列表 (有 0 条评论,451人围观)

还没有评论,来说两句吧...

相关阅读

    相关 神经网络CNN

    系列文章目录 上一篇文章简单的介绍了卷积神经网络及一些基础知识,比如说步长,填充,互相关运算等,这篇文章讲介绍卷积神经网络的组成及常见的几种神经网络。  [CNN简单介