Machine learning 如何加快前馈、基于梯度的反向传播神经网络的学习速度
我使用tanh作为激活函数。 让我们以一个问题为例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
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++神经网络?我不能,因为我不太懂数学语言。