【深度学习】池化 (pooling)

深度学习中,有两种实现非线性的算子。一个是激活函数,另一个就是池化(pooling):
这里写图片描述

在知乎上面看到一个关于池化的神解释,摘来:

池化=涨水
卷积的目的是为了得到物体的边缘形状

可以想象水要了解山立体的形状
水位低时得出山脚的形状
水位中等时得出山腰的形状
水位高时得出山顶的形状

三点就可以大致描出山的简笔画

池化的过程=升高水位(扩大矩阵网格)
卷积的过程是区分哪里是水,哪里是山

加上一点个人理解:

对于网络结构而言,上面的层看下面的层经过pooling后传上来的特征图,就好像在太空上俯瞰地球,看到的只有山脊和雪峰。这即是对特征进行宏观上的进一步抽象。

那么为什么需要 进行抽象 呢?

因为:经过池化后,得到的是 概要统计特征 。它们不仅 具有低得多的维度 (相比使用所有提取得到的特征),同时还会 改善结果(不容易过拟合)

max_pooling: 夜晚的地球俯瞰图,灯光耀眼的穿透性让人们只注意到最max的部分,产生亮光区域被放大的视觉错觉。故而 max_pooling 对较抽象一点的特征(如纹理)提取更好。
这里写图片描述

average_pooling: 白天的地球俯瞰图,幅员辽阔的地球表面,仿佛被经过了二次插值的缩小,所有看到的都是像素点取平均的结果。故而 average_pooling 对较形象的特征(如背景信息)保留更好。
这里写图片描述

BP

CNN中一些特殊环节的反向传播

max_pooling的反向传播

把梯度直接传给前一层最max的像素,其余像素为0。

在这里插入图片描述

avg_pooling的反向传播

根据映射关系,把梯度均分成n份传给前一层。

在这里插入图片描述

Thinking

选用 max_pooling 还是 average_pooling ,要看需要识别的图像细节特征情况。知乎上说 二者差异不会超过 2% ,这个我深表质疑。

相比之下,个人感觉 max_pooling 是比 average_pooling 更抽象化的操作,因此可以抽象出更高级一点的特征。

由于pooling太过粗暴,操作复杂,目前业界已经逐渐放弃了对pooling的使用。替代方案 如下:

  • 采用 Global Pooling 以简化计算;

  • 增大conv的 stride 以免去附加的pooling操作。


[1] CNN中一些特殊环节的反向传播
[2] 深度学习cnn中,怎么理解图像进行池化(pooling)后的平移不变性?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值