Machine learning 如何解释机器学习模型的损失和准确性

Machine learning 如何解释机器学习模型的损失和准确性,machine-learning,neural-network,mathematical-optimization,deep-learning,objective-function,Machine Learning,Neural Network,Mathematical Optimization,Deep Learning,Objective Function,当我用NO或Tensorflow训练神经网络时,他们会在每个历元报告一个称为“损失”的变量 我应该如何解释这个变量?损失越高越好或越差,或者这对我的神经网络的最终性能(准确性)意味着什么?损失越低,模型越好(除非模型与训练数据过度拟合)。损失是在训练和验证上计算的,其解释是模型对这两组的表现如何。与准确度不同,损失不是一个百分比。它是训练集或验证集中每个示例的错误总和 在神经网络的情况下,损失通常分别用于分类和回归。当然,学习模型的主要目标是通过不同的优化方法(如神经网络中的反向传播)改变权重向

当我用NO或Tensorflow训练神经网络时,他们会在每个历元报告一个称为“损失”的变量


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

损失越低,模型越好(除非模型与训练数据过度拟合)。损失是在训练验证上计算的,其解释是模型对这两组的表现如何。与准确度不同,损失不是一个百分比。它是训练集或验证集中每个示例的错误总和

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

损失值意味着某个模型在每次优化迭代后的表现如何。理想情况下,人们期望在每次或多次迭代后减少损失

模型的精度通常在学习和固定模型参数后确定,且不进行学习。然后将测试样本送入模型,并在与真实目标进行比较后,记录模型所犯错误的数量(零一损失)。然后计算错误分类的百分比

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


在降低损失价值的同时,也有一些微妙之处。例如,您可能会遇到这样一个问题:模型“记住”了培训示例,对测试集来说有点无效。过度拟合也会发生在以下情况下:您没有使用,您有一个非常复杂的模型(自由参数的数量很大)或者数据点的数量非常少。

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

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

准确性更多的是从应用的角度。一旦您找到上面的优化参数,您就可以使用此度量来评估模型预测与真实数据相比的准确性

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

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

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

y3=1,x3_w=55公斤,x3_h=175厘米

使用一个简单的逻辑回归模型,即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,我们决定我们的预测是女性(1)。否则它将是0。因此,我们的算法预测y1=1、y2=1和y3=1。我们的准确度是多少?我们在y1和y2上做了错误的预测,在y3上做了正确的预测。现在我们的准确度是1/3=33.33%


PS:在神经网络中,反向传播被认为是一种优化方法。我认为这将被视为一种在NN中寻找权重梯度的方法。NN中常用的优化方法是梯度下降法和Adam。

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

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


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

Hi@Amir,感谢您的详细解释。然而,我有一个问题:在我的神经网络中,当我训练时(当历元增加时),损失总是减少的,但是准确性并不更好。@mamatv只要成本降低,你就可以去。虽然成本和精度通常具有反比关系,但您可能会注意到,精度是零一个错误的总和,而成本是浮点数的总和。因此,成本降低0.001%并不一定意味着精度提高0.001%。递增素