如何解释机器学习模型的“损失”和“准确性”
deep-learning
machine-learning
neural-network
10
0

当我使用Theano或Tensorflow训练我的神经网络时,它们将报告每个时期一个称为“损失”的变量。

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

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

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

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

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

收藏
评论

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

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

从应用的角度来看,准确性更高。一旦找到上面的优化参数,就可以使用此指标来评估将模型的预测与真实数据进行比较的准确性。

让我们使用一个玩具分类示例。您想根据自己的体重和身高预测性别。您有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。那我们现在的损失是什么?

所以损失是

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

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

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

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

收藏
评论

损失越小,模型越好(除非模型已经过拟合训练数据)。损失是通过训练验证计算得出的,其互操作性是模型在这两套模型上的表现。与准确性不同,损失不是百分比。它是对训练或验证集中每个示例所犯错误的总和。

在神经网络的情况下,损失通常分别为负对数可能性和分别用于分类和回归的残差平方和。那么自然地,学习模型的主要目标是通过使用不同的优化方法(例如神经网络的反向传播)来更改权重向量值,从而相对于模型的参数来减少(最小化)损失函数的值。

损失值表示在每次优化迭代后某个模型的表现好坏。理想情况下,可以期望在每次或多次迭代后减少损失。

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

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

在此处输入图片说明

在降低损失值的同时,还有些微妙之处。例如,您可能会遇到过拟合的问题, 该问题中,模型“记忆”了训练示例,并且对测试集无效。在不使用正则化 ,模型非常复杂(自由参数W的数量很大)或数据点N的数量很少的情况下,也会发生过度拟合。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号