人工神经网络 - 为什么通常在隐藏层使用sigmoid激活函数而不是tanh-sigmoid激活函数?

时间:2017-07-15 01:38:42

标签: machine-learning neural-network normalization activation-function

为什么log-sigmoid激活功能是隐藏层中的主要选择而不是tanh-sigmoid激活功能?而且,如果我使用Z-score标准化,我可以在隐藏层中使用sigmoid激活函数吗?

1 个答案:

答案 0 :(得分:1)

古代历史

使用S形函数的动机在历史上是物理上的动机。第一个神经网络,在很早的时候,实际上使用了阶梯函数

enter image description here

动机是这就是神经元在大脑中的运作方式,至少是对那个时代的理解。在某一固定的激活能量下,神经元“激活”,从非活动(0)变为活动(1)。然而,这些网络很难训练,标准范例也是物理上的动机,例如, “经常使用的神经元,获得更强的连接”。这适用于非常小的网络,但根本不能扩展到更大的网络。

梯度下降和乙状结肠的出现

在80年代,当发现可以使用梯度下降训练它们时,神经网络发生了轻微的变革。这允许网络扩展到更大的规模,但它也拼写了步骤激活的结束,因为它不可区分。然而,鉴于阶梯激活的悠久历史及其合理的物理动机,人们对于完全抛弃它并犹豫不决,因此通过sigmoid函数来近似它,它具有许多特征,但在0附近是可微分的。

后来,人们开始使用tanh函数,因为它是零中心的,在某些情况下它会提供更好的特性。

RevoLUtion

然后在2000年,在自然界发表了一篇开创性的论文,建议使用ReLU激活函数:

enter image description here

这是由早期激活功能的问题所驱动,但最重要的是速度以及它不会受vanishing gradient problem影响的事实。从那时起,基本上所有顶级神经网络研究都在使用ReLU激活或其轻微变化。

唯一的例外是可能是循环网络,其中输出作为输入反馈。在这些中,使用诸如ReLU之类的无界激活函数会很快导致结果爆炸,并且在这些情况下人们仍然使用sigmoid和/或tanh。