多层感知器的激活功能

时间:2013-01-24 17:28:34

标签: machine-learning neural-network backpropagation perceptron

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

谢谢。

1 个答案:

答案 0 :(得分:9)

是的,你观察到的是真的。当使用反向传播训练神经网络时,我有类似的观察结果。对于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]

这两个函数的形状如下所示(credit:efficient backprop):

activation funcs

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

很容易看出tanh与起源是反对称的。

根据efficient Backprop

  

tanh等对称sigmoids 通常比标准逻辑函数收敛得更快。

同样来自wiki Logistic regression

  

从业者提醒说,当训练具有反向传播的网络时,关于原点的反对称的S形函数(例如双曲正切)会导致更快收敛

有关详细解释直觉的详细信息,请参阅efficient Backprop

tanh的替代方法,请参阅elliott,以便更轻松地进行计算。它在下面显示为黑色曲线(蓝色曲线是原始的tanh)。

enter image description here

enter image description here

  

上图中应该突出两件事。首先,TANH通常比Elliott需要更少的迭代训练。因此,对于编码器而言,Elliott的训练精度并不理想。但是,请注意培训时间。 Elliott在TANH的一半时间内完成了整个任务,即使需要进行额外的迭代。这是一个巨大的进步,字面意思是在这种情况下,Elliott会将你的训练时间缩短一半,并提供相同的最终训练错误。虽然它需要更多的训练迭代才能到达那里,但每次迭代的速度要快得多,这仍然会导致训练时间缩短一半。