如果这是正确的,那么池化层的每个“神经元”都具有相同的梯度?
不,这取决于权重和激活函数。最典型的是,池化层的第一个神经元到 FC 层的权重不同于池化层的第二层到 FC 层的权重。
所以通常你会遇到这样的情况:
FC一世= f(∑jW我j磷j)
在哪里 FC一世 是全连接层中的第 i 个神经元, 磷j 是池化层中的第 j 个神经元,并且 F 是激活函数和 W 权重。
这意味着关于 P_j 的梯度是
G研发_ _(磷j) =∑一世G研发_ _( FC一世)F'W我j.
j=0 或 j=1 不同,因为 W 不同。
第二个问题是池化层何时连接到另一个卷积层。那我该如何计算梯度呢?
它连接到什么类型的层并没有区别。它始终是同一个等式。下一层所有梯度的总和乘以这些神经元的输出如何受上一层神经元的影响。FC 和卷积之间的区别在于,在 FC 中,下一层的所有神经元都会提供贡献(即使可能很小),但在卷积中,下一层的大多数神经元根本不受前一层神经元的影响,因此它们的贡献正好为零。
对于池化层最右边的“神经元”(勾勒出的绿色),我只取下一个卷积层中紫色神经元的梯度并将其路由回去,对吗?
对。加上该卷积层上任何其他神经元的梯度,这些神经元将池化层的最右上神经元作为输入。
填充的绿色怎么样?由于链式法则,我需要将下一层的第一列神经元相乘吗?还是我需要添加它们?
添加它们。因为链式法则。
Max Pooling
到目前为止,正如您所见,它是 max pool 的事实完全无关紧要。最大池化就是该层上的激活函数米× _. 所以这意味着前一层的梯度G研发_ _(磷Rj)是:
G研发_ _(磷Rj) =∑一世G研发_ _(磷一世)F'W我j.
但现在F=我d对于最大神经元和F= 0对于所有其他神经元,所以F'= 1对于前一层的最大神经元和F'= 0对于所有其他神经元。所以:
G研发_ _(磷Rm a x n e u r o n) =∑一世G研发_ _(磷一世)W我是一个x n e u r o n ,
G研发_ _(磷R其他人_ _ _ _) = 0。