当前位置: 首页 > article >正文

深度学习|表示学习|卷积神经网络|Pooling(池化是在做什么)|13

如是我闻: Pooling(池化)是卷积神经网络(CNN)中的一个重要操作,通常用于下采样(down-sampling)输入特征图,从而减少特征图的大小、降低计算量,同时保留主要的特征信息。Pooling 不会引入新的特征,而是对特征图进行压缩,以更高效地表示信息。

在这里插入图片描述


1. Pooling 的核心概念

Pooling 的主要目标是:

  1. 降低特征图的分辨率
    • 减少网络计算的复杂度,节省计算资源。
  2. 增强特征的鲁棒性
    • 对微小的平移、旋转、噪声等变形具有更好的容忍能力。
  3. 突出重要特征
    • 提取局部区域的统计特征,如最大值或平均值。

Pooling 操作通过在特征图上使用一个滑动窗口,对每个窗口区域执行特定的计算来完成下采样。


2. Pooling 的基本操作

(1) Pooling 的过程

Pooling 的操作和卷积类似,使用一个滑动窗口(通常是 2 × 2 2 \times 2 2×2 3 × 3 3 \times 3 3×3),对输入的每个局部区域进行计算:

  • 滑动窗口会按照步长(stride,通常为 2)在特征图上移动。
  • 每次移动时,对窗口内的像素值应用一种聚合操作。
(2) 常见的 Pooling 类型

Pooling 的聚合操作主要有以下几种:

a) Max Pooling(最大池化)
  • 操作:取窗口中像素值的最大值
  • 作用:保留窗口内最显著的特征,适合用于捕捉边缘、纹理等显著特征。
  • 示例
    假设窗口大小为 2 × 2 2 \times 2 2×2,输入区域为:
    [ 1 3 2 4 ] \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix} [1234]
    最大池化结果为:
    max ⁡ ( 1 , 3 , 2 , 4 ) = 4 \max(1, 3, 2, 4) = 4 max(1,3,2,4)=4
b) Average Pooling(平均池化)
  • 操作:取窗口中像素值的平均值
  • 作用:计算区域内的平均信息,更适合用于平滑特征。
  • 示例
    输入区域为:
    [ 1 3 2 4 ] \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix} [1234]
    平均池化结果为:
    mean ( 1 , 3 , 2 , 4 ) = 1 + 3 + 2 + 4 4 = 2.5 \text{mean}(1, 3, 2, 4) = \frac{1+3+2+4}{4} = 2.5 mean(1,3,2,4)=41+3+2+4=2.5
c) Global Pooling(全局池化)
  • 操作:将整个特征图缩减为一个单一值。
  • 例如:
    • Global Max Pooling:取整个特征图的最大值。
    • Global Average Pooling:计算整个特征图的平均值。
  • 作用:用于极度下采样,通常作为分类任务的最后一步(代替全连接层)。

3. Pooling 的关键参数

  1. 窗口大小 ( k × k k \times k k×k):

    • 决定了每次池化操作所覆盖的局部区域。
    • 常见值为 2 × 2 2 \times 2 2×2 3 × 3 3 \times 3 3×3
  2. 步长 ( s s s):

    • 窗口滑动的步长。
    • 常见值为 s = 2 s = 2 s=2,这会让特征图缩小一半。
  3. 填充(padding)

    • 是否在特征图边界填充像素,类似卷积中的 padding。

4. Pooling 的输出大小

Pooling 操作会缩小特征图的大小,输出的尺寸可以通过以下公式计算:
输出大小 = 输入大小 − 池化窗口大小 步长 + 1 \text{输出大小} = \frac{\text{输入大小} - \text{池化窗口大小}}{\text{步长}} + 1 输出大小=步长输入大小池化窗口大小+1

示例:
  • 输入大小为 4 × 4 4 \times 4 4×4
  • 窗口大小为 2 × 2 2 \times 2 2×2
  • 步长为 2。

输出大小:
4 − 2 2 + 1 = 2 × 2 \frac{4 - 2}{2} + 1 = 2 \times 2 242+1=2×2


