当我用Theano或Tensorflow训练我的神经网络时,它们会在每个纪元报告一个名为“损失”的变量。
我该如何解释这个变量呢?更高的损失是好是坏,或者它对我的神经网络的最终性能(准确性)意味着什么?
当我用Theano或Tensorflow训练我的神经网络时,它们会在每个纪元报告一个名为“损失”的变量。
我该如何解释这个变量呢?更高的损失是好是坏,或者它对我的神经网络的最终性能(准确性)意味着什么?
损失越低,模型越好(除非模型对训练数据过度拟合)。损失是在训练和验证上计算的,它的相互作用是模型在这两个集上的表现如何。与准确度不同,损失不是百分比。它是训练集或验证集中每个示例所犯错误的总和。
在神经网络中,损失通常分别为负对数似然和残差平方和,用于分类和回归。然后,学习模型的主要目标自然是通过不同的优化方法(如神经网络中的反向传播)改变权重向量值,从而减少(最小化)损失函数相对于模型参数的值。
损失值表示某个模型在每次优化迭代后的表现好坏。理想情况下,人们会期望在每次或多次迭代之后减少损失。
模型的准确性通常是在模型参数被学习并固定后确定的,并且没有进行任何学习。然后将测试样本输入模型,并在与真实目标进行比较后记录模型所犯的错误(0 - 1损失)的数量。然后计算误分类的百分比。
例如,如果测试样本数量为1000个,模型正确分类了其中的952个,则模型的准确率为95.2%。
在减少损失值时,还有一些微妙之处。例如,你可能会遇到过度拟合的问题,其中模型“记忆”训练示例,并变得对测试集无效。当你没有使用正则化,你有一个非常复杂的模型(自由参数W的数量很大)或数据点N的数量很低时,也会发生过拟合。
它们是用于评估模型性能的两个不同指标,通常用于不同的阶段。
在训练过程中,损失通常用于为你的模型找到“最佳”参数值(例如神经网络中的权重)。它是你在训练中通过更新权重来优化的东西。
准确性更多的是从应用的角度。一旦你找到了上面的优化参数,你就可以使用这个指标来评估你的模型预测与真实数据相比的准确性。
让我们用一个玩具分类的例子。你想从一个人的体重和身高来预测性别。你有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,那么我们的预测结果是女性(1)。否则就是0。因此,我们的算法预测y1 = 1, y2 = 1和y3 = 1。我们的准确度是多少?我们对y和y的预测是错误的而对y的预测是正确的。现在我们的准确率是1/3 = 33.33%
PS:在Amir的回答中,反向传播被认为是神经网络中的一种优化方法。我认为这是一种在神经网络中寻找权重梯度的方法。神经网络中常用的优化方法有GradientDescent和Adam。
为了澄清训练/验证/测试数据集: 训练集用于对模型进行初始训练,初始化神经网络的权值。
The validation set is used after the neural network has been trained. It is used for tuning the network's hyperparameters, and comparing how changes to them affect the predictive accuracy of the model. Whereas the training set can be thought of as being used to build the neural network's gate weights, the validation set allows fine tuning of the parameters or architecture of the neural network model. It's useful as it allows repeatable comparison of these different parameters/architectures against the same data and networks weights, to observe how parameter/architecture changes affect the predictive power of the network.
然后,在训练和参数/架构选择训练和验证数据集之后,测试集仅用于测试训练神经网络在以前未见过的数据上的预测准确性。