考虑具有以下架构的卷积神经网络:
此处引用 卷积层,引用 均值合并层。对应于每一层将是一个输出。让引用图层的输出中的错误(也是如此)。
可以使用常规反向传播方程式轻松计算,因为它完全连接到softmax层。 可以简单地通过适当地上采样来计算(并乘以的输出的梯度),因为我们使用的是均值池。
我们如何将错误从的输出传播到的输出?换句话说,我们如何从找到?
Standford的深度学习教程使用以下等式来执行此操作:
然而,我在使用这个等式时面临以下问题:
答案 0 :(得分:2)
这里要注意的一点是,池化层不会自学。池化层的功能是逐步减小表示的空间大小,以减少网络中的参数和计算量。
在前向传播期间, P P 汇集块减少为单个值,即“获胜单位”的值。跟踪“获胜单位”在正向传递期间记录的指数,并用于反向传播期间的梯度路由。
在反向传播期间,计算卷积层中的梯度,然后向池化层的向后传递则涉及从卷积层分配“获胜单位”,因为先前已经注意到了索引。在前进过程中。
渐变路由以下列方式完成:
最大池化 - 错误只是分配到它来自的地方 - “获胜单位”,因为前一层的汇集块中的其他单位没有贡献它因此所有其他指定值为零
平均合并 - 错误乘以 1 /( P 除 P )分配给整个汇集块(所有单位都获得相同的值)。
阅读有关整个反向传播程序here
的更全面细分答案 1 :(得分:0)
我认为你的图层和重量的尺寸与你的想法有很大的不同。如果“P_1的输出有64个通道而C_2的输出有96个通道”并且你的卷积是2x2,那么W不是2x2,它是96x64x2x2(等级-4张量;尺寸/索引的顺序可以变化,但你明白了。) “内部矩阵乘法”实际上是张量卷积。继续前进,您将卷入96x64x2x2的W,其输入为(我假设)64x7x7以产生96x6x6的输出(这假定为“有效”卷积且无填充,这就是为什么在7x7上滑动2x2会产生6x6的原因)。向后移动,您可以将W的转置与输出进行卷积,以生成与输入具有相同尺寸的内容。
平均合并只会使事情变得更复杂;首先尝试理解这一点,不要合并,或将模型池化为具有固定(相等)权重的卷积。