如何解读"损失"和"准确性"用于机器学习模型

时间:2015-12-29 20:33:59

标签: machine-learning neural-network mathematical-optimization deep-learning objective-function

当我使用Theano或Tensorflow训练我的神经网络时,他们将报告一个名为" loss"每个时代。

我该如何解释这个变量?更高或更低的损失,或者它对我的神经网络的最终性能(准确性)意味着什么?

3 个答案:

答案 0 :(得分:216)

损失越低,模型越好(除非模型过度拟合训练数据)。损失是根据培训验证计算得出的,它的交互是模型对这两个集合的效果。与准确性不同,损失不是百分比。它是训练或验证集中每个示例所犯错误的总和。

在神经网络的情况下,损失通常分别为negative log-likelihoodresidual sum of squares用于分类和回归。当然,学习模型的主要目标是通过不同的优化方法(如神经网络中的反向传播)改变权重向量值,从而减少(最小化)损失函数相对于模型参数的值。

损失值表示在每次优化迭代后某个模型的表现有多好或多差。理想情况下,人们会期望在每次或几次迭代后减少损失。

模型的准确性通常在学习和修复模型参数并且没有进行学习之后确定。然后将测试样品送入模型,并在与真实目标进行比较后记录模型产生的错误数(零丢失)。然后计算错误分类的百分比。

例如,如果测试样本数为1000且模型正确分类952,则模型的准确率为95.2%。

enter image description here

在降低损失价值的同时还有一些细微之处。例如,您可能遇到over-fitting的问题,其中模型“记忆”训练样例并且对测试集变得无效。如果您没有使用regularization,您的模型非常复杂(自由参数W的数量很大)或数据点数N,也会出现过度拟合非常低。

答案 1 :(得分:14)

它们是两种不同的指标,用于评估您的模型的性能,通常在不同的阶段使用。

在培训过程中经常使用损失来找到最好的"模型的参数值(例如神经网络中的权重)。您尝试通过更新权重来优化培训。

从应用的角度来看,准确度更高。找到上述优化参数后,您可以使用此指标评估模型预测与真实数据的准确度。

让我们使用玩具分类示例。你想从一个人的体重和身高来预测性别。你有3个数据,它们如下:(0代表男性,1代表女性)

y1 = 0,x1_w = 50kg,x2_h = 160cm;

y2 = 0,x2_w = 60kg,x2_h = 170cm;

y3 = 1,x3_w = 55kg,x3_h = 175cm;

使用简单的逻辑回归模型,即y = 1 /(1 + exp-(b1 * x_w + b2 * x_h))

你如何找到b1和b2?首先定义一个损失并使用优化方法通过更新b1和b2以迭代方式最小化损失。

在我们的示例中,此二进制分类问题的典型损失可能是: (应在总和标志前添加减号)

我们不知道b1和b2应该是什么。让我们随机猜一下,说b1 = 0.1,b2 = -0.03。那么我们现在的损失是什么?

y1_hat = 1 /(1 + exp { - (0.1 * 50-0.03 * 160)})= 0.549834 = 0.55

y2_hat = 1 /(1 + exp { - (0.1 * 60-0.03 * 170)})= 0.7109495 = 0.71

y3_hat = 1 /(1 + exp { - (0.1 * 55-0.03 * 175)})= 0.5621765 = 0.56

所以损失是(-log(1-0.55)+ -log(1-0.71) - log(0.56))= 2.6162

然后你学习算法(例如梯度下降)将找到更新b1和b2以减少损失的方法。

如果b1 = 0.1且b2 = -0.03是最终的b1和b2(梯度下降的输出)怎么办?现在的准确度是多少?

如果y_hat> = 0.5,我们假设我们的预测是女性(1)。否则它将为0.因此,我们的算法预测y1 = 1,y2 = 1和y3 = 1.我们的准确度是多少?我们对y1和y2做出错误的预测,并在y3上做出正确的预测。所以现在我们的准确度是1/3 = 33.33%

PS:在Amir's answer中,反向传播被认为是NN中的优化方法。我认为它将被视为在NN中找到权重梯度的一种方法。 NN中的常见优化方法是GradientDescent和Adam。

答案 2 :(得分:4)

@Aadnan只是为了澄清培训/验证/测试数据集: 训练集用于执行模型的初始训练,初始化神经网络的权重。

在训练神经网络后使用验证集。它用于调整网络的超参数,并比较它们的变化如何影响模型的预测准确性。尽管训练集可以被认为是用于构建神经网络的门权重,但验证集允许微调神经网络模型的参数或架构。它非常有用,因为它允许将这些不同的参数/体系结构与相同的数据和网络权重进行可重复的比较,以观察参数/体系结构的变化如何影响网络的预测能力。

然后,在训练和参数/架构选择与训练和验证数据集之后,测试集仅用于测试训练的神经网络对先前未见数据的预测准确性。