卷积层中的激活函数是干什么用的?

数据挖掘 神经网络 美国有线电视新闻网 图像分类 卷积神经网络
2022-03-05 03:07:20

我读了很多关于 CNN 的文章,但我不太明白一些事情:

  1. CLayers 中的激活函数是干什么用的?如果我理解正确,这些层中唯一的权重是过滤器中的权重,而对于激活函数,是否需要加权和?

  2. 计算工作量应该增加,不是吗?当有许多过滤器时,会产生许多特征映射(带有点积的映射)。所有这些都被提供给下一层,因此如果它们与输入图像一样大并且第一个 CLayer 中有 10 个过滤器,那么第二个 CLayer 将必须应用 10 倍的计算工作量(第二层中的每个过滤器)第一层有或,因为它们都采用所有最后一层输出(特征图)。

  3. 如果层多于一层,反向传播如何知道它们必须在每一层上更改什么,特别是因为反向传播发生在应用所有层之后。

(CLayer = 卷积层)

2个回答

1 - 激活函数是非线性函数。这些被添加在简单的线性变换层之间。

没有激活函数的例子:

ConvLayer1(Input) -> ConvMaps1 
ConvLayer2(ConvMaps2) -> ConvMaps2

在数学上,这将是InputKernel1Kernel2

这相当于InputKernel3

其中Kernel3=Kernel1Kernel2

这意味着创建两个层只会浪费计算量并且没有任何收益。

2 - 是的,如果您保持相同的图像宽度和高度并且只是堆叠更多通道,那么卷积图将失控,这就是您使用池化操作和使用大步幅来弥补这一点的原因。此外,在没有适当注意和架构设计的情况下增加参数数量通常会导致过度拟合。

3 - 反向传播只是表达函数的偏导数的一种计算效率高且方便的方法,并且其行为与您一次只取整个函数的导数完全一样。网上有很多内容,你可能不了解权重更新的过程。

  1. 为什么要激活函数:为此,直接在模型中添加一些非线性,这有助于定义哪个神经元不应该触发哪个神经元。
  2. 对于第二个,计算会略微增加,但不会那么快,为什么因为您在第一层执行的卷积操作会减小第二层的图像大小。例如,你有一个 32 X 32 的图像并且你使用一个 5 X 5 的内核,你最终会得到 28 X 28 的特征图。因此,进入更深的层,尺寸将减小。
  3. 对于反向传播,就像这样,您已经输入到最后一层(来自 last-1 层),并且在最后一层有权重矩阵。您将预测最后一层的输出,并计算损失。在这里,您将能够计算与权重有关的损失以及与输入有关的损失。因此,即将到来的梯度将被发送到前一层进行权重更新。