CNN 中正确的偏差数量

数据挖掘 深度学习 卷积神经网络 反向传播
2021-09-21 18:45:32

简单卷积层中的正确偏差数是多少?这个问题讨论得很好,但我仍然不太确定。

比如说,我们有 (3, 32, 32)-image 并应用 (32, 5, 5)-filter 就像在关于卷积网络中的偏差的问题中一样

层内核中的权重总数通常等于3×5×5×32. 现在让我们计算偏差。上面的链接表明偏差的总数是1×32,这是有道理的,因为权重在所有输出单元之间共享,因此每个输出特征图作为一个整体只有一个偏差是很自然的。

但另一方面:我们分别对输出特征图的每个单元应用激活函数,所以如果我们对每个单元有不同的偏差,它们不会相加,所以数量0×0×32 代替 1×32 也有道理(这里 0 是输出特征图的高度或宽度)。

如我所见,第一种方法被广泛使用,但我也在一些论文中看到了第二种方法。

所以, (3×5×5+1)×32 或者 (3×5×5+0×0)×32?

2个回答

正如您所说,两种方法都被使用。 如果您对每个卷积滤波器/内核使用一个偏置(在您的示例中为 (3x5x5 + 1)x32 整体参数),则称为绑定偏置;如果您在每个内核输出位置使用一个偏置 ((3x5x5 + OxO)x32 整体参数,则称为非绑定偏置你的例子)。

未绑定的偏差会增加模型的容量,因此如果您拟合不足,它们可能是一个好主意。但在这种情况下,使用绑定偏差和更多过滤器和/或层也可能有所帮助,请参阅https://harmdevries89.wordpress.com/2015/03/27/tied-biases-vs-untied-biases/

当我尝试从 theano 的 grapgh 输出我的 CNN 权重时,我得到了每一层的一个偏置向量。