【问题标题】:Activation function for multilayer perceptron多层感知器的激活函数
【发布时间】:2013-01-08 13:18:17
【问题描述】:

我尝试使用xor 函数训练简单的反向传播神经网络。当我使用tanh(x) 作为激活函数并使用导数1-tanh(x)^2 时,我在大约 1000 次迭代后得到了正确的结果。但是,当我使用g(x) = 1/(1+e^(-x)) 作为激活函数时,使用导数g(x)*(1-g(x)),我需要大约50000 次迭代才能得到正确的结果。可能是什么原因?

谢谢。

【问题讨论】:

  • 学习率可能太小了?:p 你是如何编码你的 XOR 数据集的? 1 0 = 1-1 1 = 1?
  • 但是为什么学习常数对 tanh 来说很好,但对逻辑函数来说不够好呢?我认为“1”输出为真,“0”为假。
  • “结果”是什么意思?两种激活函数在 500 集后的预测效果如何?

标签: machine-learning neural-network backpropagation perceptron


【解决方案1】:

是的,你观察到的是真实的。在使用反向传播训练神经网络时,我也有类似的观察结果。对于XOR问题,我曾经建立了一个2x20x2网络,逻辑函数需要3000+集才能得到以下结果:

[0, 0] -> [0.049170633762142486]
[0, 1] -> [0.947292007836417]
[1, 0] -> [0.9451808598939389]
[1, 1] -> [0.060643862846171494]

当使用tanh 作为激活函数时,这是 800 集后的结果。 tanh 的收敛速度始终快于 logistic

[0, 0] -> [-0.0862215901296476]
[0, 1] -> [0.9777578145233919]
[1, 0] -> [0.9777632805205176]
[1, 1] -> [0.12637838259658932]

这两个函数的形状如下图(来源:efficient backprop):

  • 左边是标准逻辑函数:1/(1+e^(-x))
  • 右边是tanh函数,也称为双曲正切。

很容易看出tanh 关于原点反对称。

根据efficient Backprop

Symmetric sigmoids(例如 tanh)通常比标准逻辑函数收敛得更快。

同样来自维基Logistic regression

实践者警告说,当使用反向传播训练网络时,关于原点反对称(例如双曲正切)的 sigmoid 函数会导致更快收敛.

请参阅efficient Backprop 了解更多关于此处解释直觉的详细信息。

请参阅elliott 以获取更容易计算的tanh 的替代方案。如下图黑色曲线所示(蓝色为原tanh)。

从上面的图表中应该突出两件事。首先,与 Elliott 相比,TANH 通常需要更少的迭代来训练。因此,对于 Encoder,Elliott 的训练精度不如 Encoder 好。但是,请注意培训时间。 Elliott 完成了它的整个任务,即使它必须做额外的迭代,也只用了 TANH 一半的时间。这是一个巨大的改进,字面意思是在这种情况下,Elliott 会将您的训练时间缩短一半,并提供相同的最终训练错误。虽然确实需要更多的训练迭代才能到达那里,但每次迭代的速度要快得多,它仍然会导致训练时间减半。

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 2010-10-05
    • 2017-06-13
    • 2018-07-03
    • 2015-08-14
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    相关资源
    最近更新 更多