前言
经过前面对于神经网络架构的学习,我们算是了解了它的前身 ,但是和我们现在饱受关注的那些模型而言,还是有很大的差别。
现在开始由传统的权重函数到卷积神经网络,其又经历了哪些演变,其背后的原理是如何的,对于我们理解深度学习和以后模型的改进都有着莫大的帮助。
卷积层
卷积层又可以称为过滤层filter,将我们想要的一些图片的特征提取出来。比如垂直或水平的边缘信息,就是卷积最简单的用途。边缘检测已经有很成熟的算子了,值得一提的是,我们可以吧kernel里面的参数作为未知数,进行机器学习找到最适合的参数。
卷积层特点
(1)参数共享指的是在卷积过程中,同一个卷积核(即一组权重)在整个图像上滑动并应用于不同的位置。这样,卷积核的参数(权重)是共享的,而不是为图像的每一个部分都单独设置一组权重。参数共享减少了需要训练的参数数量,因为同一个卷积核在整个图像上应用。
(2)稀疏连接性指的是卷积层中的每个神经元只与输入图像的一小部分连接,而不是像全连接层那样与所有输入连接。具体来说,卷积核的大小决定了每次运算只覆盖图像的一部分,而不是整个图像。稀疏连接性通过只连接图像的一部分像素来减少计算量。
(3)平移不变性指的是卷积神经网络能够识别出图像中的特征,无论这些特征出现在图像的哪个位置。也就是说,如果一个特征在图像中移动了位置,CNN仍然能识别出来。平移不变性让网络能够识别出图像中的特征,无论它们在图像中的具体位置。
Padding
按照卷积的原理,卷积会让图片变小,在较大的神经网络中这是我们不想看见的结果,因此选择在原来的图片边缘补充上像素,从而达到卷积过后图片大小不变的效果,这样同时也避免出现角落的像素信息只被利用一次。
体积卷积
当遇到多通道的图片的时候,对其卷积,可以看做是两个立方体进行逐元素相乘求和,这样就要求卷积层的通道数和图片的通道数要相等。而我们可以使用不同的Kernel进行卷积,每一个Kernel对应一个通道,增加通道/深度数量可以帮助我们增加检测的特征。
1*1卷积
1. 降维和升维
降维:1x1卷积常用于减少特征图的通道数,从而降低计算复杂度。
升维:同样地,1x1卷积也可以用于增加通道数,从而增强特征图的表达能力。
2. 特征组合
1x1卷积可以看作是对每个像素点的通道进行线性组合,这样可以在不改变空间维度(即高度和宽度)的情况下,融合不同通道的特征。这种操作可以帮助提取更复杂、更高级的特征。
3. 非线性引入
在卷积神经网络中,1x1卷积后通常会接一个非线性激活函数(如ReLU),这样可以引入非线性,从而增加模型的表达能力和拟合复杂数据的能力。
4. 网络瓶颈(Network Bottleneck)
在深度网络中,1x1卷积常用于网络瓶颈结构中,以减少特征图的维度并降低计算量,同时保持模型的表达能力。比如,在ResNet的瓶颈块(Bottleneck Block)中,1x1卷积用于先降维,再进行3x3卷积,最后再升维。
Inception Network(应用于GoogleNet)
Inception模块的核心思想是通过并行地应用多种不同尺寸的卷积核和池化操作,然后将它们的输出连接起来,从而在保持计算效率的同时提取多种尺度的特征。这种设计可以让网络在每一层都能处理不同大小的特征,从而增强模型的表达能力。
Inception模块的结构
一个典型的Inception模块包含以下几种操作:
- 1x1卷积:用于降维,减少计算量和参数数量。
- 3x3卷积:用于提取中尺度特征。
- 5x5卷积:用于提取大尺度特征。
- 3x3最大池化:用于提取局部特征和减少计算量。
这些操作并行进行,最后将它们的输出在通道维度上连接起来,形成模块的输出。
深度可分离卷积(不用体积卷积)
转置卷积(transpose Convolution)
从较小的输入到较大的输出,可以用于语义分割,输出一个与原图像大小相同的记录了不同像素对应一个种类的结果。
池化层
池化层相较于卷积层有什么区别?
(1)目的不同,池化层是压缩图像,卷积层是提取特征
(2)原理不同,池化需要逐层进行池化,和体积卷积不同
池化层特点
(1)现在使用最大池化较多而非平均池化
(2)很少使用Padding
全连接层
把当前三维的信息转换成一维的信息进行处理,用于最后的分类任务。
常见网络结构
通用逻辑
Conv——Pool——Conv——Pool——fc——fc
网络结构设置一般要考虑相对统一性
ResNet
引入了残差结构,残差结构的核心思想是通过引入“快捷连接”(skip connection),直接将输入数据传递到输出端,绕过中间的层。这种方式可以确保即使中间层的输出不理想,输入数据仍然可以直接传递到后续层,避免信息的损失。
残差结构的引入让误差随着层数增加而减少变成了现实。
网络提升方法
数据增强
1.失真,镜像,随机裁剪
2.颜色扰动
10-crop
10-crop是一种数据增强技术,常用于图像分类任务中,以提高深度学习模型的泛化能力。它通过对每张输入图像生成10个不同的裁剪图像来增加训练数据的多样性。具体地,10-crop方法包括以下步骤:
- 生成5个裁剪图像:
- 从图像的四个角和中心各裁剪一个图像,这样就有了5个裁剪图像。
- 生成5个水平翻转的裁剪图像:
- 对上述5个裁剪图像进行水平翻转,得到另外5个裁剪图像。
集成
训练多个网络求平均值(适合benchmarks基础数据上学习,不适合生产
总结
开始慢慢能理解之前看的那些网络结构了