在神经网络训练中保留历史损失最少的模型有意义吗?

问题描述 投票:0回答:1

我是 bp 神经网络的初学者,我正在尝试使用 bp 神经网络解决一些物理和机械回归问题。

在学习神经网络的过程中,我发现模型的损失值总是会因振荡而下降。目前我接触到的所有学习资料都是根据迭代训练到最后一次的模型参数来构建最终的模型,并用它来测试测试集。

我尝试存储训练过程中损失值最低的模型,并在测试集上与训练结束时的最终模型进行比较,发现存储的“最佳”模型的回归误差往往更小,并且通常要小一个数量级。

由于我是bp神经网络的新手,而且我使用的方法非常直观,但我接触过的几乎所有学习资料都没有提到这可能会优化最终的模型性能,我想问一下我是否可以这样做?因为我忽略了一些问题而得到了错误的“改进”。

顺便说一句,我使用 Adam 作为回归优化器,我发现无论迭代多少次,它的损失总是小于 sgd,而且我读过的很多论文都提到 SGD 在高迭代中表现优于 Adam ,但论文普遍存在较多分类问题。我想问一下,在面对回归问题时,大多数情况下哪个优化器表现更好的可能性更大,如果能提供 Adam 和 SGD 以外的更适合回归问题的优化器就更好了在火炬库中。

非常感谢您的回答。由于我没有从事机器学习研究,所以只需要使用bp神经网络来做一些回归工作。以上问题的表达可能存在很多问题,非常欢迎您的指正。

optimization deep-learning neural-network backpropagation
1个回答
0
投票

我尝试存储训练中损失值最低的模型 过程并与最后的最终模型进行比较 在测试集上训练,发现回归误差 存储的“最佳”模型通常较小,并且通常是 幅度较小。

您描述的方法听起来类似于提前停止。当验证损失/准确性停止提高时,训练将停止,您将选择获得最佳验证分数的模型。有时分数曲线并不平滑,并且不清楚模型是否变得更糟,因此您可以定义一个“耐心”术语,让模型在变得更糟后有一些时间改进。

我认为在使用早期停止时,拥有一个比您实际需要的稍大的模型可能会有所帮助。提前停止将有助于防止大模型过度拟合,但对于一开始就太小的模型没有用。

顺便说一句,我使用 Adam 作为回归优化器,我发现 无论迭代多少次,它的损失总是小于 我读过的许多论文都提到 SGD 的性能 在高迭代中比 Adam 更好,但论文通常有更多 分类问题。我想问一下,在面临回归的时候 问题,在大多数情况下,出现以下问题的可能性较高 优化器会表现得更好,如果可以的话那就更好了 提供 Adam 和 SGD 之外可能更适合的优化器 用于 torch 库中的回归问题。

我的印象是,Adam 通常可以很好地解决一系列问题,并且是一个不错的默认选择。如果您发现您的网络在学习方面存在问题,或者您有时间进行实验,则可以轻松地将 Adam 替换为其他网络,看看它是否有更好的效果。

您经常需要进行试验,看看哪些方法适合您的数据并适合您的特定任务。

© www.soinside.com 2019 - 2024. All rights reserved.