机器学习:Pooling层作用及反向传播

在这里插入图片描述

CNN网络在反向传播中需要逐层向前求梯度,然而pooling层没有可学习的参数,那它是如何进行反向传播的呢?此外,CNN中为什么要加pooling层,它的作用是什么?

Pooling层

CNN一般采用average pooling或max pooling来进行池化操作,而池化操作会改变feature map的大小,例如大小为64×64的feature map使用2×2的步长池化后,feature map大小为32×32。因此,这会使得在反向传播中,pooling层的梯度无法与前一层相对应。

那怎么解决这个问题呢?其实也很简单,可以理解为就是pooling操作的一个逆过程,把一个像素的梯度传递给4个像素,保证传递的loss(或梯度)总和不变。下面分别来看average pooling和max pooling的反向传播操作过程。

average pooling

average pooling在前向传播中,就是把一个patch中的值取平均传递给下一层的一个像素。因此,在反向传播中,就是把某个像素的值平均分成 n 份分配给上一层。(!!注意这里是分成 n 份,而不是将该元素的值复制 n 份,不然会使得loss之和变为原来的 n 倍,造成梯度爆炸。)

max pooling

max pooling在前向传播中,把一个patch中最大的值传递给下一层,其他值会被舍弃掉。因此,在反向传播中,就是将当前梯度直接传递给前一层的某个像素,而让同一个patch中的其他像素值为0

所以,max pooling和average pooling不同的是,max pooling在前向传播的时候要记录池化操作时哪个像素的值是最大的,即max_id,在反向传播中才能将其对应起来。

总结: pooling层没有可学习的参数,在CNN的反向传播中,pooling层需要做的仅仅是将误差传递到上一层,而没有计算梯度的过程。

Pooling层的作用

两种pooling层的原理其实很容易就理解了,那它的作用又是什么呢, CNN中为什么要加pooling层?下面汇总一下几位大佬的解释:

1、增加非线性

2、保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力

3、invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)

①translation invariance(平移不变性):

例如下面一个数字识别的例子,左边下图(大小为16×16)中的数字 1 比上图中的向右偏了一个单位,但是经过max pooling层之后,都变成了8×8的feature map。平移不变性体现在,max pooling之后,原图中的a(或b)最终都会映射到相同的位置(这句话的应该可以理解为原来feature map中的特征保持不变?比如a和b的位置不会错开,而是保持了相对位置从而保持了原来的主要特征)。

此外,图像主要的特征捕获到了,同时又将问题的规模从16×16降到了8×8(降维)。

②rotation invariance(旋转不变性):

下图表示汉字“一”的识别,第一张相对于x轴有倾斜角,第二张是平行于x轴,两张图片相当于做了旋转,经过多次max pooling后具有相同的特征。

③scale invariance(尺度不变性):

下图表示数字“0”的识别,第一张的“0”比较大,第二张的“0”进行了较小,相当于作了缩放,同样地,经过多次max pooling后具有相同的特征。

对③scale invariance(尺度不变性)的补充理解:(来自另一位大佬,作为参考)

增大了感受野!!! 怎么理解?比如上图中16×16的“0”,经过max pooling之后,可以用4×4的图表示了。

另外我们知道,CNN中利用卷积核进行卷积操作后,图像的的感受野会增大,那是不是一开始就用和图像大小一样的卷积核,获得的感受野更大,这样就更好呢?不是。因为卷积层越深模型的表征能力越强,如果直接用图像大小的卷积核就会得到1×1的feature map,一下子降维这么多,会导致很多重要信息丢失。

那如果多次卷积到最后也是要降维到1×1大小,信息不是一样丢失了吗?跟直接一次降维到1×1有什么区别吗?有区别的。因为如果每次只降维一些,逐渐降维虽然信息每次都会丢失一些,但每次卷积后表征的能力就会更强一些,到最后降到1×1的时候相比于直接降到1×1还是会强一些的。

pooling的缺点:

pooling能够增大感受野,让卷积能看到更多的信息,但是在降维的过程中也会丢失一部分信息(只留下了它认为重要的信息)。比如对segmentation要求的精度location会有一定的影响。

其他的pooling方法

overlapping pooling(重叠池化)

重叠池化,就是相邻池化窗口之间会有重叠,即窗口大小大于步长sizeX>stride。

