为什么要在卷积层的多个通道上构建滤波器的总和?

机器算法验证 卷积神经网络 卷积
2022-03-06 18:14:35

假设我有 RGB 输入数据(3 个通道)和一个卷积层,它只有一个深度为 3 的滤波器。如果我们对每个通道的卷积结果求和,输出数据的深度将为 1。但为什么要总结结果呢?为什么不建立平均值或一直添加 17?

一些想法:
看起来我们可能会因为求和而丢失信息。例如,如果红色通道上有一个正边缘,而蓝色通道上有一个负边缘,它们将相互抵消。好的,每个通道的权重可能会有所不同,这可能会有所帮助,但我仍然看不到求和相对于其他操作的优势。

R (1. channel) conv Filter 1 [x:x:1] \
                                      \
G (2. channel) conv Filter 1 [x:x:2]    => Sum => output [x:x:1] WHY?
                                      /
B (3. channel) conv Filter 1 [x:x:3] /

编辑:
这是一个更好的图形(向下滚动到 gif)。 http://cs231n.github.io/convolutional-networks/#conv

1个回答

好的,每个通道的权重可能会有所不同,这可能会有所帮助,但我仍然看不到求和相对于其他操作的优势。

确切地。你错过了权重是可学习的这一事实当然,最初来自不同通道的边缘可能会相互抵消,并且输出张量会丢失此信息。但这将导致较大的损失值,即较大的反向传播梯度,这将相应地调整权重。实际上,网络学习捕捉任何通道中的边缘(或角落或更复杂的模式)。当过滤器与patch不匹配时,卷积结果非常接近于零,而不是大的负数,因此求和中没有任何损失。(事实上​​,经过一些训练,内核中的大部分值都接近于零。)

进行求和的原因是因为它很有效(前向和后向操作都是可矢量化的)并且允许良好的梯度流动。您可以将其视为具有共享权重的复杂线性层。如果你表达的担忧是真实的,你会在任何网络的所有线性层中看到同样的问题:当不同的特征用一些权重相加时,它们可以相互抵消,对吧?幸运的是,由于前面描述的原因,这不会发生(除非特征是相关的,例如特制的),因此线性运算是任何神经网络的关键构建块。