第四章、卷积神经网络
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,而和原图像的维度保持相同
完整的卷积神经网络是如何运作的
卷积神经网络的前向传播:
4.3 经典卷积神经网络1:Lenet-5
模型图
模型解析
最关键的地方在于第一个池化层和第二个卷积层之间的连接方式,这里要提出一个新的连接方式——局部链接:
-
特征图是什么?如果有一个特征信息矩阵是[2,2,4],那么特征图就有4个,规格都是[2,2]
-
局部链接就是对不同的特征图交叉进行卷积,如图所示,优势在于:
- 减少连接数量和网络参数
- 不对称的连接方式可以平均提取特征
具体细节不做展开,记录现有网络与其不同之处:
- 现有网络常使用padding填充
- 现有网络常用最大池化,而不是平均池化
- 现有网络中间层激活函数常用relu、Leaky_Relu、Mish函数而不是sigmoid函数
- 最后的分类器使用Softmax而不是Lenet-5的RBF径向基函数
4.4 经典卷积神经网络2:Alexnet
模型图
模型解析
在Lenet-5基础上优化了网络结构:
- 网络更深:使用Same卷积,保持输入矩阵和卷积矩阵长宽不变,有利于构建更深的神经网络
- 卷积层叠:卷积层+卷积层+池化层
- Dropout:减少过拟合(详见6.4)
- 数据增强:样本多元化,减少过拟合(详见3.1)
- Relu函数:替换了sigmoid函数(详见3.3)
- 采用多GPU训练:CUDA加速
4.5 经典卷积神经网络3:Vgg-16
多种网络的对比
在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*11
、7*7
、5*5
的卷积核,而是一律使用3*3
的卷积,这样采用堆叠的小卷积核,可以学习更复杂的学习特征,而且参数更少。比如用3个3*3
的卷积核代替7*7
的卷积核,用2个3*3
的卷积核代替5*5
的卷积核。 - 网络更深:16层,乃至19层。一定程度上提升了网络效果。
4.6 改进卷积神经网络1:ResNet
为什么会产生ResNet网络
Vgg-16模型之后,出现了两个问题:
- 一味增加网络模型的深度不能提升网络模型的效果
- 一味加深网络,可能会带来梯度爆炸,梯度消失的问题
缓解这些问题的方式就是ResNet网络,换言之,ResNet网络的价值是用于提升模型深度的
模型图
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网络创新方式
残差模块:加深网络层数,提升模型性能
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)]
Inception网络的创新方式
(1)Inception模块
(2)1*1
卷积