CNN反向传播中的Mistmatched核和delta核形状

Mistmatched kernel and delta kernel shapes in backpropogation of a CNN

提问人:Sshawarma 提问时间:10/22/2023 最后编辑:Sshawarma 更新时间:11/12/2023 访问量:51

问:

背景:
我按照这两个视频中的解释在CNN中进行反向传播。

https://www.youtube.com/watch?v=Pn7RK7tofPg&t=703 https://www.youtube.com/watch?v=Lakz2MoHy6o&t=1455s

据我了解,单个内核的梯度将是当前层的输入,该层与从下一层的误差反向传播的增量进行卷积。

delta_channel = conv(Xm, ERRORn)
Knm' = Knm - learningRate * delta_channnel

其中
n 是滤波器索引,m 是滤波器的通道/深度索引
,K 是内核,
Xm 是相应深度
的滤波器的输入 ERROR 是从滤波器
输出反向传播的误差

问题:
但是,这让我感到困惑,因为形状不会对齐。

假设变量的形状如下:
K 为
3x3x32,X 为 128x128x3,ERROR
为 128x128x32(K 中滤波器的每个输出一个,零填充)

现在这意味着根据反向传播方程,delta_channel将是 128x128

无法从 3x3 内核中减去增量,因为它们是不同的形状。我的误会在哪里?

机器学习 深度学习 转化神经网络 反向传播

评论

0赞 Sshawarma 10/22/2023
经过一番挖掘,似乎有一个“感受野”,其中内核的输入和错误匹配以用于梯度。我会看看这是否能让我走上正确的道路,完全理解正在发生的事情。
0赞 Sshawarma 10/22/2023
datascience.stackexchange.com/questions/27506/......这篇文章详细介绍了相同的卷积方程。但是,它们在输入和上游梯度之间的有效卷积同样方便地匹配了它们的内核形状。

答:

0赞 Sshawarma 10/22/2023 #1

编辑:真正的原因是在反向传播过程中必须使用“完整”和“有效”卷积。我错误地认为“充分”与“相同”相同。

在此方案中,有三种类型的反向传播需要记住。

I:输入
K:内核

  1. 有效卷积
    • 滤波器在输入范围内滑动。没有零填充。
    • 输出尺寸为 (I-K+1) x (I-K+1)。
  2. 相同的卷积
    • 滑动滤波器,使输出大小等于输入大小。
    • 输出的尺寸为 I x I。
  3. 全卷积
    • 只要滤波器的一部分与输入重叠,滤波器就会滑动。
    • 输出尺寸为 (I+K-1) x (I+K-1)。

现在重要的部分是,在输入的反向传播中使用完整的卷积,并且对内核有效,因为它将错误与导致错误的输入/过滤器部分对齐。

在前向传递期间,可以使用相同或有效的卷积。

让我们看一下示例尺寸,看看为什么为了简洁起见,我们只看方形滤波器的一侧:

对于这些示例,我们假设在前向传递期间使用了有效的卷积。

这意味着输出误差为形状 (I-K+1)。

内核的有效卷积:corr(input, error, valid)

  • out_dim = I - (I - K + 1) + 1
  • out_dim = 我 - 我 + K - 1 + 1
  • out_dim = K

输入梯度的全卷积:sum(conv(error, kernel))

  • out_dim = (I-K+1) + (K) - 1
  • out_dim = I - K + K + 1 - 1
  • out_dim = 我

棒!梯度的所有维度都对齐,以便在反向传播期间应用。

奖励:对于那些希望如何在前向传递上使用“相同”卷积来做到这一点的人。确保在向后传递 kernel-1 时填充全连接层的错误,以便维度对齐以进行内核更新。后续层将自动处理此问题,因为它们对旋转的内核使用完全卷积(Ik Ik,我应该正确使用相关性和卷积......