是优化超参数还是运行多个 epoch 更好?

数据挖掘 神经网络 超参数 超参数调整 时代
2022-02-21 08:32:41

每当我训练一个神经网络时,我只会让它经历几个时期(1 到 3)。这是因为我在一个糟糕的 CPU 上训练它们,并且神经网络需要一些时间才能通过许多 epoch。

然而,每当我的神经网络表现不佳时,我会尝试优化超参数,而不是让它经历更多的时期。这种方法通常是成功的,因为我的神经网络非常简单。

但是以这种方式训练神经网络是一种不好的做法吗?立即优化超参数而不是让神经网络运行更多 epoch 有什么缺点吗?

4个回答

历元数也是一个超参数。但是,如果您想问要选择什么工作,无论是增加时代还是其他一些方法,如特征工程,那么下面是我的答案。

越来越多的时期通常被归因于锤击来训练模型,您自己通常不必过多考虑数据,而 deepNet 通常会为您完成。然而,它是以计算复杂性、过度拟合风险等为代价的。

相反,始终建议尽可能多地处理特征工程等任务,在训练时调整不同的其他超参数。事实上,数据科学家应该优先处理这些事情,而不仅仅是盲目地利用 deepNet 的黑盒概念。

但是,即使您选择增加 epoch 的数量,您也可以使用称为early stopping. 它基本上说如果验证损失没有改善,则在某个时期停止训练,您可以使用它而无需过多考虑增加时期数的影响,因为如果验证损失没有改善,它将停在那里。

我更喜欢调整超参数,而不是为多个 epoch 运行网络,因为为大量 epoch 运行神经网络会导致过度拟合,这应该避免。

epoch 的数量是优化问题的一部分。因此,达到优化的结果需要考虑 epoch 的数量以及其他超参数。

您应该调整所有超参数,包括时期数。

为了加快训练速度,最初使用高学习率η,并在损失饱和时降低它。这在 Keras 中被推荐为一种技术,他们甚至提供了这样做的功能这将允许您在更少的时期内训练您的网络。注意初始学习率太高,因为它会导致学习过程不稳定(波动的损失函数而不是单调递减)。

确保您还使用了dropout超参数,该参数已被证明在提高 NN 的性能方面非常成功,特别是在推广到看不见的样本方面。

如果您同时应用上述两种方法,您可以拥有一个有效的网络,该网络的训练时间比其他方式所需的时间要少。