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

当我用Theano或Tensorflow训练我的neural network时,他们会在每个时期报告一个称为“损失”的variables。

我应该如何解释这个variables? 更高的损失是好还是坏,或者说我的neural network的最终性能(准确性)是什么意思?

损失越低,模型越好(除非模型对训练数据过度拟合)。 损失是通过培训validation计算出来的,而它们的相互作用就是模型在这两套系统中的performance。 损失不是百分比而是精确度,它是在训练或validation集中每个例子的误差总和。

在neural network的情况下,损失通常分别是负对数似然和残差平方和以进行分类和回归。 自然,学习模型中的主要目标是通过不同的优化方法(例如neural network中的反向传播)来改变权向量值,从而减less(最小化)与模型参数相关的损失函数值。

损失值意味着某个模型在每次迭代优化之后performance如何。 理想情况下,人们会期望在每次或几次迭代之后减less损失。

模型的准确性通常是在模型参数被学习和固定之后确定的,并且不进行学习。 然后将testing样本馈送到模型,并且与真实目标进行比较之后,模型所logging的错误数量(零一丢失)被logging。 然后计算错误分类的百分比。

例如,如果testing样本的数量是1000 ,模型分类正确的是952 ,那么模型的准确性报告为95.2%。

在这里输入图像说明

还有一些微妙之处,同时降低了损失值。 比如,你可能会遇到模型memorizes训练样例的过拟合问题,对于testing集会变得不起作用。 在不使用正则化的情况下,也可能出现过度拟合,模型非常复杂(自由参数数W很大),或者数据点数N非常低。

他们是评估您的模型性能的两个不同指标,通常用于不同的阶段。

在训练过程中经常使用损失来find你的模型的“最佳”参数值(例如neural network中的权重)。 正是通过更新权重来尝试在训练中进行优化。

准确性更多的是从应用的angular度。 一旦find上述优化的参数,就可以使用这个度量来评估模型的预测与真实数据的精确度。

让我们用一个玩具分类的例子。 你想从一个人的体重和身高来预测性别。 你有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))

你怎么findb1和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

然后你学习algorithm(如梯度下降)将find一种方法来更新b1和b2来减less损失。

如果b1 = 0.1,b2 = -0.03是最终的b1和b2(梯度下降的输出),那么现在的精度是多less?

假设y_hat> = 0.5,我们决定我们的预测是女性(1)。 否则就是0.因此,我们的algorithm预测y1 = 1,y2 = 1,y3 = 1。我们的准确度是多less? 我们对y1和y2做出错误的预测,并在y3上做出正确的预测。 所以现在我们的准确率是1/3 = 33.33%

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

@Aadnan只是为了阐明训练/validation/testing数据集:训练集用于执行模型的初始训练,初始化neural network的权重。

在neural network被训练之后使用validation集合。 它用于调整networking的超参数,并比较它们的变化如何影响模型的预测精度。 鉴于训练集可以被认为是用来build立neural network的门权重,validation集允许微调neural network模型的参数或体系结构。 这是有用的,因为它可以对这些不同的参数/体系结构与相同的数据和networking权重进行可重复的比较,以观察参数/体系结构变化如何影响networking的预测能力。

然后,使用训练和validation数据集进行训练和参数/结构select之后,testing集仅用于testing训练的neural network对先前未见的数据的预测精度。