使用深度自编码器/深度学习时,如何确定均方误差的适当水平

我目前在思考何时停止训练深度自编码器,尤其是在它似乎陷入局部最小值时该怎么办。

是否必须将训练标准(例如均方误差,MSE)降低到例如0.000001,并强制其完美重建输入,还是可以根据所使用的数据集保留一些差异(例如,当MSE大约为0.5时停止训练)?

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


回答:

我认为无法为此得出一个普遍的经验法则,因为生成神经网络/机器学习是一个非常特定于问题的过程,而且通常情况下,没有免费的午餐。如何决定何时终止的“良好”训练误差取决于各种特定于问题的因素,例如数据中的噪声。仅根据训练集来评估你的神经网络,唯一的目标是 minimization MSE,很多时候会导致过拟合。仅以训练误差作为反馈,你可能会将你的神经网络调整到训练数据中的噪声(因此导致过拟合)。避免这种情况的一种方法是保留验证。你不是只训练你的神经网络到给定数据,而是将你的数据集分为训练集、验证集(和测试集)。

  • 训练集:用于训练和反馈给神经网络,随着训练时间的延长,误差自然会持续下降(至少下降到特定问题“OK”的MSE值)。
  • 验证集:根据这些来评估你的神经网络,但不要将反馈给你的神经网络/遗传算法。

除了评估训练集的反馈外,你还应该评估验证集的表现,但不要将反馈给你的神经网络(NN)。

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

有关详细信息,请参见以下文章 神经网络:训练-验证-测试停止,以及讨论两种不同验证方法的这个SE统计线程

对于深度自编码器/深度学习的训练/验证,特别是关于过拟合的问题,我发现文章 Dropout:防止神经网络过拟合的一种简单方法(*) 非常有价值。

(*) 作者:H. Srivistava, G. Hinton, A. Krizhevsky, I. Sutskever, R. Salakhutdinov,多伦多大学。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注