5. Pooling 的作用总结

(1) 降低计算复杂度
  • Pooling 操作会显著减少特征图的尺寸,从而降低后续层的计算量。
  • 例如,将 32 × 32 32 \times 32 32×32 的特征图池化为 16 × 16 16 \times 16 16×16,计算量减少了 75%。
(2) 增强特征的平移不变性
  • Pooling 会关注局部区域的统计特性(如最大值或平均值),而不是具体的像素位置。
  • 这种处理方式对输入图像的小幅平移、旋转或噪声更具有鲁棒性。
(3) 防止过拟合
  • 通过下采样减少特征图的维度,网络的参数和计算量也会减少,从而降低过拟合风险。

6. 一个完整的例子

假设:

  • 输入特征图大小为 ( 4 \times 4 ):
    x = [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ] x = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \\ 13 & 14 & 15 & 16 \end{bmatrix} x= 15913261014371115481216
  • 使用 Max Pooling,窗口大小为 2 × 2 2 \times 2 2×2,步长为 2。

步骤:

  1. 滑动窗口覆盖 2 × 2 2 \times 2 2×2 的子区域并取最大值:

    • 第 1 个窗口:
      [ 1 2 5 6 ] , max ⁡ = 6 \begin{bmatrix} 1 & 2 \\ 5 & 6 \end{bmatrix}, \max = 6 [1526],max=6
    • 第 2 个窗口:
      [ 3 4 7 8 ] , max ⁡ = 8 \begin{bmatrix} 3 & 4 \\ 7 & 8 \end{bmatrix}, \max = 8 [3748],max=8
    • 第 3 个窗口:
      [ 9 10 13 14 ] , max ⁡ = 14 \begin{bmatrix} 9 & 10 \\ 13 & 14 \end{bmatrix}, \max = 14 [9131014],max=14
    • 第 4 个窗口:
      [ 11 12 15 16 ] , max ⁡ = 16 \begin{bmatrix} 11 & 12 \\ 15 & 16 \end{bmatrix}, \max = 16 [11151216],max=16
  2. 输出特征图:
    输出 = [ 6 8 14 16 ] \text{输出} = \begin{bmatrix} 6 & 8 \\ 14 & 16 \end{bmatrix} 输出=[614816]


7. 总的来说

  • Pooling 是 CNN 中的重要操作,用于减少特征图的大小。
  • 常见类型包括 Max PoolingAverage Pooling
  • 它能够减少计算量、增强模型的平移不变性,同时防止过拟合。
  • Pooling 是 CNN 的核心组成部分之一,几乎每个卷积网络都会使用它。

以上


http://www.kler.cn/a/519833.html

相关文章:

  • 通过循环添加组件
  • 消息队列篇--通信协议篇--TCP和UDP(3次握手和4次挥手,与Socket和webSocket的概念区别等)
  • Maui学习笔记-身份认证和授权案例
  • MAX98357A一款数字脉冲编码调制(PCM)输入D类音频功率放大器
  • RACER:基于去中心化多无人机系统的快速协同探索
  • Alibaba Spring Cloud 十三 Nacos,Gateway,Nginx 部署架构与负载均衡方案
  • AI导航工具我开源了利用node爬取了几百条数据
  • SpringBoot整合Swagger UI 用于提供接口可视化界面
  • Java进阶(一)
  • 【字节青训营-5】:初探存储系统与数据库及技术原理,解析关系型、非关系型数据库
  • 文明6mod发布并开源:更多的蛮族营地扫荡收益mod
  • 【2024年华为OD机试】 (A卷,200分)- 计算网络信号、信号强度(JavaScriptJava PythonC/C++)
  • 【架构面试】一、架构设计认知
  • 软件测试压力太大了怎么办?
  • 【Linux笔记】Day3
  • Flutter android debug 编译报错问题。插件编译报错
  • C++多线程习题:非原创增加注释(02-2)
  • PHP:动态网站开发的强大引擎
  • LLaMA-Factory 微调LLaMA3
  • 深入理解Transformer中的解码器原理(Decoder)与掩码机制