【问题标题】:Difference between testing and inference in seq2seq modelsseq2seq 模型中测试和推理的区别
【发布时间】:2020-10-19 13:01:10
【问题描述】:

我正在使用this tutorial 研究变压器模型,我对评估和推理之间的区别感到困惑。据我了解,评估发生在模型训练之后,只给它源并要求它一一预测目标(在 seq2seq 问题中)。

但是,在本教程中,它以与训练相同的方式进行评估,即在给定源和目标的情况下,从前向传递到模型中获得损失。推理步骤更类似于我理解的评估。在这种情况下,我尝试了该模型,它在评估和测试方面做得非常好,但在推理步骤我发现它无法输出任何有意义的东西。 谁能解释一下评估和推理之间的区别?

【问题讨论】:

    标签: machine-learning training-data transformer seq2seq


    【解决方案1】:

    评估和推理确实是两个不同的学科,但前者只能借助后者来完成。实际上,您反复进行推理以执行评估。

    在这个特定的步骤:

     train_loss = train(model, train_iterator, optimizer, criterion, CLIP)
     valid_loss = evaluate(model, valid_iterator, criterion)
    

    在训练集的每个 epoch 之后,我们需要对验证集中的每个样本进行评估/推断,以检查我们是否存在过拟合或欠拟合或其他现象。这发生在任何强大的机器学习过程中(至少应该发生)。

    如果您在测试时遇到问题,可能是由于两种不同的原因:

    1. 您要么不以将输入提供给训练 + 验证的方式进行测试。
    2. 测试集与训练集和验证集如此不同,以至于当输入与您使用的训练集和验证集在统计上不同时,您的模型表现不佳。

    另外,请注意评估和推理与 seq2seq 无关/与 seq2seq 相比,在其他机器学习问题中也没有不同;相同的评估和推理概念适用于所有机器学习任务。

    【讨论】:

    • 感谢您的回答!这和我的理解一样,但是在本教程中让我感到困惑的是,还有另一个推理函数与评估不同。在本教程中,测试、验证和训练都以相同的方式完成,但推理不是。因此,该模型在测试中表现相当一致,但在推理方面表现不佳。
    猜你喜欢
    • 2018-12-07
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2018-09-13
    • 2019-12-30
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    相关资源
    最近更新 更多