拟合神经网络的训练误差

时间:2013-12-14 16:00:24

标签: python numpy machine-learning scipy curve-fitting

我试图将神经网络的训练误差曲线拟合为训练迭代次数的函数。下图中的示例以红色显示。在这里,我已经训练了3000次迭代。我感兴趣的是我是否能找到一个能够适应前1000次(或左右)迭代的函数,以一定的合理精度推断出3000次迭代。

但是,我不知道哪种功能形式最适合我使用。起初我尝试了f(x)= A + B exp(-C x)形式的指数,以蓝色显示。显然这不太好用。指数过快地消失了,然后基本上变成了常数。

也许这很困难,因为训练的开始显示了错误的非常明显的下降,但随后转换为更高迭代的更加渐进的东西。但是,具有神经网络训练经验和/或未知功能拟合经验的人可能会有一些想法。我一直在尝试各种指数形式和多项式拟合scipy / numpy但没有成功。我也改变了拟合中使用的迭代次数(包括丢弃小的迭代次数)。

有什么想法?

data http://i42.tinypic.com/dvmt6o.png

2 个答案:

答案 0 :(得分:2)

我认为指数拟合可能有效。在f(x)=A+B*exp(-C*x),我选择A = 0.005B = 0.045C = 1/250,我会得到,

enter image description here

这只是参数调整。然而,我试图理解你想要适应学习曲线的动机。我认为插值方法包括'外推'选项,您可以用它来预测更多纪元后的错误。如果你想精确地学习曲线,你可以使用另一个带有线性隐藏层和输出的神经网络来再次“学习”曲线,尽管我没有尝试它是否有效。

答案 1 :(得分:0)

查看此页面:http://www.astroml.org/sklearn_tutorial/practical.html

对于您所描述的情况,有用的是诊断您的算法在您的数据集中是出现高偏差还是高差异,并为这两种情况提供具体说明。