为什么 log-sigmoid 激活函数是隐藏层的主要选择而不是 tanh-sigmoid 激活函数?而且,如果我使用 Z-score 归一化,我可以在隐藏层中使用 sigmoid 激活函数吗?
1 回答
古代历史
使用 sigmoid 函数的动机在历史上是出于身体动机。第一个神经网络,在很早的时候,实际上使用了阶跃函数
动机是这就是神经元在大脑中的工作方式,至少在当时的理解上是这样。在某个固定的激活能量下,神经元“激活”,从不活跃 (0) 变为活跃 (1)。然而,这些网络很难训练,而且标准范式也受到物理驱动,例如“经常使用的神经元,获得更强的连接”。这适用于非常小的网络,但根本无法扩展到更大的网络。
梯度下降和 sigmoid 的出现
在 80 年代,当人们发现可以使用梯度下降训练神经网络时,神经网络发生了一场轻微的革命。这允许网络扩展到更大的规模,但它也意味着步骤激活的结束,因为它是不可微的。然而,考虑到步进激活的悠久历史及其合理的物理动机,人们不愿完全放弃它,因此用 sigmoid 函数来近似它,它具有许多相同的特征,但在 0 附近可微。
后来,人们开始使用 tanh 函数,因为它以零为中心,在某些情况下提供了更好的特性。
革命
然后在 2000 年,一篇开创性的论文发表在 Nature 上,建议使用ReLU激活函数:
这是由早期激活函数的问题引起的,但最重要的是速度以及它不受梯度消失问题的影响。从那时起,基本上所有顶级神经网络研究都在使用 ReLU 激活或其轻微变化。
唯一的例外可能是循环网络,其中输出作为输入反馈。在这些情况下,使用 ReLU 等无界激活函数会很快导致结果爆炸式增长,在这些情况下人们仍然使用 sigmoid 和/或 tanh。