经典卷积神经网络学习笔记

第四章、卷积神经网络

4.1 卷积神经网络(上)

为什么使用卷积神经网络

一般的深度全连接神经网络,在较高分辨率的图像情况下,特征向量维度很大,导致每一个全连接层计算的权值数量是非常多的,如果数据不够,很容易训练出过拟合的情况,即使有庞大数据做支撑,那也会对硬件和内存造成很大的负担。

而卷积神经网络就会改善这一问题。

卷积层操作

重要操作:

  • 卷积操作:利用卷积核/过滤器原图像矩阵卷积为新的卷积矩阵

  • padding操作:由于多次卷积后,卷积结果矩阵会越来越小,导致难以构建更深的网络;而且不同的特征值被卷积次数都不同,导致特征提取不均。因此可以在原图像矩阵的周围设置i圈(i = padding)的0元素包裹着原来的矩阵,只要padding设置的合理,卷积出的结果矩阵就不会缩小,每一个特征值的卷积次数也会相同。

  • stride步长:卷积核每次卷积操作移动的距离

  • 卷积计算公式:
    $$
    \卷积后的宽(width):sizewidth = \frac{n+2p-f}{s}+1
    \卷积后的高(height):sizeheight = \frac{n+2p-f}{s}+1

    \n:输入的尺寸
    \p:填充的大小
    \f:卷积核的尺寸
    \s:步长大小
    $$

  • 多维卷积操作:卷积后的卷积矩阵的最后一维维度还是一,结果矩阵由多维的结果相加得到

  • 多过滤器卷积操作:即用多个过滤器进行操作,那么卷积矩阵最后一维的维度即过滤器数量

4.2 卷积神经网络(下)

池化层操作

池化操作的意义:降低网络计算量,提高网络的稳定性

池化层重要操作:

  • Max-Pooling最大池化:将卷积区域最大值保留作卷积结果,相当于找到区域中最重要的部分,让神经网络只学习这些重点特征
  • Average-Pooling平均池化:保留平均值,一般实际应用中,最大池化的操作应用更多
  • 多维矩阵池化: 和多维矩阵卷积不同,结果矩阵的最后一维的维度不是1,而和原图像的维度保持相同

完整的卷积神经网络是如何运作的

卷积神经网络的前向传播:

经典卷积神经网络学习笔记_第1张图片

4.3 经典卷积神经网络1:Lenet-5

模型图

经典卷积神经网络学习笔记_第2张图片

模型解析

最关键的地方在于第一个池化层和第二个卷积层之间的连接方式,这里要提出一个新的连接方式——局部链接:

  • 特征图是什么?如果有一个特征信息矩阵是[2,2,4],那么特征图就有4个,规格都是[2,2]

  • 局部链接就是对不同的特征图交叉进行卷积,如图所示,优势在于:

    • 减少连接数量和网络参数
    • 不对称的连接方式可以平均提取特征

    经典卷积神经网络学习笔记_第3张图片

具体细节不做展开,记录现有网络与其不同之处:

  • 现有网络常使用padding填充
  • 现有网络常用最大池化,而不是平均池化
  • 现有网络中间层激活函数常用relu、Leaky_Relu、Mish函数而不是sigmoid函数
  • 最后的分类器使用Softmax而不是Lenet-5的RBF径向基函数

4.4 经典卷积神经网络2:Alexnet

模型图

经典卷积神经网络学习笔记_第4张图片

模型解析

在Lenet-5基础上优化了网络结构:

  • 网络更深:使用Same卷积,保持输入矩阵和卷积矩阵长宽不变,有利于构建更深的神经网络
  • 卷积层叠:卷积层+卷积层+池化层
  • Dropout:减少过拟合(详见6.4)
  • 数据增强:样本多元化,减少过拟合(详见3.1)
  • Relu函数:替换了sigmoid函数(详见3.3)
  • 采用多GPU训练:CUDA加速

4.5 经典卷积神经网络3:Vgg-16

多种网络的对比

经典卷积神经网络学习笔记_第5张图片

在Vgg-16产生时,背后是牛津大学视觉几何组(Visual Geometry Group)对各种网络结构的对比汇总,有以下几个结果:

  • LRN层作用不大
  • 网络越深效果越好
  • 1*1的卷积核很有效,但没有3*3的卷积效果好,因为大一点的卷积核可以学习更大的空间特征

Vgg-16的Vgg代表的是视觉几何组的首字母简拼,16指的是网络中的卷积层+全连接层数(除去池化层,因为池化层没有参数),实际上Vgg还测试了Vgg-19模型,但是发现和Vgg-16差别不大,因此现在Vgg-16用的更普遍一些。(这里也能看出来边际效益的影响,网络达到一定层数之后,一味加深网络的层数,并不能提升网络的性能,反而有可能导致网络收敛变慢,降低模型的准确性)。

模型图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9UT4Qlng-1665146495716)(C:\Users\Yang\AppData\Roaming\Typora\typora-user-images\image-20221007202628507.png)]

模型解析

