卷积神经网络 - 池化(Pooling)篇

news2024/11/23 15:16:21

序言

在深度学习的广阔领域中,卷积神经网络( CNN \text{CNN} CNN)以其卓越的特征提取能力,在图像识别、视频处理及自然语言处理等多个领域展现出非凡的潜力。而池化( Pooling \text{Pooling} Pooling)作为CNN中的关键组件之一,扮演着不可或缺的角色。池化层位于连续的卷积层之间,其主要目的是通过降低特征图的维度(即减少数据的空间大小),来减少网络中的参数数量和计算量,同时保留重要特征,有效防止过拟合,并增强模型的空间不变性。简而言之,池化是CNN实现高效学习与泛化能力的重要策略之一。

池化

  • 卷积神经网络的卷积层通常包含三级(如图例1所示)。
    • 在第一级中,卷积层并行地进行多个卷积运算来产生一组线性激活函数。
    • 在第二级中,非线性的激活函数如整流线性单元函数等作用在第一级中的每一个线性输出上。这一级有时也被称为探测级 ( detector stage \text{detector stage} detector stage)。
    • 在第三级中,我们使用池化函数 ( pooling function \text{pooling function} pooling function) 来更进一步地调整卷积层的输出。
  • 池化函数使用某一位置的相邻输出的总体统计特征来代替网络在该位置的输出。
    • 例如,最大池化 ( max pooling \text{max pooling} max pooling) 函数 ( Zhou and Chellappa, 1988 ‾ \underline{\text{Zhou and Chellappa, 1988}} Zhou and Chellappa, 1988) 给出相邻矩形区域内的最大值。
    • 其他常用的池化函数包括相邻矩形区域内的平均值、 L 2 L^2 L2范数以及依靠据中心像素距离的加权平均函数。
  • 不管采用什么样的池化函数,当输入作出少量平移时,池化能帮助我们的表示近似不变 ( invariant \text{invariant} invariant)。
    • 对于平移的不变性是说当我们把输入平移一微小的量,大多数通过池化函数的输出值并不会发生改变。
    • 图例2用了一个例子来说明这是如何实现的。
    • 局部平移不变性是一个很重要的性质,尤其是当我们关心某个特征是否出现而不关心它出现的具体位置时。
    • 例如,当判定一张图像中是否包含人脸时,我们并不需要知道眼睛的具体像素位置,我们只需要知道有一只眼睛在脸的左边,有一只在右边就行了。
    • 但在一些其他领域,保存特征的具体位置却很重要。例如当我们想要寻找一个由两条边相交而成的拐角时,我们就需要很好地保存边的位置来判定它们是否相交。
  • 使用池化可以看作是增加了一个无限强的先验:卷积层学得的函数必须具有对少量平移的不变性。当这个假设成立时, 池化可以极大地提高网络的统计效率。
  • 池化对于空间区域具有平移不变性,但当我们对于分离参数的卷积输出进行池化时,特征能够学得应该对于哪种变换具有不变性(如图例3所示)。
  • 因为池化综合了全部邻居的反馈,这使得池化单元少于探测单元成为可能,我们可以通过综合池化区域的 k k k个像素的统计特征而不是单个像素来实现。
    • 图例4给出了一个例子。
    • 这种方法提高了网络的计算效率,因为下一层少了约 k k k倍的输入。
    • 当下一层的参数数目是其输入大小的函数时(例如当下一层是全连接的依赖矩阵乘法的网络层时),这种对于输入规模的减小也可以提高统计效率并且减少对于参数的存储需求。
  • 在很多任务中,池化对于处理不同大小的输入具有重要作用。
    • 例如我们想对不同大小的图像进行分类时,分类层的输入必须是固定的大小,而这通常通过调整池化区域的偏置大小来实现,这样分类层总是能接收到相同数量的统计特征而不管最初的输入大小了。
    • 例如,最终的池化层可能会输出四组综合统计特征,每组对应着图像的一个象限,而与图像的大小无关。
  • 一些理论工作对于在不同情况下应当使用哪种池化函数给出了一些指导( Boureau et al., 2010 \text{Boureau et al., 2010} Boureau et al., 2010)。
    • 动态地把特征池化在一起也是可行的,例如,通过针对特定属性的位置运行聚类算法 ( Boureau et al., 2011 \text{Boureau et al., 2011} Boureau et al., 2011)。
    • 这种方法对于每幅图像产生一个不同的池化区域集合。
    • 另一种方法是先学习一个单独的池化结构,再应用到全部的图像中 ( Jia et al., 2012 \text{Jia et al., 2012} Jia et al., 2012)。
  • 池化可能会使得一些利用自顶向下信息的神经网络结构变得复杂,例如玻尔兹曼机和自编码器。
    • 这些问题将在后续篇章:深度学习研究中当我们遇到这些类型的网络时进一步讨论。
    • 卷积玻尔兹曼机中的池化出现在篇章:深度生成模型 - 卷积玻尔兹曼机
    • 一些可微网络中需要的在池化单元中进行的类逆运算将在篇章:深度生成模型 - 有向生成网络之卷积生成网络中讨论。
  • 图例5给出了一些使用卷积和池化操作的用于分类的卷积神经网络的完整结构的例子。

  • 图例1:典型卷积神经网络层的组件。

    • 典型卷积神经网络层的组件
      在这里插入图片描述

    • 说明:

      • 有两组常用的术语用于描述这些层。
      • (左图) 在这组术语中,卷积网络被视为少量相对复杂的层,每层具有许多“级”。在这组术语中,核张量与网络层之间存在一一对应关系。在本书中,我们通常使用这组术语。
      • (右图) 在这组术语中,卷积网络被视为更大数量的简单层;每一个处理步骤都被认为是一个独立的层。这意味着不是每个“层”都有参数。
  • 图例2:最大池化引入不变性。

    • 最大池化引入不变性
      在这里插入图片描述

    • 说明:

      • (上图) 卷积层中间输出的视图。下面一行显示非线性的输出。上面一行显示最大池化的输出,每个池的宽度为三个像素并且池化区域的步幅为一个像素。
      • (下图) 相同网络的视图,不过对输入右移了一个像素。下面一行的所有值都发生了改变,但上面一行只有一半的值发生了改变,这是因为最大池化单元只对周围的最大值比较敏感,而不是对精确的位置。
  • 图例3:学习不变性的示例。

    • 学习不变性的示例
      在这里插入图片描述

    • 说明:

      • 使用分离的参数学得多个特征,再使用池化单元进行池化,可以学得对输入的某些变换的不变性。
      • 这里我们展示了用三个学得的过滤器和一个最大池化单元可以学得对旋转变换的不变性。
      • 这三个过滤器都旨在检测手写的数字 5 5 5
      • 每个过滤器尝试匹配稍微不同方向的 5 5 5
      • 当输入中出现 5 5 5时,相应的过滤器会匹配它并且在探测单元中引起大的激活。
      • 然后,无论哪个探测单元被激活,最大池化单元都具有大的激活。
      • 我们在这里展示网络如何处理两个不同的输入,导致两个不同的探测单元被激活。
      • 然而对池化单元的影响大致相同。这个原则在 maxout \text{maxout} maxout网络 ( Goodfellow et al., 2013b \text{Goodfellow et al., 2013b} Goodfellow et al., 2013b) 和其他卷积网络中使用。
      • 空间位置上的最大池化对于平移是天然不变的;这种多通道方法只在学习其他变换时是必要的。
  • 图例4:带有下采样的池化。

    • 带有下采样的池化
      在这里插入图片描述

    • 说明:

      • 这里我们使用最大池化,池的宽度为三并且池之间的步幅为二。
      • 这使得表示的大小减少了一半,减轻了下一层的计算和统计负担。
      • 注意到最右边的池化区域尺寸较小,但如果我们不想忽略一些探测单元的话就必须包含这个区域。
  • 图例5:卷积网络用语分类的架构示例。

    • 卷积网络用语分类的架构示例
      在这里插入图片描述

    • 说明:

      • 本图中使用的具体步幅和深度并不适合实际使用;它们被设计得非常浅以适合页面。实际的卷积网络也常常涉及大量的分支,不同于这里为简单起见所使用的链式结构。
      • (左图) 处理固定大小的图像的卷积网络。在卷积层和池化层几层交替之后,卷积特征映射的张量被重新整形以展平空间维度。网络的其余部分是一个普通的前馈网络分类器,如篇章:深度前馈网络系列所述。
      • (中图) 处理大小可变的图像的卷积网络,但仍保持全连接的部分。该网络使用具有可变大小但是数量固定的池的池化操作,以便向网络的全连接部分提供 576 576 576个单位的固定大小的向量。
      • (右图) 没有任何全连接权重层的卷积网络。相反,最后的卷积层为每个类输出一个特征映射。该模型可能学习每个类在每个空间位置出现的可能性的映射。将特征映射进行平均得到的单个值,提供了顶部 softmax \text{softmax} softmax分类器的变量。

