哪个损失函数在温度预测方面比 MSE 更好?
Which loss-function is better than MSE in temperature prediction?
我的特征向量大小为 1x4098。每个特征向量对应一个浮点数(温度)。在训练中,我有 10.000 个样本。因此,我的训练集大小为 10000x4098,标签为 10000x1。我想使用线性回归模型来预测训练数据的温度。我正在使用 3 个具有 MSE 损失的隐藏层(512、128、32)。但是,我使用 tensorflow 的准确率只有 80%。你能向我推荐其他损失函数以获得更好的性能吗?
让我对损失函数的选择给出一个比较理论化的解释。你可能猜到了,这完全取决于数据。
MSE 有一个很好的概率解释:它对应于 MLE(最大似然估计),假设分布 p(y|x)
是高斯分布:p(y|x) ~ N(mu, sigma)
。由于 MLE 收敛到真实参数值,这意味着在这种假设下,找到的最小值很可能是您可能得到的 最佳拟合 。当然,您可能会发现局部而不是全局最小值,也隐含假设您的训练数据很好地代表 x
分布。但是这种不确定性是不可避免的,所以现实的我们只能接受。
继续,假设 p(y|x)
有 Laplace distribution,L1 损失(绝对差异)最小化等同于 MLE 最大化。这是相同的结论:如果数据符合此分布,则没有其他损失会比 L1 损失更好。
Huber loss没有严格的概率解释(至少我没意识到),它有点介于L1和L2之间,更接近一个或另一个取决于[=14的选择=].
它如何帮助您找到正确的损失函数?首先,这意味着默认情况下没有损失优于其他损失。其次,你越了解数据,就越能确定你选择的损失函数是正确的。当然,您可以交叉验证所有这些选项和 select 最佳选项。但是,进行这种分析有一个很好的理由:当您对数据分布有信心时,您会看到随着添加新训练数据和增加模型复杂性而稳步改进。否则,模型很可能永远无法泛化。
我的特征向量大小为 1x4098。每个特征向量对应一个浮点数(温度)。在训练中,我有 10.000 个样本。因此,我的训练集大小为 10000x4098,标签为 10000x1。我想使用线性回归模型来预测训练数据的温度。我正在使用 3 个具有 MSE 损失的隐藏层(512、128、32)。但是,我使用 tensorflow 的准确率只有 80%。你能向我推荐其他损失函数以获得更好的性能吗?
让我对损失函数的选择给出一个比较理论化的解释。你可能猜到了,这完全取决于数据。
MSE 有一个很好的概率解释:它对应于 MLE(最大似然估计),假设分布 p(y|x)
是高斯分布:p(y|x) ~ N(mu, sigma)
。由于 MLE 收敛到真实参数值,这意味着在这种假设下,找到的最小值很可能是您可能得到的 最佳拟合 。当然,您可能会发现局部而不是全局最小值,也隐含假设您的训练数据很好地代表 x
分布。但是这种不确定性是不可避免的,所以现实的我们只能接受。
继续,假设 p(y|x)
有 Laplace distribution,L1 损失(绝对差异)最小化等同于 MLE 最大化。这是相同的结论:如果数据符合此分布,则没有其他损失会比 L1 损失更好。
Huber loss没有严格的概率解释(至少我没意识到),它有点介于L1和L2之间,更接近一个或另一个取决于[=14的选择=].
它如何帮助您找到正确的损失函数?首先,这意味着默认情况下没有损失优于其他损失。其次,你越了解数据,就越能确定你选择的损失函数是正确的。当然,您可以交叉验证所有这些选项和 select 最佳选项。但是,进行这种分析有一个很好的理由:当您对数据分布有信心时,您会看到随着添加新训练数据和增加模型复杂性而稳步改进。否则,模型很可能永远无法泛化。