当我使用 Theano 或 Tensorflow 训练我的神经网络时,它们会在每个周期报告一个名为“损失”的变量。
我应该如何解释这个变量?较高的损失是好还是坏,或者它对我的神经网络的最终表现(准确率)意味着什么?
回答:
损失值越低,模型越好(除非模型对训练数据过拟合)。损失是在训练和验证集上计算的,其解释是模型在这两个集合上的表现如何。与准确率不同,损失不是百分比。它是训练或验证集中每个样本错误的总和。
在神经网络的情况下,损失通常是分类和回归的负对数似然和残差平方和。然后,自然地,学习模型的主要目标是通过改变权重向量值来减少(最小化)损失函数相对于模型参数的值,通过不同的优化方法,如神经网络中的反向传播。
损失值暗示了某个模型在每次优化迭代后的表现好坏。理想情况下,人们希望损失在每次或几次迭代后减少。
模型的准确率通常是在模型参数学习并固定后确定的,且没有进行学习。然后将测试样本输入模型,并记录模型所犯的错误数量(零一损失),在与真实目标进行比较后计算出误分类的百分比。
例如,如果测试样本数量为1000,模型正确分类了其中的952个,那么模型的准确率为95.2%。
在减少损失值时也有一些微妙之处。例如,你可能会遇到过拟合的问题,在这种情况下,模型“记住”了训练样本,对测试集变得不太有效。过拟合也发生在你没有使用正则化、模型非常复杂(自由参数W
的数量很大)或数据点N
的数量非常低的情况下。