深度学习500问——Chapter05: 卷积神经网络(CNN)(2)

news/2024/4/30 5:15:21

文章目录

5.6 有哪些池化方法

5.7 1x1卷积作用

5.8 卷积层和池化层有什么区别

5.9 卷积核是否一定越大越好

5.10 每层卷积是否只能用一种尺寸的卷积核

5.11 怎样才能减少卷积层参数量

5.12 在进行卷积操作时,必须同时考虑通道和区域吗

5.13 采用宽卷积的好处有什么


5.6 有哪些池化方法

池化操作通常也叫做子采样(Subsampling)或降采样(Downsampling),在构建卷积神经网络时,往往会用在卷积层之后,通过池化来降低卷积层输出的特征维度,有效减少网络参数的同时还可以防止过拟合现象。池化操作可以降低图像维度的原因,本质上是因为图像具有一种“静态性”的属性,这个意思是说在一个图像区域有用的特征极有可能在另一个区域同样有用。因此,为了描述一个大的图像,很直观的想法就是对不同位置的特征进行聚合统计。例如,可以计算图像在固定区域特征上的平均值(或最大值)来代表这个区域的特征。

表5.6 池化分类

池化类型示意图作用
一般池化(General Pooling)通常包括最大池化(Max Pooling)和平均池化(Mean Pooling)。以最大池化为例,池化范围(2\times2)和滑窗步长(stride=2)相同,仅提取一次相同区域的范化特征。
重叠池化(Overlapping Pooling)与一般池化操作相同,但是池化范围P_{size}与滑窗步长stride关系为P_{size}>stride,同一区域内的像素特征可以参与多次滑窗提取,得到的特征表达能力更强,但计算量更大。
空间金字塔池化^*(Spatial Pyramid Pooling)在进行多尺度目标的训练时,卷积层允许输入的图像特征尺度是可变的,紧接的池化层若采用一般的池化方法会使得不同的输入特征输出相应变化尺度的特征,而卷积神经网络中最后的全连接层则无法对可变尺度进行运算,因此需要对不同尺度的输出特征采样到相同输出尺度。

SPPNet[3]就引入了空间池化的组合,对不同输出尺度采用不同的滑窗大小和步长以确保输出尺度相同(win_{size}=\lceil \frac{in}{out}\rceil; stride=\lfloor \frac{in}{out}\rfloor; ),同时用如金字塔式叠加的多种池化尺度组合,以提取更加丰富的图像特征。常用于多尺度训练和目标检测中的区域提议网络(Region Proposal Network)的兴趣区域(Region of Interest)提取。

5.7 1x1卷积作用

NIN(Network in Network)[4]是第一篇探索1\times1卷积核的论文,这篇论文通过在卷积层中使用MLP替代传统线性的卷积核,使单层卷积层内具有非线性映射的能力,也因其网络结构中嵌套MLP子网络而得名NIN。NIN对不同通道的特征整合到MLP自网络中,让不同通道的特征能够交互整合,使通道之间的信息得以流通,其中的MLP子网络恰恰可以用1\times1的卷积进行代替。

GoogLeNet[5]则采用1\times1卷积核来减少模型的参数量。在原始版本的Inception模块中,由于每一层网络采用了更多的卷积核,大大增加了模型的参数量。此时在每一个较大卷积核的卷积层前引入1\times1卷积,可以通过分离通道与宽高卷积来减少模型参数量。

以图5.2为例,在不考虑参数偏置项的情况下,若输入和输出的通道数为C_1=16,则左半边网络模块所需的参数为:(1\times1+3\times3+5\times5+0)\times C_1\times C_1=8960;假定右半边网络模块采用的1\times1卷积通道数为C_2=8(满足C_1>C_2),则右半部分的网络结构所需参数量为:(1\times1\times (3C_1+C_2)+3\times3\times C_2 +5\times5\times C_2)\times C_1=5248,可以在不改变模型表达能力的前提下大大减少所使用的参数量。

图5.2 Inception模块

