【发布时间】:2014-01-02 07:57:48
【问题描述】:
我试图将神经网络的训练误差曲线拟合为训练迭代次数的函数。下图中以红色显示了一个示例。在这里,我已经训练了 3000 次迭代。我感兴趣的是我是否可以找到一个适合前 1000 次(左右)迭代的函数,以合理的准确度推断出 3000 次迭代。
但是,我不知道哪种函数形式最适合我使用。起初我尝试了 f(x)=A+Bexp(-Cx) 形式的指数,它以蓝色显示。显然这不太好。指数消失得太快,然后基本上就变成了常数项。
也许这很困难,因为训练的开始显示错误非常急剧下降,但随后过渡到更渐进的东西以进行更高的迭代。但也许有神经网络训练经验和/或拟合未知函数经验的人可能会有一些想法。我一直在 scipy/numpy 中尝试各种指数形式和多项式拟合,但没有成功。我也改变了拟合中使用的迭代次数(包括丢弃小的迭代次数)。
有什么想法吗?
【问题讨论】:
-
scipy 中的样条方法可能有用,请参阅here
-
你是在尝试根据前几个步骤来预测训练阶段的误差曲线吗?或者你只是想找到一个公式来描述手头的曲线?在第一种情况下,我怀疑这会奏效。在实际问题上,误差曲线通常根本不那么平滑。此外,每组训练数据和元参数的误差面都不同。对于每组随机初始权重参数,您从该表面上完全不同的区域开始。
-
@schreon :是的,我正在尝试根据前几个步骤(例如,few=[1,1000])预测误差曲线,如果只是近似的话。我不是简单地试图描述整个曲线的公式。我理解你关于为什么神经网络训练甚至不可能实现这一点的论点,并且我自己也担心这一点。我认为在训练后期阶段与误差面相关的特征可能无法从训练早期的这些特征中获知。
-
@gammapoint 如果 x 轴采用对数刻度,绘图会是什么样子?
-
@behzad.nouri ,如果 x 轴具有对数刻度,则如下所示 - tinypic.com/r/2rzub0z/5。
标签: python numpy machine-learning scipy curve-fitting