如果这是正确的,那么池化层的每个“神经元”都具有相同的梯度?
否。这取决于重量和激活功能。并且最典型地,权重从池化层的第一神经元到FC层不同于从池化层的第二神经元到FC层。
因此,通常情况下,您会遇到以下情况:
FCi=f(∑jWijPj)
其中是全连接层中的第i个神经元,是池化层中的第j个神经元,是激活函数,是维数。FCiPjfW
这意味着相对于P_j的梯度为
grad(Pj)=∑igrad(FCi)f′Wij。
对于j = 0或j = 1,这是不同的,因为W不同。
第二个问题是池化层何时连接到另一个卷积层。那我该如何计算梯度呢?
所连接的层的类型无关紧要。一直都是相同的方程式。下一层上所有梯度的总和乘以上一层上的神经元如何影响这些神经元的输出。FC和卷积之间的区别在于,在FC中,下一层中的所有神经元都会提供贡献(即使可能很小),但是在卷积中,下一层中的大多数神经元完全不受上一层中的神经元的影响,因此它们的贡献正好为零。
对于池化层中最右端的“神经元”(绿色框),我只是在下一个conv层中采用紫色神经元的梯度并将其路由回去,对吗?
对。再加上该卷积层上任何其他神经元的梯度,这些梯度将池化层最右上侧的神经元作为输入。
那个绿色的怎么样?由于链式规则,我需要将下一层的神经元的第一列相乘?还是我需要添加它们?
添加它们。由于连锁规则。
最大池化
至此,您可以看到,最大池化这一事实完全不相关。最大池化只是该层上的激活函数为。因此,这意味着先前图层的梯度为:maxgrad(PRj)
grad(PRj)=∑igrad(Pi)f′Wij。
但是现在表示最大神经元,表示所有其他神经元,因此表示上一层的最大神经元,表示所有其他神经元。所以:f=idf=0f′=1f′=0
grad(PRmaxneuron)=∑igrad(Pi)Wi max neuron,
grad(PRothers)=0.