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

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

是否必须将训练标准(例如均方误差,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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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