【问题标题】:What is the best metric to evaluate how well a CNN is trained? validation error or training loss?评估 CNN 训练情况的最佳指标是什么?验证错误或训练损失?
【发布时间】:2018-04-27 06:11:18
【问题描述】:

我想训练一个 CNN,但我想使用所有数据来训练网络,因此不执行验证。这是一个不错的选择吗?如果仅使用训练损失作为早期停止 CNN 的标准,我是否会冒过度拟合 CNN 的风险?

换句话说,在以下选项中,KERAS(例如)中用于提前停止的最佳“监视器”参数是什么?

early_stopper=EarlyStopping(monitor='train_loss', min_delta=0.0001, patience=20)
early_stopper=EarlyStopping(monitor='train_acc', min_delta=0.0001, patience=20)
early_stopper=EarlyStopping(monitor='val_loss', min_delta=0.0001, patience=20)
early_stopper=EarlyStopping(monitor='val_acc', min_delta=0.0001, patience=20) 

stackoverflow Keras: Validation error is a good measure for stopping criteria or validation accuracy? 中有这样的讨论,但是,他们只谈论验证。在验证或训练数据中使用标准来提前停止 CNN 训练是否更好?

【问题讨论】:

    标签: validation tensorflow neural-network deep-learning keras


    【解决方案1】:

    我已经对Tin Luu's 的答案投了赞成票,但想提炼一个关键的实用点:最佳标准是最符合您的成功标准的标准。也就是说,必须在你的问题对我们完全有意义之前定义你的实际评分函数。

    对于您正在为其训练此模型的应用程序而言,什么是重要的?如果它只是 top-1 预测准确度,那么验证准确度 (val_acc) 几乎肯定是您的唯一标准。如果您关心置信水平(例如,当 48% 的可能性是猫、42% 的可能性是狼、10% 的可能性是法拉利时对冲您的赌注),那么正确实施错误函数将使验证错误 (val_err) 变得更好选择。

    最后,我再次强调,最终衡量标准是根据您选择的标准实际性能。 Test 数据是您实际输入的代表性样本。您可以使用提前停止标准来加快训练周转时间,但在测试并满足您的实际标准之前,您还不能进行部署。

    【讨论】:

      【解决方案2】:
      1. 我想训练一个 CNN,但我想使用所有数据来训练网络,因此不执行验证。这是一个不错的选择吗?我是吗 如果仅使用训练损失作为 提前停止 CNN 的标准?

      答案:不,您的目的是预测新样本,即使您获得了 100% 的训练准确率,但您可能对新样本的预测不佳。你没有办法检查你是否有过拟合

      1. 换句话说,在 KERAS(例如)中,在以下选项中,什么是用于提前停止的最佳“监视器”参数?

      答案:应该是最接近现实的标准

      early_stopper=EarlyStopping(monitor='val_acc', min_delta=0.0001, patience=20)

      此外,您可能需要训练、验证和测试数据。 train 是训练你的模型,validate 是对一些模型+参数进行验证并选择最好的,test 是独立验证你的结果(它不用于选择模型、参数,所以它相当于新样本)

      【讨论】:

      • Tin Luu 的回答很好。 Andrew Ng 擅长在 coursera 的免费在线课程机器学习中进行更多解释。有很多东西要知道,但你也许已经可以开始了。
      猜你喜欢
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 2018-04-05
      相关资源
      最近更新 更多