Spatial Pyramid Pooling(空间金字塔池化)

空间金字塔池化的思想来源于SPPNet,用大小不同的池化窗口来作用于feature map,得到1×1、2×2和4×4的池化结果,如下图所见,假设卷积层有256个filter,那么可以得到1个256维的特征、4个256维的特征、16个256维的特征。

注意:这里的1×1、2×2和4×4不是池化窗口本身的大小,而是池化后将feature map分别划分为1×1、2×2和4×4个相同大小的子区域,而要得到这样的结果,就需要根据图像的大小动态地计算出池化窗口的大小和步长
计算方法:假设 c o n v 层输出为 a ∗ a ,要得到 n ∗ n 的池化结果,则有: s i z e X = a n ,    s t r i d e = a n 计算方法:假设conv层输出为a*a,要得到n*n的池化结果,则有:\\ \\sizeX=\frac{a}{n},\ \ stride=\frac{a}{n} 计算方法:假设conv层输出为aa,要得到nn的池化结果,则有:sizeX=na,  stride=na

a n \frac{a}{n} na 刚好取得整数,自然没有问题,例如假设a=13,要得到1×1pooling结果,只需令sizeX=13,stride=13即可。

但是当 a n \frac{a}{n} na 不能取整时,例如要得到2×2pooling结果,论文中给的sizeX=7,stride=6。(应该是对窗口大小sizeX稍作调整吧,然后采用重叠池化overlapping pooling的方法进行操作)

作用:CNN中加入SPP层之后,可以让CNN处理任意大小的输入,因而模型可以变得更加灵活。

参考资料

深度学习笔记(3)——CNN中一些特殊环节的反向传播

CNN网络的pooling层有什么用?

深度学习—之pooling层的作用与缺陷

池化方法总结

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

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

相关文章

【STM32 CubeMX】GPIO_HAL库源码分析

文章目录 前言一、GPIO_HAL库源码分析1.1 初始化GPIO1.2 HAL_GPIO_Init源码分析GPIO_InitTypeDef初始化结构体HAL_GPIO_Init函数 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技…

判断一个时间序列中的元素是否属于一个月的第一天或最后一天

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断一个时间序列中的元素 是否属于一个月的第一天或最后一天 Series.dt.is_month_start Series.dt.is_month_end [太阳]选择题 以下代码的输出结果中正确的是? import pandas as pd ts pd.S…

【JavaEE】传输层网络协议

