如果不学习,可以在神经网络中使用不可微层吗?

人工智能 神经网络 机器学习 反向传播 梯度下降 汇集
2021-11-03 23:20:30

例如,AFAIK,CNN 中的池化层是不可微的,但它可以使用,因为它不是学习的。它总是真实的吗?

1个回答

不可能通过具有不可微函数的层反向传播梯度。然而,池化层函数是可微的*,而且通常微不足道。

例如:

  • 如果平均池化层有输入z和输出a, 每个输出是 4 个输入的平均值dadz=0.25(如果池化层重叠,它会变得有点复杂,但你只需在它们重叠的地方添加东西)。

  • 最大池化层有dadz=1对于最大 z,和dadz=0对于所有其他人。

池化层通常没有可学习的参数,但如果您知道函数在其输出处的梯度,则可以使用链式法则正确地将梯度分配给其输入。这基本上就是反向传播的全部内容,即应用于神经网络功能的链式法则。

要更直接地回答您的问题:

如果不学习,可以在神经网络中使用不可微层吗?

不。

有一个例外:如果这一层直接出现在输入之后,那么由于它没有要学习的参数,而且你通常不关心输入数据的梯度,所以你可以在那里有一个不可微的函数。但是,这与以某种不可微分的方式转换输入数据并使用转换后的数据训练 NN 相同。


* 从技术上讲,最大函数的梯度存在一些不连续性(其中任何两个输入相等)。然而,这在实践中不是问题,因为梯度在接近这些值时表现良好。何时可以安全地执行此操作可能是另一个问题的主题。