我的特征向量大小为1x4098。每个特征向量对应一个浮点数(温度)。在训练中,我有10,000个样本。因此,我的训练集大小为10000x4098,标签为10000x1。我想使用线性回归模型来预测训练数据的温度。我使用3个隐藏层(512,128,32)与MSE损失。但是,使用tensorflow只能获得80%的准确率。你能否告诉我其他人失去功能以获得更好的表现?
答案 0 :(得分:3)
让我对损失函数的选择给出一个相当理论上的解释。正如您可能猜到的,这一切都取决于数据。
MSE有一个很好的概率解释:假设分布p(y|x)
是高斯:p(y|x) ~ N(mu, sigma)
,它对应于MLE(最大似然估计)。由于MLE收敛到真实的参数值,这意味着在这个假设下,找到的最小值很可能是你可能得到的最合适。当然,你可能会发现局部而不是全局最小值,也可以隐含假设你的训练数据代表x
分布。但这种不确定性是不可避免的,所以现实地我们接受它。
接下来,假设p(y|x)
具有Laplace distribution,L1损失(绝对差异)最小化等同于MLE最大化。并且得出了相同的结论:如果数据符合此分布,则没有其他损失比L1损失更好。
Huber loss没有严格的概率解释(至少我不知道),它在L1和L2之间有所不同,更接近于一个或另一个,具体取决于选择delta
。
它如何帮助您找到合适的损失功能?首先,这意味着默认情况下没有任何损失优于其他损失。其次,您越了解数据,就越能确保您选择的损失函数是正确的。当然,您可以交叉验证所有这些选项并选择最佳选项。但这是进行此类分析的一个很好的理由:当您对数据分发充满信心时,您会看到通过添加新的培训数据和提高模型复杂性而获得稳定的改进。否则,模型永远不会概括为止。