我不确定您是否可以更改已接受的答案,但由于您对反向传播问题的唯一答案是关于正向传播的问题,因此我决定试一试。
本质上,您处理权重增量 (δRδhlj) 与线性神经元的权重增量相同,但每次在输入上覆盖滤波器(内核)时对其进行一次训练,所有这些都在一个反向传播过程中。结果是过滤器所有叠加层的增量总和。我认为在你的符号中,这将是δRδhlj=∑ni=1xl−1iδRδxl+1j在哪里xl−1是乘以的输入hlj对于前向传播期间的覆盖之一,以及xl+1是由该覆盖产生的输出。
在通过卷积层(参数增量和输入增量)进行反向传播的两个结果之间,听起来您对参数增量更感兴趣,或者更具体地说,权重矩阵增量(δRδhlj)。为了完整起见,我将介绍两者,以下是我们的示例层:
如果您有一组 1D 输入[1,2,3], 和一个过滤器[0.3,0.5] 使用步幅 1、无填充、零偏差和无激活函数应用,那么您的过滤器的激活将看起来像 [1∗0.3+2∗0.5,2∗0.3+3∗0.5]=[1.3,2.1]. 当您在反向传播过程中通过这一层返回时,假设您用于计算的激活增量是[−0.1,0.2].
重量增量:
当你通过前向传递时,你缓存了你的输入 [1,2,3],我们称它为 A_prev,因为它很可能是您上一层的激活。对于过滤器的每个潜在覆盖(在这种情况下,您只能将其覆盖在两个位置 [ 1,2,3 ] 和 [1, 2,3 ] 的输入上),取输入 A_slice 的那个切片,乘以每个通过相关的输出 delta dZ 元素,并将其添加到此通过的权重 delta dW。在此示例中,您将添加[1∗−0.1,2∗−0.1] dW 为第一个叠加层,然后添加 [2∗0.2,3∗0.2]对于第二个叠加层。总而言之,你在这个反向传播通道上这个卷积层的 dW 是[0.3,0.4].
偏差增量:
与权重增量相同,但只需添加输出增量而不乘以输入矩阵。
输入增量:
重建该层输入的形状,将其命名为 dA_prev,将其初始化为零,然后遍历将过滤器覆盖在输入上的配置。对于每个叠加层,将权重矩阵乘以与此叠加层关联的输出增量,并将其添加到与此叠加层关联的 dA_prev 切片中。也就是说overlay 1会添加[0.3∗−0.1,0.5∗−0.1]=[−0.03,−0.05] 到 dA_prev 导致 [−0.03,−0.05,0], 然后叠加 2 将添加 [0.3∗0.2,0.5∗0.2]=[0.06,0.1], 导致 [−0.03,0.01,0.1] 对于 dA_prev。
如果您想以不同的方式阅读相同的答案,这是一个很好的来源:链接