一般使用深度自动编码器/深度学习时的适当均方误差



我目前想知道何时停止深度自动编码器的训练,尤其是当它似乎被困在本地最小值时。

将训练标准(例如MSE)设置为例如0.000001并强制其完美地重构输入是必要的,还是可以根据所使用的数据集保持差异(例如,当MSE约为0.5时停止)。

我知道更好的重建可能会带来更好的分类结果,但何时停止有"经验法则"吗?我对没有启发式特征的规则特别感兴趣,比如"如果MSE在x次迭代中没有变小"。

我认为不可能推导出这方面的一般经验法则,因为生成NN:s/机器学习是一个非常特定于问题的过程,通常情况下,没有免费的午餐。如何决定终止什么是"好"训练错误取决于各种特定问题的因素,例如数据中的噪声。仅根据训练集评估NN,唯一的目标是最小化MSE,这将多次导致过拟合。只有训练误差作为反馈,您可能会将NN调整为训练数据中的噪声(因此会出现过拟合)。避免这种情况的一种方法是拒绝验证。不是只将NN训练到给定的数据,而是将数据集划分为训练集、验证集(和测试集)。

  • 训练集:训练和对NN的反馈将随着训练时间的延长而自然减少(至少降低到特定问题的"OK"MSE值)
  • 验证集:根据这些评估你的NN w.r.t.,但不要给你的NN/遗传算法反馈

因此,除了对训练集的评估反馈外,您还应该评估验证集,但不要向神经网络(NN)提供反馈。

跟踪用于训练和验证集的MSE的减少;通常,训练误差会稳步下降,而在某个时刻,验证误差会达到最小值,并随着进一步训练而开始增加。当然,在运行时,你无法知道这个最小值发生在哪里,所以通常会存储验证错误最低的NN,在一段时间内似乎没有更新之后(即,在错误回顾中:我们已经通过了验证错误中的最小值),算法就终止了。

例如,请参阅以下文章"神经网络:列车验证测试停止"以了解详细信息,以及讨论两种不同验证方法的SE统计线程。

对于深度自动编码器/深度学习的训练/验证,特别是w.r.t.过拟合,我发现Dropout:A Simple Way to Prevent Neural Networks from overfitting(*)一文很有价值。

(*)H.Srivistava、G.Hinton、A.Krizhevsky、I.Sutskever、R.Salakhuttinov著,多伦多大学。

最新更新