传输层网络协议 1. UDP协议 1.1 特点 面向数据报(DatagramSocket)数据报大小限制为64k全双工不可靠传输有接收缓冲区,无发送缓冲区 UDP的特点,我理解起来就是工人组成的**“人工传送带”**: 面向数据报(…

Javaweb之SpringBootWeb案例之propagation属性案例演示的详细解析

案例 接下来我们就通过一个案例来演示下事务传播行为propagation属性的使用。 需求:解散部门时需要记录操作日志 由于解散部门是一个非常重要而且非常危险的操作,所以在业务当中要求每一次执行解散部门的操作都需要留下痕迹,就是要记录操作…

FL Studio2024最新中文版有哪些其新功能特点?

除了之前提到的特点外,FL Studio 21还有以下一些值得注意的特点: 高效的音频处理:FL Studio 21具备高效的音频处理能力,能够实时处理多轨道音频,提供低延迟的音频播放和录制,确保音乐制作过程中的流畅性和实…

【数据库_MySQL】MySQL彻底卸载

程序员为什么不喜欢关电脑? 你是否注意到,程序员们似乎从不关电脑?别以为他们是电脑上瘾,实则是有他们自己的原因!让我们一起揭秘背后的原因,看看程序员们真正的“英雄”本色! 卸载 要是你的…

4核16G服务器价格腾讯云PK阿里云

4核16G服务器租用优惠价格26元1个月,腾讯云轻量4核16G12M服务器32元1个月、96元3个月、156元6个月、312元一年,阿腾云atengyun.com分享4核16服务器租用费用价格表,阿里云和腾讯云详细配置报价和性能参数表: 腾讯云4核16G服务器价…

修改npm 的运行命令详解

在Node.js和npm中,你可以通过修改package.json文件中的scripts部分来定义和运行自定义的npm脚本。这些脚本可以是任何你希望在项目中运行的命令,包括启动服务器、运行测试、构建项目等。下面是一些修改npm运行命令的详解和代码示例。 修改npm运行命令的…

RAG (Retrieval Augmented Generation)简介

1. 背景 目前大模型很多,绝大部分大模型都是通用型大模型,也就是说使用的是标准的数据,比如wikipedia,百度百科,。。。。 中小型企业一般都有自己的知识库,而这些知识库的数据没有在通用型的大模型中被用到…

算法学习——LeetCode力扣贪心篇1

算法学习——LeetCode力扣贪心篇1 455. 分发饼干 455. 分发饼干 - 力扣(LeetCode) 描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[…

Spring Security实现权限认证与授权

一、Spring Security Spring Security作为Spring家族的安全框架,在安全方面的两个核心功能是认证(Authentication)和授权(Authorization)。 (1)用户认证指的是:验证某个用户是否为系…

证明之缺角正方形网格的铺地砖问题

缺角正方形网格的铺地砖问题 “挑战难题:多米诺骨牌与无法覆盖的方格” 这里有个著名的难题。画八横八纵正方形网格,去掉相对的两个角。你能用多米诺骨牌形状的地砖——每一块正好覆盖两个相邻方格,把剩余部分覆盖吗?我在下图中…

哈希表 ?

哈希表 首先什么是 哈希表,哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hash table就可以了)。 哈希表是根据关键码的值而直接进行访问的数据结构。 这么这官方的解释…

php基础学习之运算符(重点在连接符和错误抑制符)

运算符总结 在各种编程语言中&#xff0c;常用的运算符号有这三大类&#xff1a; 算术运算符&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;%位运算符&#xff1a;&&#xff0c;|&#xff0c;^&#xff0c;<<&#xff0c;>>赋值运算符&…

【深度学习每日小知识】交并集 (IoU)

交并集 (IOU) 是一种性能指标&#xff0c;用于评估注释、分割和对象检测算法的准确性。它量化数据集中的预测边界框或分段区域与地面实况边界框或注释区域之间的重叠。 IOU 提供了预测对象与实际对象注释的对齐程度的衡量标准&#xff0c;从而可以评估模型准确性并微调算法以改…

全面理解JVM虚拟机

为什么要学JVM&#xff1f; ​ 首先&#xff1a;面试需要。面试题层出不穷&#xff0c;难道每次面试都靠背几百上千条面试八股&#xff1f; ​ 其次&#xff1a;基础决定上层建筑。自己写的代码都不知道是怎么回事&#xff0c;怎么可能写出靠谱的系统&#xff1f; ​ 然后&a…

语言与科技创新(大语言模型对科技创新的影响)

1.科技创新中的语言因素 科技创新中的语言因素至关重要&#xff0c;具体体现在以下几个方面&#xff1a; 科技文献交流&#xff1a; 英语作为全球科学研究的通用语言&#xff0c;极大地推动了科技成果的国际传播与合作。科学家们在发表论文、报告研究成果时&#xff0c;大多选…

Java网络编程 双向通信

目录 网络编程实例创建客户端创建服务端测试 网络编程 Java的网络编程是Java编程语言中用于实现网络通信的一组API和工具。通过Java的网络编程&#xff0c;开发人员可以在Java应用程序中实现客户端和服务器之间的通信&#xff0c;从而构建各种网络应用。 以下是Java网络编程的…

谷歌浏览器安装扩展程序axure-chrome-extension

注&#xff1a; 文末附扩展附件&#xff1a;axure-chrome-extension_v0.7.0.crx 1、安装扩展程序axure-chrome-extension 找到axure-chrome-extension.crx&#xff0c;把axure-chrome-extension.crx后缀改为zip&#xff0c;然后解压&#xff0c;得到一个文件夹 2、打开谷歌浏览…

平时积累的FPGA知识点(6)

平时在FPGA群聊等积累的FPGA知识点&#xff0c;第六期&#xff1a; 1 万兆网接口&#xff0c;发三十万包&#xff0c;会出现掉几包的情况&#xff0c;为什么&#xff1f; 原因&#xff1a;没做时钟约束&#xff0c;万兆网接口的实现&#xff0c;本质上都是高速serdes&#xf…