综上所述,1\times 1卷积的作用主要为以下两点:

  • 实现信息的跨通道交互和整合;
  • 对卷积核通道数进行降维和升维,减小参数量。

5.8 卷积层和池化层有什么区别

卷积层和池化层在结构上具有一定的相似性,都是对感受域内的特征进行提取,并且根据步长设置获取到不同维度的输出,但是其内在操作是有本质区别的,如表5.7所示。

卷积层池化层
结构零填充时输出维度不变,而通道数改变通常特征维度会降低,通道数不变
稳定性输入特征发生细微改变时,输出结果会改变感受域内的细微变化不影响输出结果
作用感受域内提取局部关联特征感受域内提取泛化特征,降低维度
参数量与卷积核尺寸、卷积核个数相关不引入额外参

5.9 卷积核是否一定越大越好

在早期的卷积神经网络中(如LeNet-5、AlexNet),用到了一些较大的卷积核(11\times115\times 5),受限于当时的计算能力和模型结构的设计,无法将网络叠加的很深,因此卷积网络中的卷积层需要设置较大的卷积核以获取更大的感受域。但是这种大卷积核反而会导致计算量大幅增加,不利于训练更深层的模型,相应的计算性能也会降低。后来的卷积神经网络(VGG、GoogLeNet等),发现通过堆叠2个3\times 3卷积核可以获得与5\times 5的卷积核相同的感受野,同时参数量会更少(3\times 3\times 2+1< 5\times 5\times 1+1),3\times 3卷积核被广泛应用于许多卷积神经网络中。因此可以认为,在大多数情况下通过堆叠较小的卷积核比直接采用单个更大的卷积核会更加有效。

但是,这并不是表示更大的卷积核就没有作用,在某些领域应用卷积神经网络时仍然可以采用较大的卷积核。譬如在自然语言处理领域,由于文本内容不像图像数据可以对特征进行很深层的抽象,往往在该领域的特征提取只需要较浅层的神经网络即可。在将卷积神经网络应用在自然语言处理领域时,通常都是较为浅层的卷积层组成,但是文本特征有时又需要有较广的感受域让模型能够组合更多的特征(如词组和字符),此时直接采用较大的卷积核将是更好的选择。

综上所述,卷积核的大小并没有绝对的优劣,需要视具体的应用场景而定,但是极大和极小的卷积核都是不合适的,单独的1\times 1极小卷积核只能用作分离卷积而不能对输入的原始特征进行有效的组合,极大的卷积核通常会组合过多的无意义特征从而浪费了大量的计算资源

5.10 每层卷积是否只能用一种尺寸的卷积核

经典的神经网络一般都属于层叠式网络,每层仅用一个尺寸的卷积核,如VGG结构中使用了大量的3\times 3卷积层。事实上,同一层特征图可以分别使用多个不同尺寸的卷积核,以获得不同尺度的特征,再把这些特征结合起来,得到的特征往往比使用单一卷积核的要好,如GoogLeNet、Inception系列的网络,均是每层使用了多个卷积核的结构。如图5.3所示,输入的特征在同一层分别经过1\times 13\times 35\times 5三种不同尺寸的卷积核,再将分别得到的特征进行整合,得到的新特征可以看作不同感受域提取的特征组合,相比于单一卷积核会有更强的表达能力。

图5.3 Inception模块结构

5.11 怎样才能减少卷积层参数量

  • 减少卷积层参数量的方法可以简要地归为以下几点:
  • 使用堆叠小卷积核代替大卷积核:VGG网络中2个3\times 3的卷积核可以代替一个5\times 5的卷积核。
  • 使用分离卷积操作:将原本K\times K\times C的卷积操作分离为K\times K\times 11\times1\times C的两部分操作。
  • 添加1\times 1的卷积操作:与分离卷积类似,但是通道数可变,在K\times K\times C_1卷积前添加1\times1\times C_2的卷积核(满足C_2 <C_1)。
  • 在卷积层前使用池化操作:池化可以降低卷积层的输入特征维度。

5.12 在进行卷积操作时,必须同时考虑通道和区域吗

标准卷积中,采用区域与通道同时处理的操作,如下图所示:

