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

news/2024/12/5 3:15:36/

文章目录

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.ppmy.cn/news/1404982.html

相关文章

某音乐平台歌曲信息逆向之参数寻找

如何逆向加密参数&#xff1a;某音乐平台歌曲信息逆向之webpack扣取-CSDN博客 参数构建 {"comm": {"cv": 4747474,"ct": 24,"format": "json","inCharset": "utf-8","outCharset": "ut…

续-开发组件更新-提效工具分享

前言 小一个月没更新了&#xff0c;有各种各样的事啦&#xff0c;这一篇有点水吧。围绕两方面&#xff0c;开发组件更新以及IDEA插件的分享&#xff0c;题目和我一样水&#xff0c;有点像是日本轻小说取名了&#xff0c;整这么长。本篇的触动来源于&#xff0c;我今天偶然发现…

#设计模式#3.1用做松鼠桂鱼来理解抽象工厂(对象创建型模式)

概念&#xff1a;xx工厂&#xff0c;xx产品 区分 工厂是动作&#xff0c;产品是结果&#xff08;菜品&#xff09; 概念&#xff1a;抽象xx&#xff0c;具体xx 区分 抽象产品&#xff1a;“中式菜品” 具体产品&#xff1a;“麻婆豆腐”、“宫保鸡丁” 抽象工厂&#xff1a;“…

AWS相关服务说明

互联网网关 官网 # 官网 https://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/VPC_Internet_Gateway.htmlInternet 网关是一种横向扩展、冗余且高度可用的 VPC 组件&#xff0c;支持在 VPC 和 Internet 之间进行通信。它支持 IPv4 和 IPv6 流量。它不会对您的网络流量造…

[Linux]基础IO(中)---理解重定向与系统调用dup2的使用、缓冲区的意义

重定向理解 在Linux下&#xff0c;当打开一个文件时&#xff0c;进程会遍历文件描述符表&#xff0c;找到当前没有被使用的 最小的一个下标&#xff0c;作为新的文件描述符。 代码验证&#xff1a; ①&#xff1a;先关闭下标为0的文件&#xff0c;在打开一个文件&#xff0c;…

合并两个单链表

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 但行前路&#xff0c;不负韶华&#…

探析Drools规则引擎的工作机制

目录 一、工作原理 二、工作流程 2.1 初始化环境 2.2 添加规则文件 2.3 编译规则文件 2.4 插入到工作内存 2.5 规则匹配与激活 2.6 规则执行 三、Drools 其他特性 3.1 符合事实 3.2 决策表 3.3 规则生命周期管理 3.4 规则流 四、Rete 算法 一、工作原理 Drools 规则引擎的工…

谷歌(Google)技术面试——在线评估问题(一)

谷歌&#xff08;Google&#xff09;面试过程的第一步&#xff0c;你可能会收到一个在线评估链接。 评估有效期为 7 天&#xff0c;包含两个编码问题&#xff0c;需要在一小时内完成。 以下是一些供你练习的在线评估问题。 在本章结尾处&#xff0c;还提供了有关 Google 面试不…