Kim*_*Hee 2 machine-learning deep-learning tensorflow loss-function
我的特征向量大小为 1x4098。每个特征向量对应一个浮点数(温度)。在训练中,我有 10.000 个样本。因此,我的训练集大小为 10000x4098,标签为 10000x1。我想使用线性回归模型从训练数据中预测温度。我正在使用具有 MSE 损失的 3 个隐藏层(512、128、32)。但是,我使用 tensorflow 只获得了 80% 的准确率。您能否向我建议其他损失函数以获得更好的性能?
让我对损失函数的选择做一个比较理论的解释。正如您可能猜到的,这一切都取决于数据。
MSE有一个很好的概率解释:它对应于MLE(最大似然估计)的假设下,其分布p(y|x)是高斯:p(y|x) ~ N(mu, sigma)。由于 MLE 收敛到真实参数值,这意味着在此假设下,找到的最小值很可能是您可能获得的最佳拟合。当然,您可能会发现局部最小值而不是全局最小值,还隐含假设您的训练数据x很好地代表了分布。但是这种不确定性是不可避免的,所以现实地我们只是接受它。
继续,L1 损失(绝对差)最小化等效于在p(y|x)具有拉普拉斯分布的假设下的 MLE 最大化。这是相同的结论:如果数据符合这个分布,没有其他损失会比 L1 损失更好。
Huber loss没有严格的概率解释(至少我不知道),它有点介于 L1 和 L2 之间,更接近一个或另一个取决于delta.
它如何帮助您找到正确的损失函数?首先,这意味着默认情况下没有损失优于其他损失。其次,你对数据理解得越好,就越能确定你选择的损失函数是正确的。当然,您可以交叉验证所有这些选项并选择最佳选项。但这里有一个很好的理由进行这种分析:当您对数据分布充满信心时,您会看到添加新训练数据和增加模型复杂性的稳步改进。否则,该模型很可能永远不会泛化。
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |