通过最大池化层进行反向传播


14

我对这个问题有一个小问题

我了解到,在通过最大池化层进行反向传播时,梯度将以之前选择为max的上一层神经元获取所有梯度的方式路由回去。我不确定100%是下一层的渐变如何路由回到池化层。

因此,第一个问题是我是否将池化层连接到完全连接的层-如下图所示。

例子1

在计算池化层的青色“神经元”的梯度时,是否将来自FC层神经元的所有梯度求和?如果这是正确的,那么池化层的每个“神经元”都具有相同的梯度?

例如,如果FC层的第一个神经元的渐变为2,第二个神经元的渐变为3,第三个神经元的渐变为6,则池化层中蓝色和紫色“神经元”的渐变是什么?为什么?

第二个问题是池化层何时连接到另一个卷积层。那我该如何计算梯度呢?请参见下面的示例。

例子2

对于池化层中最右端的“神经元”(绿色框),我只是在下一个conv层中采用紫色神经元的梯度并将其路由回去,对吗?

那个绿色的怎么样?由于链式规则,我需要将下一层的神经元的第一列相乘?还是我需要添加它们?

请不要发布一堆方程式,并告诉我我的答案就在那儿,因为我一直在努力将方程式包围着我,但我仍然不太了解它,这就是为什么我要简单地问这个问题办法。


关于您的第一个问题,反向传播是查看哪些权重和输入会以何种方式影响您的损失。在最大池化的情况下,只有神经元的最大值会影响输出(除非出现平局,否则)。因此,仅将错误传播到具有最大激活值的神经元。
Jan Van der Vegt '16

是的,我了解这一点,我在帖子开头也做了总结。但是我不明白如何“组合”下一层神经元的梯度以传播回去。希望你明白我的意思。
Majster '16

Answers:


5

如果这是正确的,那么池化层的每个“神经元”都具有相同的梯度?

否。这取决于重量和激活功能。并且最典型地,权重从池化层的第一神经元到FC层不同于从池化层的第二神经元到FC层。

因此,通常情况下,您会遇到以下情况:

FCi=f(jWijPj)

其中是全连接层中的第i个神经元,是池化层中的第j个神经元,是激活函数,是维数。FCiPjfW

这意味着相对于P_j的梯度为

grad(Pj)=igrad(FCi)fWij

对于j = 0或j = 1,这是不同的,因为W不同。

第二个问题是池化层何时连接到另一个卷积层。那我该如何计算梯度呢?

所连接的层的类型无关紧要。一直都是相同的方程式。下一层上所有梯度的总和乘以上一层上的神经元如何影响这些神经元的输出。FC和卷积之间的区别在于,在FC中,下一层中的所有神经元都会提供贡献(即使可能很小),但是在卷积中,下一层中的大多数神经元完全不受上一层中的神经元的影响,因此它们的贡献正好为零。

对于池化层中最右端的“神经元”(绿色框),我只是在下一个conv层中采用紫色神经元的梯度并将其路由回去,对吗?

对。再加上该卷积层上任何其他神经元的梯度,这些梯度将池化层最右上侧的神经元作为输入。

那个绿色的怎么样?由于链式规则,我需要将下一层的神经元的第一列相乘?还是我需要添加它们?

添加它们。由于连锁规则。

最大池化 至此,您可以看到,最大池化这一事实完全不相关。最大池化只是该层上的激活函数为。因此,这意味着先前图层的梯度为:maxgrad(PRj)

grad(PRj)=igrad(Pi)fWij

但是现在表示最大神经元,表示所有其他神经元,因此表示上一层的最大神经元,表示所有其他神经元。所以:f=idf=0f=1f=0

grad(PRmaxneuron)=igrad(Pi)Wi max neuron

grad(PRothers)=0.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.