我被告知,对于训练中的每个 epoch,我们执行一个训练阶段,然后是一个验证阶段,我们决定新的参数集是否优于当前的最佳参数。这种参数选择是使用我们用于训练的相同损失函数完成的,但应用于验证数据而不是训练数据。
我的问题是,验证阶段使用的指标真的必须是相同的损失函数,还是可以是其他指标,例如准确度或平均精度?
我被告知,对于训练中的每个 epoch,我们执行一个训练阶段,然后是一个验证阶段,我们决定新的参数集是否优于当前的最佳参数。这种参数选择是使用我们用于训练的相同损失函数完成的,但应用于验证数据而不是训练数据。
我的问题是,验证阶段使用的指标真的必须是相同的损失函数,还是可以是其他指标,例如准确度或平均精度?
它不必是相同的功能,通常不是。
验证集的重点是衡量我们的模型实际表现如何。仅当我们根据对我们有价值的指标来衡量它时,这才有用。例如,在分类中,没有人关心哪个模型的交叉熵最小,而是哪个模型的准确率最高,从业务角度来看,这更有意义。
我想对您最初的陈述做出与问题本身无关的澄清。
我被告知,对于训练中的每个 epoch,我们执行一个训练阶段,然后是一个验证阶段,我们决定新的参数集是否优于当前的最佳参数。这种参数选择是使用我们用于训练的相同损失函数完成的,但应用于验证数据而不是训练数据。
这是不正确的!从技术上讲,一个时期是模型已经看到一次训练数据集的时间点。在 epoch 结束后,我们通常会通过验证集来衡量我们的模型实际表现如何。但是,在这一步没有执行超参数调整,因为模型还没有完全训练。一个模型通常需要多个 epoch 来训练,之后我们可以更改超参数并重新开始。在一个 epoch 结束时,我们可能对超参数做出的唯一改变就是计划的学习率降低。