如何加快前馈,基于梯度的反向传播神经网络的学习速度

时间:2016-04-07 16:23:54

标签: machine-learning neural-network artificial-intelligence backpropagation gradient-descent

我使用tanh作为激活功能。 我们举一个例子。

XOR Problem:

1   1   0
0   1   1
1   0   1
0   0   0

当我训练我的神经网络500个时代时, 结果如下:

1   1   0.001015
0   1   0.955920
1   0   0.956590
0   0   0.001293

又过了500个时代:

1   1   0.000428
0   1   0.971866
1   0   0.971468
0   0   0.000525

另外500个时代:

1   1   0.000193
0   1   0.980982
1   0   0.981241
0   0   0.000227

似乎学习速度正在放缓。 我的神经网络正在为我的costom问题提供足够的精确度。

反正这样开始变慢之后,还有加速学习吗?

由于

2 个答案:

答案 0 :(得分:1)

这种学习曲线在神经网络训练中非常正常(甚至在real life learning中)。也就是说,虽然曲线的一般形状是典型的,但我们可以改善它的陡度。在这方面,我建议您在训练算法中实施momentum。如果这似乎不够,那么下一步就是实现一些自适应学习速率算法,例如adadelta, adagrad or rmsprop。最后,您可能想要尝试的最后一件事是batch normalization

答案 1 :(得分:0)

如果您构建的网络已将sigmoids应用于输出图层中的神经元(看起来它们与您的结果相似),您可以考虑删除它们并且只是具有线性关系。您的网络可能会变得更不稳定,因此可以建议更小的步长。但是你将能够达到更好的准确性。