11

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

特别是sigmoidlogisticbipolar sigmoidtanh等。

sigmoid是否简单地描述了函数的形状而不考虑​​范围?如果是这样,那么 tanh 是一个“sigmoid 函数”吗?

我在一篇论文中看到了 'bipolar sigmoid' 与 'tanh' 的比较,但是我看到两个函数都使用相同的代码实现(在各种库中):

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

同样,我看到了用相同的代码实现的逻辑sigmoid激活:

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

最后,在实践中它甚至那么重要吗?我在 wiki 上看到了一个非常相似的 sigmoid 函数图- 可以使用其中的任何一个吗?有些看起来他们的计算速度可能比其他人快得多。

4

4 回答 4

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)。

于 2012-08-07T15:23:53.560 回答
5

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

通常隐藏层需要可微分要求,通常建议使用 tanh 更平衡。tanh 的 0 位于最快点(最高梯度或增益)而不是陷阱,而逻辑 0 是最低点,是任何深入负区域的陷阱。径向(基)函数与典型原型的距离有关,适用于神经元周围的凸圆形区域,而 sigmoid 函数是关于线性分离并适用于半空间 - 并且需要很多才能很好地逼近凸区域,其中圆形/球形区域对 sigmoid 最差,对径向最好。

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

因此,我建议在输入层上进行无偏实例标准化或有偏模式标准化或两者兼而有之(可能使用 SVD 进行数据缩减),在隐藏层上使用 tanh,在输出上使用阈值函数、逻辑函数或竞争函数进行分类,但与未归一化的目标,或者可能带有归一化目标的 logig 用于回归。

于 2014-08-22T23:48:49.680 回答
2

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

  1. 输出接近逻辑乘以权重会产生一个接近的值,Y = 0该值对它所影响的上层没有太大影响(尽管缺少也会影响),但是接近于tahn乘以权重的值可能会产生一个更大的数字,它有更多数值效应。w0Y = -1w
  2. tanh ( )的导数1 - y^2产生的值大于逻辑( y (1 -y) = y - y^2)。例如,当 时z = 0逻辑函数产生y = 0.5y' = 0.25,对于tanh y = 0但是y' = 1(您通常可以通过查看图表来了解这一点)。这意味着由于梯度的大小,tanh 层可能比逻辑层学习更快
于 2015-02-02T02:44:20.510 回答
0

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

详细解释可以在这里找到

于 2015-09-23T09:23:05.517 回答