如果我想预测 0-1 区间的连续结果,我应该使用哪个输出激活和损失?

Which output activation and loss should I use if I want to predict continuous outcome on 0-1 interval?

我想预测连续变量(自动编码器)。由于我已将输入按最小-最大缩放到 0-1 间隔,因此在输出层中使用 sigmoid 激活是否有意义? Sigmoid 不对应于 MSE 损失。有任何想法吗?

使用sigmoid激活和回归损失,例如mean_squared_errormean_absolute_error

摘要: 如果不确定,请使用 binary_crossentropy + sigmoid。如果您的大多数标签是 0 或 1,或者非常接近,请尝试 mae + hard_sigmoid.


解释:

损失函数定义模型的优先级;对于回归,目标是 最小化预测与基本事实(标签)的偏差。激活范围在 0 和 1 之间,MSE 将起作用。

不过;它可能不是最好的 - 特别是对于规范化数据。下面是 [0, 1] 区间的 MSE 与 MAE 的关系图。主要区别:

  • MSE 惩罚小差异 比 MAE
  • 少得多
  • MSE 惩罚大的差异,w.r.t。 它自己的惩罚小值,比MAE
  • 多得多

以上结果:

  • MSE --> 模型在不 'very wrong' 方面更好,但在 'very right'
  • 方面更差
  • MAE --> 模型平均预测所有值更好,但不介意 'very wrong' 预测

就激活而言 - hard sigmoid 可能效果更好,尤其是当您的许多值等于或非常接近 0 或 1 时,因为它可以等于 0 或1(或接近它们)比 sigmoid 快得多,它应该作为 正则化 的一种形式,因为它 [=] 的一种形式54=]线性化(-->权重衰减)。


二进制交叉熵:通常应该效果最好(w/ sigmoid

从某种意义上说,它是两全其美:它更多 'evenly distributed'(在非渐近区间),并且强烈惩罚 'very wrong' 预测。事实上,BCE 在此类预测上比 MSE 严格得多 - 因此您应该很少看到在“1”标签上预测的“0”(验证除外)。出于不言而喻的原因,请确保使用硬 sigmoid。


自动编码器:努力重建他们的输入。根据应用程序,您可以:

  1. 需要确保没有一个预测具有太大意义Ex:信号数据。一个极其错误的时间步长可能会超过其他方面出色的整体重建

  2. 有噪声数据,更喜欢对噪声更稳健的模型

根据以上两者,尤其是 (1),BCE 可能是不受欢迎的。通过更多地处理所有标签 'equally',MAE 可能更适合 (2).


MSE 与 MAE

Sigmoid 与 Hard Sigmoid


二元交叉熵对比 MSE 对比 MAEy == 0 BCE 案例)