type
status
date
slug
summary
tags
category
icon
password
comment
最大池化层把梯度传给了前向传播时最大的那个值,其余值的梯度为0,因为最大池化层就相当于最大值乘以1,其余位置乘以0.平均池化层把梯度做了平均,然后传给了前向传播时所有值,梯度值都相同.
前向传播
- 在前向传播中,最大池化层选择每个池化窗口中的最大值作为输出。
- 和最大池化类似,平均池化也使用滑动窗口,不同的是它计算窗口内元素的平均值作为输出,而不是取最大值。
反向传播
- 计算梯度
- 反向传播的目标是计算损失函数对输入的梯度。
- 对于最大池化层,我们需要将上一层传回的梯度传递给产生最大值的那个输入元素。
- 与最大池化不同,平均池化的反向梯度是将上层传回的梯度均匀分配到窗口内的所有输入元素上。具体来说,如果上层传回的梯度为dL/dz,那么每个输入元素接收的梯度就是: dL/dz / (窗口大小)
- 最大池化层梯度传递的具体步骤
- 在前向传播时,记录每个池化窗口中最大值的位置。
- 将上一层传回的梯度只传递给产生最大值的那个输入元素。
- 其他未被选中的输入元素的梯度为0。
- 由于只有最大值位置接收梯度,这导致反向传播的梯度变得稀疏。
a. 记录最大值位置:
b. 梯度传递:
c. 梯度稀疏性:
数学表示
- 最大池化:如果 z 是池化层的输出,x 是输入,则:,如果 是被选中的最大值,其他情况
- 平均池化:如果 z 是池化层的输出, x 是输入, m 是池化窗口大小,则: (对于窗口内所有 )
示例
- 最大池化:假设有一个 2x2 的池化窗口:输入为
[[1, 2],
[3, 4]]
输出:[4]
如果上层传回的梯度是 1,则输入梯度:
[[0, 0],
[0, 1]]
- 平均池化:假设有一个 2x2 的池化窗口:输入为
[[1, 2],
[3, 4]]
输出:[2.5]
如果上层传回的梯度是 1,则输入梯度:
[[0.25, 0.25],
[0.25, 0.25]]
特点
- 最大池化
- 不需要学习参数。
- 梯度只流向最大值元素,其他元素梯度为0。
- 平均池化
- 所有窗口内元素接收相同梯度,保留了所有输入信息。
- 不需要额外存储最大值位置。
- 平滑作用,提取整体特征。
区别
- 理解最大池化层的反向传播对于深入理解卷积神经网络的工作原理非常重要。它展示了网络如何选择性地关注重要特征,同时减少计算量和参数数量。
- 平均池化层反向传播时将上层梯度等分到窗口内所有输入元素上,体现了平均池化层的平滑特性。这种梯度传播方式有助于模型整体考虑输入特征。