总结

池化操作以其独特的下采样机制,在卷积神经网络中发挥着压缩数据和提取关键特征的重要作用。通过池化层, CNN \text{CNN} CNN能够在保持数据重要信息的同时,显著降低数据维度,提高处理速度,并增强模型对于图像平移、旋转等变换的鲁棒性。常见的池化方法包括最大池化( Max Pooling \text{Max Pooling} Max Pooling)和平均池化( Average Pooling \text{Average Pooling} Average Pooling),它们各自在保留特征和减少计算量方面展现出不同的优势。综上所述,池化作为 CNN \text{CNN} CNN架构中的精髓之一,不仅优化了网络性能,还极大地推动了深度学习技术在图像及视频处理领域的进步与发展。

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

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

相关文章

智慧水务项目(四)django(drf)+angular 18 配置REST_FRAMEWORK

一、说明 建立了几个文件 二、一步一步来 1、建立json_response.py 继承了 Response, 一共三个函数,成功、详情,错误 from rest_framework.response import Responseclass SuccessResponse(Response):"""标准响应成功的返回…

springboot共享汽车租赁管理系统-计算机毕业设计源码99204

目 录 第 1 章 引 言 1.1 选题背景及意义 1.2 研究前期调研 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统…

机械学习—零基础学习日志(高数18——无穷小与无穷大)

零基础为了学人工智能,真的开始复习高数 学习速度加快! 无穷小定义 这里可以记住,无穷小有一个特殊,那就是零。 零是最高阶的无穷小,且零是唯一一个常数无穷小。 张宇老师还是使用了超实数概念来讲解无穷小。其实是…

《马拉松名将手记:42.195公里的孤独之旅》大迫杰之舞

《马拉松名将手记:42.195公里的孤独之旅》大迫杰之舞 大迫杰,日本田径长跑选手。2020年3月1日,在东京马拉松赛上,以2小时5分29秒获得日本本土冠军,刷新自己保持的日本国家记录,并拿下东京奥运会马拉松项目入…

UE5 从零开始制作跟随的鸭子

文章目录 二、绑定骨骼三、创建 ControlRig四、创建动画五、创建动画蓝图六、自动寻路七、生成 goose八、碰撞 和 Physics Asset缺点 # 一、下载模型 首先我们需要下载一个静态网格体,这里我们可以从 Sketchfab 中下载:Goose Low Poly - Download Free …

黑暗之魂和艾尔登法环有什么联系吗 黑暗之魂和艾尔登法环哪一个好玩 苹果电脑怎么玩Windows游戏 apple电脑可以玩游戏吗

有不少游戏爱好者对于艾尔登法环与经典游戏黑魂之间是否存在关系产生了疑问。在新旧元素的融合中,艾尔登法环注定成为一场别具匠心的冒险之旅。在实机演示中类魂的玩法以及黑魂相似的画风让不少玩家想要了解本作与黑魂是否有联系,今天,我们将…

SAP生产版本维护以及注意事项

事务代码:C223/MM02,CS01,CA01 步骤: CS01创建BOM CA01创建工艺路线 C223/MM02创建生产版本 选择BOM清单 注意: 1、该生产版本与BOM清单绑定在一起,后续如果BOM有多个,需要添加或修改这个生产版本 2、…

进化版:一个C++模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等

原始版本在这里 一个C模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等-CSDN博客 问题 1、关于类型的判断&#xff0c;适应性不强 比如template <typename T>IsFarElementId<>&#xff0c;目前只能判断FarElemen…

达梦数据库的系统视图v$cacheitem

达梦数据库的系统视图v$cacheitem 达梦数据库的系统视图V$CACHEITEM的作用是显示缓存中的项信息&#xff0c;在 ini 参数 USE_PLN_POOL !0 时才统计。这个视图帮助数据库管理员监控和分析缓存的使用情况&#xff0c;优化数据库性能。通过查询V$CACHEITEM视图&#xff0c;可以获…

ai web 1.0靶机漏洞渗透详解

一、导入靶机 解压下载好的靶机&#xff0c;然后打开VMware&#xff0c;点击文件》打开》找到刚刚解压的靶机点击下面的文件》打开 确认是靶机的网络连接模式是NAT模式 二、信息收集 1、主机发现 在本机的命令窗口输入ipconfig查看VMnet8这块网卡&#xff0c;这块网卡就是虚…

案例分享—国外优秀ui设计作品赏析

国外UI设计创意迭出&#xff0c;融合多元文化元素&#xff0c;以极简风搭配动态交互&#xff0c;打造沉浸式体验&#xff0c;色彩运用大胆前卫&#xff0c;引领界面设计新风尚 同时注重用户体验的深度挖掘&#xff0c;通过个性化定制与智能算法结合&#xff0c;让界面不仅美观且…

代码随想录第十八天|动态规划(2)

目录 01背包问题——二维数组 01背包问题——一维数组 LeetCode 416. 分割等和子集 LeetCode 1049. 最后一块石头的重量 II LeetCode 494. 目标和 LeetCode 474. 一和零 总结 01背包问题——二维数组 有n件物品和一个最多能放入重量为w的背包。第i件物品的重量是weight…

web基础之CSS

web基础之CSS 文章目录 web基础之CSS一、CSS简介二、基本用法2、CSS应用方式2.1 行内样式2.2内部样式2.3外部样式 三、选择器1、标签选择器2、类选择器3、ID选择器4、选择器的优先级 四、常见的CSS属性1、字体属性2、文本属性3、背景属性4、表格属性5、盒子模型的属性6、定位 总…

LabVIEW激光主动探测系统

开发了一种基于LabVIEW的高性能激光主动探测控制与处理系统的设计与实现。该系统充分利用了LabVIEW的多线程和模块化设计优势&#xff0c;提供了一套功能完整、运行高效且稳定的解决方案&#xff0c;适用于高精度激光探测领域。 项目背景 激光主动探测技术利用激光作为主动光源…

dp专题(二)

洛谷&#xff1a;B3626 跳跃机器人 题目描述 地上有一排格子&#xff0c;共 nn 个位置。机器猫站在第一个格子上&#xff0c;需要取第 nn 个格子里的东西。 机器猫当然不愿意自己跑过去&#xff0c;所以机器猫从口袋里掏出了一个机器人&#xff01;这个机器人的行动遵循下面…

【面试题】【C语言】寻找两个正序数组的中位数

寻找两个正序数组的中位数 仅供学习 题目 算法时间复杂度 二分查找算法&#xff0c;时间复杂度为 O(log(min(m, n)))&#xff0c;其中 m 和 n 分别是两个数组的长度。 子函数 查找两个数字的最大值 int max(int a, int b) {return a > b ? a : b; }查找两个数字的最小…

ubuntu20.04搭建RUST开发环境并与C语言交互

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 ubuntu20.04搭建RUST开发环境并与C语言交互 前言开战一、确认环境版本二、环境搭建三、hello world&#xff01;四、跟c语言进行交互1.rust调用C静态库2.C调用rust库 总结参考…

LDR6500:小封装,易设计外围简单OTG数据+充电实现原理

移动设备的普及与功能日益丰富的今天&#xff0c;OTG&#xff08;USB On-The-Go&#xff09;转接器作为连接移动设备与外部设备的桥梁&#xff0c;其重要性不言而喻。而LDR6500&#xff0c;作为乐得瑞科技精心打造的一款USB-C DRP&#xff08;Dual Role Port&#xff0c;双角色…

vue3修改带小数点的价格数字:小数点的前后数字,要分别显示成不同颜色和大小!已经封装成组件了!

需求&#xff1a; 修改带小数点的价格数字&#xff1a;小数点的前后数字&#xff0c;要分别显示成不同颜色和大小&#xff01;已经封装成组件了&#xff01; 效果&#xff1a; 前面大&#xff0c;后面小 代码&#xff1a; 组件&#xff1a; <!--修改小数点前后数字不同…

nodejs多版本随心切换-windows

nodejs多版本控制 1. 安装 nvm github下载地址 不需要卸载已安装的nodejs&#xff0c;安装时会让你选择nodejs的位置&#xff0c;可修改为你已经安装的路径&#xff0c;会自动搜索已安装版本&#xff0c;并进行弹窗询问&#xff0c;选择托管即可 2. 修改配置文件 在 nvm 安装…