神经激活函数 - Logistic / Tanh /等之间的差异

时间:2012-08-07 13:30:46

标签: function math machine-learning statistics neural-network

我正在编写一些基本的神经网络方法 - 特别是激活函数 - 并且已经达到了我对数学的垃圾知识的极限。我理解各自的范围(-1/1)(0/1)等,但不同的描述和实现让我感到困惑。

具体为 sigmoid logistic 双极sigmoid tanh 等。

sigmoid 是否只是描述函数的形状而不管范围如何?如果是这样,那么tanh是一个'sigmoid函数'吗?

我在论文中看到'双极sigmoid'与'tanh'进行了比较,但是我已经看到两个函数在不同的库中实现了相同的代码:

((2 /(1 + Exp(-2 * n))) - 1)。它们完全一样吗?

同样,我已经看到使用相同代码实现的 logistic sigmoid 激活:

(1 /(1 + Exp(-1 * n)))。这些也是等价的吗?

最后,它在实践中是否有重要意义?我在wiki上看到plot of very similar sigmoid functions - 可以使用其中任何一个吗?有些看起来可能比其他人的计算速度快得多。

4 个答案:

答案 0 :(得分:9)

逻辑函数:e x /(e x + e c

逻辑函数的特殊(“标准”)情况:1 /(1 + e -x

双极乙状结肠:从未听说过它。

Tanh:(e x -e -x )/(e x + e -x

Sigmoid 通常指的是形状(和限制),所以是的,tanh是一个sigmoid函数。但在某些情况下,它特指标准物流功能,所以你必须要小心。是的,你可以使用任何sigmoid函数,可能做得很好。

((2 /(1 + Exp(-2 * x))) - 1)相当于tanh(x)。

答案 1 :(得分:5)

一般来说,最重要的区别是 一个。平滑连续可微,如tanh和logistic vs step或truncated 湾竞争与转移 C。 sigmoid与径向 d。对称(-1,+ 1)与非对称(0,1)

通常,隐藏层需要可区分的要求,并且通常建议将tanh更平衡。 tanh的0是最快的点(最高的梯度或增益)而不是陷阱,而logistic 0是最低点,是任何深入负区域的陷阱。径向(基础)函数与典型原型的距离有关,对于神经元有利于凸圆形区域,而S形函数关于线性分离和半空间有利 - 并且它需要许多用于良好近似凸区域,圆形/球形区域对于sigmoids是最差的并且最适合于径向。

通常,建议在中间层上使用tanh进行+/-平衡,并使输出层适合任务(具有阈值,逻辑或竞争输出的布尔/二分类决策(例如softmax,自标准化多类)逻辑推广);回归任务甚至可以是线性的)。输出层不需要连续可微分。输入层应该以某种方式归一化,要么[0,1],要么更好,标准化或归一化,贬值为[-1,+ 1]。如果你包含1的虚拟输入然后归一化所以|| x || p = 1你要除以一个和或长度,这个幅度信息保留在虚拟偏置输入而不是丢失。如果您对示例进行标准化,则在技术上会干扰您的测试数据(如果您查看它们),或者如果您不这样做,它们可能会超出范围。但是如果|| 2归一化,这些变化或误差应该接近正态分布,如果它们是自然分布或误差的影响。这意味着它们很可能不会超过原始范围(可能大约2个标准偏差)超过一个小因子(即这种超范围值被视为异常值并且不显着)。

因此,我建议在输入层上使用无偏实例规范化或偏置模式标准化(或者可能使用SVD进行数据缩减),在隐藏层上使用tanh,并在输出上使用阈值函数,逻辑函数或竞争函数进行分类,但与非标准化目标呈线性关系,或者可能是具有归一化回归目标的logig。

答案 2 :(得分:2)

这个词是(并且我已经测试过)在某些情况下,使用 tanh 可能比后勤更好,因为

  1. 后勤附近的Y = 0输出权重w会产生接近0的值没有太大影响在它影响的上层(尽管缺席也会影响),但是 tahn 上的Y = -1附近的值乘以权重w可能会产生一个数字更大的数字效果。
  2. tanh 1 - y^2)的导数产生的值大于 logistic y (1 -y) = y - y^2)。例如,当z = 0时,后勤函数会产生y = 0.5y' = 0.25,而 tanh y = 0会产生y' = 1 1}}(你可以通过查看图表来看到这一点)。 含义由于渐变的大小, tanh 图层可能比逻辑图层学得更快。

答案 3 :(得分:0)

双极S形=(1-e ^( - x))/(1 + e ^( - x))

详细说明可在here

找到