关于卷积网络中的偏差问题

数据挖掘 深度学习 卷积神经网络 反向传播
2021-10-01 01:49:48

我试图弄清楚 CNN 需要多少权重和偏差。

假设我有一个 (3, 32, 32) 图像并且想要应用一个 (32, 5, 5) 过滤器。对于每个特征图,我有 5x5 的权重,所以我应该有 3 x (5x5) x 32 个参数。现在我需要添加偏差。我相信我只有 (3 x (5x5) + 1) x 32 参数,那么所有颜色 (RGB) 的偏差是否相同?

这个对吗?当我使用不同的权重时,我是否在每个图像的深度(在本例中为 3)保持相同的偏差?这是为什么?

4个回答

偏差针对每个虚拟神经元进行操作,因此在只有一个输出的情况下拥有多个偏差输入没有任何价值——这相当于只是将不同的偏差权重加到一个偏差中。

在作为第一个隐藏层输出的特征图中,颜色不再分开*。实际上,每个特征图都是下一层中的“通道”,尽管它们通常单独可视化,其中输入与通道组合可视化。另一种思考方式是原始图像中单独的 RGB 通道是输入中的 3 个“特征图”。

不管前一层有多少通道或特征,下一层中每个特征映射的输出都是该映射中的单个值。一个输出值对应一个虚拟神经元,需要一个偏置权重。

正如您在问题中解释的那样,在 CNN 中,输出特征图中的每个点都共享相同的权重(包括偏差权重)。所以每个特征图都有自己的偏置权重和previous_layer_num_features x kernel_width x kernel_height连接权重。

所以是的,您的示例导致(3 x (5x5) + 1) x 32第一层的总权重对于具有第一个隐藏层将 RGB 输入处理为 32 个单独的特征图的 CNN 是正确的。


*您可能会因为看到 CNN权重的可视化而感到困惑,这些权重可以分为它们所操作的颜色通道。

CNN 的特性是它们使用共享的权重和偏差(层中所有隐藏神经元的权重和偏差相同)来检测相同的特征。与简单的神经网络相比,这导致了更深入的学习。您可以将其作为参考阅读:

http://deeplearning.net/tutorial/lenet.html
http://neuralnetworksanddeeplearning.com/chap6.html#introducing_convolutional_networks

这是一个简单的例子:

如果您的输入是I X I X C例如带有I X I = 10 x 10像素、灰度的图片,那么您只有1 Channel = Cinput = 的结果10 X 10 x 1并且您的过滤器是F X F并且您应用K过滤器,例如 3 X 3 X 10 Filters 然后您的输出是(F X F X C +1) X K+1 表示每个过滤器有 1 个偏差。 (3 X 3 X 1 + 1) X 10 = 100训练的参数。如果你有 RGB,那么你就有(3 X 3 X 3 + 1) X 10 = 280了要训练的参数。对于每个频道,您都有另一个过滤器。每个过滤器都有一个偏差。

阅读后在这里再次检查:

Input I x I x C
Filter F x F (x K) // K times applied
Parameters (F x F x C + 1) x K // where +1 bias per filter, and K is the number of filters

现在在这里查看斯坦福大学的这张很棒的备忘单

因为在 CNN 中,我们使用一个过滤器来表示一个特征。我们引入一个变量(b)来合并来自该特定过滤器的偏差。因此,每个过滤器都会考虑它可能导致的偏差。偏差不是由于单个过滤器权重,而是由于整个过滤器本身。我希望这能回答你的问题。