【问题标题】:Neural net termination rule神经网络终止规则
【发布时间】:2018-05-02 01:49:56
【问题描述】:

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

我所说的“终止规则”是指何时停止更新我的权重和偏差,或者如何知道我已经达到了 lcal min。

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

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

【问题讨论】:

  • 通常它只是受到许多训练时期的限制。您永远无法确定自己是否已达到最低点,但可以非常自信地查看损失图表
  • 感谢您的回答。 @Maxim,您能否进一步解释一下如何使用损失图来确定正确的训练周期数?
  • @desertnaut,我看过了,它似乎包含了关于它是如何工作的数学背景,所以我不确定如何在神经网络中实现它正在从头开始构建。

标签: python machine-learning neural-network backpropagation gradient-descent


【解决方案1】:

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

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

您要询问的“终止规则”属于同一类别:它是一般规则,似乎在大多数情况下都有效。当您进行交叉验证时,您应该在验证准确度(损失)停止提高并在一段时间内持平或恶化时停止训练。可以合理地选择结果模型作为整个训练过程中的最佳模型。也可以应用 early-stopping(参见 thisthis question),以节省训练时间并避免过度拟合。本质上,在实践中,研究让网络在时间限制允许的情况下进行训练,并且只有在准确度(损失)仍然没有看起来平坦的情况下才增加 epoch 的数量,这很少见。

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

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 2020-06-21
    • 2012-11-09
    • 1970-01-01
    • 2017-02-19
    • 2014-01-15
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多