通过简单的卷积神经网络进行反向传播

数据挖掘 美国有线电视新闻网 反向传播 卷积神经网络
2022-02-10 00:00:10

嗨,我正在研究一个简单的卷积神经网络(下图)。输入图像为 5x5,内核为 2x2,并经过 ReLU 激活函数。在 ReLU 之后,它被一个 2x2 的池最大池化,然后被展平并进入全连接层。一旦通过全连接层,输出就会转换为 Softmax 概率。我已经通过网络向前传播,现在正在研究反向传播步骤。我取了交叉熵和softmax的导数,并计算了全连接层的权重。

我感到困惑的是如何通过 Max pooling 进行反向传播,然后最终找到卷积层中权重的导数。

我在网上发现的是,您需要找到损失相对于展平层的导数,但我不确定您是如何做到的。

如果我能在解释方面得到一些帮助,理想情况下使用方程式会很棒。

交叉发布在堆栈溢出中(https://stackoverflow.com/questions/63022091/back-propagation-through-a-simple-convolutional-neural-network

在此处输入图像描述

1个回答

反向传播算法对网络中的每个权重进行惩罚。为了获得每个权重的相关梯度,我们需要使用导数链规则将误差反向传播回其层。

展平层

层的导数取决于所应用的功能。在展平层的情况下,它只是简单地重塑(映射)值。因此在这一层不会增加额外的损失。您只需要知道扁平化是如何发生的。

例如,如果前传扁平化是

flatten(abcd)=(abcd)

那么您可以轻松地将迄今为止的相关成本映射回特征图。2×2×1

最大池化层

在前向传递中,最大池化层在沿图像传递窗口中取最大值。例如,前窗口中的粗体值最大为3×33×311

maxpooling(12345678910111213141516)=(11121516)

因此,产生的误差反向传播只会通过正向传递传递下来的最大值。对于所有其他值,误差项不会反向传播。因此,您在此之前反向传播的当前误差矩阵将乘以

(0000000000110011)

因此只有 4 个错误项会继续到较早的层。

卷积层

我在这里详细介绍了如何通过卷积进行反向传播:CNN 层间反向传播