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

Machine learning 如何加快前馈、基于梯度的反向传播神经网络的学习速度,machine-learning,neural-network,artificial-intelligence,backpropagation,gradient-descent,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.0005

我使用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
1   1   0.000193
0   1   0.980982
1   0   0.981241
0   0   0.000227
另一个500世纪:

1   1   0.000428
0   1   0.971866
1   0   0.971468
0   0   0.000525
1   1   0.000193
0   1   0.980982
1   0   0.981241
0   0   0.000227
看来学习速度慢了很多。 我的神经网络正逐渐变得足够精确,以解决我的成本问题

在学习速度开始变得如此缓慢之后,有没有办法加快学习速度


感谢

这种学习曲线在神经网络训练中(甚至在网络训练中)是完全正常的。也就是说,虽然曲线的一般形状是典型的,但我们可以改善其陡度。在这方面,我建议您在训练算法中实现。如果这似乎还不够,您的下一步将是实现一些自适应学习率算法,例如。最后,你可能想尝试的是.

如果你正在构建的网络中有SigMoID应用到输出层中的神经元(好像它们来自你的结果),你可以考虑移除它们,并且只是有一个线性关系。您的网络可能会变得更不稳定,因此建议减小步长。但是您将能够达到更好的精度。

您在输出层中有任何激活吗?你的学习方法是什么?使用的参数?您应该包括整个代码,您使用的是哪种损失函数?交叉熵?平均平方误差?我如何应用ADADELTA到我的简单C++神经网络?我不能,因为我不太懂数学语言。