神经网络终止规则

Neural net termination rule

我想建立我的第一个神经网络来识别 python 中的手写数字,但我找不到一个好的、简单的终止规则?

我所说的 "termination rule" 是什么时候停止更新我的权重和偏差,或者如何知道我已经达到了 lcal min。

让我说清楚。我不是在寻找性能最好、最先进、最复杂的规则。相反,我想要最简单、最容易实施、易于上手的规则,它将合理地完成工作。

如果您需要回答更多信息,请告诉我,我会在此处添加。

虽然这个问题有点过于宽泛,但我会尽力为您提供一般指导。

神经网络训练是优化高维(几乎总是)非凸损失函数的过程。因此,很少有关于其全局或局部最小值或收敛速度的正式证明。只有 观察 ,例如,所有局部最小值在测试准确性(损失)方面大致相同,这使得学习过程更容易,因为不再需要寻找全局最小值强制性的。

您询问的 "termination rule" 属于同一类别:一般规则 似乎 在大多数情况下都有效。当您进行交叉验证时,当验证准确性(损失)停止提高并在一段时间内持平或变差时,您应该停止训练。结果模型可以在整个训练过程中被合理地选择为最好的。还可以应用提前停止(参见 this and ),以节省训练时间并仍然避免过度拟合。本质上,在实践中,研究让网络在时间限制允许的情况下进行训练,并且只有在准确率(损失)仍然没有 看起来 平坦的情况下才增加 epoch 的数量,这种情况很少见.

例如,在下图中,10 个 epoch 就停止还为时过早,因为还有很大的改进潜力。 15个epoch后仍然不清楚。如果时间不够,可以在 20 个纪元后停止,但我会让它 运行 直到第 25 个纪元。此时,训练分数接近 1.0,验证分数持平,即没有进一步提高的迹象。