Vgg-16的特点:

  • 和Alexnet一样使用Same卷积

  • 卷积层的卷积核大小都是3*3,步长为1

  • 池化层的过滤器大小都是2*2,步长为2

  • 先两次2*Same卷积+池化操作,再三次3*Same卷积+池化操作

  • 卷积过程中,卷积层长宽不断折半缩小,但是卷积核的数量不断翻倍增加,到最后51之后就维持下来不再翻倍,可能是作者觉得足够大了

  • 最后三次全连接层操作,得到1000个神经元,输入到softmax分类器,输出1000个分类概率

Vgg-16的改进:

  • 更小的卷积核:由Alexnet的11*117*75*5的卷积核,而是一律使用3*3的卷积,这样采用堆叠的小卷积核,可以学习更复杂的学习特征,而且参数更少。比如用3个3*3的卷积核代替7*7的卷积核,用2个3*3的卷积核代替5*5的卷积核。
  • 网络更深:16层,乃至19层。一定程度上提升了网络效果。

4.6 改进卷积神经网络1:ResNet

为什么会产生ResNet网络

Vgg-16模型之后,出现了两个问题:

  • 一味增加网络模型的深度不能提升网络模型的效果
  • 一味加深网络,可能会带来梯度爆炸,梯度消失的问题

缓解这些问题的方式就是ResNet网络,换言之,ResNet网络的价值是用于提升模型深度

模型图

经典卷积神经网络学习笔记_第6张图片

经典卷积神经网络学习笔记_第7张图片

ResNet网络解析

梯度爆炸&梯度消失(详见6.3):随着网络的传播,a会逐渐变的很大和很小。导致神经网络越深越难训练。

ResNet(残差网络):

  • 采用跳跃链接的方式,将前面的激活值跳跃中间层,直接传递到后面的网络层中
    以梯度消失为例子: 第 n 层 − > 第 n + 1 层 逻辑回归函数 : z [ n + 1 ] = w [ n + 1 ] α [ n ] + b [ n + 1 ] R e l u 激活函数 : α [ n + 1 ] = σ ( z [ n + 1 ] ) α [ n ] > α [ n + 1 ] > α [ n + 2 ] 第 n + 1 层 − > 第 n + 2 层 逻辑回归函数 : z [ n + 2 ] = w [ n + 2 ] α [ n + 1 ] + b [ n + 2 ] R e l u 激活函数 : α [ n + 2 ] = σ ( z [ n + 2 ] ) = z [ n + 2 ] ≈ 0 这里将第 n 层和 n + 2 层跳跃连接,激活函数变为 α [ n + 2 ] = σ ( z [ n + 2 ] + a [ n ] ) = z [ n + 2 ] + a [ n ] > 0 \\以梯度消失为例子: \\ \\第n层->第n+1层 \\逻辑回归函数:z^{[n+1]}=w^{[n+1]}α^{[n]}+b^{[n+1]} \\Relu激活函数:α^{[n+1]}=σ(z^{[n+1]}) \\α^{[n]}>α^{[n+1]}>α^{[n+2]} \\ \\第n+1层->第n+2层 \\逻辑回归函数:z^{[n+2]}=w^{[n+2]}α^{[n+1]}+b^{[n+2]} \\Relu激活函数:α^{[n+2]}=σ(z^{[n+2]})=z^{[n+2]}≈0 \\这里将第n层和n+2层跳跃连接,激活函数变为α^{[n+2]}=σ(z^{[n+2]}+a^{[n]})=z^{[n+2]}+a^{[n]}>0 以梯度消失为例子:n>n+1逻辑回归函数:z[n+1]=w[n+1]α[n]+b[n+1]Relu激活函数:α[n+1]=σ(z[n+1])α[n]>α[n+1]>α[n+2]n+1>n+2逻辑回归函数:z[n+2]=w[n+2]α[n+1]+b[n+2]Relu激活函数:α[n+2]=σ(z[n+2])=z[n+2]0这里将第n层和n+2层跳跃连接,激活函数变为α[n+2]=σ(z[n+2]+a[n])=z[n+2]+a[n]>0

  • 使用relu激活函数

ResNet网络创新方式

残差模块:加深网络层数,提升模型性能

经典卷积神经网络学习笔记_第8张图片

4.7 改进卷积神经网络2:Inception

为什么会产生Inception

在2014年的imageNet挑战赛,Inception获得了图像分类的第一名,而ResNet是第二名。

Inception模型的意义在于拓展模型宽度的同时减缓计算成本的增加。

Inception网络解析

Inception模块:

  • 解决过滤器大小选择难题:堆叠多种大小的卷积核用same卷积形成的卷积矩阵,最后加上池化层,让网络在训练的时候自己调整过滤器的相关参数
  • 解决堆叠过滤器导致的算力爆炸问题:由于堆叠的过程是直接采用多个不同规格的过滤器,维度都很大,计算的时候会导致计算参数过大,因此需要先利用1*1规格的过滤器对矩阵进行降维,然后再卷积,这样可以有效降低Inception模块本身的计算量。
  • 1*1卷积核作用:
    • 降低维数,减少计算量
    • 增加网络层数,提高网络表达能力

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wmfRBG1l-1665146495717)(C:\Users\Yang\AppData\Roaming\Typora\typora-user-images\image-20221007201425645.png)]

经典卷积神经网络学习笔记_第9张图片

Inception网络的创新方式

(1)Inception模块

(2)1*1卷积

你可能感兴趣的:(30天入门人工智能,cnn,学习,深度学习)