这样做可以简化卷积层内部的结构,每一个输出的特征像素都由所有通道的同一个区域提取而来。

但是这种方式缺乏灵活性,并且在深层的网络结构中使得运算变得相对低效,更为灵活的方式是使区域和通道的卷积分离开来,通道分离(深度分离)卷积网络由此诞生。如下图所示,Xception网络可解决上述问题。

我们首先对每一个通道进行各自的卷积操作,有多少个通道就有多少个过滤器。得到新的通道特征矩阵之后,再对这批通道特征进行标准的1\times 1跨通道卷积操作。

5.13 采用宽卷积的好处有什么

宽卷积对应是窄卷积,实际上并不是卷积操作的类型,指的是卷积过程中的填充方法,对应的是“SAME”填充和“VALID”填充。“SAME”填充通常采用零填充的方式对卷积核不满足整除条件的输入特征进行补全,以使卷积层的输出维度保持与输入特征维度一致;“VALID”填充的方式则相反,实际并不进行任何填充,在输入特征边缘位置若不足以进行卷积操作,则对边缘信息进行舍弃,因此在步长为1的情况下该填充方式的卷积层输出特征维度可能会略小于输入特征的维度。此外,由于前一种方式通过补零来进行完整的卷积操作,可以有效地保留原始的输入特征信息。

比如下图左部分的窄卷积。注意到越在边缘的位置被卷积的次数越少。宽卷积可以看作在卷积之前在边缘用0补充,常见的有两种情况,一个是全补充,如下图右部分,这样输出大于输入的维度。另一种常用的方法是补充一部分0值,使得输出核输入的维度一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11508.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯第十三届电子类单片机组决赛程序设计

前言 一、决赛题目 1.比赛题目 2.题目解读 二、功能实现 1.关于定时器资源 1&#xff09;超声波和NE555需要的定时器资源 2&#xff09;定时器2 2.单位切换 3.数据长度不足时&#xff0c;高位熄灭 4.AD/DA多通道的处理 5.PWM输出 6.长按功能的实现 三、完整代码演…

分布式链路追踪与云原生可观测性

分布式链路追踪系统历史 Dapper, a Large-Scale Distributed Systems Tracing Infrastructure - Google Dapper&#xff0c;大规模分布式系统的跟踪系统大规模分布式系统的跟踪系统&#xff1a;Dapper设计给我们的启示 阿里巴巴鹰眼技术解密 - 周小帆京东云分布式链路追踪在金…

Kimi精选提示词,总结PPT内容

大家好&#xff0c;我是子云&#xff0c;最近真是觉得Kimi这个大模型&#xff0c;产品体验很棒&#xff0c;能力也是不错&#xff0c;感觉产品经理用心了。 发现一个Kimi 一个小技巧&#xff0c;可以学习到很多高级提示词。 Kimi输入框可以配置常用提示词&#xff0c;同时也可…

专升本-云计算

被誉为第三次信息技术革命 什么是云计算&#xff1f; 云计算是一种商业的计算模式&#xff0c;它将任务分布在大量计算机构成的资源池上&#xff0c;用户可以按需通过网络存储空间&#xff0c;计算能力和信息等服务 云计算的产生和发展&#xff1a; 起源&#xff1a;上世纪6…

SV学习笔记(二)

接口 什么是接口&#xff1f; 接口 主要用作验证 &#xff0c;国外有些团队会使用sv进行设计&#xff0c;那么接口就会用作设计。验证环境中&#xff0c;接口可以 使连接变得简洁而不易出错 。interface和module的使用性质很像&#xff0c; 可以定义端口&#xff0c;也可以定…

YUNBEE云贝-技术分享:PostgreSQL分区表

引言 PostgreSQL作为一款高度可扩展的企业级关系型数据库管理系统&#xff0c;其内置的分区表功能在处理大规模数据场景中扮演着重要角色。本文将深入探讨PostgreSQL分区表的实现逻辑、详细实验过程&#xff0c;并辅以分区表相关的视图查询、分区表维护及优化案例&#xff0c;…