我正在编写一些基本的神经网络方法 - 特别是激活函数 - 并且已经达到了我对数学的垃圾知识的极限。我理解各自的范围(-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 - 可以使用其中任何一个吗?有些看起来可能比其他人的计算速度快得多。
答案 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 可能比后勤更好,因为
Y = 0
输出权重w
会产生接近0
的值没有太大影响在它影响的上层(尽管缺席也会影响),但是 tahn 上的Y = -1
附近的值乘以权重w
可能会产生一个数字更大的数字效果。1 - y^2
)的导数产生的值大于 logistic (y (1 -y) = y - y^2
)。例如,当z = 0
时,后勤函数会产生y = 0.5
和y' = 0.25
,而 tanh y = 0
会产生y' = 1
1}}(你可以通过查看图表来看到这一点)。 含义由于渐变的大小, tanh 图层可能比逻辑图层学得更快。答案 3 :(得分:0)
双极S形=(1-e ^( - x))/(1 + e ^( - x))
详细说明可在here
找到