machine-learning - 增量(在线)反向传播停止标准

标签 machine-learning neural-network backpropagation

在反向传播人工神经网络的在线实现中,您将如何确定停止标准?

我一直在做的方法(我确信这是不正确的)是平均每个输出节点的误差,然后在每个时期平均这个误差。

这是一个错误的方法吗?是否有停止在线实现的标准方法?

最佳答案

您应该始终考虑与训练集分离的验证集上的误差(例如均方根误差)。如果训练时间太长,您的神经网络将开始过度适应。这意味着,你的训练集上的误差将变得最小甚至为 0,但一般数据上的误差会变得更糟。

为了最终获得产生最佳泛化性能的模型参数,只要验证集上的错误达到新的最小值,您就应该复制并保存模型参数。如果性能存在问题,您可以仅每 N 个步骤执行一次此检查。

在在线学习设置中,您将使用单个训练样本或少量训练样本的小批量进行训练。您可以将覆盖总数据的所有样本/小批量的连续训练视为一个训练周期

定义所谓的“提前停止标准”有多种可能性。例如。您可以在每个完整周期之后考虑验证集上迄今为止最好的 RMS 错误。一旦 M 纪元没有新的最佳值,您就会停止。根据问题的复杂程度,您必须选择足够高的 M。您也可以从一个相当小的 M 开始,每当您获得新的最佳值时,您将 M 设置为达到它所需的时期数。这取决于快速收敛和尽可能彻​​底哪个更重要。

您总会遇到验证和/或训练误差暂时变大的情况,因为学习算法是爬山。这意味着它会遍历误差表面上的区域,这些区域会导致性能不佳,但必须通过才能达到新的、更好的最佳值。如果您在两个后续步骤之间的验证或训练错误变得更糟时就立即停止,那么您将过早地得到次优解决方案。

关于machine-learning - 增量(在线)反向传播停止标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15620172/

相关文章:

keras - 何时在 Keras 模型中使用偏差?

machine-learning - 我应该标准化神经网络中的输入吗?

parameters - 没有输入参数的聚类数据

machine-learning - 如何实际应用经过训练的模型?

python - 为 mnist 数据集构建 CNN 时精度极低

python - tensorflow在梯度计算时如何处理不可微节点?

neural-network - 反向传播的不同损失函数

python - 实现一般反向传播

r - C50 代码调用 exit,值为 1(使用因子决策变量 a 非空值)

machine-learning - 使用 TensorFlow 进行图像相似度检测