为什么我会选择不同于指标的损失函数?

时间:2019-06-17 15:58:53

标签: tensorflow optimization keras gradient-descent loss-function

当我浏览Internet上的教程或SO上发布的模型时,我经常看到损失函数与用于评估模型的指标不同。可能看起来像:

model.compile(loss='mse', optimizer='adadelta', metrics=['mae', 'mape'])

无论如何,在此示例之后,当我什至不在乎'mae'时,为什么不将'mape''mse'优化为损失而不是'mse'指标(假设是在什么时候成为我的模型)?

3 个答案:

答案 0 :(得分:1)

这是一个很好的问题。

了解了建模之后,您应该使用便利损失函数来最小化实现目标。 但是要评估模型,您将使用指标来使用一些指标来报告概括的质量。

由于许多原因,评估部分可能与优化标准不同。

举个例子,在对抗性发电网络中,许多论文认为 mose 损失最小化会导致图像更加模糊,尽管 mae 有助于获得更清晰的输出。您可能希望在评估中跟踪它们两个,以了解它如何真正改变事物。

另一种可能的情况是,您有自定义的损失,但是您仍然希望基于准确性报告评估。

我想到了可能的情况,您可以设置损耗函数以更快,更好地收敛,等等,但是您也可以使用其他一些指标来衡量模型的质量。

希望这会有所帮助。

答案 1 :(得分:1)

在很多情况下,您感兴趣的度量标准可能无法区分,因此您不能将其用作损失,例如,为了准确起见,这种情况就是使用交叉熵损失,因为它是可区分的。

对于已经可以区分的指标,您只想从学习过程中获取其他信息,因为每个指标所衡量的都是不同的。例如,MSE的比例与数据/预测的比例成平方,因此要获得相同的比例,必须使用RMSE或MAE。 MAPE会给您带来相对(而非绝对)误差,因此所有这些度量标准都可以衡量您可能感兴趣的不同事物。

就准确性而言,使用此度量标准是因为它易于被人解释,而交叉熵损失则较不直观。

答案 2 :(得分:0)

当我遇到使用mae作为损失的GAN实施时,我只是问了自己一个问题。我已经知道某些度量是不可区分的,并且认为mae是一个偶然事件,尽管仅在x = 0时。那么,是否仅存在一个例外,例如假设斜率为0?这对我来说很有意义。

我还想补充一点,我学会了使用mae而不是mae,因为平方时小的误差保持较小,而较大的误差则相对增大。如此大,MSE将受到更多的惩罚。