【发布时间】:2019-10-23 04:59:38
【问题描述】:
如果我正确理解了损失函数对模型的重要性,它会指导模型在最小化损失值的基础上进行训练。例如,如果我希望我的模型经过训练以获得最小的平均绝对误差,我应该使用 MAE 作为损失函数。例如,为什么有时您会看到有人想要尽可能地获得最佳精度,但构建模型以最小化另一个完全不同的功能?例如:
model.compile(loss='mean_squared_error', optimizer='sgd', metrics='acc')
上面的模型怎么会被训练来给我们最好的 acc,因为在训练期间它会尝试最小化另一个函数 (MSE)。我知道,当已经训练时,模型的度量会给我们在训练期间找到的最好的acc。
我的疑问是:模型在训练期间的重点不应该是最大化 acc(或最小化 1/acc)而不是最小化 MSE?如果以这种方式完成,模型是否会为我们提供更高的准确度,因为它知道它必须在训练期间最大化它?
【问题讨论】:
-
度量标准
accuracy可以被认为是number_correct / total。这是你所关心的。最后,您希望获得高精度。但是你怎么去那里?您不能反向传播值以获得准确性和更新。但是,您可以做的是使用损失函数来最小化。当您最大限度地减少损失时,您还可以提高准确性。想想sgd做了什么。它往什么方向发展?它有什么作用?帮助找到最小值。为何如此?损失函数设计为易于求导是有原因的。您可能想先更好地了解 ANN 的工作原理。
标签: python r machine-learning keras loss-function